From 052be292f240e46a12b1444c60935abb1694ba13 Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 2 Sep 2025 11:09:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(qc):=20=E9=87=8D=E6=9E=84=E7=AE=B1?= =?UTF-8?q?=E5=8F=98-=E8=B4=A8=E6=A3=80=E6=8A=A5=E5=91=8A=E6=8E=A8?= =?UTF-8?q?=E5=90=AF=E6=BA=90MES=20-=20=E4=BF=AE=E6=94=B9=E5=8C=85?= =?UTF-8?q?=E5=90=8D=E5=92=8C=E7=B1=BB=E5=90=8D=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E5=92=8C=E4=BA=BA=E5=91=98=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=9F=A5=E8=AF=A2=20-=20=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=9B=B4=E5=A4=9A=E4=B8=9A=E5=8A=A1=E5=AD=97=E6=AE=B5?= =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=8F=90=E9=AB=98=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7=20-=20=E6=96=B0=E5=A2=9E=20ReportInsertBP=20=E5=92=8C?= =?UTF-8?q?=20ReportUpdateBP=20=E7=B1=BB=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=A4=84=E7=90=86=E8=B4=A8=E6=A3=80=E6=8A=A5=E5=91=8A=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=92=8C=E6=9B=B4=E6=96=B0=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/qc/c003/maintain/ReportInsertBP.java | 93 +++++++++++++++++++ .../bs/qc/c003/maintain/ReportUpdateBP.java | 86 +++++++++++++++++ .../qc/c003/maintain}/rule/SyncQcQmsRule.java | 52 +++++++---- 3 files changed, 213 insertions(+), 18 deletions(-) create mode 100644 qc/src/private/nc/bs/qc/c003/maintain/ReportInsertBP.java create mode 100644 qc/src/private/nc/bs/qc/c003/maintain/ReportUpdateBP.java rename qc/src/private/nc/{impl/qc/c003/approve/action => bs/qc/c003/maintain}/rule/SyncQcQmsRule.java (70%) diff --git a/qc/src/private/nc/bs/qc/c003/maintain/ReportInsertBP.java b/qc/src/private/nc/bs/qc/c003/maintain/ReportInsertBP.java new file mode 100644 index 0000000..17418c4 --- /dev/null +++ b/qc/src/private/nc/bs/qc/c003/maintain/ReportInsertBP.java @@ -0,0 +1,93 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.qc.c003.maintain; + +import nc.bs.qc.c003.maintain.rule.ChkBillCodeUniqueRule; +import nc.bs.qc.c003.maintain.rule.InsertAndDelBatchCodeBeforeRule; +import nc.bs.qc.c003.maintain.rule.ReportChkChkBatUnique; +import nc.bs.qc.c003.maintain.rule.SyncQcQmsRule; +import nc.bs.qc.c003.maintain.rule.insert.CreatChkBatchRule; +import nc.bs.qc.c003.maintain.rule.insert.FillUpDataRule; +import nc.bs.qc.c003.maintain.rule.insert.InsertBatchCodeAfterRule; +import nc.bs.qc.c003.maintain.rule.insert.InsertBillCodeRule; +import nc.bs.qc.c003.maintain.rule.insert.MatchReportTypeRule; +import nc.bs.qc.c003.maintain.rule.insert.RowNoFillUpRule; +import nc.bs.qc.c003.maintain.rule.insert.WriteC001WhenInsertRule; +import nc.bs.qc.c003.maintain.rule.insert.WriteC002WhenInsertRule; +import nc.bs.qc.c003.plugin.ReportBPPlugInPoint; +import nc.bs.qc.pub.rule.QCRowNoCheckRule; +import nc.bs.qc.pub.rule.QCWriteOperateLogRule; +import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule; +import nc.impl.pubapp.bd.userdef.UserDefSaveRule; +import nc.impl.pubapp.pattern.data.bill.BillInsert; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.vo.pubapp.util.SetAddAuditInfoRule; +import nc.vo.qc.c003.entity.ReportHeaderVO; +import nc.vo.qc.c003.entity.ReportItemVO; +import nc.vo.qc.c003.entity.ReportVO; +import nc.vo.qc.c003.rule.FillupFacceptjudgeRule; +import nc.vo.qc.c003.rule.MaterialInStorckOrgRule; +import nc.vo.qc.c003.rule.ReportCheckFlowRule; +import nc.vo.qc.c003.rule.ReportItemsCheckRule; +import nc.vo.qc.c003.rule.ReportNumCheckRule; +import nc.vo.qc.c003.util.ReportAddStockStateRule; +import nc.vo.qc.pub.rule.CheckBillNumRule; +import nc.vo.scmpub.rule.QcCenterEnableCheckRule; +import nccloud.dto.qc.c003.constance.QCReportOprLogConst; + +public class ReportInsertBP { + public ReportInsertBP() { + } + + public ReportVO[] insertReport(ReportVO[] aggVO) { + AroundProcesser processer = new AroundProcesser(ReportBPPlugInPoint.ReportInsertBP); + this.addBeforeRule(processer); + this.addAfterFinalRule(processer); + processer.before(aggVO); + BillInsert bo = new BillInsert(); + ReportVO[] vos = (ReportVO[])bo.insert(aggVO); + processer.after(aggVO); + return vos; + } + + private void addAfterFinalRule(AroundProcesser processer) { + processer.addAfterFinalRule(new ChkBillCodeUniqueRule()); + processer.addAfterFinalRule(new WriteC001WhenInsertRule()); + processer.addAfterFinalRule(new WriteC002WhenInsertRule()); + processer.addAfterFinalRule(new InsertBatchCodeAfterRule()); + processer.addAfterRule(new QCWriteOperateLogRule(QCReportOprLogConst.maintainService.getCode(), QCReportOprLogConst.addAction.getCode())); + processer.addAfterFinalRule(new SyncQcQmsRule()); + } + + private void addBeforeRule(AroundProcesser processer) { + processer.addBeforeRule(new FillUpDataRule()); + processer.addBeforeRule(new SetAddAuditInfoRule()); + String[] hKeys = new String[2]; + hKeys[0] = "nchecknum"; + hKeys[1] = "ncheckastnum"; + String[] bKeys = new String[2]; + bKeys[0] = "nnum"; + bKeys[1] = "nastnum"; + processer.addBeforeRule(new CheckBillNumRule(hKeys, bKeys)); + processer.addBeforeRule(new InsertBillCodeRule()); + processer.addBeforeRule(new CreatChkBatchRule()); + processer.addBeforeRule(new ReportChkChkBatUnique()); + processer.addBeforeRule(new FillupFacceptjudgeRule()); + processer.addBeforeRule(new RowNoFillUpRule()); + processer.addBeforeRule(new QCRowNoCheckRule(ReportItemVO.class, "crowno")); + processer.addBeforeRule(new MatchReportTypeRule()); + processer.addBeforeRule(new ReportItemsCheckRule()); + processer.addBeforeRule(new ReportNumCheckRule()); + processer.addBeforeRule(new InsertAndDelBatchCodeBeforeRule(true)); + MarAssistantSaveRule mar = new MarAssistantSaveRule(); + processer.addBeforeRule(mar); + processer.addBeforeRule(new QcCenterEnableCheckRule()); + processer.addBeforeRule(new UserDefSaveRule(new Class[]{ReportHeaderVO.class, ReportItemVO.class})); + processer.addBeforeRule(new ReportAddStockStateRule()); + processer.addBeforeRule(new ReportCheckFlowRule()); + processer.addBeforeRule(new MaterialInStorckOrgRule()); + } +} diff --git a/qc/src/private/nc/bs/qc/c003/maintain/ReportUpdateBP.java b/qc/src/private/nc/bs/qc/c003/maintain/ReportUpdateBP.java new file mode 100644 index 0000000..782789c --- /dev/null +++ b/qc/src/private/nc/bs/qc/c003/maintain/ReportUpdateBP.java @@ -0,0 +1,86 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.qc.c003.maintain; + +import java.util.Map; + +import nc.bs.qc.c003.maintain.rule.ChkBillCodeUniqueRule; +import nc.bs.qc.c003.maintain.rule.ReportChkChkBatUnique; +import nc.bs.qc.c003.maintain.rule.SyncQcQmsRule; +import nc.bs.qc.c003.maintain.rule.update.FillUpDataUpdateRule; +import nc.bs.qc.c003.maintain.rule.update.UpdChkBatCode; +import nc.bs.qc.c003.maintain.rule.update.UpdateBatchCodeAfterRule; +import nc.bs.qc.c003.maintain.rule.update.UpdateBatchCodeBeforeRule; +import nc.bs.qc.c003.maintain.rule.update.UpdateBillCodeRule; +import nc.bs.qc.c003.maintain.rule.update.WriteC001WhenUpdateRule; +import nc.bs.qc.c003.plugin.ReportBPPlugInPoint; +import nc.bs.qc.pub.rule.QCRowNoCheckRule; +import nc.bs.qc.pub.rule.QCWriteOperateLogRule; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule; +import nc.impl.pubapp.pattern.data.bill.BillUpdate; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.vo.pubapp.util.SetUpdateAuditInfoRule; +import nc.vo.qc.c003.entity.ReportItemVO; +import nc.vo.qc.c003.entity.ReportVO; +import nc.vo.qc.c003.rule.MaterialInStorckOrgRule; +import nc.vo.qc.c003.rule.ReportItemsCheckRule; +import nc.vo.qc.c003.rule.ReportNumCheckRule; +import nc.vo.qc.c003.util.ReportAddStockStateRule; +import nc.vo.qc.c003.util.ReportVOInfoUtils; +import nc.vo.qc.pub.rule.CheckBillNumRule; +import nc.vo.qc.pub.rule.NoPassUpdateRule; +import nccloud.dto.qc.c003.constance.QCReportOprLogConst; + +public class ReportUpdateBP { + public ReportUpdateBP() { + } + + public ReportVO[] updateReport(ReportVO[] voArray, ReportVO[] originBills) { + CompareAroundProcesser processer = new CompareAroundProcesser(ReportBPPlugInPoint.ReportUpdateBP); + this.addBeforeRule(processer); + this.addAfterRule(processer); + ReportVOInfoUtils.handlerIndate((Map) null, voArray); + processer.before(voArray, originBills); + BillUpdate bo = new BillUpdate(); + ReportVO[] vos = (ReportVO[]) bo.update(voArray, originBills); + processer.after(voArray, originBills); + (new QCWriteOperateLogRule(QCReportOprLogConst.maintainService.getCode(), QCReportOprLogConst.updateAction.getCode())).process(originBills, voArray); + return vos; + } + + private void addAfterRule(CompareAroundProcesser processer) { + processer.addAfterRule(new ChkBillCodeUniqueRule()); + processer.addAfterRule(new UpdChkBatCode()); + processer.addAfterRule(new ReportChkChkBatUnique()); + processer.addAfterRule(new WriteC001WhenUpdateRule()); + processer.addAfterRule(new UpdateBatchCodeAfterRule()); + processer.addAfterRule(new SyncQcQmsRule()); + } + + private void addBeforeRule(CompareAroundProcesser processer) { + processer.addBeforeRule(new VOSagaFrozenValidateRule(true)); + processer.addBeforeRule(new UpdateBillCodeRule()); + processer.addBeforeRule(new FillUpDataUpdateRule()); + String[] hKeys = new String[2]; + hKeys[0] = "nchecknum"; + hKeys[1] = "ncheckastnum"; + String[] bKeys = new String[2]; + bKeys[0] = "nnum"; + bKeys[1] = "nastnum"; + processer.addBeforeRule(new CheckBillNumRule(hKeys, bKeys)); + processer.addBeforeRule(new SetUpdateAuditInfoRule()); + processer.addBeforeRule(new ReportItemsCheckRule()); + processer.addBeforeRule(new QCRowNoCheckRule(ReportItemVO.class, "crowno")); + processer.addBeforeRule(new ReportNumCheckRule()); + processer.addBeforeRule(new UpdateBatchCodeBeforeRule()); + MarAssistantSaveRule mar = new MarAssistantSaveRule(); + processer.addBeforeRule(mar); + processer.addBeforeRule(new NoPassUpdateRule()); + processer.addBeforeRule(new ReportAddStockStateRule()); + processer.addBeforeRule(new MaterialInStorckOrgRule()); + } +} diff --git a/qc/src/private/nc/impl/qc/c003/approve/action/rule/SyncQcQmsRule.java b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java similarity index 70% rename from qc/src/private/nc/impl/qc/c003/approve/action/rule/SyncQcQmsRule.java rename to qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java index b50a9c7..10aa455 100644 --- a/qc/src/private/nc/impl/qc/c003/approve/action/rule/SyncQcQmsRule.java +++ b/qc/src/private/nc/bs/qc/c003/maintain/rule/SyncQcQmsRule.java @@ -1,15 +1,19 @@ -package nc.impl.qc.c003.approve.action.rule; +package nc.bs.qc.c003.maintain.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.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.bd.supplier.baseinfo.ISupplierBaseInfoQryService; import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.material.measdoc.MeasdocVO; +import nc.vo.bd.psn.PsndocVO; +import nc.vo.bd.supplier.SupplierVersionVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.exception.ExceptionUtils; @@ -53,7 +57,6 @@ public class SyncQcQmsRule implements IRule { * 构建同步数据 */ private void buildSyncData(ReportVO[] useVOs) throws BusinessException { - BaseDAO baseDAO = new BaseDAO(); for (ReportVO vo : useVOs) { ReportHeaderVO hvo = vo.getHVO(); ReportItemVO[] bvo = vo.getBVO(); @@ -63,35 +66,48 @@ public class SyncQcQmsRule implements IRule { if (checkIfOrg(orgCode, configParams)) { continue; } + // 查询供应商信息 + String pk_supplier_v = hvo.getPk_supplier_v(); + ISupplierBaseInfoQryService baseQryService = NCLocator.getInstance().lookup(ISupplierBaseInfoQryService.class); + SupplierVersionVO supplierVersionVO = baseQryService.querySupplierVersionByVID(pk_supplier_v); + // 查询人员信息 + String pkApplyer = hvo.getPk_applyer(); + String applyerName = MyHelper.getStrValByCondition(PsndocVO.getDefaultTableName(), PsndocVO.NAME, + PsndocVO.PK_PSNDOC + " = '" + pkApplyer + "'"); // 组装数据 JSONObject singleObj = new JSONObject(); long cts = System.currentTimeMillis(); singleObj.put("batchid", cts); singleObj.put("csdh", hvo.getVapplybillcode());// 送检单号,采购送检单的唯一标识编号 singleObj.put("sjrq", hvo.getDapplydate().toString());// 送检日期,格式建议为 yyyy-MM-dd - singleObj.put("wlgysid", "");// 供应商编码 - singleObj.put("wlgysmc", "");// 供应商名称 - singleObj.put("sjr", hvo.getPk_applyer());// 送检人,负责提交送检单的人员姓名 + singleObj.put("wlgysid", supplierVersionVO.getCode());// 供应商编码 + singleObj.put("wlgysmc", supplierVersionVO.getName());// 供应商名称 + singleObj.put("sjr", applyerName);// 送检人,负责提交送检单的人员姓名 singleObj.put("cghth", "");// 采购合同号,关联对应的采购合同 - singleObj.put("bz", "");// 摘要备注,用于填写送检单的补充说明信息 + singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息 String pkMaterial = hvo.getPk_material(); Map materialMap = MyHelper.getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,materialspec,materialtype", "pk_material = '" + pkMaterial + "'"); + String cunitid = hvo.getCunitid();// 主单位 + String cunitname = MyHelper.getStrValByCondition(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME, + MeasdocVO.PK_MEASDOC + " = '" + cunitid + "'"); // 处理Content数组 JSONArray contentArray = new JSONArray(); - for (ReportItemVO item : bvo) { - JSONObject itemObj = new JSONObject(); - itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码 - itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称 - String materialtype = materialMap.getOrDefault("materialtype", "") + ""; - String materialspec = materialMap.getOrDefault("materialspec", "") + ""; - itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 - itemObj.put("sjsl", ""); // 送检数量(设计单位),按设计计量单位统计的送检数量 - itemObj.put("jldw", ""); // 计量单位 - itemObj.put("bz", ""); // 明细备注,用于填写该送检物料的补充说明 - contentArray.add(itemObj); + JSONObject itemObj = new JSONObject(); + itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码 + itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称 + String materialtype = materialMap.getOrDefault("materialtype", "") + ""; + String materialspec = materialMap.getOrDefault("materialspec", "") + ""; + itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格 + itemObj.put("sjsl", hvo.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量 + itemObj.put("jldw", cunitname); // 计量单位 + String bz = ""; + if (bvo != null && bvo.length > 0) { + bz = bvo[0].getVbdef1(); // BOM备注 } + itemObj.put("bz", bz); // 明细备注,用于填写该送检物料的补充说明 + contentArray.add(itemObj); singleObj.put("Content", contentArray); /* {