diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java index 9a276b1..7148a8f 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java @@ -55,8 +55,6 @@ public class PMOApproveBP { processer.addAfterRule(new AfterApproveRuleSyncMes()); // 审批后推送流程生产订单到艾普MES processer.addAfterRule(new AfterApproveSyncEpicMesRule()); - - // 审批后推送流程生产订单到启源qms processer.addAfterRule(new AfterApproveSyncQMSRule()); // 流程生产订单审批后推送高压MES diff --git a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleQMS.java b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleQMS.java index 3af6949..af6cfb9 100644 --- a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleQMS.java +++ b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleQMS.java @@ -5,34 +5,29 @@ 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.dao.DAOException; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; +import nc.bs.trade.business.HYSuperDMO; import nc.bs.uapbd.util.MyHelper; 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.vo.bd.defdoc.DefdocVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.exception.ExceptionUtils; -import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.so.m30.entity.SaleOrderBVO; import nc.vo.so.m30.entity.SaleOrderHVO; import nc.vo.so.m30.entity.SaleOrderVO; -import nc.vo.vorg.DeptVersionVO; import nccloud.baseapp.core.log.NCCForUAPLogger; -import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.Map; /** - * 销售订单推送mes + * 销售订单推送启源mes */ public class AfterApprovingSynchronizeRuleQMS implements IRule { private static final String LOG_INFO_NAME = "qyMesLog"; @@ -48,7 +43,6 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { public void process(SaleOrderVO[] saleOrderVOs) { try { if (saleOrderVOs == null || saleOrderVOs.length == 0) { - return; } configParams = MyHelper.getConfigParams("xb-config", null); @@ -60,15 +54,16 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { ExceptionUtils.wrappException(e); } } + /** * 构建同步数据 */ private void buildSyncData(SaleOrderVO[] useVOs) throws BusinessException { BaseDAO baseDAO = new BaseDAO(); - Date now= new Date(); + Date now = new Date(); HYPubBO hybo = new HYPubBO(); for (SaleOrderVO vo : useVOs) { - // 判断物料的业务单元是否是箱变公司,不是则跳过 + // 判断业务单元是否是箱变公司,不是则跳过 String pkOrg = vo.getParentVO().getPk_org(); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); if (checkIfOrg(orgCode, configParams)) { @@ -78,31 +73,33 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { JSONObject singleObj = new JSONObject(); SaleOrderHVO pmoHeadVO = vo.getParentVO(); - SaleOrderBVO[] itemVOS=vo.getChildrenVO(); - singleObj.put("batchid",now); - singleObj.put("hth",pmoHeadVO.getVdef6()); - singleObj.put("fplx",pmoHeadVO.getDbilldate().toString().substring(0,10)); - if(null !=pmoHeadVO.getCemployeeid()){ + SaleOrderBVO[] itemVOS = vo.getChildrenVO(); + singleObj.put("batchid", now); + String vdef6 = pmoHeadVO.getVdef6(); + String contractNum = getDefCode("zdy-001", vdef6); + singleObj.put("hth", contractNum); + singleObj.put("fplx", pmoHeadVO.getDbilldate().toString().substring(0, 10)); + if (null != pmoHeadVO.getCemployeeid()) { String sql = " select name from bd_psndoc where cuserid = '" + pmoHeadVO.getCemployeeid() + "' "; String billmakerName = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); - singleObj.put("xsy",billmakerName); - }else{ - singleObj.put("xsy",""); + singleObj.put("xsy", billmakerName); + } else { + singleObj.put("xsy", ""); } - singleObj.put("dhdwid",pmoHeadVO.getCcustomerid()); + singleObj.put("dhdwid", pmoHeadVO.getCcustomerid()); String customersql = " select name from bd_customer where pk_customer = '" + pmoHeadVO.getCcustomerid() + "' "; String customerName = (String) baseDAO.executeQuery(customersql, new ColumnProcessor()); - singleObj.put("dhdw",customerName); + singleObj.put("dhdw", customerName); String lrrsql = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getBillmaker() + "' "; String lrrName = (String) baseDAO.executeQuery(lrrsql, new ColumnProcessor()); - singleObj.put("lrr",lrrName); - singleObj.put("lrrq",pmoHeadVO.getDmakedate().toString().substring(0,10)); - singleObj.put("bz",pmoHeadVO.getVnote()); + singleObj.put("lrr", lrrName); + singleObj.put("lrrq", pmoHeadVO.getDmakedate().toString().substring(0, 10)); + singleObj.put("bz", pmoHeadVO.getVnote()); // 处理Content数组 JSONArray contentArray = new JSONArray(); for (SaleOrderBVO item : itemVOS) { @@ -114,15 +111,15 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { // // Object name = hybo.findColValue("bd_material", "name", "pk_material = '"+item.getCmaterialvid()+"' "); String wlsql = " select code,name,materialspec,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' "; - Map mrlmap = (Map) baseDAO.executeQuery(wlsql, new MapProcessor()); + Map mrlmap = (Map) baseDAO.executeQuery(wlsql, new MapProcessor()); itemObj.put("wlbh", mrlmap.get("code")); itemObj.put("wlmc", mrlmap.get("name")); - itemObj.put("wlxhgg", ((String)mrlmap.get("materialspec")!=null ? mrlmap.get("materialspec").toString() : "" )+((String)mrlmap.get("materialtype")!=null ? mrlmap.get("materialtype").toString() : "" )); + itemObj.put("wlxhgg", ((String) mrlmap.get("materialspec") != null ? mrlmap.get("materialspec").toString() : "") + ((String) mrlmap.get("materialtype") != null ? mrlmap.get("materialtype").toString() : "")); itemObj.put("dhsl", item.getNastnum().doubleValue()); itemObj.put("xsj", item.getNqtorigtaxprice().doubleValue()); itemObj.put("bxzje", item.getNqtorigtaxprice().doubleValue()); - itemObj.put("jhrq", item.getDsenddate().toString().substring(0,10)); + itemObj.put("jhrq", item.getDsenddate().toString().substring(0, 10)); itemObj.put("bz", item.getVrownote()); Object pk_project = hybo.findColValue("bd_project", "project_name", " pk_project = '" + item.getCprojectid() + "' "); itemObj.put("xmmc", pk_project); @@ -188,19 +185,6 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { } } - private Map getGoodsInfo(String pkMaterial) throws BusinessException { - String sql = " select a.pk_measdoc, c.name unitname, b.pk_measdoc deputyUnit, d.name deputy_unitname, nvl(b.measrate, '1/1') measrate " + - "from bd_material a " + - "left join bd_materialconvert b on a.pk_material = b.pk_material " + - "left join bd_measdoc c on a.pk_measdoc = c.pk_measdoc " + - "left join bd_measdoc d on b.pk_measdoc = d.pk_measdoc " + - "where a.pk_material = '" + pkMaterial + "' "; - // logDl.error("QMS-Material-getUnitInfo-sql = " + sql); - Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); - map.put("convertRate", MyHelper.transferSpecialField(map.get("measrate") + "")); - return map; - } - private boolean checkIfOrg(String code, Map configParams) throws BusinessException { String targetCode = configParams.get("xbOrg"); if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { @@ -216,6 +200,21 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule { } + private String getDefCode(String code, String pk_defdoc) { + String res = ""; + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='" + code + "' and dr=0 ) and dr = 0 and pk_defdoc = '" + pk_defdoc + "'"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + res = defdocVOs[0].getCode().trim(); + } + } catch (DAOException e) { + logger.error("QMS-SaleOrder-error,getDefCode[" + e.getMessage() + "]"); + } + return res; + + } + } diff --git a/so/src/private/nc/bs/so/m30/rule/approve/AfterSoSyncRuleGyMes.java b/so/src/private/nc/bs/so/m30/rule/approve/AfterSoSyncRuleGyMes.java index bf6b3e1..64de432 100644 --- a/so/src/private/nc/bs/so/m30/rule/approve/AfterSoSyncRuleGyMes.java +++ b/so/src/private/nc/bs/so/m30/rule/approve/AfterSoSyncRuleGyMes.java @@ -77,9 +77,6 @@ public class AfterSoSyncRuleGyMes implements IRule { // 合同编号 String vdef6 = hvo.getVdef6(); String contractNum = getDefCode("zdy-001", vdef6); - if (contractNum.isEmpty()) { - contractNum = "11"; - } for (SaleOrderBVO item : itemVOS) { Object projectName = hybo.findColValue(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_NAME, ProjectHeadVO.PK_PROJECT + " = '" + item.getCprojectid() + "' "); String wlsql = " select code,name,graphid from bd_material where dr = 0 and pk_material = '" + item.getCmaterialvid() + "' "; @@ -137,7 +134,7 @@ public class AfterSoSyncRuleGyMes implements IRule { if (!"200".equals(resultObj.getString("code"))) { logger.error("gyMes-SaleOrder-error,result[" + resultObj.toJSONString() + "]"); - throw new BusinessException("gyMes-SaleOrder-error:" + resultObj.getString("message")); + throw new BusinessException("销售订单推送高压MES错误:" + resultObj.getString("msg")); } } diff --git a/so/src/private/nc/impl/so/m30/action/main/ApproveSaleOrderAction.java b/so/src/private/nc/impl/so/m30/action/main/ApproveSaleOrderAction.java index ab19b73..310db1a 100644 --- a/so/src/private/nc/impl/so/m30/action/main/ApproveSaleOrderAction.java +++ b/so/src/private/nc/impl/so/m30/action/main/ApproveSaleOrderAction.java @@ -166,11 +166,11 @@ public class ApproveSaleOrderAction { processer.addAfterRule(new MobAfterApproveMessageRule()); processer.addAfterRule(new SaleOrderCreateRmBeforeRule()); // 在审批后推送到MES系统 - // processer.addAfterRule(new AfterApprovingSynchronizeRuleMES()); + processer.addAfterRule(new AfterApprovingSynchronizeRuleMES()); // 在审批后推送到QMS系统 - // processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS()); + processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS()); // 在审批后推送到高压MES - processer.addAfterRule(new AfterSoSyncRuleGyMes()); + // processer.addAfterRule(new AfterSoSyncRuleGyMes()); } private boolean isExistDelivery(String ctranstype) { diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java index 5aed2b8..c030c91 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java @@ -44,14 +44,8 @@ public class MaterialToEpicMesListener implements IBusinessListener { Object[] objs = e.getObjs(); // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 - if ("1004".equals(eventType)) { - MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); - configParams = MyHelper.getConfigParams("Dldz-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("电力电子的艾普MES接口缺少配置"); - } - buildSyncData(useVOs, eventType); - } else if ("1071".equals(eventType) || "1069".equals(eventType)) { + if ("1002".equals(eventType) || "1004".equals(eventType) || + "1071".equals(eventType) || "1069".equals(eventType)) { MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); configParams = MyHelper.getConfigParams("Dldz-config", null); if (configParams.isEmpty()) { diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToQmsListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToQmsListener.java index 9d312d2..28020a2 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToQmsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToQmsListener.java @@ -90,10 +90,12 @@ public class MaterialToQmsListener implements IBusinessListener { */ private void buildSyncData(MaterialVO[] useVOs, String eventType) throws BusinessException { for (MaterialVO vo : useVOs) { + String pkMaterial = vo.getPk_material(); // 判断物料的业务单元是否是箱变公司,不是则跳过 String pkOrg = vo.getPk_org(); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (!"1009".equals(eventType) && checkIfOrg(orgCode, configParams)) { + Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "xbOrg"); + if (!"1009".equals(eventType) && (num <= 0)) { continue; } // 字段值翻译 @@ -101,7 +103,7 @@ public class MaterialToQmsListener implements IBusinessListener { String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME, "pk_marbasclass = '" + pk_marbasclass + "'"); // 计量单位 - String pkMaterial = vo.getPk_material(); + Map unitMap = getGoodsInfo(pkMaterial); // 1=未启用;2=已启用;3=已停用; @@ -118,6 +120,7 @@ public class MaterialToQmsListener implements IBusinessListener { contentObj.put("wlmc", vo.getName()); // 物料名称 contentObj.put("wlxhgg", vo.getMaterialtype() + vo.getMaterialspec()); // 物料型号规格 contentObj.put("wlfl", mrlTypeName); // 物料分类 + contentObj.put("wlbz", "产品"); // 物料标志 contentObj.put("sjjldw", unitMap.get("unitname")); // 设计计量单位 contentObj.put("cgjldw", unitMap.get("deputy_unitname")); // 采购计量单位 contentObj.put("zhxs", unitMap.getOrDefault("convertRate", "1.00")); // 转换系数