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 f0385c45..2e9b932d 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java @@ -6,22 +6,32 @@ 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.bd.cache.CacheProxy; import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.bd.BDCommonEvent; +import nc.bs.businessevent.bd.BDCommonEventUtil; import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; +import nc.bs.logging.Logger; import nc.bs.trade.business.HYPubBO; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; +import nc.impl.bd.material.baseinfo.MaterialAsstFrame1ChangedListener; +import nc.jdbc.framework.SQLParameter; +import nc.jdbc.framework.processor.ColumnListProcessor; import nc.jdbc.framework.processor.MapProcessor; import nc.pubitf.uapbd.IMaterialPubService; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.am.common.util.StringUtils; import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.material.marassistant.MarAssistantVO; import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.plan.MaterialPlanVO; +import nc.vo.bd.material.prod.MaterialProdVO; +import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFBoolean; @@ -42,17 +52,57 @@ public class MaterialToGyMesListener implements IBusinessListener { private static final String addUrl = "/bip/order/materialAdd"; private static final String updateUrl = "/bip/order/materialUpdate"; private Map configParams; - private BaseDAO baseDAO = new BaseDAO(); @Override public void doAction(IBusinessEvent event) throws BusinessException { BDCommonEvent e = (BDCommonEvent) event; String eventType = event.getEventType(); Object[] objs = e.getObjs(); - // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 if ("1004".equals(eventType)) { - MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); + MaterialVO[] useVOs = null; + if ("13636fc1-0215-4102-a11e-af4be73a05ab".equals(e.getSourceID())) {//库存信息修改后 + HYPubBO hyPub = new HYPubBO(); + List list = new ArrayList<>(); + for (int i = 0; i < e.getNewObjs().length; ++i) { + MaterialStockVO newVO = (MaterialStockVO) e.getNewObjs()[i]; + String pk_material = newVO.getPk_material(); + if (pk_material == null) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pk_material); + list.add(materialVO); + } + useVOs = list.toArray(new MaterialVO[0]); + } else if ("8b7d49ab-7a65-4885-bcf1-7df89b84df4b".equals(e.getSourceID())) {//计划信息修改后 + HYPubBO hyPub = new HYPubBO(); + List list = new ArrayList<>(); + for (int i = 0; i < e.getNewObjs().length; ++i) { + MaterialPlanVO newVO = (MaterialPlanVO) e.getNewObjs()[i]; + String pk_material = newVO.getPk_material(); + if (pk_material == null) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pk_material); + list.add(materialVO); + } + useVOs = list.toArray(new MaterialVO[0]); + } else if ("a3133495-8c94-47b4-83d4-0d32bd08ac82".equals(e.getSourceID())) {//生产信息修改后 + HYPubBO hyPub = new HYPubBO(); + List list = new ArrayList<>(); + for (int i = 0; i < e.getNewObjs().length; ++i) { + MaterialProdVO newVO = (MaterialProdVO) e.getNewObjs()[i]; + String pk_material = newVO.getPk_material(); + if (pk_material == null) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pk_material); + list.add(materialVO); + } + useVOs = list.toArray(new MaterialVO[0]); + } else { + useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);//物料修改后 + } configParams = MyHelper.getConfigParams("gy-config", null); if (configParams.isEmpty()) { throw new BusinessException("高压的gymes接口缺少配置"); @@ -99,7 +149,7 @@ public class MaterialToGyMesListener implements IBusinessListener { private void buildSyncData(MaterialVO[] useVOs, String eventType) throws BusinessException { // String orgId = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE, "C046"); - String pkOrg = MyHelper.getStrValByCondition("ORG_ORGS", OrgVO.PK_ORG, OrgVO.CODE + " = '" + "C046" + "'"+ " and ISBUSINESSUNIT = '" + "Y" +"'"); + String pkOrg = MyHelper.getStrValByCondition("ORG_ORGS", OrgVO.PK_ORG, OrgVO.CODE + " = '" + "C046" + "'" + " and ISBUSINESSUNIT = '" + "Y" + "'"); JSONArray dataArr = new JSONArray(); for (MaterialVO vo : useVOs) { String pkMaterial = vo.getPk_material(); @@ -142,7 +192,7 @@ public class MaterialToGyMesListener implements IBusinessListener { singleObj.put("materialCategory", pk_marbasclass); // 物料分类 singleObj.put("specification", vo.getMaterialspec()); // 规格 singleObj.put("model", vo.getMaterialtype()); // 型号文字 - singleObj.put("intervalModel",vo.getMaterialtype()); // 产品类型 例如35-KV-断路器(物料自定义字段) + singleObj.put("intervalModel", vo.getMaterialtype()); // 产品类型 例如35-KV-断路器(物料自定义字段) singleObj.put("primaryUnit", unitMap.get("measrate").toString().split("/")[0]); // 主单位 singleObj.put("materialUnit", unitMap.get("measrate").toString().split("/")[1]); // 单位