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 69e0b798..e9fc2f13 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyImsListener.java @@ -79,29 +79,73 @@ public class MaterialToGyImsListener implements IBusinessListener { + } else if ("1012".equals(eventType)) { + configParams = MyHelper.getConfigParams("gy-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("高压的gymes接口缺少配置"); + } + MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); + for (MaterialStockVO materialStockVO : materialStockVOS) { + String pkOrg = materialStockVO.getPk_org(); + String[] orgItem = configParams.get("imsOrg").split(","); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); +// Integer num = MyHelper.checkIfOrg1(configParams, materialStockVO.getPk_materialstock(), "imsOrg"); + if (!contains(orgItem, orgCode)) { + continue; + }else { + updateStatus(materialStockVO.getPk_material(),"D"); + } + } + }else if ("1004".equals(eventType) || "1069".equals(eventType) ) { + MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); +// 更新启用状态 + +// updateEnableStatus(useVOs); + + + } } + public static boolean contains(String[] orgItem, String target) { + // 数组为null时直接返回false + if (orgItem == null) { + return false; + } + // 数组转List,调用contains() + List list = Arrays.asList(orgItem); + return list.contains(target); + } private void updateEnableStatus(MaterialVO[] useVOs) throws BusinessException { - // 执行单条SQL插入 - BaseDAO gyimsDao = new BaseDAO("gyims"); - gyimsDao.setAddTimeStamp(false); - List code=new ArrayList<>(); - for (MaterialVO materialVO : useVOs) { - Integer num = MyHelper.checkIfOrg(configParams,materialVO.getPk_material(), "imsOrg"); - if(num<=0){ - continue; - }else{ - code.add(materialVO.getPk_material()); - } - } - if(code.isEmpty()){ + if (useVOs == null || useVOs.length == 0) { return; } - Integer enableStatus = useVOs[0].getEnablestate(); - String sql="update BIPItemTab set enableStatus=" + enableStatus + " where pk_material='" + code + "'"; - gyimsDao.executeUpdate(sql); + BaseDAO gyimsDao = new BaseDAO("gyims"); + gyimsDao.setAddTimeStamp(false); + + List materialCodes = new ArrayList<>(); + for (MaterialVO materialVO : useVOs) { + Integer orgCheckResult = MyHelper.checkIfOrg(configParams, materialVO.getPk_material(), "imsOrg"); + if (orgCheckResult != null && orgCheckResult > 0) { + materialCodes.add(materialVO.getPk_material()); + } + } + + if (materialCodes.isEmpty()) { + return; + } + + Integer enableStatus = useVOs[0].getEnablestate(); + if (enableStatus == null) { + throw new BusinessException("启用状态不能为空"); + } + + + String codeInClause = String.join("','", materialCodes); + String sql = "update BIPItemTab set enablestate = " + enableStatus + " where pk_material in ('" + codeInClause + "')"; + + gyimsDao.executeUpdate(sql); } private void pushIms(MaterialVO[] useVOs) throws BusinessException { @@ -140,10 +184,10 @@ 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")+ "'"; + 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"),"D"); + updateStatus((String) data.get("pk_material"),"C"); continue; } @@ -174,6 +218,9 @@ public class MaterialToGyImsListener implements IBusinessListener { values.append(", "); } } + if(values.isEmpty()){ + return; + } // 完整插入SQL String updateSql = "INSERT INTO BIPItemTab (" + fieldNames.toString() + ") VALUES " + values.toString();