From 9401a7b4be97da316af7edf6f4e69432c2dd2c3b Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 29 Sep 2025 11:00:57 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=90=AF=E6=BA=90=E9=A2=86=E6=96=99?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/m4d/APIMaterialOutMaintainImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java index 1c9eaa67..02426c71 100644 --- a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java +++ b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java @@ -432,22 +432,28 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain { for (MaterialOutVO outVO : outVOS) { MaterialOutBodyVO[] bodys = outVO.getBodys(); for (MaterialOutBodyVO body : bodys) { - sourceIds.add(body.getCfirstbillhid()); + sourceIds.add(body.getCsourcebillhid()); } } // 查询备料计划行上的成套套数 nbsetpartsnum AggPickmVO[] newPickmVOS = queryService.queryBillsByPks(sourceIds.toArray(new String[0])); + if (newPickmVOS == null) { + throw new BusinessException("没有查询到材料出库关联的备料计划!"); + } // 获取备料计划行上的成套套数的合计值 Double sum = 0d; - for (AggPickmVO newPickmVO : newPickmVOS) { - PickmItemVO[] pickmItemVOS = (PickmItemVO[]) newPickmVO.getChildren(PickmItemVO.class); - for (PickmItemVO pickmItemVO : pickmItemVOS) { - Double nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toDouble(); - sum += nbsetpartsnum; + if (newPickmVOS != null) { + for (AggPickmVO newPickmVO : newPickmVOS) { + PickmItemVO[] pickmItemVOS = (PickmItemVO[]) newPickmVO.getChildren(PickmItemVO.class); + for (PickmItemVO pickmItemVO : pickmItemVOS) { + Double nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toDouble(); + sum += nbsetpartsnum; + } } } JSONObject result = new JSONObject(); result.put("vbillcode", paramMap.get("vbillcode"));// 生产订单号 + result.put("outcode", outVOS[0].getHead().getVbillcode());// 材料出库单号 result.put("batchId", paramMap.get("batchId"));// 领料批次id result.put("nbsetpartsnum", sum);// 累计领料套数 return result; From 9f392d2142ad403f80dafdadc220fdd1ef6c19a8 Mon Sep 17 00:00:00 2001 From: houyi <1398559711@qq.com> Date: Mon, 29 Sep 2025 11:32:07 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E9=AB=98=E5=8E=8B-=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=90=8E=E6=8E=A8=E9=80=81=E9=AB=98=E5=8E=8BMES-?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java | 2 + ...rApproveCancelSyncHighpressureMesRule.java | 141 ++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveCancelSyncHighpressureMesRule.java 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 096d7abd..64e1620c 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 @@ -93,5 +93,7 @@ public class PMOApproveBP { ICompareRule auditSupplyRule = new PMOApproveUnAuditSupplyRule(); processer.addAfterRule(auditSupplyRule); processer.addAfterRule(new AfterUnApproveSyncEpicMesRule()); + // 生产订单取消审批后推送高压MES + processer.addAfterRule(new AfterApproveCancelSyncHighpressureMesRule()); } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveCancelSyncHighpressureMesRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveCancelSyncHighpressureMesRule.java new file mode 100644 index 00000000..5f200813 --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveCancelSyncHighpressureMesRule.java @@ -0,0 +1,141 @@ +package nc.bs.mmpac.pmo.pac0002.bp.rule; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import nc.bs.dao.BaseDAO; +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.impl.pubapp.pattern.rule.IRule; +import nc.jdbc.framework.processor.ColumnProcessor; +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.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.scmpub.util.ArrayUtil; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Map; + +/** + * 流程生产订单取消审批后推送高压MES-删除接口 + * + * @author houyi + * @date 2025/9/28 + */ +public class AfterApproveCancelSyncHighpressureMesRule implements IRule { + + private static final String LOG_INFO_NAME = "gymeslog"; + private static final Log logger = Log.getInstance(LOG_INFO_NAME); + private Map configParams; + + @Override + public void process(PMOAggVO[] pmoAggVOS) { + if (ArrayUtil.isEmpty(pmoAggVOS)) { + return; + } + configParams = MyHelper.getConfigParams("gy-config", null); + try { + buildSyncData(pmoAggVOS); + } catch (Exception e) { + logger.error("同步生产订单到高压MES系统失败: " + e.getMessage(), e); + ExceptionUtils.wrappException(e); + } + } + + /** + * 构建同步数据 + */ + private void buildSyncData(PMOAggVO[] useVOs) throws BusinessException { + BaseDAO baseDAO = new BaseDAO(); + + HYPubBO hybo = new HYPubBO(); + JSONObject list = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + for (PMOAggVO vo : useVOs) { + PMOHeadVO pmoHeadVO = vo.getParentVO(); + PMOItemVO[] itemVOS = vo.getChildrenVO(); + // 判断物料的业务单元是否是高压公司,不是则跳过 + String pkOrg = pmoHeadVO.getPk_org(); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (checkIfOrg(orgCode, configParams)) { + continue; + } +// JSONObject singleObj = new JSONObject(); + String sql1 = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getModifier() + "' "; + String bipCreateBy = (String) baseDAO.executeQuery(sql1, new ColumnProcessor()); + list.put("bipUpdateBy", bipCreateBy); // 修改人ID + + // 创建子项数组 + JSONArray contentArray = new JSONArray(); + JSONArray cmoidArray = new JSONArray(); + for (PMOItemVO item : itemVOS) { + // 填充子项基础信息 + String cmoid = item.getCmoid(); + cmoidArray.add(cmoid); + } + ArrayList cmoidObj = new ArrayList<>(Arrays.asList(cmoidArray.toArray())); + // 使用 String.join 进行字符串拼接 + String result = ""; + StringBuilder sb = new StringBuilder(); + if (cmoidObj.size() > 1) { + for (int i = 0; i < cmoidObj.size(); i++) { + sb.append("'").append(cmoidObj.get(i)).append("'"); + if (i < cmoidObj.size() - 1) { + sb.append(","); + } + } + result = sb.toString(); + } else { + result = "'" + (String) cmoidObj.get(0) + "'"; + } + list.put("bipChildId", result); // 子项主键ID + + } + pushData(list); + } + + /** + * 推送同步数据 + */ + private void pushData(JSONObject param) throws BusinessException { + // 转json字符串的时候保留null值 + String jsonStr = JSON.toJSONString(param, + SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNullStringAsEmpty + ); + logger.error("gyMes-PMO-param = " + jsonStr); + String baseUrl = configParams.get("mesBaseUrl"); + String requestUrl = baseUrl + configParams.get("productionOrderCancel"); + logger.error("gyMes-PMO-url = " + requestUrl); + String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr); + JSONObject resultObj = JSONObject.parseObject(result); + logger.error("gyMes-PMO-res = " + result); + + if (!"200".equals(resultObj.getString("code"))) { + logger.error("gyMes-PMO-error,result[" + resultObj.toJSONString() + "]"); + throw new BusinessException("流程生产订单推送高压MES错误:" + resultObj.getString("msg")); + } + } + + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { + String targetCode = configParams.get("gyOrg"); + if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { + throw new BusinessException("未配置组织参数"); + } + String[] orgItem = targetCode.split(","); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + return false; + } + } + return true; + } +} From eeb4f20546f9837fedbeb288b1c6533a01755614 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 29 Sep 2025 13:26:52 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat(pmo):=20=E5=90=8C=E6=AD=A5IMS=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=90=8E=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=8A=9F=E8=83=BD=20-=20=E5=A2=9E=E5=8A=A0=E8=A1=A8?= =?UTF-8?q?=E5=A4=B4=E5=92=8C=E8=A1=A8=E4=BD=93=E7=9A=84=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AE=9A=E4=B9=89-=20=E5=9C=A8=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=8F=82=E6=95=B0=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AD=97=E6=AE=B5=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bp/rule/AfterApproveSyncImsRule.java | 75 ++++++++++++++++++- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java index d0ca32bb..403a8ddd 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java @@ -66,11 +66,19 @@ public class AfterApproveSyncImsRule implements IRule { "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "ninastnum", "ninnum" )); + // 表头-翻译字段 + private Set headTransferFields = new HashSet<>(Arrays.asList( + "pk_org", "cplanfactoryid", "approver", "billmaker", "creator" + )); // 表体-定义数值类型字段列表 - Set bodyNumFields = new HashSet<>(Arrays.asList( + private Set bodyNumFields = new HashSet<>(Arrays.asList( "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "ninastnum", "ninnum" )); + // 表体-翻译字段 + private Set bodyTransferFields = new HashSet<>(Arrays.asList( + "pk_org", "cmaterialvid", "cunitid", "castunitid", "cdeptid", "mocloser", "cinwarehouseid", "vbdef31" + )); @Override @@ -197,7 +205,7 @@ public class AfterApproveSyncImsRule implements IRule { } - private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) { + private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException { SQLParameter headParams = new SQLParameter(); if (isUpdate) { @@ -210,6 +218,8 @@ public class AfterApproveSyncImsRule implements IRule { Object value = pmoHeadVO.getAttributeValue(column); if (headNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (headTransferFields.contains(column)) { + value = transferHeadFields(column, value); } else { value = skipNull(value); } @@ -241,7 +251,7 @@ public class AfterApproveSyncImsRule implements IRule { return headParams; } - private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) { + private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException { SQLParameter bodyParams = new SQLParameter(); if (isUpdate) { @@ -257,6 +267,8 @@ public class AfterApproveSyncImsRule implements IRule { // 数值字段需要特殊处理空值 if (bodyNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (bodyTransferFields.contains(column)) { + value = transferBodyFields(column, value); } else { value = skipNull(value); } @@ -277,6 +289,8 @@ public class AfterApproveSyncImsRule implements IRule { // 数值字段需要特殊处理空值 if (bodyNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (bodyTransferFields.contains(column)) { + value = transferBodyFields(column, value); } else { value = skipNull(value); } @@ -352,7 +366,60 @@ public class AfterApproveSyncImsRule implements IRule { NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql); } } - // logger.error("gyIms-PMO-res = " + result); + } + + private String transferHeadFields(String column, Object value) throws BusinessException { + String result = ""; + if (value == null) { + return ""; + } + String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' "; + if ("approver".equals(column) || "billmaker".equals(column) || "creator".equals(column)) { + userSql = userSql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor()); + } else if ("pk_org".equals(column)) { + String sql = " select code from org_factory where nvl(dr,0) = 0 and pk_factory = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cplanfactoryid".equals(column)) { + String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } + return result; + } + + private String transferBodyFields(String column, Object value) throws BusinessException { + String result = ""; + if (value == null || "".equals(value) || "~".equals(value)) { + return ""; + } + String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' "; + if ("mocloser".equals(column)) { + userSql = userSql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor()); + } else if ("pk_org".equals(column)) { + String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cmaterialvid".equals(column)) { + String sql = " select code from bd_material where nvl(dr,0) = 0 and pk_material = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cunitid".equals(column) || "castunitid".equals(column)) { + String sql = " select code from bd_measdoc where nvl(dr,0) = 0 and pk_measdoc = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cdeptid".equals(column)) { + String sql = " select code from org_dept where nvl(dr,0) = 0 and pk_dept = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cinwarehouseid".equals(column) || "vbdef31".equals(column)) { + String sql = " select code from bd_stordoc where nvl(dr,0) = 0 and pk_stordoc = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } + return result; } From 8380c2a43c4d5ccf8022ab044292af86b86770cc Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 29 Sep 2025 13:58:23 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AE=A1=E6=A0=B8-=E6=A0=87=E5=93=81?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/main/UnApproveSaleOrderAction.java | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 so/src/private/nc/impl/so/m30/action/main/UnApproveSaleOrderAction.java diff --git a/so/src/private/nc/impl/so/m30/action/main/UnApproveSaleOrderAction.java b/so/src/private/nc/impl/so/m30/action/main/UnApproveSaleOrderAction.java new file mode 100644 index 00000000..cc53f899 --- /dev/null +++ b/so/src/private/nc/impl/so/m30/action/main/UnApproveSaleOrderAction.java @@ -0,0 +1,201 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.impl.so.m30.action.main; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import nc.bs.pub.action.N_30_UNAPPROVE; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.bs.so.m30.maintain.rule.insert.RewritePromotePriceInsertRule; +import nc.bs.so.m30.plugin.Action30PlugInPoint; +import nc.bs.so.m30.rule.approve.CheckPush5Aor20Rule; +import nc.bs.so.m30.rule.approve.SaleOrderDeleteRmBeforeRule; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule; +import nc.bs.so.m30.rule.m35.Rewrite35WhenUnApproveRule; +import nc.bs.so.m30.rule.me.SaleOrderVOUnApproveAfterRule; +import nc.bs.so.m30.rule.unapprove.BusiLog; +import nc.bs.so.m30.rule.unapprove.CheckUnApprovableCompensateRule; +import nc.bs.so.m30.rule.unapprove.CheckUnApprovableRule; +import nc.bs.so.m30.rule.unapprove.DeleteMessageRule; +import nc.bs.so.m30.rule.unapprove.UNApproveStateRule; +import nc.impl.pubapp.pattern.data.vo.VOUpdate; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery; +import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.pubapp.pattern.log.TimeLog; +import nc.vo.scmpub.util.AppInfoContext; +import nc.vo.so.m30.entity.SaleOrderBVO; +import nc.vo.so.m30.entity.SaleOrderHVO; +import nc.vo.so.m30.entity.SaleOrderVO; +import nc.vo.so.pub.enumeration.BillStatus; +import nc.vo.so.pub.rule.SOPfStatusChgRule; +import nccloud.bs.so.mobile.saleorder.operation.rule.MobAfterUnApproveMessageRule; + +public class UnApproveSaleOrderAction { + public UnApproveSaleOrderAction() { + } + + public SaleOrderVO[] unApprove(SaleOrderVO[] bills, N_30_UNAPPROVE script) { + SaleOrderVO[] ret = null; + + try { + AroundProcesser processer = new AroundProcesser(Action30PlugInPoint.UnApproveAction); + Integer oldbillstatus = bills[0].getParentVO().getFstatusflag(); + TimeLog.logStart(); + this.setAppInfoContext(); + this.addBeforeRule(processer, oldbillstatus); + processer.before(bills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0162")); + script.procUnApproveFlow(script.getPfParameterVO()); + SaleOrderVO[] newbills = script.getVos(); + this.updateNewBillStatus(newbills); + Integer newbillstatus = newbills[0].getParentVO().getFstatusflag(); + TimeLog.logStart(); + this.addAfterRule(processer, newbillstatus, oldbillstatus); + processer.after(newbills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0163")); + this.clearAppInfoContext(); + ret = newbills; + } catch (Exception ex) { + ExceptionUtils.wrappException(ex); + } + + return ret; + } + + private void updateNewBillStatus(SaleOrderVO[] newbills) { + List pk_org = new ArrayList(); + new HashMap(); + + for(SaleOrderVO vo : newbills) { + for(SaleOrderBVO bvo : vo.getChildrenVO()) { + String csettleorgid = bvo.getCsettleorgid(); + if (!pk_org.contains(csettleorgid)) { + pk_org.add(csettleorgid); + } + } + } + + Map isEnable = SysInitGroupQuery.isRMEnabled(pk_org); + + for(SaleOrderVO vo : newbills) { + List newbvo = new ArrayList(); + + for(SaleOrderBVO bvo : vo.getChildrenVO()) { + String csettleorgid = bvo.getCsettleorgid(); + if (!isEnable.isEmpty() && !(Boolean)isEnable.get(csettleorgid)) { + bvo.setRmcontractbflag(UFBoolean.FALSE); + } else { + newbvo.add(bvo); + } + } + } + + SOPfStatusChgRule statuschgrule = new SOPfStatusChgRule(); + SaleOrderHVO[] updateheads = new SaleOrderHVO[newbills.length]; + List listbody = new ArrayList(); + int i = 0; + + for(SaleOrderVO ordervo : newbills) { + statuschgrule.changePfToBillStatus(ordervo); + updateheads[i] = ordervo.getParentVO(); + + for(SaleOrderBVO bvo : ordervo.getChildrenVO()) { + listbody.add(bvo); + } + } + + String[] headupname = new String[]{"fstatusflag"}; + VOUpdate headupsrv = new VOUpdate(); + headupsrv.update(updateheads, headupname); + String[] bodyupname = new String[]{"frowstatus", "rmcontractbflag"}; + VOUpdate bodyupsrv = new VOUpdate(); + SaleOrderBVO[] updatebodys = (SaleOrderBVO[])listbody.toArray(new SaleOrderBVO[listbody.size()]); + bodyupsrv.update(updatebodys, bodyupname); + } + + private void addAfterRule(AroundProcesser processer, Integer newbillstatus, Integer oldbillstatus) { + IRule rule = null; + if (SysInitGroupQuery.isCREDITEnabled()) { + IRule var6 = new RenovateARByHidsEndRule(M30EngrossAction.M30UnApprove); + processer.addAfterRule(var6); + } + + if (BillStatus.FREE.equalsValue(newbillstatus) || BillStatus.NOPASS.equalsValue(newbillstatus) || BillStatus.AUDITING.equalsValue(newbillstatus)) { + IRule var7 = new UNApproveStateRule(); + processer.addAfterRule(var7); + processer.addAfterRule(new DeleteMessageRule()); + } + + IRule var8 = new SaleOrderVOUnApproveAfterRule(); + processer.addAfterRule(var8); + IRule var9 = new Rewrite35WhenUnApproveRule(); + processer.addAfterRule(var9); + if (BillStatus.NOPASS.equalsValue(oldbillstatus)) { + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var10 = new SaleOrderVOATPAfterRule(); + processer.addAfterRule(var10); + } + } + + IRule var11 = new MobAfterUnApproveMessageRule(); + processer.addAfterRule(var11); + processer.addAfterRule(new SaleOrderDeleteRmBeforeRule()); + } + + private void addBeforeRule(AroundProcesser processer, Integer oldbillstatus) { + IRule rule = new VOSagaFrozenValidateRule(); + processer.addBeforeRule(rule); + IRule var5 = new CheckPush5Aor20Rule(); + processer.addBeforeRule(var5); + IRule var6 = new CheckUnApprovableRule(); + processer.addBeforeRule(var6); + IRule var7 = new CheckUnApprovableCompensateRule(); + processer.addBeforeRule(var7); + if (SysInitGroupQuery.isCREDITEnabled()) { + IRule var8 = new RenovateARByHidsBeginRule(M30EngrossAction.M30UnApprove); + processer.addBeforeRule(var8); + } + + IRule var9 = new BusiLog(); + processer.addBeforeRule(var9); + if (BillStatus.NOPASS.equalsValue(oldbillstatus)) { + if (SysInitGroupQuery.isPRICEEnabled()) { + IRule var10 = new RewritePromotePriceInsertRule(); + processer.addAfterRule(var10); + } + + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var11 = new SaleOrderVOATPBeforeRule(); + processer.addBeforeRule(var11); + } + } + + } + + private void setAppInfoContext() { + String buttonCode = AppInfoContext.getBtnCode(); + if ("".equals(buttonCode) || null == buttonCode) { + AppInfoContext.setBtnCode("unappoveCenter"); + } + + } + + private void clearAppInfoContext() { + AppInfoContext.setBtnCode((String)null); + } +} From 691c9367e3b9eb05867320b0350c70df45a9ad24 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 29 Sep 2025 14:39:23 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=AB=98=E5=8E=8BIMS-=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bp/rule/AfterApproveSyncImsRule.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java index 403a8ddd..be620a08 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java @@ -25,7 +25,7 @@ import java.util.*; * @date 2025/9/27 */ public class AfterApproveSyncImsRule implements IRule { - + private String auditFlag; private static final String LOG_INFO_NAME = "gymeslog"; private static final Log logger = Log.getInstance(LOG_INFO_NAME); private Map configParams; @@ -34,6 +34,10 @@ public class AfterApproveSyncImsRule implements IRule { // IMS数据源 public BaseDAO imsDao; + public AfterApproveSyncImsRule(String auditFlag) { + this.auditFlag = auditFlag; + } + /** * 获取IMS数据源 */ @@ -106,9 +110,8 @@ public class AfterApproveSyncImsRule implements IRule { String pkOrg = pmoHeadVO.getPk_org(); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); if (checkIfOrg(orgCode, configParams)) { - // continue; + continue; } - // 获取主键值 String headPrimaryKeyValue = (String) pmoHeadVO.getAttributeValue("cpmohid"); @@ -226,8 +229,12 @@ public class AfterApproveSyncImsRule implements IRule { headParams.addParam(value); } } - // status C=创建U=修改2=处理完成 - headParams.addParam("U"); // 更新状态为U(修改) + // status 同步状态:BIP:C-创建;U-修改D-删除 IMS:2-MES单据接收完成 + if ("N".equals(auditFlag)) { + headParams.addParam("D"); + } else { + headParams.addParam("U"); // 更新状态为U(修改) + } // 添加主键作为WHERE条件 headParams.addParam(pmoHeadVO.getAttributeValue("cpmohid")); } else { @@ -239,12 +246,14 @@ public class AfterApproveSyncImsRule implements IRule { Object value = pmoHeadVO.getAttributeValue(column); if (headNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (headTransferFields.contains(column)) { + value = transferHeadFields(column, value); } else { value = skipNull(value); } headParams.addParam(value); } - // status C=创建U=修改2=处理完成 + // status 同步状态:BIP:C-创建;U-修改D-删除 IMS:2-MES单据接收完成 headParams.addParam("C"); // 默认状态为C(新增) } @@ -410,7 +419,7 @@ public class AfterApproveSyncImsRule implements IRule { String sql = " select code from bd_measdoc where nvl(dr,0) = 0 and pk_measdoc = '[value]' "; sql = sql.replace("[value]", value.toString()); result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); - } else if ("cdeptid".equals(column)) { + } else if ("cdeptid".equals(column)) { String sql = " select code from org_dept where nvl(dr,0) = 0 and pk_dept = '[value]' "; sql = sql.replace("[value]", value.toString()); result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());