diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleHighpressureMes.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleHighpressureMes.java index 8819fd30..27953804 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleHighpressureMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleHighpressureMes.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import nc.bs.dao.BaseDAO; import nc.bs.dao.DAOException; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; import nc.bs.trade.business.HYSuperDMO; @@ -15,7 +16,10 @@ import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; +import nc.pubitf.uapbd.IMaterialPubService; +import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; +import nc.vo.bd.material.plan.MaterialPlanVO; import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; @@ -25,7 +29,11 @@ import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.scmpub.util.ArrayUtil; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Stream; /** * 备料审批后推送高压MES @@ -104,7 +112,7 @@ public class AfterApproveRuleHighpressureMes implements IRule { singleObj.put("productCode", mrl.get("code")); // 产品编码 singleObj.put("productName", mrl.get("name")); // 产品名称 - singleObj.put("intervalModel", mrl.get("materialtype")); // (物料的自定义字段) + singleObj.put("intervalModel", mrl.get("materialtype")); // (物料的自定义字段) // singleObj.put("intervalModel", "(物料的自定义字段)"); // (物料的自定义字段) singleObj.put("requiredDate", pickmHeadVO.getDmakedate().toString()); // 需用日期 String sql1 = " select user_name from sm_user where cuserid = '" + pickmHeadVO.getCreator() + "' "; @@ -114,6 +122,15 @@ public class AfterApproveRuleHighpressureMes implements IRule { // 创建子项数组 for (PickmItemVO item : itemVOS) { + String cmaterialvid = item.getCbmaterialid(); + Map planMap = queryMaterialPlanInfoByPks(new String[]{cmaterialvid}, pkOrg, + new String[]{MaterialPlanVO.DEF1}); + String drawingNumber = ""; + if (MMValueCheck.isNotEmpty(planMap) && + MMValueCheck.isNotEmpty(planMap.get(cmaterialvid))) { + drawingNumber = planMap.get(cmaterialvid).getDef1(); + } + JSONObject itemObj = new JSONObject(); itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID @@ -130,15 +147,7 @@ public class AfterApproveRuleHighpressureMes implements IRule { Map material = (Map) baseDAO.executeQuery(mrlsql, new MapProcessor()); itemObj.put("materialCode", material.get("code")); // 物料编码 itemObj.put("materialName", material.get("name")); // 物料名称 - -// itemObj.put("drawingNumber", "计划信息组织"); // 图号 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + item.getCbmaterialid() + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - itemObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - itemObj.put("drawingNumber", ""); - } + itemObj.put("drawingNumber", drawingNumber); Object unit = hybo.findColValue("bd_measdoc", "code", " pk_measdoc = '" + material.get("pk_measdoc") + "' "); itemObj.put("unit", unit); // 规格单位 @@ -193,6 +202,15 @@ public class AfterApproveRuleHighpressureMes implements IRule { // 创建子项数组 // JSONArray contentArray = new JSONArray(); for (PickmItemVO item : itemVOS) { + String cmaterialvid = item.getCbmaterialid(); + Map planMap = queryMaterialPlanInfoByPks(new String[]{cmaterialvid}, pkOrg, + new String[]{MaterialPlanVO.DEF1}); + String drawingNumber = ""; + if (MMValueCheck.isNotEmpty(planMap) && + MMValueCheck.isNotEmpty(planMap.get(cmaterialvid))) { + drawingNumber = planMap.get(cmaterialvid).getDef1(); + } + JSONObject itemObj = new JSONObject(); itemObj.put("bipChildId", item.getCpickm_bid()); // 子项主键ID @@ -207,15 +225,7 @@ public class AfterApproveRuleHighpressureMes implements IRule { Map material = (Map) baseDAO.executeQuery(mrlsql, new MapProcessor()); itemObj.put("materialCode", material.get("code")); // 物料编码 itemObj.put("materialName", material.get("name")); // 物料名称 - -// itemObj.put("drawingNumber", "计划信息组织"); // 图号 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + item.getCbmaterialid() + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - itemObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - itemObj.put("drawingNumber", ""); - } + itemObj.put("drawingNumber", drawingNumber); Object unit = hybo.findColValue("bd_measdoc", "code", " pk_measdoc = '" + material.get("pk_measdoc") + "' "); itemObj.put("unit", unit); // 规格单位 @@ -304,5 +314,18 @@ public class AfterApproveRuleHighpressureMes implements IRule { return true; } + public static Map queryMaterialPlanInfoByPks(String[] pks, String pk_stockorg, + String[] fields) throws BusinessException { + Map map = null; + List vids = Stream.of(pks).filter(Objects::nonNull).distinct().toList(); + if (vids.isEmpty()) { + map = new HashMap<>(); + } else { + map = NCLocator.getInstance().lookup(IMaterialPubService.class) + .queryMaterialPlanInfoByPks(vids.toArray(new String[0]), pk_stockorg, fields); + } + + return map; + } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncHighpressureMesRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncHighpressureMesRule.java index 1a1f33dd..2677e1ca 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncHighpressureMesRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncHighpressureMesRule.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; import nc.bs.uapbd.util.MyHelper; @@ -13,15 +14,23 @@ import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; +import nc.pubitf.uapbd.IMaterialPubService; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.bd.material.plan.MaterialPlanVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFBoolean; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.scmpub.util.ArrayUtil; +import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Stream; /** * 流程生产订单审批后推送高压MES @@ -80,6 +89,15 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { JSONArray contentArray = new JSONArray(); for (PMOItemVO item : itemVOS) { + String cmaterialvid = item.getCmaterialvid(); + Map planMap = queryMaterialPlanInfoByPks(new String[]{cmaterialvid}, pkOrg, + new String[]{MaterialPlanVO.DEF1}); + String drawingNumber = ""; + if (MMValueCheck.isNotEmpty(planMap) && + MMValueCheck.isNotEmpty(planMap.get(cmaterialvid))) { + drawingNumber = planMap.get(cmaterialvid).getDef1(); + } + //自定义项30是Y时调用修改口,若不是则调用新增口 String saleDef = (String) item.getAttributeValue("vdef30") == null ? "" : (String) item.getAttributeValue("vdef30"); if (!saleDef.equals("Y")) { @@ -97,9 +115,9 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { itemObj.put("contractNum", contractNum); // 合同编号 - Object cwarehouseid = hybo.findColValue("bd_stordoc", "code", " (pk_stordoc = '" + item.getAttributeValue("vbdef35") + "') "); + Object cwarehouseid = hybo.findColValue("bd_stordoc", "code", " (pk_stordoc = '" + item.getAttributeValue("vbdef35") + "') "); - itemObj.put("cwarehouseid", cwarehouseid); // 合同编号 + itemObj.put("cwarehouseid", cwarehouseid); // 合同编号 Object pk_project = hybo.findColValue("bd_project", "project_name", " pk_project = '" + item.getCprojectid() + "' "); itemObj.put("entryName", pk_project); // 项目名称 @@ -120,18 +138,12 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { itemObj.put("bipOriginProcessProductionOrderRowNum", item.getVsrcrowno()); // 物料信息 - String mrlsql = "select code,name,graphid,pk_measdoc,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' "; + String mrlsql = "select code,name,graphid,pk_measdoc,materialtype from bd_material where pk_material = '" + cmaterialvid + "' "; Map mrl = (Map) baseDAO.executeQuery(mrlsql, new MapProcessor()); itemObj.put("materialCode", mrl.get("code")); // 物料编码 itemObj.put("materialName", mrl.get("name")); // 物料名称 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + item.getCmaterialvid() + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - itemObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - itemObj.put("drawingNumber", ""); - } + itemObj.put("drawingNumber", drawingNumber); // 图号 Object unit = hybo.findColValue("bd_measdoc", "code", " pk_measdoc = '" + mrl.get("pk_measdoc") + "' "); itemObj.put("unit", unit); // 单位 pk_measdoc @@ -186,19 +198,20 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { itemObj.put("bipOriginProcessProductionOrderRowNum", ""); // 物料信息 - String mrlsql = "select code,name,graphid,pk_measdoc,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' "; + String mrlsql = "select code,name,graphid,pk_measdoc,materialtype from bd_material where pk_material = '" + cmaterialvid + "' "; Map mrl = (Map) baseDAO.executeQuery(mrlsql, new MapProcessor()); itemObj.put("materialCode", mrl.get("code")); // 物料编码 itemObj.put("materialName", mrl.get("name")); // 物料名称 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + item.getCmaterialvid() + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - itemObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - itemObj.put("drawingNumber", ""); - } +// String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + item.getCmaterialvid() + "' " + "and dr=0";//计划信息查询 +// Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); +// if (plan != null && !plan.isEmpty()) { +// itemObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) +// } else { +// itemObj.put("drawingNumber", ""); +// } + itemObj.put("drawingNumber", drawingNumber); Object unit = hybo.findColValue("bd_measdoc", "code", " pk_measdoc = '" + mrl.get("pk_measdoc") + "' "); itemObj.put("unit", unit); // 单位 pk_measdoc @@ -227,7 +240,7 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { String sql1 = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getCreator() + "' "; String bipCreateBy = (String) baseDAO.executeQuery(sql1, new ColumnProcessor()); singleObj.put("bipCreateBy", bipCreateBy); // 创建人ID - } else if (flags.equals("updateOrder")){ + } else { String sql1 = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getModifier() + "' "; String bipUpdateBy = (String) baseDAO.executeQuery(sql1, new ColumnProcessor()); singleObj.put("bipUpdateBy", bipUpdateBy); // 修改人ID @@ -281,5 +294,19 @@ public class AfterApproveSyncHighpressureMesRule implements IRule { return true; } + public static Map queryMaterialPlanInfoByPks(String[] pks, String pk_stockorg, + String[] fields) throws BusinessException { + Map map = null; + List vids = Stream.of(pks).filter(Objects::nonNull).distinct().toList(); + if (vids.isEmpty()) { + map = new HashMap<>(); + } else { + map = NCLocator.getInstance().lookup(IMaterialPubService.class) + .queryMaterialPlanInfoByPks(vids.toArray(new String[0]), pk_stockorg, fields); + } + + return map; + } + } 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 fe55f90e..b948e43b 100644 --- a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java +++ b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialToGyMesListener.java @@ -64,12 +64,13 @@ 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 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" +"'"); JSONArray dataArr = new JSONArray(); for (MaterialVO vo : useVOs) { String pkMaterial = vo.getPk_material(); // 判断物料的业务单元是否是高压公司,不是则跳过 - // String pkOrg = vo.getPk_org(); +// String pkOrg = vo.getPk_org(); Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "gyOrg"); if (!"1009".equals(eventType) && (num <= 0)) { continue; @@ -80,12 +81,14 @@ public class MaterialToGyMesListener implements IBusinessListener { "pk_marbasclass = '" + pk_marbasclass + "'"); // 计量单位 Map unitMap = getGoodsInfo(pkMaterial); - Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, orgId, - new String[]{MaterialPlanVO.ISVIRTUAL}); + Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, pkOrg, + new String[]{MaterialPlanVO.ISVIRTUAL, MaterialPlanVO.DEF1}); UFBoolean isvirtual = new UFBoolean(false); + String drawingNumber = ""; if (MMValueCheck.isNotEmpty(planMap) && MMValueCheck.isNotEmpty(planMap.get(pkMaterial))) { isvirtual = planMap.get(pkMaterial).getIsvirtual(); + drawingNumber = planMap.get(pkMaterial).getDef1(); } // 库存 Map stockMap = getStockInfo(pkMaterial); @@ -111,13 +114,7 @@ public class MaterialToGyMesListener implements IBusinessListener { singleObj.put("materialUnit", unitMap.get("measrate").toString().split("/")[1]); // 单位 // singleObj.put("drawingNumber", vo.getGraphid()); // 图号编码 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + pkMaterial + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - singleObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - singleObj.put("drawingNumber", ""); - } + singleObj.put("drawingNumber", drawingNumber); singleObj.put("enableStatus", enablestate - 1); // 启用状态 0 未启动 1 已启动 2 已停用 singleObj.put("materialType", stockMap.get("martype")); // 物料类型编码 singleObj.put("batchManagement", stockMap.get("wholemanaflag")); // 批次管理 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 5113dbbd..5ef7efd9 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java @@ -97,12 +97,14 @@ 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 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" +"'"); JSONArray dataArr = new JSONArray(); for (MaterialVO vo : useVOs) { String pkMaterial = vo.getPk_material(); // 判断物料的业务单元是否是高压公司,不是则跳过 - // String pkOrg = vo.getPk_org(); +// String pkOrg = vo.getPk_org(); Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "gyOrg"); if (!"1009".equals(eventType) && (num <= 0)) { continue; @@ -113,12 +115,14 @@ public class MaterialToGyMesListener implements IBusinessListener { "pk_marbasclass = '" + pk_marbasclass + "'"); // 计量单位 Map unitMap = getGoodsInfo(pkMaterial); - Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, orgId, - new String[]{MaterialPlanVO.ISVIRTUAL}); + Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, pkOrg, + new String[]{MaterialPlanVO.ISVIRTUAL, MaterialPlanVO.DEF1}); UFBoolean isvirtual = new UFBoolean(false); + String drawingNumber = ""; if (MMValueCheck.isNotEmpty(planMap) && MMValueCheck.isNotEmpty(planMap.get(pkMaterial))) { isvirtual = planMap.get(pkMaterial).getIsvirtual(); + drawingNumber = planMap.get(pkMaterial).getDef1(); } // 库存 Map stockMap = getStockInfo(pkMaterial); @@ -142,16 +146,8 @@ public class MaterialToGyMesListener implements IBusinessListener { singleObj.put("primaryUnit", unitMap.get("measrate").toString().split("/")[0]); // 主单位 singleObj.put("materialUnit", unitMap.get("measrate").toString().split("/")[1]); // 单位 - // singleObj.put("drawingNumber", vo.getGraphid()); // 图号编码 - String plansql = "select def1 from bd_materialplan where pk_org = '0001A11000000059XIB0' " + "and pk_material = '" + pkMaterial + "' " + "and dr=0";//计划信息查询 - Map plan = (Map) baseDAO.executeQuery(plansql, new MapProcessor()); - if (plan != null && !plan.isEmpty()) { - singleObj.put("drawingNumber", plan.get("def1")); // 图号编码(计划信息查询高压生产中心) - } else { - singleObj.put("drawingNumber", ""); - } - + singleObj.put("drawingNumber", drawingNumber); singleObj.put("enableStatus", enablestate - 1); // 启用状态 0 未启动 1 已启动 2 已停用 singleObj.put("materialType", stockMap.get("martype")); // 物料类型编码 singleObj.put("batchManagement", stockMap.get("wholemanaflag")); // 批次管理