diff --git a/uapbd/src/private/nc/bs/uapbd/task/MaterialToGyMesTaskPlugin.java b/uapbd/src/private/nc/bs/uapbd/task/MaterialToGyMesTaskPlugin.java index 0ed81df0..f2a3ebe6 100644 --- a/uapbd/src/private/nc/bs/uapbd/task/MaterialToGyMesTaskPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/task/MaterialToGyMesTaskPlugin.java @@ -36,6 +36,11 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Stream; +/** + * 描述:物料同步到高压mes-已弃用 + * + * @author lihao + */ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { private HYSuperDMO superDMO = null; private static final String LOG_INFO_NAME = "gymeslog"; @@ -44,14 +49,16 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { private static final String updateUrl = "/bip/order/materialUpdate"; private Map configParams; private String orgId = ""; + public HYSuperDMO getSuperDMO() { - if(superDMO == null) { + if (superDMO == null) { superDMO = new HYSuperDMO(); } return superDMO; } + @Override public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException { Logger.error("---start----任务开始运行--"); @@ -68,7 +75,7 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { OrgVO.PK_ORG, OrgVO.CODE + " = 'C046' and ISBUSINESSUNIT = 'Y'" ); - UFDouble hours=configParams.get("hours") != null ? new UFDouble(configParams.get("hours")) : UFDouble.ONE_DBL.add(UFDouble.ONE_DBL); + UFDouble hours = configParams.get("hours") != null ? new UFDouble(configParams.get("hours")) : UFDouble.ONE_DBL.add(UFDouble.ONE_DBL); // 在Java中计算时间范围(当前时间前两小时到当前时间) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date endTime = new Date(); // 当前时间 @@ -103,10 +110,10 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { " AND ts BETWEEN '" + startStr + "' AND '" + endStr + "'"; ArrayList> al = (ArrayList>) dao.executeQuery(sql, new MapListProcessor()); - if(al.isEmpty()) { + if (al.isEmpty()) { return null; } - List list=new ArrayList<>(); + List list = new ArrayList<>(); for (HashMap map : al) { HYPubBO hyPub = new HYPubBO(); MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey((Class) MaterialVO.class, (String) map.get("pk_material")); @@ -124,11 +131,11 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { MaterialVO[] useVOs = list.toArray(new MaterialVO[0]); buildSyncData(useVOs); } - }catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); - //异常回滚 + // 异常回滚 TransactionFactory.getTMProxy().end(e); - Logger.error("writeBack Error: ",e); + Logger.error("writeBack Error: ", e); } return null; } @@ -197,7 +204,7 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin { // 库存供货组织编码获取 String mrlsql = "select code from org_stockorg where pk_stockorg = '" + stockMap.get("pk_suplystockorg") + "' "; Map stockorg = (Map) baseDAO.executeQuery(mrlsql, new MapProcessor()); - if(stockorg != null && !stockorg.isEmpty()){ + if (stockorg != null && !stockorg.isEmpty()) { singleObj.put("supplyInventoryOrg", stockorg.get("code"));// 库存供货组织 } diff --git a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java index ccba0472..f732ecce 100644 --- a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java +++ b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java @@ -30,7 +30,7 @@ import java.util.*; import java.util.stream.Stream; /** - * 高压MES-物料新增后同步 + * 高压MES-物料新增后同步-已弃用 * * @author lihao * @date 2025/09/11 diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java index d215d804..fa345d27 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java @@ -1,32 +1,27 @@ package nccloud.api.uapbd.material.listener; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import nc.bs.bd.assignservice.multiorg.MultiOrgAssignVO; import nc.bs.bd.baseservice.ArrayClassConvertUtil; import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.bd.BDCommonEvent; import nc.bs.dao.BaseDAO; -import nc.bs.dao.DAOException; import nc.bs.logging.Log; -import nc.bs.trade.business.HYPubBO; import nc.bs.uapbd.util.MyHelper; -import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapListProcessor; -import nc.jdbc.framework.processor.MapProcessor; import nc.vo.bd.material.MaterialVO; -import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.bd.pub.BDCacheQueryUtil; -import nc.vo.fi.pub.SqlUtils; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import java.util.*; +/** + * 描述:物料同步到高压IMS-已弃用 + * + * @author lihao + */ public class MaterialToGyImsListener implements IBusinessListener { private static final String LOG_INFO_NAME = "dldzlog"; private static final Log logDl = Log.getInstance(LOG_INFO_NAME); @@ -40,27 +35,27 @@ public class MaterialToGyImsListener implements IBusinessListener { Object[] objs = e.getObjs(); // EventType是事件编码 1009分配后新增 1012 取消分配后删除 - if ("1009".equals(eventType) ) { + if ("1009".equals(eventType)) { configParams = MyHelper.getConfigParams("gy-config", null); if (configParams.isEmpty()) { throw new BusinessException("高压的gymes接口缺少配置"); } - MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); + MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); for (MaterialStockVO materialStockVO : materialStockVOS) { String pkOrg = materialStockVO.getPk_org(); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); Integer num = MyHelper.checkIfOrg1(configParams, materialStockVO.getPk_materialstock(), "imsOrg"); if ((num <= 0)) { continue; - }else { + } else { // for (MaterialStockVO stockVO:(MaterialStockVO[])objs ){ - String materialid = materialStockVO.getPk_material(); - MaterialVO[] useVOs = (MaterialVO[]) BDCacheQueryUtil.queryVOsByIDs( - MaterialVO.class, - MaterialVO.PK_MATERIAL, - new String[]{materialid}, - new String[]{MaterialVO.PK_MEASDOC}); - pushIms(useVOs); + String materialid = materialStockVO.getPk_material(); + MaterialVO[] useVOs = (MaterialVO[]) BDCacheQueryUtil.queryVOsByIDs( + MaterialVO.class, + MaterialVO.PK_MATERIAL, + new String[]{materialid}, + new String[]{MaterialVO.PK_MEASDOC}); + pushIms(useVOs); // } } @@ -73,12 +68,11 @@ public class MaterialToGyImsListener implements IBusinessListener { // new String[]{MaterialVO.PK_MEASDOC}); // // pushIms(useVOs); - }else if ("1069".equals(eventType) || "1071".equals(eventType) ) { + } else if ("1069".equals(eventType) || "1071".equals(eventType)) { MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); // 更新启用状态 - updateEnableStatus(useVOs); - + updateEnableStatus(useVOs); } else if ("1012".equals(eventType)) { @@ -86,7 +80,7 @@ public class MaterialToGyImsListener implements IBusinessListener { if (configParams.isEmpty()) { throw new BusinessException("高压的gymes接口缺少配置"); } - MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); + MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); for (MaterialStockVO materialStockVO : materialStockVOS) { String pkOrg = materialStockVO.getPk_org(); String[] orgItem = configParams.get("imsOrg").split(","); @@ -94,11 +88,11 @@ public class MaterialToGyImsListener implements IBusinessListener { // Integer num = MyHelper.checkIfOrg1(configParams, materialStockVO.getPk_materialstock(), "imsOrg"); if (!contains(orgItem, orgCode)) { continue; - }else { - updateStatus(materialStockVO.getPk_material(),"D"); + } else { + updateStatus(materialStockVO.getPk_material(), "D"); } } - }else if ("1004".equals(eventType) ) { + } else if ("1004".equals(eventType)) { configParams = MyHelper.getConfigParams("gy-config", null); if (configParams.isEmpty()) { throw new BusinessException("高压的gymes接口缺少配置"); @@ -109,9 +103,9 @@ public class MaterialToGyImsListener implements IBusinessListener { updateIms(useVOs); - } } + public static boolean contains(String[] orgItem, String target) { // 数组为null时直接返回false if (orgItem == null) { @@ -135,7 +129,7 @@ public class MaterialToGyImsListener implements IBusinessListener { Integer orgCheckResult = MyHelper.checkIfOrg(configParams, materialVO.getPk_material(), "imsOrg"); if (orgCheckResult != null && orgCheckResult > 0) { materialCodes.add(materialVO.getPk_material()); - updateStatus(materialVO.getPk_material(),"U"); + updateStatus(materialVO.getPk_material(), "U"); } } @@ -160,23 +154,23 @@ public class MaterialToGyImsListener implements IBusinessListener { // 执行单条SQL插入 BaseDAO gyimsDao = new BaseDAO("gyims"); gyimsDao.setAddTimeStamp(false); - List code=new ArrayList<>(); + List code = new ArrayList<>(); for (MaterialVO materialVO : useVOs) { code.add(materialVO.getPk_material()); } String placeholders = String.join(",", Collections.nCopies(code.size(), "?")); - placeholders=code.get(0); + placeholders = code.get(0); String sql = " \t\tSELECT\n" + "\t* \n" + "from bd_material a " + "where a.pk_material IN ('" + placeholders + "')"; - List> remain = (List>) new BaseDAO("design").executeQuery(sql, new MapListProcessor()); + List> remain = (List>) new BaseDAO("design").executeQuery(sql, new MapListProcessor()); // 定义需要插入的字段(与表结构一致) String[] fields = { "pk_material", "code", "name", "materialspec", "materialtype", "materialshortname", "pk_measdoc", "pk_marbasclass", "memo", - "enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate","itemCode" + "enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate", "itemCode" }; // 构建字段部分 @@ -192,31 +186,31 @@ public class MaterialToGyImsListener implements IBusinessListener { StringBuilder values = new StringBuilder(); for (int i = 0; i < remain.size(); i++) { Map data = remain.get(i); - String selectSql="SELECT count(1) from BIPItemTab where pk_material='" +data.get("pk_material")+ "'"; - int num = (int) gyimsDao.executeQuery(selectSql,new ColumnProcessor()); - if(num>0){ - updateStatus((String) data.get("pk_material"),"C"); + String selectSql = "SELECT count(1) from BIPItemTab where pk_material='" + data.get("pk_material") + "'"; + int num = (int) gyimsDao.executeQuery(selectSql, new ColumnProcessor()); + if (num > 0) { + updateStatus((String) data.get("pk_material"), "C"); continue; } - data.put("status","C"); - String matBasClassSql="SELECT code from bd_marbasclass where pk_marbasclass='" +data.get("pk_marbasclass")+ "'"; - String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql,new ColumnProcessor()); - data.put("pk_marbasclass",matbascode); + data.put("status", "C"); + String matBasClassSql = "SELECT code from bd_marbasclass where pk_marbasclass='" + data.get("pk_marbasclass") + "'"; + String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql, new ColumnProcessor()); + data.put("pk_marbasclass", matbascode); - String unitsql="SELECT code from bd_measdoc where pk_measdoc='" +data.get("pk_measdoc")+ "'"; - String unit = (String) new BaseDAO().executeQuery(unitsql,new ColumnProcessor()); - data.put("pk_marbasclass",unit); - data.put("createdate",data.get("creationtime")); + String unitsql = "SELECT code from bd_measdoc where pk_measdoc='" + data.get("pk_measdoc") + "'"; + String unit = (String) new BaseDAO().executeQuery(unitsql, new ColumnProcessor()); + data.put("pk_marbasclass", unit); + data.put("createdate", data.get("creationtime")); // 将计划页签图号放入 - String def1sql="SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" +data.get("pk_material")+ "' and b.code = '"+configParams.get("imsOrg").toString()+"'"; - String def1 = (String) new BaseDAO().executeQuery(def1sql,new ColumnProcessor()); - data.put("itemCode",def1); + String def1sql = "SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" + data.get("pk_material") + "' and b.code = '" + configParams.get("imsOrg").toString() + "'"; + String def1 = (String) new BaseDAO().executeQuery(def1sql, new ColumnProcessor()); + data.put("itemCode", def1); // 将计量单位编码放入 - String pk_measdocsql="SELECT p.code from bd_measdoc p where p.pk_measdoc='" +data.get("pk_measdoc")+ "' "; - String pk_measdoc = (String) new BaseDAO().executeQuery(pk_measdocsql,new ColumnProcessor()); - data.put("pk_measdoc",pk_measdoc); + String pk_measdocsql = "SELECT p.code from bd_measdoc p where p.pk_measdoc='" + data.get("pk_measdoc") + "' "; + String pk_measdoc = (String) new BaseDAO().executeQuery(pk_measdocsql, new ColumnProcessor()); + data.put("pk_measdoc", pk_measdoc); values.append("("); @@ -244,7 +238,7 @@ public class MaterialToGyImsListener implements IBusinessListener { values.append(", "); } } - if(values.isEmpty()){ + if (values.isEmpty()) { return; } @@ -252,19 +246,19 @@ public class MaterialToGyImsListener implements IBusinessListener { String updateSql = "INSERT INTO BIPItemTab (" + fieldNames.toString() + ") VALUES " + values.toString(); - try { int rowsAffected = gyimsDao.executeUpdate(updateSql); - String K="1"; + String K = "1"; } catch (Exception e) { throw new RuntimeException("插入失败:" + e.getMessage(), e); } } - private void updateStatus(String pk,String type) throws BusinessException { + + private void updateStatus(String pk, String type) throws BusinessException { BaseDAO gyimsDao = new BaseDAO("gyims"); gyimsDao.setAddTimeStamp(false); - String sql="update BIPItemTab set status='" + type.toString() + "' where pk_material='" + pk + "'"; + String sql = "update BIPItemTab set status='" + type.toString() + "' where pk_material='" + pk + "'"; gyimsDao.executeUpdate(sql); } @@ -290,7 +284,7 @@ public class MaterialToGyImsListener implements IBusinessListener { String[] fields = { "pk_material", "code", "name", "materialspec", "materialtype", "materialshortname", "pk_measdoc", "pk_marbasclass", "memo", - "enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate","itemCode" + "enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate", "itemCode" }; for (Map data : remain) { @@ -300,19 +294,19 @@ public class MaterialToGyImsListener implements IBusinessListener { if (pkMaterial == null) { continue; // 主键为空时跳过更新 } - data.put("createdate",data.get("creationtime")); - String matBasClassSql="SELECT code from bd_marbasclass where pk_marbasclass='" +data.get("pk_marbasclass")+ "'"; - String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql,new ColumnProcessor()); - data.put("pk_marbasclass",matbascode); + data.put("createdate", data.get("creationtime")); + String matBasClassSql = "SELECT code from bd_marbasclass where pk_marbasclass='" + data.get("pk_marbasclass") + "'"; + String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql, new ColumnProcessor()); + data.put("pk_marbasclass", matbascode); - String unitsql="SELECT code from bd_measdoc where pk_measdoc='" +data.get("pk_measdoc")+ "'"; - String unit = (String) new BaseDAO().executeQuery(unitsql,new ColumnProcessor()); - data.put("pk_marbasclass",unit); + String unitsql = "SELECT code from bd_measdoc where pk_measdoc='" + data.get("pk_measdoc") + "'"; + String unit = (String) new BaseDAO().executeQuery(unitsql, new ColumnProcessor()); + data.put("pk_marbasclass", unit); // 将计划页签图号放入 - String def1sql="SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" +data.get("pk_material")+ "' and b.code = '"+configParams.get("imsOrg").toString()+"'"; - String def1 = (String) new BaseDAO().executeQuery(def1sql,new ColumnProcessor()); - data.put("itemCode",def1); + String def1sql = "SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" + data.get("pk_material") + "' and b.code = '" + configParams.get("imsOrg").toString() + "'"; + String def1 = (String) new BaseDAO().executeQuery(def1sql, new ColumnProcessor()); + data.put("itemCode", def1); // 构建SET部分 List setParts = new ArrayList<>(); for (String field : fields) { @@ -353,6 +347,4 @@ public class MaterialToGyImsListener implements IBusinessListener { } - - } diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java index 4673b992..18fba71c 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java @@ -33,7 +33,7 @@ import java.util.*; import java.util.stream.Stream; /** - * 高压MES-物料修改后同步 + * 高压MES-物料修改后同步-已弃用 * * @author mzr * @date 2025/09/11