From 0cc535d58cd501586f85c55d00c16182ac5f9408 Mon Sep 17 00:00:00 2001 From: maolei Date: Fri, 23 May 2025 11:14:15 +0800 Subject: [PATCH 01/30] =?UTF-8?q?mmpac=E6=B5=81=E7=A8=8B=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=B4=E6=8A=A4:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=AD=97=E6=AE=B5=E4=B8=8E=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=80=BC=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了 SXZF16、SXZF17 和 SXZF18 的 propertyFiled 和 propertyValue 设置 - 确保属性字段和属性值正确对应,避免数据同步错误 --- .../pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java index 35ec8dde..974bc82e 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java @@ -214,9 +214,15 @@ public class AfterApproveRuleSyncMes implements IRule { JSONObject SXZF16 = new JSONObject(); JSONObject SXZF17 = new JSONObject(); JSONObject SXZF18 = new JSONObject(); - SXZF16.put("propertyFiled", item.getVparentbillcode()); - SXZF17.put("propertyFiled", item.getVparentmorowno()); - SXZF18.put("propertyFiled", head.getVtrantypecode()); + + SXZF16.put("propertyFiled", "SXZF16"); + SXZF17.put("propertyFiled", "SXZF17"); + SXZF18.put("propertyFiled", "SXZF18"); + + SXZF16.put("propertyValue", item.getVparentbillcode()); + SXZF17.put("propertyValue", item.getVparentmorowno()); + SXZF18.put("propertyValue", head.getVtrantypecode()); + properties.add(SXZF16); properties.add(SXZF17); properties.add(SXZF18); From ee4bce4267f4a1e420b5b3724360ae89e026c121 Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 23 May 2025 11:15:44 +0800 Subject: [PATCH 02/30] =?UTF-8?q?=E9=87=91=E6=85=A7=E8=BD=AF=E4=BB=B6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9BIP=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E4=B9=8B=E5=90=8E=E5=9B=9E=E5=86=99=E6=97=97?= =?UTF-8?q?=E8=88=B0=E7=89=88=E7=9A=84=E5=AF=B9=E5=BA=94=E5=AD=97=E6=AE=B5?= =?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 --- .../nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java | 2 ++ so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index 7b73488a..ea2ee6b7 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -1309,6 +1309,8 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { // BIPͬ۶ id updateJson.put("id", soMap.get("vdef9")); bodyJson.put("HTXSDD", updateJson); + NCCForUAPLogger.debug("updateBipFlagSo-bodyJson:" + bodyJson); + Logger.error("updateBipFlagSo-bodyJson:" + bodyJson); String resultString = doSendHttp(updateUrl, "POST", tokenParam, "", headers, bodyJson.toJSONString()); NCCForUAPLogger.debug("updateBipFlagSo-resultString:" + resultString); Logger.error("updateBipFlagSo-resultString:" + resultString); diff --git a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java index e6955c30..9a29d48d 100644 --- a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java +++ b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java @@ -21,7 +21,6 @@ import nccloud.api.rest.utils.NCCRestUtils; import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.api.so.m30.IAPISaleOrderMaitain; import nccloud.api.so.m30.IAPISaleOrderQuery; -import nccloud.baseapp.core.log.NCCForUAPLogger; import nccloud.commons.lang.StringUtils; import nccloud.openapi.scmpub.pub.NCCPubRestResource; import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; @@ -495,7 +494,7 @@ public class SaleOrderResource extends NCCPubRestResource { // ɾ", " sql.delete(sql.length() - 2, sql.length()); sql.append(" where csaleorderbid = ?"); - NCCForUAPLogger.debug("updateDef-sql:" + sql); + // NCCForUAPLogger.debug("updateDef-sql:" + sql); parameter.addParam(csaleorderbid); BaseDAO baseDAO = new BaseDAO(); int num = baseDAO.executeUpdate(sql.toString(), parameter); @@ -503,7 +502,7 @@ public class SaleOrderResource extends NCCPubRestResource { // дͬƽ̨ĶӦֶ NCLocator.getInstance().lookup(IAPISaleOrderMaitain.class).updateBipFlagSo(paramMap); } - return ResultMessageUtil.toJSON(num, "۶޸ijɹ"); + return ResultMessageUtil.toJSON(num, "۶޸ijɹ,޸" + num + ""); } catch (Exception e) { return ResultMessageUtil.exceptionToJSON(e); } From 90cb8c97673ca688d39c5ae2dc20007e720dc8f3 Mon Sep 17 00:00:00 2001 From: lihao Date: Fri, 23 May 2025 14:06:50 +0800 Subject: [PATCH 03/30] =?UTF-8?q?=E4=BA=A7=E6=88=90=E5=93=81=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E4=BF=9D=E5=AD=98=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nccloud/web/ic/pub/action/SaveAction.java | 331 ++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 ic/src/client/nccloud/web/ic/pub/action/SaveAction.java diff --git a/ic/src/client/nccloud/web/ic/pub/action/SaveAction.java b/ic/src/client/nccloud/web/ic/pub/action/SaveAction.java new file mode 100644 index 00000000..708ecf65 --- /dev/null +++ b/ic/src/client/nccloud/web/ic/pub/action/SaveAction.java @@ -0,0 +1,331 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.web.ic.pub.action; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.itf.scmpub.reference.uap.bd.currency.CurrencyInfo; +import nc.pubitf.ic.flowaccount.BillInfo; +import nc.pubitf.ic.flowaccount.FlowAccountQuery; +import nc.vo.ic.general.define.ICBillBodyVO; +import nc.vo.ic.general.define.ICBillVO; +import nc.vo.ic.m4a.entity.GeneralInVO; +import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.ic.m4i.entity.GeneralOutVO; +import nc.vo.ic.pub.lang.ResBase; +import nc.vo.ic.pub.lang.RuleRes; +import nc.vo.ic.pub.util.ValueCheckUtil; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.model.transfer.bill.ClientBillCombinServer; +import nc.vo.pubapp.pattern.pub.MathTool; +import nc.vo.scmpub.res.billtype.ICBillType; +import nc.vo.scmpub.util.AppInfoContext; +import nccloud.commons.lang.StringUtils; +import nccloud.framework.core.exception.ExceptionUtils; +import nccloud.framework.core.json.IJson; +import nccloud.framework.core.util.GridCompareUtils; +import nccloud.framework.service.ServiceLocator; +import nccloud.framework.web.action.itf.ICommonAction; +import nccloud.framework.web.container.IRequest; +import nccloud.framework.web.json.JsonFactory; +import nccloud.framework.web.ui.config.PageTemplet; +import nccloud.framework.web.ui.model.row.Cell; +import nccloud.framework.web.ui.pattern.billcard.BillCard; +import nccloud.pubitf.ic.inbound.service.IICFilterData; +import nccloud.pubitf.riart.pflow.CloudPFlowContext; +import nccloud.pubitf.riart.pflow.ICloudScriptPFlowService; +import nccloud.web.ic.pub.entity.SrcFlagDTO; +import nccloud.web.ic.pub.precision.ICBaseBillcardPrecisionHandler; +import nccloud.web.ic.pub.resexp.ICPFResumeExceptionUtil; +import nccloud.web.ic.pub.utils.PageUtils; +import nccloud.web.ic.ui.pattern.billcard.ICBillCardOperator; + +public class SaveAction implements ICommonAction { + public SaveAction() { + } + + public Object doAction(IRequest request) { + CloudPFlowContext context = ICPFResumeExceptionUtil.processBefore(request); + String str = request.read(); + IJson json = JsonFactory.create(); + BillCard card = (BillCard)json.fromJson(str, BillCard.class); + SrcFlagDTO srcFlag = (SrcFlagDTO)json.fromJson(str, SrcFlagDTO.class); + ICBillCardOperator operator = this.getOperator(card); + ICBillVO[] vos = new ICBillVO[]{(ICBillVO)operator.toBill(request)}; + vos = this.fillBill(vos); + + for(ICBillVO vo : vos) { + if ((vo instanceof GeneralOutVO || vo instanceof GeneralInVO) && !StringUtils.isNotEmpty(vo.getPrimaryKey()) && srcFlag.getSrcFlag() != null) { + if ("assembly".equals(srcFlag.getSrcFlag().get("srcFlag"))) { + vo.getParentVO().setAttributeValue("srcflag", "1"); + } + + if ("teardown".equals(srcFlag.getSrcFlag().get("srcFlag"))) { + vo.getParentVO().setAttributeValue("srcflag", "2"); + } + } + } + + operator.setOriginBillcard(card); + if (vos != null && vos.length > 0) { + this.checkReferencedBill(vos); + this.checkncorrespond(vos); + vos = (ICBillVO[])((IICFilterData)ServiceLocator.find(IICFilterData.class)).filterFromFront(this.getBilltype().getCode(), vos); + context.setBillType(this.getBilltype().getCode()); + context.setBillVos(vos); + ICloudScriptPFlowService service = (ICloudScriptPFlowService)ServiceLocator.find(ICloudScriptPFlowService.class); + context.setActionName("WRITE"); + ICBillVO[] obj = null; + + try { + AppInfoContext.setBtnCode(this.getBtnCode()); + Object ret = service.exeScriptPFlow(context); + if (ret instanceof ICBillVO[]) { + obj = (ICBillVO[])ret; + } else { + obj = (ICBillVO[])((Object[])ret)[0]; + } + } catch (Exception e) { + return ICPFResumeExceptionUtil.handleICResumeException(e); + } + + obj = ((IICFilterData)ServiceLocator.find(IICFilterData.class)).fillLocationVOs(this.getBilltype().getCode(), obj); + ClientBillCombinServer util = new ClientBillCombinServer(); + this.processDelBody(vos); + util.combine(vos, obj); + this.processLocationVOs(vos, obj); + this.handlerComputedPropertyField(vos); + BillCard retcard = null; + try { + retcard = this.afterProcess(operator, vos[0]); + } catch (DAOException e) { + throw new RuntimeException(e); + } + retcard = GridCompareUtils.compareBillCardGrid(operator.getOriginBillcard(), retcard); + operator.translate(retcard); + this.dealCarrier(retcard); + return retcard; + } else { + return null; + } + } + + private void checkncorrespond(ICBillVO[] vos) { + ArrayList lbids = new ArrayList(); + + for(int i = 0; i < vos.length; ++i) { + ICBillBodyVO[] bodys = vos[i].getBodys(); + + for(int j = 0; j < bodys.length; ++j) { + String cgeneralbid = bodys[j].getCgeneralbid(); + lbids.add(cgeneralbid); + } + } + + IICFilterData service = (IICFilterData)ServiceLocator.find(IICFilterData.class); + Map extnum = service.getExtnum(vos[0].getParentVO().getBillType(), (String[])lbids.toArray(new String[0])); + StringBuilder errs = new StringBuilder(); + if (!ValueCheckUtil.isNullORZeroLength(extnum)) { + for(int i = 0; i < vos.length; ++i) { + ICBillBodyVO[] bodys = vos[i].getBodys(); + + for(int j = 0; j < bodys.length; ++j) { + String cgeneralbid = bodys[j].getCgeneralbid(); + UFDouble ncorrespondastnum = bodys[j].getNcorrespondastnum(); + if (!MathTool.equals(ncorrespondastnum, (UFDouble)extnum.get(cgeneralbid))) { + errs.append(ResBase.getCrowno()).append(": ").append(bodys[j].getCrowno()).append(NCLangRes4VoTransl.getNCLangRes().getStrByID("4008001_0", "04008001-0975")).append("\n"); + } + } + } + } + + if (StringUtils.isNotEmpty(errs)) { + ExceptionUtils.wrapBusinessException(errs.toString()); + } + + } + + private void checkReferencedBill(ICBillVO[] vos) { + ICBillVO vo = vos[0]; + if (!StringUtils.isEmpty(vo.getHead().getCgeneralhid())) { + List idList = new ArrayList(); + String vbillcode = vos[0].getHead().getVbillcode(); + + for(ICBillBodyVO bodyVO : vo.getBodys()) { + if (StringUtils.isNotEmpty(bodyVO.getCgeneralbid())) { + idList.add(bodyVO.getCgeneralbid()); + } + } + + if (idList != null && idList.size() > 0) { + FlowAccountQuery flow = (FlowAccountQuery)ServiceLocator.find(FlowAccountQuery.class); + Map> refmap = new HashMap(); + + try { + refmap = flow.queryBillReferenced((String[])idList.toArray(new String[idList.size()])); + } catch (BusinessException e) { + ExceptionUtils.wrapException(e); + } + + if (ValueCheckUtil.isNullORZeroLength(refmap)) { + return; + } + + if (vo instanceof SaleOutVO) { + List errList = new ArrayList(); + + for(ICBillBodyVO bodyVO : vo.getBodys()) { + if (bodyVO.getStatus() == 3) { + String cgeneralbid = bodyVO.getCgeneralbid(); + if (StringUtils.isNotEmpty(cgeneralbid) && refmap.containsKey(cgeneralbid)) { + errList.add(bodyVO.getCrowno()); + } + } + } + + if (ValueCheckUtil.isNullORZeroLength(errList)) { + return; + } + + StringBuilder errs = new StringBuilder(); + errs.append(RuleRes.getBillRownReferencedErr(vbillcode)).append("\n"); + + for(String row : errList) { + errs.append(ResBase.getCrowno()).append(": ").append(row).append(NCLangRes4VoTransl.getNCLangRes().getStrByID("4008001_0", "04008001-0975")).append("\n"); + } + + ExceptionUtils.wrapBusinessException(errs.toString()); + } + + ExceptionUtils.wrapBusinessException(RuleRes.getBillReferencedErr(vbillcode)); + } + + } + } + + public void handlerComputedPropertyField(ICBillVO[] obj) { + } + + public String getBtnCode() { + return null; + } + + protected void processLocationVOs(ICBillVO[] vos, ICBillVO[] obj) { + ICBillBodyVO[] clientBodys = vos[0].getChildrenVO(); + ICBillBodyVO[] serverBodys = obj[0].getChildrenVO(); + Map bvomap = new HashMap(); + + for(ICBillBodyVO bvo : serverBodys) { + bvomap.put(bvo.getCgeneralbid(), bvo); + } + + for(int i = 0; i < clientBodys.length; ++i) { + if (bvomap.get(clientBodys[i].getCgeneralbid()) != null) { + ICBillBodyVO serverBody = (ICBillBodyVO)bvomap.get(clientBodys[i].getCgeneralbid()); + clientBodys[i].setLocationVOs(serverBody.getLocationVOs()); + } + } + + } + + private void processDelBody(ICBillVO[] vos) { + ICBillBodyVO[] bodys = vos[0].getBodys(); + List realbody = new ArrayList(); + + for(ICBillBodyVO body : bodys) { + if (body.getStatus() != 3) { + realbody.add(body); + } + } + + vos[0].setChildrenVO((CircularlyAccessibleValueObject[])null); + vos[0].setChildrenVO((CircularlyAccessibleValueObject[])realbody.toArray(new ICBillBodyVO[0])); + } + + private ICBillCardOperator getOperator(BillCard card) { + String[] info = card.getUserjson().split(","); + String pagecode = null; + String appcode = null; + String pagecodecard = null; + if (info.length > 1) { + pagecode = info[0]; + appcode = info[1]; + pagecodecard = info[2]; + } else { + pagecode = info[0]; + pagecodecard = card.getPageid(); + } + + ICBillCardOperator operator; + if (appcode == null) { + operator = new ICBillCardOperator((String)null, pagecodecard, pagecode); + } else { + PageTemplet pageTemplet = PageUtils.getPageTemplet(appcode, pagecodecard); + operator = new ICBillCardOperator(pageTemplet.getOid(), pagecodecard, pagecode); + } + + return operator; + } + + protected ICBillVO[] fillBill(ICBillVO[] vos) { + return vos; + } + + private BillCard afterProcess(ICBillCardOperator operator, ICBillVO vo) throws DAOException { + BillCard retcard = operator.toCard(vo, false, false); + operator.processICBillstatusForWeb(retcard); + + // 获取来源单据号 +// String sourceBillNo = (String) vo.getHead().getAttributeValue("55A2250500000006"); +// if (StringUtils.isNotEmpty(sourceBillNo)) { +// // 更新来源单据状态为 "已处理" +// updateSourceBillStatus(sourceBillNo, "已处理"); +// } + + // 其他处理逻辑 + String ccurrencyid = (String) vo.getBody(0).getAttributeValue("ccurrencyid"); + if (!StringUtils.isEmpty(ccurrencyid)) { + String name = CurrencyInfo.getName(ccurrencyid); + retcard.getBody().getModel().getListRows().forEach((row) -> { + Cell cell = new Cell(); + cell.setValue(ccurrencyid); + cell.setDisplay(name); + row.addCell("ccurrencyid", cell); + }); + } + + ICBaseBillcardPrecisionHandler handler = this.getPrecisionHandler(retcard); + handler.process(); + return retcard; + } + private void updateSourceBillStatus(String sourceBillNo, String status) throws DAOException { + + //1.查询 流程生产订单明细行产品:合格入库数量=数量 + String sql = "update mm_pickm set cstatus = '" + status + "' where ccode = '" + sourceBillNo + "'"; +// BaseDAO baseDAO = new BaseDAO(); +// baseDAO.executeUpdate(sql); + //2.更新流程生产订单明细行对应产品的下游单据备料计划状态改为完成态 + } + + protected ICBillType getBilltype() { + throw new RuntimeException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0", "04008027-0198")); + } + + protected ICBaseBillcardPrecisionHandler getPrecisionHandler(BillCard card) { + return new ICBaseBillcardPrecisionHandler(card); + } + + protected void dealCarrier(BillCard card) { + } +} From 97877c2a6ec71ac64e0415f549ab6e33250fe993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Fri, 23 May 2025 14:11:12 +0800 Subject: [PATCH 04/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E5=92=8C=E9=A1=B9=E7=9B=AE=E5=8F=98=E6=9B=B4=5FV4=5Fsdlizheng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java | 6 ++++-- .../pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java index 80f212a3..77a8eb16 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java @@ -83,8 +83,10 @@ public class AfterApproveRuleSyncRZWMS implements IRule { singleObj.put("djyl", body.getNplanoutastnum().getDouble()); // singleObj.put("clyl", body.getNplanoutastnum().getDouble()); // - String rccode = transferCodeByPk(RcVO.getDefaultTableName(), RcVO.VRCCODE, RcVO.CRCID, head.getVstdprocid()); - singleObj.put("scgx_wbid", rccode); // ϵͳʹùid +// String rccode = transferCodeByPk(RcVO.getDefaultTableName(), RcVO.VRCCODE, RcVO.CRCID, head.getVstdprocid()); + singleObj.put("scgx_wbid", body.getVbdef11()); +// singleObj.put("scgx_wbid", rccode); // ϵͳʹùid + //sdbj int Ĭ1ҵERP˺󣬴MOM singleObj.put("sdbj", 1); //shbj int ˱ Ĭ1ҵERP˺󣬴MOM diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 66640642..900a5de8 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -2,12 +2,14 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.yonyou.iuap.bd.defdoc.dto.DefDoc; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; +import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.stordoc.StordocVO; import nc.vo.cmp.util.StringUtils; @@ -168,7 +170,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { detailItem.put("jhbhzdsc", 0); // Ŀ - detailItem.put("wlzdycs06", body.getVdef1()); + detailItem.put("wlzdycs06", transferCodeByPk("bd_defdoc", DefdocVO.CODE, DefdocVO.PK_DEFDOC, body.getVdef1())); +// detailItem.put("wlzdycs06", body.getVdef1()); details.add(detailItem); } } From dec8dca610f53ea78c3143568d5230926a63fc3d Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 23 May 2025 14:32:27 +0800 Subject: [PATCH 05/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/so/m30/APISaleOrderMaitainImpl.java | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index ea2ee6b7..b8545f01 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -338,6 +338,8 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if ("0".equals(dr) && num <= 0) { bodydata.put("status", "add"); } + } else { + ExceptionUtils.wrappBusinessException("δͬƽ̨ϸӱУ鴫Σ"); } } } @@ -456,7 +458,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { // // String ctrantypeid = orderHVO.getAttributeValue("ctrantypeid") + ""; String vtrantypecode = orderHVO.getVtrantypecode(); - NCCForUAPLogger.debug("setOtherId-ccustomerid:" + ccustomerid + ",vtrantypecode:" + vtrantypecode); + // NCCForUAPLogger.debug("setOtherId-ccustomerid:" + ccustomerid + ",vtrantypecode:" + vtrantypecode); try { String sql = ""; // @@ -464,7 +466,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { sql = " select pk_vid,pk_dept from org_dept where code = '[code]' "; sql = sql.replace("[code]", cdeptvid); Map deptMap = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); - NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-deptObj:" + deptMap); + // NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-deptObj:" + deptMap); if (deptMap != null && !deptMap.isEmpty()) { if (!"".equals(deptMap.getOrDefault("pk_dept", "") + "")) { orderHVO.setCdeptid(deptMap.getOrDefault("pk_dept", "") + ""); @@ -479,7 +481,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { sql = " select pk_psndoc from bd_psndoc where code = '[code]' "; sql = sql.replace("[code]", cemployeeid); Object staffObj = new BaseDAO().executeQuery(sql, new ColumnProcessor("pk_psndoc")); - NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-staffObj:" + staffObj); + // NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-staffObj:" + staffObj); if (staffObj != null) { String id = BFPubTools.getString_TrimAsNull(staffObj); if (!id.isEmpty()) { @@ -492,7 +494,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' "; sql = sql.replace("[code]", cinvoicecustid); Object invCustObj = new BaseDAO().executeQuery(sql, new ColumnProcessor("pk_customer")); - NCCForUAPLogger.debug("setOtherId-invCustObj:" + invCustObj); + // NCCForUAPLogger.debug("setOtherId-invCustObj:" + invCustObj); if (invCustObj != null) { String id = BFPubTools.getString_TrimAsNull(invCustObj); if (!id.isEmpty()) { @@ -505,7 +507,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' "; sql = sql.replace("[code]", ccustomerid); Object custObj = new BaseDAO().executeQuery(sql, new ColumnProcessor("pk_customer")); - NCCForUAPLogger.debug("setOtherId-custObj:" + custObj); + // NCCForUAPLogger.debug("setOtherId-custObj:" + custObj); if (custObj != null) { String id = BFPubTools.getString_TrimAsNull(custObj); if (!id.isEmpty()) { @@ -518,12 +520,12 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { IBilltypeService billtypeService = NCLocator.getInstance().lookup(IBilltypeService.class); BilltypeVO billtype = billtypeService.getBilltype(vtrantypecode); if (billtype != null && billtype.getPk_billtypeid() != null) { - NCCForUAPLogger.debug("setOtherId-pk_billtypeid:" + billtype.getPk_billtypeid()); + // NCCForUAPLogger.debug("setOtherId-pk_billtypeid:" + billtype.getPk_billtypeid()); orderHVO.setCtrantypeid(billtype.getPk_billtypeid()); } } } catch (Exception e) { - NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-exp:" + e.getMessage()); + Logger.error("APISaleOrderMaitainImpl-setOtherId-exp:" + e.getMessage()); throw new RuntimeException(e); } } @@ -725,19 +727,6 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { targetBVO.setVbdef19(sourceBVO.getVbdef19()); // ƻ targetBVO.setVbdef20(sourceBVO.getVbdef20()); // ƻ깤 -// ־ֶΣ - NCCForUAPLogger.debug(String.format( - "cmaterialvid = [%S], vbdef1 = [%S], vbdef5 = [%S], vbdef10 = [%S], vbdef13 = [%S], " - + " vbdef18 = [%S], vbdef19 = [%S], vbdef20 = [%S]", - cmaterialvid, - targetBVO.getVbdef1(), - targetBVO.getVbdef5(), - targetBVO.getVbdef10(), - targetBVO.getVbdef13(), - targetBVO.getVbdef18(), // Ƿ - targetBVO.getVbdef19(), // ƻ - targetBVO.getVbdef20() // ƻ깤 - )); } } @@ -991,7 +980,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { // ˰ bVO.setAttributeValue("ctaxcodeid", o_pk_project); } catch (BusinessException e) { - NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setMaterl:" + e.getMessage()); + Logger.error("APISaleOrderMaitainImpl-setMaterl:" + e.getMessage()); throw new RuntimeException(e); } } @@ -1249,7 +1238,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { */ } catch (Exception e) { - NCCForUAPLogger.debug("APISaleOrderMaitainImpl-addBvo:" + e.getMessage()); + Logger.error("APISaleOrderMaitainImpl-addBvo:" + e.getMessage()); throw new RuntimeException(e); } } From f038a95f4b34e0a32e5c27fc2332ec395b0c9ef8 Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 23 May 2025 14:41:53 +0800 Subject: [PATCH 06/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=8F=91=E7=A5=A8?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8A=A5=E4=BB=B7=E5=8D=95=E4=BD=8D=E8=B5=8B?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java index 73bb90e9..5787c17e 100644 --- a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java +++ b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java @@ -318,7 +318,10 @@ public class IAPISaleInvMaitainImpl { itemDetails.put("ftaxtypeflag", 1);// ˰ itemDetails.put("pk_group", "00");// itemDetails.put("pk_org", originalJson.getJSONObject("billhead").getString("pk_org"));// Ʊ֯ - itemDetails.put("cunitid", item.getString("castunitid"));// λ + // λ + String castunitid = item.getString("castunitid"); + itemDetails.put("cunitid", castunitid);// λ + itemDetails.put("cqtunitid", castunitid);// ۵λ String vchangerate = value2.getOrDefault("vchangerate", "1/1") + ""; itemDetails.put("vchangerate", vchangerate);// From be45267932b571376872fa0f6d20ae9648e3c104 Mon Sep 17 00:00:00 2001 From: maolei Date: Fri, 23 May 2025 14:56:19 +0800 Subject: [PATCH 07/30] =?UTF-8?q?mmpac:=20=E6=B5=81=E7=A8=8B=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A2=E5=8D=95=E5=8F=AA=E5=90=8C=E6=AD=A5=E6=88=90?= =?UTF-8?q?=E5=93=81and=E5=BF=BD=E7=95=A5=E9=87=8D=E5=A4=8Dkey=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加了对主键冲突错误的处理,避免因重复数据导致的同步失败 -改进了错误处理机制,对不同类型的错误进行区分和记录 - 优化了请求和响应的处理流程,提高了系统稳定性 - 添加了日志记录,便于问题追踪和调试 --- .../bp/rule/AfterApproveRuleSyncMes.java | 102 +++++++++++++++++- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java index 974bc82e..1f6691f9 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java @@ -43,13 +43,14 @@ public class AfterApproveRuleSyncMes implements IRule { private static final String MES_PMO_SYNC_URL = "/GTHINKING/AjaxService/N_SCSJJSA/102525006.ashx/receive_woinfo_insert"; + private static final String PK_VIOLATION_ERROR_SUBSTRING = "Υ PRIMARY KEY ԼPK_WO"; + @Override public void process(PMOAggVO[] pmoAggVOS) { if (ArrayUtil.isEmpty(pmoAggVOS)) { return; } try { - // 鲢ɸѡ List filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS); if (filteredOrders.isEmpty()) { obmlog.info("ûзҪͬMESϵͳ"); @@ -68,17 +69,99 @@ public class AfterApproveRuleSyncMes implements IRule { } for (PMOItemVO item : bodys) { + if (item.getVparentbillid() == null || item.getVparentbillid().isBlank()) { + continue; + } syncOrderItemToMes(head, item); } } obmlog.info("ͬMESϵͳɡ"); + } catch (Exception e) { obmlog.error("ͬMESϵͳʧ: " + e.getMessage(), e); ExceptionUtils.wrappException(e); } } + /** + * MESӿڲضͻ + * + * @param apiPath MESӿ· + * @param requestPayload + * @param orderNo (־) + * @param itemRow к (־) + * @throws BusinessException ضɺԵĴ + */ + private void callMesWithCustomErrorHandling(String apiPath, JSONObject requestPayload, String orderNo, String itemRow) throws BusinessException { + String responseString = null; + try { + responseString = HTTP_POST_OTHER_SYS.callMes(apiPath, requestPayload); + obmlog.info(" " + orderNo + " " + itemRow + " MESϵͳԭʼ: " + responseString); + + if (responseString == null || responseString.trim().isEmpty()) { + obmlog.warn(" " + orderNo + " " + itemRow + " MESϵͳΪա"); + // ҵ󣬿ӦҲһִ + // throw new BusinessException("MESϵͳΪա"); + return; // ΪӦ󣬼ִ + } + + JSONObject jsonResponse = JSONObject.parseObject(responseString); + + // Ƿ "Data" + if (jsonResponse.containsKey("Data") && jsonResponse.get("Data") instanceof JSONArray) { + JSONArray dataArray = jsonResponse.getJSONArray("Data"); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataObject = dataArray.getJSONObject(i); + String successInData = dataObject.getString("Success"); + if ("false".equalsIgnoreCase(successInData)) { + String errorMessage = dataObject.getString("ErrorMessage"); + if (StringUtils.isEmpty(errorMessage)) { + errorMessage = dataObject.getString("Message"); + } + if (StringUtils.isEmpty(errorMessage)) { + errorMessage = "ⲿϵͳDataδṩȷϢSuccessΪfalse"; + } + + if (errorMessage.contains(PK_VIOLATION_ERROR_SUBSTRING)) { + obmlog.warn(" " + orderNo + " " + itemRow + " MESͻItem " + i + "Ϊɺԣ " + errorMessage); + // ض󣬼¼ + } else { + throw new BusinessException("ͬMESϵͳʧ (Item " + i + "), Ϣ" + errorMessage); + } + } + } + } else { + // Successֶ + String success = jsonResponse.getString("Success"); + if ("false".equalsIgnoreCase(success)) { + String errorMessage = jsonResponse.getString("ErrorMessage"); + if (StringUtils.isEmpty(errorMessage)) { + errorMessage = jsonResponse.getString("Message"); + } + if (StringUtils.isEmpty(errorMessage)) { + errorMessage = "ⲿϵͳδṩȷϢSuccessΪfalse"; + } + + if (errorMessage.contains(PK_VIOLATION_ERROR_SUBSTRING)) { + obmlog.warn(" " + orderNo + " " + itemRow + " MESͻΪɺԣ " + errorMessage); + // ض󣬼¼ + } else { + throw new BusinessException("ͬMESϵͳʧ, Ϣ" + errorMessage); + } + } + } + // мͨض󱻺ԣ򷽷 + } catch (BusinessException e) { + // ֱ׳Ѳҵ쳣 + throw e; + } catch (Exception e) { + // callMesJSON쳣 + obmlog.error(" " + orderNo + " " + itemRow + " MESӦʱԭʼӦ: " + responseString + " : " + e.getMessage(), e); + throw new BusinessException("MESӦʱ" + e.getMessage(), e); + } + } + /** * 鲢ɸѡҪͬĵ */ @@ -87,6 +170,14 @@ public class AfterApproveRuleSyncMes implements IRule { for (PMOAggVO aggvo : pmoAggVOS) { String pkOrg = aggvo.getParentVO().getPk_org(); String orgCode = transferCodeByPk(FactoryVO.getDefaultTableName(), FactoryVO.CODE, FactoryVO.PK_FACTORY, pkOrg); +// // ֹmesbipbip͸mes +// String billmaker = aggvo.getParentVO().getBillmaker(); +// String userCode = transferCodeByPk("sm_user", UserVO.USER_CODE, UserVO.CUSERID, billmaker); +// +// if ("C034".equals(orgCode)&&(!"gaoning".equals(userCode))) { +// aggvoList.add(aggvo); +// } + if ("C034".equals(orgCode)) { aggvoList.add(aggvo); } @@ -236,12 +327,13 @@ public class AfterApproveRuleSyncMes implements IRule { obmlog.info(" " + vbillcode + " " + itemRow + " ͬMES: " + requestPayload.toJSONString()); - // Send to MES - // Note: The actual endpoint URL might need to be configured or obtained from a central place. - HTTP_POST_OTHER_SYS.sendToExternalSystem(MES_PMO_SYNC_URL, requestPayload); - obmlog.info(" " + vbillcode + " " + itemRow + " ѳɹ͵MESϵͳ"); + // Send to MES using custom error handling + callMesWithCustomErrorHandling(MES_PMO_SYNC_URL, requestPayload, vbillcode, itemRow); + + obmlog.info(" " + vbillcode + " " + itemRow + " ѳɹ͵MESϵͳضѱ¼"); } + /** * ѯ */ From a59b2f60c85f84984ec2b227b9e37d3df58d6959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Sat, 24 May 2025 10:36:51 +0800 Subject: [PATCH 08/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E5=A4=87=E6=96=99?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=B7=BB=E5=8A=A0=E4=BA=A4=E6=98=93=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=5FV4=5Fsdlizheng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java index 77a8eb16..3eaeae38 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java @@ -91,6 +91,9 @@ public class AfterApproveRuleSyncRZWMS implements IRule { singleObj.put("sdbj", 1); //shbj int ˱ Ĭ1ҵERP˺󣬴MOM singleObj.put("shbj", 1); + + //jylxbm -- + singleObj.put("jylxbm", head.getVbusitype()); details.add(singleObj); } From a3447b46b64bfecc7a4022be3132715c7cdde295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Sat, 24 May 2025 11:29:38 +0800 Subject: [PATCH 09/30] =?UTF-8?q?=E6=9D=90=E6=96=99=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=87=8D=E6=8E=92=E8=A1=8C=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/m4d/APIMaterialOutMaintainImpl.java | 272 ++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java diff --git a/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java new file mode 100644 index 00000000..000d3f43 --- /dev/null +++ b/ic/src/private/nccloud/api/impl/ic/m4d/APIMaterialOutMaintainImpl.java @@ -0,0 +1,272 @@ +package nccloud.api.impl.ic.m4d; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; + +import nc.bs.framework.common.NCLocator; +import nc.bs.scmpub.query.SCMBillQuery; +import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil; +import nc.pubimpl.ic.api.maintain.BillMaintainTool; +import nc.pubitf.ic.m4d.api.IMaterialOutMaintainAPI; +import nc.vo.ic.general.define.ICBillFlag; +import nc.vo.ic.general.define.ICBillHeadVO; +import nc.vo.ic.general.util.ICLocationUtil; +import nc.vo.ic.location.ICLocationVO; +import nc.vo.ic.m4d.entity.MaterialOutBodyVO; +import nc.vo.ic.m4d.entity.MaterialOutHeadVO; +import nc.vo.ic.m4d.entity.MaterialOutVO; +import nc.vo.ic.pub.define.ICPubMetaNameConst; +import nc.vo.pub.BusinessException; +import nc.vo.pub.VOStatus; +import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule; +import nc.vo.scmpub.res.billtype.ICBillType; +import nccloud.api.ic.m4d.IAPIMaterialOutMaintain; +import nccloud.api.impl.ic.m4d.check.CheckMaterialOutSaveValidator; +import nccloud.api.impl.ic.m4d.fill.MaterialOutSaveFillValue; +import nccloud.api.impl.ic.m4d.fill.MaterialOutUpdateFillValue; +import nccloud.api.impl.ic.pub.check.CheckProhibitUpdateFields; +import nccloud.openapi.ic.util.ICAPILocationVOUtils; +import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; +import nccloud.openapi.scmpub.pub.TransferMapToVOTool; + +/** + * + * @Description: ϳⵥάʵ + * + * @author: ܾ + * @date: 2019-5-17 10:49:30 + * @version NCC1909 + */ + +public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain{ + + @Override + public MaterialOutVO[] save(List> paramList) throws BusinessException { + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, MaterialOutVO.class); + MaterialOutVO[] vos = + aggVOList.toArray(new MaterialOutVO[aggVOList.size()]); + // ûλкVO + ICAPILocationVOUtils.setLocationVO(ICBillType.MaterialOut.getCode(),vos); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckMaterialOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + // λ + ICAPILocationVOUtils.translate(vos); + // + new MaterialOutSaveFillValue().setDefaultValue(vos); + + IMaterialOutMaintainAPI materialOut = NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class); + //ÿк + setMaterialOutRowNum(vos); + return materialOut.insertBills(vos); + } + + private void setMaterialOutRowNum(MaterialOutVO[] vos) { + for (int i = 0; i < vos.length; i++) { + MaterialOutVO vo = vos[i]; + MaterialOutBodyVO[] bodys = vo.getBodys(); + if (bodys != null && bodys.length > 0) { + for (int j = 0; j < bodys.length; j++) { + MaterialOutBodyVO body = bodys[j]; + body.setCrowno(String.valueOf((j +1)*10)); + } + } + } + } + + @Override + public MaterialOutVO[] update(List> paramList) throws BusinessException { + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, MaterialOutVO.class); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + MaterialOutVO[] vos = + aggVOList.toArray(new MaterialOutVO[aggVOList.size()]); + // ûλкVO + ICAPILocationVOUtils.setLocationVO(ICBillType.MaterialOut.getCode(),vos); + MaterialOutHeadVO newVO = vos[0].getHead(); + String cgeneralhid = newVO.getCgeneralhid(); + if(StringUtils.isEmpty(cgeneralhid)){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0391")/*@res "޸IJϳⵥָͷcgeneralhidֵ"*/); + } + SCMBillQuery queryTool = + new SCMBillQuery(MaterialOutVO.class); + MaterialOutVO[] materialOutVOs = queryTool.queryVOByIDs(new String[]{cgeneralhid}); + Map deleteLoc = + new HashMap(); + // ԭʼݺͻλϢ + MaterialOutVO[] originBills = queryTool.queryVOByIDs(new String[] { + cgeneralhid + }); + ICLocationUtil.loadLocationVOs(originBills); + if(ArrayUtils.isEmpty(materialOutVOs)){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0360")/*@res "ûҵҪ޸ĵijⵥϢݵıͷcgeneralhid"*/); + }else{ + List headProFields = CheckProhibitUpdateFields.getHeadProhibitFields("4D"); + List bodyProFields = CheckProhibitUpdateFields.getBodyProhibitFields("4D"); + MaterialOutHeadVO origVO = materialOutVOs[0].getHead(); + if(origVO.getFbillflag() == null || + 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) origVO.getFbillflag())){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0361")/*@res "ǰⵥţ"*/ + origVO.getVbillcode() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0362")/*@res "״̬޸"*/); + } + origVO.setStatus(VOStatus.UPDATED); + for(String attr : newVO.getAttributeNames()){ + if(newVO.getAttributeValue(attr) == null) { + continue; + } + if(headProFields.contains(attr) + && !newVO.getAttributeValue(attr).equals(origVO.getAttributeValue(attr))){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0363")/*@res "ͷֶΣ"*/ + attr + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0364")/*@res "޸ġ"*/ ); + } + origVO.setAttributeValue(attr, newVO.getAttributeValue(attr)); + } + for (MaterialOutVO orivo : originBills) { + MaterialOutBodyVO[] oribodys = orivo.getBodys(); + for (MaterialOutBodyVO oribody : oribodys) { + ICLocationVO[] locationVOs = oribody.getLocationVOs(); + if (null != locationVOs) { + deleteLoc.put(oribody.getCgeneralbid(), locationVOs); + } + } + } + if(vos[0].getBodys() != null){ + Map pkbs = new HashMap(); + for(MaterialOutBodyVO origBvo : materialOutVOs[0].getBodys()){ + origBvo.setStatus(VOStatus.UPDATED); + pkbs.put(origBvo.getCgeneralbid(), origBvo); + } + for(MaterialOutBodyVO newBvo : vos[0].getBodys()){ + MaterialOutBodyVO roigBvo = pkbs.get(newBvo.getCgeneralbid()); + if(newBvo.getCgeneralbid() == null || roigBvo == null){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0365")/*@res "ûƥ䵽ԭʼⵥϢݵıcgeneralbid"*/); + } + Set bfields = new HashSet(); + for(String battr : newBvo.getAttributeNames()){ + if(newBvo.getAttributeValue(battr) == null) { + continue; + } + if(bodyProFields.contains(battr) + && !newBvo.getAttributeValue(battr).equals(roigBvo.getAttributeValue(battr))){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0366")/*@res "ֶΣ"*/ + battr + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0364")/*@res "޸ġ"*/ ); + } + roigBvo.setAttributeValue(battr, newBvo.getAttributeValue(battr)); + bfields.add(battr); + } + //ûλк,ԭɾ޸ĵĻλΪ + if(null != newBvo.getLocationVOs()) { + List allloc = new ArrayList(); + if(null != deleteLoc && null != deleteLoc.get(roigBvo.getCgeneralbid())) { + for(ICLocationVO delloc : deleteLoc.get(roigBvo.getCgeneralbid())) { + delloc.setStatus(VOStatus.DELETED); + allloc.add(delloc); + } + } + for(ICLocationVO loc : newBvo.getLocationVOs()) { + loc.setStatus(VOStatus.NEW); + allloc.add(loc); + } + roigBvo.setLocationVOs(allloc.toArray(new ICLocationVO[allloc.size()])); + } + // λ + ICAPILocationVOUtils.translate(materialOutVOs); + // + new MaterialOutUpdateFillValue().setDefaultValue(materialOutVOs,bfields); + } + } + } + BillMaintainTool tool = + new BillMaintainTool(MaterialOutVO.class, + ICBillType.MaterialOut.getCode()); + tool.doBeforeInsert(materialOutVOs); + return NCLocator.getInstance() + .lookup(nc.itf.ic.m4d.IMaterialOutMaintain.class).update(materialOutVOs,originBills); + } + + @Override + public MaterialOutVO[] delete(MaterialOutVO[] vos) throws BusinessException { + if(ArrayUtils.isEmpty(vos)){ + return null; + } + for(MaterialOutVO aggvo : vos){ + ICBillHeadVO parentVO = aggvo.getParentVO(); + if(parentVO.getFbillflag() == null || + 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) parentVO.getFbillflag())){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0361")/*@res "ǰⵥţ"*/ + parentVO.getVbillcode() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0367")/*@res "״̬ɾ"*/); + } + } + return (MaterialOutVO[]) PfServiceScmUtil.processBatch("DELETE", "4D", vos, null, null); + } + + @Override + public MaterialOutVO[] sign(MaterialOutVO[] vos) throws BusinessException { + if(ArrayUtils.isEmpty(vos)){ + return null; + } + for(MaterialOutVO aggvo : vos){ + ICBillHeadVO parentVO = aggvo.getParentVO(); + if(parentVO.getFbillflag() == null || + 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) parentVO.getFbillflag())){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0361")/*@res "ǰⵥţ"*/ + parentVO.getVbillcode() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0330")/*@res "״̬ǩ"*/); + } + if(aggvo.getChildrenVO() != null && aggvo.getChildrenVO().length > 0){ + if(aggvo.getChildrenVO()[0].getAttributeValue(ICPubMetaNameConst.NNUM) == null){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0361")/*@res "ǰⵥţ"*/ + parentVO.getVbillcode() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0392")/*@res "Ϊգǩ"*/); + } + } + + } + ICLocationUtil.loadLocationVOs(vos); + return (MaterialOutVO[]) PfServiceScmUtil.processBatch("SIGN", "4D", vos, null, null); + } + + @Override + public MaterialOutVO[] unSign(MaterialOutVO[] vos) throws BusinessException { + if(ArrayUtils.isEmpty(vos)){ + return null; + } + for(MaterialOutVO aggvo : vos){ + ICBillHeadVO parentVO = aggvo.getParentVO(); + if(parentVO.getFbillflag() == null || + 0 != ((Integer) ICBillFlag.SIGN.value()) + .compareTo((Integer) parentVO.getFbillflag())){ + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0361")/*@res "ǰⵥţ"*/ + parentVO.getVbillcode() + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0","04008027-0332")/*@res "ǩ״̬ȡǩ"*/); + } + } + return (MaterialOutVO[]) PfServiceScmUtil.processBatch("CANCELSIGN", "4D", vos, null, null); + } + + @Override + public MaterialOutVO[] saveByRef(List> paramList) throws BusinessException{ + + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, MaterialOutVO.class); + MaterialOutVO[] vos = + aggVOList.toArray(new MaterialOutVO[aggVOList.size()]); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckMaterialOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + IMaterialOutMaintainAPI materialOut = NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class); + return materialOut.insertBills(vos); + } + +} From 54c91365bdfa19ae15b742a3eba3c36283b898e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Mon, 26 May 2025 09:57:27 +0800 Subject: [PATCH 10/30] =?UTF-8?q?=E5=A4=87=E6=96=99=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B7=E6=B1=82=E6=8A=A5=E6=96=87=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java index 3eaeae38..e01fdf4b 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java @@ -114,7 +114,6 @@ public class AfterApproveRuleSyncRZWMS implements IRule { private void pushToRZMOM(AggPickmVO[] aggPickmVOS) throws BusinessException { String rzwmsip = SysInitQuery.getParaString("GLOBLE00000000000000", "RZWMSIP"); JSONObject jsonObject = new JSONObject(); - JSONObject data = new JSONObject(); JSONObject dataIn = new JSONObject(); JSONObject dataIn2 = new JSONObject(); JSONArray details = new JSONArray(); @@ -128,8 +127,7 @@ public class AfterApproveRuleSyncRZWMS implements IRule { } dataIn2.put("Details", details); dataIn.put("Data", dataIn2); - data.put("data", dataIn); - jsonObject.put("data", data); + jsonObject.put("data", dataIn); log.error("BOWģ" + jsonObject.toJSONString()); String result = ThirdPartyPostRequestUtil.sendPostRequest(rzwmsip, jsonObject.toJSONString()); JSONObject resultObj = JSONObject.parseObject(result); From 521f205ab3bd2d18e0c3e80090b89dde63bb5a80 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 26 May 2025 10:50:34 +0800 Subject: [PATCH 11/30] =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E8=B4=B9=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E5=8D=95=E5=AE=A1=E6=89=B9=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mmpsc/pscsettle/bp/SettleApproveBP.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java diff --git a/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java b/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java new file mode 100644 index 00000000..2e95bc60 --- /dev/null +++ b/mmpsc/src/private/nc/bs/mmpsc/pscsettle/bp/SettleApproveBP.java @@ -0,0 +1,47 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.mmpsc.pscsettle.bp; + +import nc.bs.mmpsc.pscsettle.plugin.SettlePluginPoint; +import nc.bs.mmpsc.pscsettle.rule.SettleStatusCheckRule; +import nc.bs.mmpsc.pscsettle.rule.SettleStatusUpdateRule; +import nc.bs.mmpsc.pscsettle.rule.approve.FillAuditInfoRule; +import nc.bs.mmpsc.pscsettle.rule.unapprove.FilterAdjustedRule; +import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; +import nc.impl.pubapp.pattern.data.bill.template.UpdateBPTemplate; +import nc.impl.pubapp.pattern.rule.IFilterRule; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.vo.mmpsc.pscsettle.entity.AggSettleVO; +import nc.vo.mmpsc.pscsettle.enumeration.SettleStatusEnum; + +public class SettleApproveBP { + public SettleApproveBP() { + } + + public AggSettleVO[] approve(AggSettleVO[] clientBills, AggSettleVO[] originBills) { + UpdateBPTemplate bp = new UpdateBPTemplate(SettlePluginPoint.APPROVE); + this.addBeforeRule(bp.getAroundProcesser()); + this.addAfterRule(bp.getAroundProcesser(), originBills); + return (AggSettleVO[])bp.update(clientBills, originBills); + } + + private void addAfterRule(CompareAroundProcesser processer, AggSettleVO[] originBills) { + } + + private void addBeforeRule(CompareAroundProcesser processer) { + IRule checkFrozenRule = new MMVOSagaFrozenValidateRule(true); + processer.addBeforeRule(checkFrozenRule); + IRule crule = new SettleStatusCheckRule(SettleStatusEnum.FREE); + processer.addBeforeRule(crule); + IFilterRule filterRule = new FilterAdjustedRule(); + processer.addBeforeRule(filterRule); + IRule rule = new SettleStatusUpdateRule(SettleStatusEnum.APPROVED); + processer.addBeforeRule(rule); + IRule auditRule = new FillAuditInfoRule(); + processer.addBeforeRule(auditRule); + } +} From 2fffd8820a53cfffcfed424839b6c56fe09b58c3 Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 26 May 2025 11:37:40 +0800 Subject: [PATCH 12/30] =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E8=B4=B9=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E5=8D=95=E5=AE=A1=E6=89=B9=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mmpsc/component.xml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mmpsc/component.xml diff --git a/mmpsc/component.xml b/mmpsc/component.xml new file mode 100644 index 00000000..efc5cac1 --- /dev/null +++ b/mmpsc/component.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From fb25cd44e6b21921c6f3f75d38e44b162b332209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Mon, 26 May 2025 15:06:47 +0800 Subject: [PATCH 13/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=A4=9A=E5=A1=AB=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/pm/AfterApproceRuleSyncRZWMSProcess.java | 4 ---- .../rule/approve/AfterApprovingSynchronizeRuleRZ.java | 8 -------- 2 files changed, 12 deletions(-) diff --git a/arap/src/private/nc/bs/sc/m61/referred/rule/pm/AfterApproceRuleSyncRZWMSProcess.java b/arap/src/private/nc/bs/sc/m61/referred/rule/pm/AfterApproceRuleSyncRZWMSProcess.java index 50a850b6..b917b8b1 100644 --- a/arap/src/private/nc/bs/sc/m61/referred/rule/pm/AfterApproceRuleSyncRZWMSProcess.java +++ b/arap/src/private/nc/bs/sc/m61/referred/rule/pm/AfterApproceRuleSyncRZWMSProcess.java @@ -102,10 +102,6 @@ public class AfterApproceRuleSyncRZWMSProcess implements IRule { singleObj.put("jhrq", body.getDplanarrvdate().toString()); } - singleObj.put("cgjh_wbid", body.getVsrctrantype()); // ϵͳɹƻid - singleObj.put("cgxh", body.getVsrcrowno()); // ɹƻ - singleObj.put("cgbh", body.getVsrccode()); // ɹƻ - singleObj.put("sdck", body.getPk_recvstordoc()); // ʹֿ singleObj.put("bzsm", body.getVbmemo()); // ע˵ diff --git a/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java b/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java index fe953a09..131b58fa 100644 --- a/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java +++ b/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java @@ -169,14 +169,6 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { detailItem.put("jhrq", item.getDplanarrvdate().toString()); } - // ԴϢ - //ϵͳɹƻid - detailItem.put("cgjh_wbid", item.getVsourcetrantype()); - //ɹƻ - detailItem.put("cgbh", item.getVsourcecode()); - //ɹƻ - detailItem.put("cgxh", item.getVsourcerowno()); - // òֿͱעϢ detailItem.put("sdck", item.getPk_reqstordoc()); detailItem.put("bzsm", item.getVbmemo()); From 5f4d39777d0603d390e92b23bb0cb2a03ba15e91 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 26 May 2025 15:09:32 +0800 Subject: [PATCH 14/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=92=8C=E6=B5=81=E7=A8=8B=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E5=85=AC=E5=8F=B8=E6=8E=A7=E5=88=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/ic/saleout/saveBeforeCheck.java | 319 ++++++++++-------- .../pac0002/bp/rule/saveBeforeCheckRule.java | 204 ++++++----- 2 files changed, 291 insertions(+), 232 deletions(-) diff --git a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java index c2e18617..1a601212 100644 --- a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java +++ b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java @@ -1,17 +1,17 @@ package nccloud.resources.ic.ic.saleout; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; import nc.bs.businessevent.BdUpdateEvent; import nc.bs.businessevent.BusinessEvent; import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.ic.general.businessevent.ICGeneralCommonEvent; +import nc.bs.trade.business.HYSuperDMO; import nc.itf.uap.IUAPQueryBS; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; +import nc.vo.bd.defdoc.DefdocVO; import nc.vo.ic.general.define.ICBillBodyVO; import nc.vo.ic.m4c.entity.SaleOutHeadVO; import nc.vo.ic.m4c.entity.SaleOutVO; @@ -20,7 +20,12 @@ import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.AppContext; import nc.vo.tmpub.util.ModuleEnum; import nc.vo.tmpub.util.ModuleUtil; +import nccloud.baseapp.core.log.NCCForUAPLogger; + import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; /** @@ -30,158 +35,182 @@ import java.time.LocalDateTime; */ public class saveBeforeCheck implements IBusinessListener { - @Override - public void doAction(IBusinessEvent event) throws BusinessException { + @Override + public void doAction(IBusinessEvent event) throws BusinessException { - String pk_group = AppContext.getInstance().getPkGroup(); - if (ModuleUtil.isEnableByGroup(pk_group, ModuleEnum.SSCRP, false)) { - if (event != null) { - Map map = this.getBills(event); - SaleOutVO[] obills = map.get("obj"); - // жǷҪƵҵԪ - SaleOutHeadVO parentVO = obills[0].getHead(); - String pkstockorgStr = getPk_stockorg(parentVO.getPk_org()); - if (pkstockorgStr == null || pkstockorgStr.equals("")) { - return; - } - ICBillBodyVO[] childrenVO = obills[0].getChildrenVO(); - for (int i = 0; i < childrenVO.length; ++i) { - ICBillBodyVO vo = childrenVO[i]; - Map valMap = getSaleorderPK(vo.getCsourcebillbid()); - if (valMap == null || valMap.isEmpty()) { - return; - } - // ʷݲ - String storedDateStr = (String) valMap.get("creationtime"); - String targetDateStr = "2024-12-31 00:00:00"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter); - LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter); - if (storedDate.isBefore(targetDate)) { - return; - } - // ۷Ʊͷpk_billtypecode=30-Cxx-12 - if (valMap.get("pk_billtypecode").equals("30-Cxx-12") - || valMap.get("pk_billtypecode").equals("30-Cxx-02") - || valMap.get("pk_billtypecode").equals("30-Cxx-08") - || valMap.get("pk_billtypecode").equals("30-Cxx-13")) { - return; - } - // ۷Ʊͷvdef21= - if (valMap.get("vdef20") == null || !valMap.get("vdef20").equals("Y")) { - throw new BusinessException("۳ⵥϸ" + (i + 1) + "۷Ʊ֤ͨ޷棡"); - } - if (valMap.get("sqty") == null) { - throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƷΪ0޷棡"); - } else { - try { - double sQty = Double.parseDouble((String) valMap.get("sqty"));// ۼƷ - UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ - double bdnum = 0; - if (bdnumUF != null) { - bdnum = bdnumUF.getDouble(); - } - // Ӧж - Object ntotaloutnumsObj = valMap.get("ntotaloutnums"); - String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : ""; - double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// ۼƳ + String pk_group = AppContext.getInstance().getPkGroup(); + if (ModuleUtil.isEnableByGroup(pk_group, ModuleEnum.SSCRP, false)) { + if (event != null) { + Map map = this.getBills(event); + SaleOutVO[] obills = map.get("obj"); + // жǷҪƵҵԪ + SaleOutHeadVO parentVO = obills[0].getHead(); + String pkstockorgStr = getPk_stockorg(parentVO.getPk_org()); + if (pkstockorgStr == null || pkstockorgStr.isEmpty()) { + return; + } + ICBillBodyVO[] childrenVO = obills[0].getChildrenVO(); + for (int i = 0; i < childrenVO.length; ++i) { + ICBillBodyVO vo = childrenVO[i]; + Map valMap = getSaleorderPK(vo.getCsourcebillbid()); + if (valMap == null || valMap.isEmpty()) { + return; + } + // ʷݲ + String storedDateStr = (String) valMap.get("creationtime"); + String targetDateStr = "2024-12-31 00:00:00"; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter); + LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter); + if (storedDate.isBefore(targetDate)) { + return; + } + // ۷Ʊͷpk_billtypecode=30-Cxx-12 + if (valMap.get("pk_billtypecode").equals("30-Cxx-12") + || valMap.get("pk_billtypecode").equals("30-Cxx-02") + || valMap.get("pk_billtypecode").equals("30-Cxx-08") + || valMap.get("pk_billtypecode").equals("30-Cxx-13")) { + return; + } + // ۷Ʊͷvdef21= + if (valMap.get("vdef20") == null || !valMap.get("vdef20").equals("Y")) { + throw new BusinessException("۳ⵥϸ" + (i + 1) + "۷Ʊ֤ͨ޷棡"); + } + if (valMap.get("sqty") == null) { + throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƷΪ0޷棡"); + } else { + try { + double sQty = Double.parseDouble((String) valMap.get("sqty"));// ۼƷ + UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ + double bdnum = 0; + if (bdnumUF != null) { + bdnum = bdnumUF.getDouble(); + } + // Ӧж + Object ntotaloutnumsObj = valMap.get("ntotaloutnums"); + String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : ""; + double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// ۼƳ - if (sQty < (ntotaloutnum + bdnum)) { - throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƳӦ'" + (ntotaloutnum + bdnum) - + "'۶ۼƷ'" + sQty + "'޷棡"); - } - // ʵж - UFDouble bdsfnumUF = vo.getNassistnum();// ʵ - double bdsfnum = 0; - if (bdsfnumUF != null) { - bdsfnum = bdsfnumUF.getDouble(); - } - Object nassistnumObj = valMap.get("nassistnum"); - String nassistnums = (nassistnumObj != null) ? nassistnumObj.toString() : ""; - double nassistnum = (nassistnums.isEmpty()) ? 0 : Double.parseDouble(nassistnums);// ۼƳ - if (sQty < (nassistnum + bdsfnum)) { - throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƳʵ'" + (nassistnum + bdsfnum) - + "'۶ۼƷ'" + sQty + "'޷棡"); - } - } catch (NumberFormatException e) { - throw new BusinessException("ۼƷۼƳתֵʧ" + e); - } - } + if (sQty < (ntotaloutnum + bdnum)) { + throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƳӦ'" + (ntotaloutnum + bdnum) + + "'۶ۼƷ'" + sQty + "'޷棡"); + } + // ʵж + UFDouble bdsfnumUF = vo.getNassistnum();// ʵ + double bdsfnum = 0; + if (bdsfnumUF != null) { + bdsfnum = bdsfnumUF.getDouble(); + } + Object nassistnumObj = valMap.get("nassistnum"); + String nassistnums = (nassistnumObj != null) ? nassistnumObj.toString() : ""; + double nassistnum = (nassistnums.isEmpty()) ? 0 : Double.parseDouble(nassistnums);// ۼƳ + if (sQty < (nassistnum + bdsfnum)) { + throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƳʵ'" + (nassistnum + bdsfnum) + + "'۶ۼƷ'" + sQty + "'޷棡"); + } + } catch (NumberFormatException e) { + throw new BusinessException("ۼƷۼƳתֵʧ" + e); + } + } - } + } - } + } - } + } - } + } - private Map getSaleorderPK(String csourcebillbidStr) throws BusinessException { - IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); - String sql = " SELECT s.creationtime,bt.pk_billtypecode,sb.csaleorderbid,sb.vbdef2 AS sQty,\n" + "s.vdef11,\n" - + "si.vdef20,\n" + "sbv.nassistnum,\n" + "sbv.ntotaloutnums\n" + "FROM so_saleinvoice_b sib\n" - + "INNER JOIN so_saleinvoice si ON si.csaleinvoiceid = sib.csaleinvoiceid\n" - + "INNER JOIN so_saleorder_b sb ON sb.csaleorderbid = sib.csrcbid\n" - + "left join (SELECT SUM(b.nshouldassistnum) AS ntotaloutnums,sum(nassistnum) as nassistnum,c.csaleorderbid\n" - + "FROM so_saleorder_b c\n" + "INNER JOIN so_saleinvoice_b a ON c.csaleorderbid = a.csrcbid\n" - + "INNER JOIN ic_saleout_b b ON b.csourcebillbid = a.csaleinvoicebid\n" + "where a.dr=0 and b.dr=0 \n" - + "GROUP BY c.csaleorderbid) sbv on sbv.csaleorderbid=sb.csaleorderbid\n" - + "INNER JOIN so_saleorder s ON s.csaleorderid = sb.csaleorderid\n" - + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" - + "INNER JOIN so_saleorder_exe se ON sb.csaleorderbid = se.csaleorderbid\n" - + "WHERE sib.csaleinvoicebid = '" + csourcebillbidStr + "' "; - Map valList = (Map) queryBS.executeQuery(sql, new MapProcessor()); - return valList; - } + private Map getSaleorderPK(String csourcebillbidStr) throws BusinessException { + IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); + String sql = " SELECT s.creationtime,bt.pk_billtypecode,sb.csaleorderbid,sb.vbdef2 AS sQty,\n" + "s.vdef11,\n" + + "si.vdef20,\n" + "sbv.nassistnum,\n" + "sbv.ntotaloutnums\n" + "FROM so_saleinvoice_b sib\n" + + "INNER JOIN so_saleinvoice si ON si.csaleinvoiceid = sib.csaleinvoiceid\n" + + "INNER JOIN so_saleorder_b sb ON sb.csaleorderbid = sib.csrcbid\n" + + "left join (SELECT SUM(b.nshouldassistnum) AS ntotaloutnums,sum(nassistnum) as nassistnum,c.csaleorderbid\n" + + "FROM so_saleorder_b c\n" + "INNER JOIN so_saleinvoice_b a ON c.csaleorderbid = a.csrcbid\n" + + "INNER JOIN ic_saleout_b b ON b.csourcebillbid = a.csaleinvoicebid\n" + "where a.dr=0 and b.dr=0 \n" + + "GROUP BY c.csaleorderbid) sbv on sbv.csaleorderbid=sb.csaleorderbid\n" + + "INNER JOIN so_saleorder s ON s.csaleorderid = sb.csaleorderid\n" + + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + + "INNER JOIN so_saleorder_exe se ON sb.csaleorderbid = se.csaleorderbid\n" + + "WHERE sib.csaleinvoicebid = '" + csourcebillbidStr + "' "; + Map valList = (Map) queryBS.executeQuery(sql, new MapProcessor()); + return valList; + } - public IUAPQueryBS getQueryService() { - return NCLocator.getInstance().lookup(IUAPQueryBS.class); - } + public IUAPQueryBS getQueryService() { + return NCLocator.getInstance().lookup(IUAPQueryBS.class); + } - private Map getBills(IBusinessEvent event) throws BusinessException { - Object object = null; - Object old = null; - Map retMap = new HashMap<>(); - // жϺ͸ֵ - if (event instanceof BusinessEvent) { - BusinessEvent bills = (BusinessEvent) event; - object = bills.getObject(); - } else if (event instanceof BdUpdateEvent) { - BdUpdateEvent e = (BdUpdateEvent) event; - object = e.getNewObject(); - old = e.getOldObject(); - } else if (event instanceof ICGeneralCommonEvent) { - ICGeneralCommonEvent e = (ICGeneralCommonEvent) event; - object = e.getNewObjs(); - old = e.getOldObjs(); - } else { - throw new BusinessException("δҵ"); - } - // object old תΪ SaleOutVO[] ӵ retMap - retMap.put("new", toSaleOutVOArray(object)); - retMap.put("old", toSaleOutVOArray(old)); - // new old "obj" - retMap.put("obj", retMap.get("new") != null ? retMap.get("new") : retMap.get("old")); - return retMap; - } + private Map getBills(IBusinessEvent event) throws BusinessException { + Object object = null; + Object old = null; + Map retMap = new HashMap<>(); + // жϺ͸ֵ + if (event instanceof BusinessEvent) { + BusinessEvent bills = (BusinessEvent) event; + object = bills.getObject(); + } else if (event instanceof BdUpdateEvent) { + BdUpdateEvent e = (BdUpdateEvent) event; + object = e.getNewObject(); + old = e.getOldObject(); + } else if (event instanceof ICGeneralCommonEvent) { + ICGeneralCommonEvent e = (ICGeneralCommonEvent) event; + object = e.getNewObjs(); + old = e.getOldObjs(); + } else { + throw new BusinessException("δҵ"); + } + // object old תΪ SaleOutVO[] ӵ retMap + retMap.put("new", toSaleOutVOArray(object)); + retMap.put("old", toSaleOutVOArray(old)); + // new old "obj" + retMap.put("obj", retMap.get("new") != null ? retMap.get("new") : retMap.get("old")); + return retMap; + } - // תΪ SaleOutVO - private SaleOutVO[] toSaleOutVOArray(Object object) { - if (object == null) { - return null; - } - if (object.getClass().isArray()) { - return (SaleOutVO[]) object; - } else { - return new SaleOutVO[] { (SaleOutVO) object }; - } - } + // תΪ SaleOutVO + private SaleOutVO[] toSaleOutVOArray(Object object) { + if (object == null) { + return null; + } + if (object.getClass().isArray()) { + return (SaleOutVO[]) object; + } else { + return new SaleOutVO[]{(SaleOutVO) object}; + } + } - private String getPk_stockorg(String pk_stockorg) throws BusinessException { - String sql = " select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='" - + pk_stockorg + "' "; - String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); - return saleorderPK; - } + private String getPk_stockorg(String pk_stockorg) throws BusinessException { + Map defMap = checkOrgCtrl(); + if (defMap.isEmpty() || "".equals(defMap.getOrDefault("so_out", ""))) { + return ""; + } + String orgStr = defMap.getOrDefault("so_out", ""); + // תΪַӵ + String newOrgStr = orgStr.replace(",", "','"); + String sql = " select pk_stockorg from org_stockorg where code in ('" + newOrgStr + "') and pk_stockorg='" + + pk_stockorg + "' "; + NCCForUAPLogger.debug("so_out-getPk_stockorg-sql:" + sql); + String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); + return saleorderPK; + } + + private Map checkOrgCtrl() { + Map map = new HashMap(); + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='org-ctrl' and dr=0 ) and dr=0"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + for (DefdocVO defdocVO : defdocVOs) { + map.put(defdocVO.getCode().trim(), defdocVO.getMemo()); + } + } + } catch (DAOException e) { + e.printStackTrace(); + } + return map; + } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java index adfcfcbb..938e33f6 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/saveBeforeCheckRule.java @@ -1,111 +1,141 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; +import nc.bs.trade.business.HYSuperDMO; import nc.impl.pubapp.pattern.rule.IRule; import nc.itf.uap.IUAPQueryBS; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; +import nc.vo.bd.defdoc.DefdocVO; 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.pub.BusinessException; import nc.vo.so.m30.entity.SaleOrderBVO; +import nccloud.baseapp.core.log.NCCForUAPLogger; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * ɶʱ֤۶ۼŲ״̬׸ zhangxinah 2312 */ public class saveBeforeCheckRule implements IRule { - @Override - public void process(PMOAggVO[] vos) { - // TODO Auto-generated method stub - try { - List list = new ArrayList(); - for (PMOAggVO vo : vos) { - // жǷҪƵҵԪ - PMOHeadVO pmoHeadVO = vo.getParentVO(); - String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org()); - if (pkstockorgStr == null || pkstockorgStr.equals("")) { - return; - } - PMOItemVO[] iSuperVOs = vo.getChildrenVO(); - for (int i = 0; i < iSuperVOs.length; i++) { - PMOItemVO itemvo = iSuperVOs[i]; - // жǷǷΪ30 - if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) { - return; - } + @Override + public void process(PMOAggVO[] vos) { + // TODO Auto-generated method stub + try { + List list = new ArrayList(); + for (PMOAggVO vo : vos) { + // жǷҪƵҵԪ + PMOHeadVO pmoHeadVO = vo.getParentVO(); + String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org()); + if (pkstockorgStr == null || pkstockorgStr.isEmpty()) { + return; + } + PMOItemVO[] iSuperVOs = vo.getChildrenVO(); + for (int i = 0; i < iSuperVOs.length; i++) { + PMOItemVO itemvo = iSuperVOs[i]; + // жǷǷΪ30 + if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) { + return; + } - Map valMap = getVbdef6(itemvo.getVsrcbid()); - if (valMap == null || valMap.isEmpty()) { - throw new BusinessException("޷۶޷棡"); - } - // ۷Ʊͷpk_billtypecode=30-Cxx-12 - if (valMap.get("pk_billtypecode").equals("30-Cxx-12") - || valMap.get("pk_billtypecode").equals("30-Cxx-02") - || valMap.get("pk_billtypecode").equals("30-Cxx-08") - || valMap.get("pk_billtypecode").equals("30-Cxx-13")) { - return; - } - // ʷݲ - String storedDateStr = (String) valMap.get("creationtime"); - String targetDateStr = "2024-12-27 00:00:00"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter); - LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter); - if (storedDate.isBefore(targetDate)) { - return; - } - if (valMap.get("vbdef12") == null) { - throw new BusinessException("ϸ" + (i + 1) + "ۼŲΪ0޷棡"); - } else { - try { - double sQty = Double.parseDouble((String) valMap.get("vbdef12"));// ۼŲ - Object ntotaloutnumsObj = valMap.get("nastnum"); - String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : ""; - double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// ۼ - double bdnum = itemvo.getNastnum().getDouble(); - if (sQty < (ntotaloutnum + bdnum)) { - throw new BusinessException("ϸ" + (i + 1) + "ۼ'" + (ntotaloutnum + bdnum) - + "'۶ۼŲ'" + sQty + "'޷棡"); - } - } catch (NumberFormatException e) { - throw new BusinessException("ۼŲתֵʧ" + e); - } - } - } - } - } catch (BusinessException e) { - throw new RuntimeException(e); - } - } + Map valMap = getVbdef6(itemvo.getVsrcbid()); + if (valMap == null || valMap.isEmpty()) { + throw new BusinessException("޷۶޷棡"); + } + // ۷Ʊͷpk_billtypecode=30-Cxx-12 + if (valMap.get("pk_billtypecode").equals("30-Cxx-12") + || valMap.get("pk_billtypecode").equals("30-Cxx-02") + || valMap.get("pk_billtypecode").equals("30-Cxx-08") + || valMap.get("pk_billtypecode").equals("30-Cxx-13")) { + return; + } + // ʷݲ + String storedDateStr = (String) valMap.get("creationtime"); + String targetDateStr = "2024-12-27 00:00:00"; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter); + LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter); + if (storedDate.isBefore(targetDate)) { + return; + } + if (valMap.get("vbdef12") == null) { + throw new BusinessException("ϸ" + (i + 1) + "ۼŲΪ0޷棡"); + } else { + try { + double sQty = Double.parseDouble((String) valMap.get("vbdef12"));// ۼŲ + Object ntotaloutnumsObj = valMap.get("nastnum"); + String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : ""; + double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// ۼ + double bdnum = itemvo.getNastnum().getDouble(); + if (sQty < (ntotaloutnum + bdnum)) { + throw new BusinessException("ϸ" + (i + 1) + "ۼ'" + (ntotaloutnum + bdnum) + + "'۶ۼŲ'" + sQty + "'޷棡"); + } + } catch (NumberFormatException e) { + throw new BusinessException("ۼŲתֵʧ" + e); + } + } + } + } + } catch (BusinessException e) { + throw new RuntimeException(e); + } + } - private Map getVbdef6(String vsrcbidStr) throws BusinessException { - IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); - String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n" - + "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n" - + "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n" + "from mm_mo\n" + "where mm_mo.dr=0\n" - + "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n" - + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + "where b.csaleorderbid='" - + vsrcbidStr + "' "; - Map valList = (Map) queryBS.executeQuery(sql, new MapProcessor()); - return valList; - } + private Map getVbdef6(String vsrcbidStr) throws BusinessException { + IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); + String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n" + + "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n" + + "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n" + "from mm_mo\n" + "where mm_mo.dr=0\n" + + "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n" + + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" + "where b.csaleorderbid='" + + vsrcbidStr + "' "; + Map valList = (Map) queryBS.executeQuery(sql, new MapProcessor()); + return valList; + } - private String getPk_stockorg(String pk_stockorg) throws BusinessException { - String sql = " select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='" - + pk_stockorg + "' "; - String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); - return saleorderPK; - } + private String getPk_stockorg(String pk_stockorg) throws BusinessException { + Map defMap = checkOrgCtrl(); + if (defMap.isEmpty() || "".equals(defMap.getOrDefault("pmo", ""))) { + return ""; + } + String orgStr = defMap.getOrDefault("pmo", ""); + // תΪַӵ + String newOrgStr = orgStr.replace(",", "','"); + String sql = " select pk_stockorg from org_stockorg where code in ('" + newOrgStr + "') and pk_stockorg='" + + pk_stockorg + "' "; + // NCCForUAPLogger.debug("pmo-getPk_stockorg-sql:" + sql); + String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); + return saleorderPK; + } - public IUAPQueryBS getQueryService() { - return NCLocator.getInstance().lookup(IUAPQueryBS.class); - } + private Map checkOrgCtrl() { + Map map = new HashMap(); + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='org-ctrl' and dr=0 ) and dr=0"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + for (DefdocVO defdocVO : defdocVOs) { + map.put(defdocVO.getCode().trim(), defdocVO.getMemo()); + } + } + } catch (DAOException e) { + e.printStackTrace(); + } + return map; + } + + public IUAPQueryBS getQueryService() { + return NCLocator.getInstance().lookup(IUAPQueryBS.class); + } } From dc805fce0d229617b0a5f506c425a0c4002a9254 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 26 May 2025 16:38:05 +0800 Subject: [PATCH 15/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A0=A1=E9=AA=8C=E4=B8=AD=E7=9A=84=E5=BA=94?= =?UTF-8?q?=E5=8F=91=E6=95=B0=E9=87=8F=E6=94=B9=E4=B8=BA=E5=AE=9E=E5=8F=91?= =?UTF-8?q?=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nccloud/resources/ic/ic/saleout/saveBeforeCheck.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java index 1a601212..0eb18c2c 100644 --- a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java +++ b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java @@ -81,7 +81,8 @@ public class saveBeforeCheck implements IBusinessListener { } else { try { double sQty = Double.parseDouble((String) valMap.get("sqty"));// ۼƷ - UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ + // UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ + UFDouble bdnumUF = vo.getNassistnum();// ʵ double bdnum = 0; if (bdnumUF != null) { bdnum = bdnumUF.getDouble(); From 4f1701c12d9c876c86f4826611d0f762a4416273 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 26 May 2025 16:39:55 +0800 Subject: [PATCH 16/30] =?UTF-8?q?Revert=20"=E9=94=80=E5=94=AE=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E4=BF=9D=E5=AD=98=E6=A0=A1=E9=AA=8C=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=BA=94=E5=8F=91=E6=95=B0=E9=87=8F=E6=94=B9=E4=B8=BA=E5=AE=9E?= =?UTF-8?q?=E5=8F=91=E6=95=B0=E9=87=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit dc805fce0d229617b0a5f506c425a0c4002a9254. --- .../nccloud/resources/ic/ic/saleout/saveBeforeCheck.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java index 0eb18c2c..1a601212 100644 --- a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java +++ b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java @@ -81,8 +81,7 @@ public class saveBeforeCheck implements IBusinessListener { } else { try { double sQty = Double.parseDouble((String) valMap.get("sqty"));// ۼƷ - // UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ - UFDouble bdnumUF = vo.getNassistnum();// ʵ + UFDouble bdnumUF = vo.getNshouldassistnum();// Ӧ double bdnum = 0; if (bdnumUF != null) { bdnum = bdnumUF.getDouble(); From ceb154b03e929d5446c0a2871b2e524f065fa1d0 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 26 May 2025 17:04:52 +0800 Subject: [PATCH 17/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A0=A1=E9=AA=8C=E4=B8=AD=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=BA=94=E5=8F=91=E6=95=B0=E9=87=8F=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nccloud/resources/ic/ic/saleout/saveBeforeCheck.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java index 1a601212..7e33cda1 100644 --- a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java +++ b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java @@ -91,10 +91,10 @@ public class saveBeforeCheck implements IBusinessListener { String ntotaloutnums = (ntotaloutnumsObj != null) ? ntotaloutnumsObj.toString() : ""; double ntotaloutnum = (ntotaloutnums.isEmpty()) ? 0 : Double.parseDouble(ntotaloutnums);// ۼƳ - if (sQty < (ntotaloutnum + bdnum)) { + /*if (sQty < (ntotaloutnum + bdnum)) { throw new BusinessException("۳ⵥϸ" + (i + 1) + "ۼƳӦ'" + (ntotaloutnum + bdnum) + "'۶ۼƷ'" + sQty + "'޷棡"); - } + }*/ // ʵж UFDouble bdsfnumUF = vo.getNassistnum();// ʵ double bdsfnum = 0; From 864481a3163743cd49edb3b8a61d1e5e7e872ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Mon, 26 May 2025 18:03:57 +0800 Subject: [PATCH 18/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=98=E6=9B=B4=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bs/mmpac/pmo/pac0002/bp/PMOAdjustBP.java | 263 ++++++++++++++++++ .../bs/mmpac/pmo/pac0002/bp/PMOApproveBP.java | 2 +- .../rule/AfterApprovingSynchronizeRuleRZ.java | 38 ++- 3 files changed, 300 insertions(+), 3 deletions(-) create mode 100644 mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOAdjustBP.java diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOAdjustBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOAdjustBP.java new file mode 100644 index 00000000..6c1e7a6a --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOAdjustBP.java @@ -0,0 +1,263 @@ +package nc.bs.mmpac.pmo.pac0002.bp; + +import java.util.ArrayList; +import java.util.List; + +import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterApprovingSynchronizeRuleRZ; +import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; +import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOAdjustReserveRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOBatchCodeEditRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOBatchCodeEditSynPickmRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOCffileidInserAndUpdatetRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOCreateVersionRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOMarkWrSNWhenUpdateRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOProcedureSortRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOSyncSNWhenItemDeleteRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOSyncSNWhenUpdateRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOUpdatePickmRule; +import nc.bs.mmpac.pmo.pac0002.rule.PMOUpdateSaveApproveRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckApproveOperTypeRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDateLogicRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDispatchNumRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckOutputNumRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPlanDateTimeRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPlanPutNumRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPlanPutNumberRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDateLogicRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDupRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureNotNullRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProdurepointRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutNumRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSNNumAndUnitRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSaveNotNullRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSnBindRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOProcedureChkPntRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMOProcedurePutCheckRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMORwkProcCheckRule; +import nc.bs.mmpac.pmo.pac0002.rule.check.PMORwkProcOperTypeRule; +import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule; +import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertPlanTimeByProcedureRule; +import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillSNPkAndCodeRule; +import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOIsCreatPlanOutputRule; +import nc.bs.mmpac.pmo.pac0002.rule.grand.PMORecalProcedureRule; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4INVP; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4MPS; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4PMO; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4PSCRecive; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4PSM; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4Renovate; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4SFC; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4SO; +import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteUpdateNum4TO; +import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; +import nc.bs.pubapp.pub.rule.BillCodeCheckRule; +import nc.impl.pubapp.pattern.rule.ICompareRule; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.util.mmf.framework.base.MMArrayUtil; +import nc.util.mmf.framework.gc.GCUpdateBPTemplate; +import nc.vo.mmpac.pmo.pac0002.constant.PMOConst; +import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; +import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; +import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil; +import nc.vo.pub.VOStatus; + +/** + * ҵ
+ * + * @since 6.31 + * @version 2013-6-18 11:33:58 + * @author wanghjd + */ +public class PMOAdjustBP { + + public PMOAggVO[] adjust(PMOAggVO[] fullBills, PMOAggVO[] originBills) { + if (MMArrayUtil.isEmpty(fullBills)) { + return null; + } + + for (PMOAggVO vo : fullBills) { + if (vo.getParent().getStatus() != VOStatus.UPDATED) { + vo.getParent().setStatus(VOStatus.UPDATED); + } + } + // sagasᲢsaga + PmoSagaUtil.frozenAndAddSaga(fullBills); + // ޸ģ + GCUpdateBPTemplate bp = new GCUpdateBPTemplate(PMOPluginPoint.ADJUST); + // ִǰ + this.addBeforeRule(bp.getAroundProcesser()); + // ִк + this.addAfterRule(bp.getAroundProcesser()); + PMOAggVO[] rets = bp.update(fullBills, originBills); + // ޸ı油 + PmoSagaUtil.compensate4Update(rets.clone(), originBills); + return rets; + } + + private void addBeforeRule(CompareAroundProcesser processer) { + // У鶳״̬ added by fengjinga + IRule checkFrozenRule = new MMVOSagaFrozenValidateRule(false); + processer.addBeforeRule(checkFrozenRule); + // У鵥ݺΨһ + IRule checkUniqueRule = new BillCodeCheckRule(PMOConst.PMO_BILLTYPE, PMOHeadVO.VBILLCODE, + PMOHeadVO.PK_GROUP, PMOHeadVO.PK_ORG); + // ѹ򰴹 + processer.addBeforeRule(new PMOProcedureSortRule()); + // ͷĽͣϡƻͶΪ + IRule checNullRule = new PMOCheckSaveNotNullRule(false); + processer.addBeforeRule(checNullRule); + // (ר)ƻʱͼƻ깤ʱɿգDzͬʱΪ + IRule daterule = new PMOCheckPlanDateTimeRule(); + processer.addBeforeRule(daterule); + // רãƻ + ICompareRule recalproc = new PMORecalProcedureRule(); + processer.addBeforeRule(recalproc); + // (ר)֤޸ļƻͶڵ깤 + IRule checkPutNumRule = new PMOCheckPutNumRule(); + processer.addBeforeRule(checkPutNumRule); + // (ר)ƻСڶıԤ + IRule checkOutputNumRule = new PMOCheckOutputNumRule(); + processer.addBeforeRule(checkOutputNumRule); + // (ר)У鶩ļƻͶСڸöӦͶżƻļƻͶ֮ + IRule checkPlanPutNumRule = new PMOCheckPlanPutNumRule(); + processer.addBeforeRule(checkPlanPutNumRule); + // (ר)ƻͶСʱ豣֤Сmax(͹ۼɹ) + IRule checkDispatchNumRule = new PMOCheckDispatchNumRule(); + processer.addBeforeRule(checkDispatchNumRule); + // ޸Ĺã򲻿޸ģһDZ㣻 + ICompareRule procCheck = new PMORwkProcCheckRule(); + processer.addBeforeRule(procCheck); + // ƻ༭У飨й깤Ĺ֮ǰĹ򲻿޸ɾҲв빤 + ICompareRule putCheckRule = new PMOProcedurePutCheckRule(); + processer.addBeforeRule(putCheckRule); + // ݹƻ²Ʒмƻ깤ʱ + IRule filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule(); + processer.addBeforeRule(filltimeprocedurerule); + // ǷȻ߼˳ + IRule timeRule = new PMOCheckDateLogicRule(); + processer.addBeforeRule(timeRule); + // ƻʱȺУ + IRule procdatelogicrule = new PMOCheckProcedureDateLogicRule(false); + processer.addBeforeRule(procdatelogicrule); + // ƻظУ + IRule proccoderule = new PMOCheckProcedureDupRule(); + processer.addBeforeRule(proccoderule); + // ƻͶСʱ豣֤СMax(ƻзΪ񡯵йۼ깤ۼ깤Ӧ깤иù깤) + IRule planputNumberRule = new PMOCheckPlanPutNumberRule(); + processer.addBeforeRule(planputNumberRule); + + // ޸ĹãһĹתƷʽΪתơ + IRule rwkProcOperType = new PMORwkProcOperTypeRule(); + processer.addBeforeRule(rwkProcOperType); + // УDZ,תƷʽΪԶתơ + IRule chkPntRule = new PMOProcedureChkPntRule(); + processer.addBeforeRule(chkPntRule); + // ӹƻһ add lijjl + processer.addBeforeRule(new PMOCheckProdurepointRule()); + // ǹ򷵹ıУ飬󱨸ĹĹתƷʽΪת + IRule operTypeRule = new PMOCheckApproveOperTypeRule(); + processer.addBeforeRule(operTypeRule); + // У鹤ϣƻΪ + IRule approvecheckrule = new PMOCheckProcedureNotNullRule(); + processer.addBeforeRule(approvecheckrule); + // ԤƲ + ICompareRule createOutput = new PMOIsCreatPlanOutputRule(); + processer.addBeforeRule(createOutput); + + // κ޸ͬϼƻ + ICompareRule batchcodeRule = new PMOBatchCodeEditSynPickmRule(); + processer.addBeforeRule(batchcodeRule); + // κ޸ͬε + ICompareRule batchcodedocRule = new PMOBatchCodeEditRule(); + processer.addBeforeRule(batchcodedocRule); + // κ + IRule fillbatchcodeRule = new PMOFillBatchCodeRule(); + processer.addBeforeRule(fillbatchcodeRule); + // v636 кιIJɾ + IRule snBindRule = new PMOCheckSnBindRule(); + processer.addBeforeRule(snBindRule); + // ǰ + IRule checkATPUpdateRule = new PMOATPUpdateRule(true, PMOConst.PMO_BILLTYPE); + processer.addBeforeRule(checkATPUpdateRule); + // д + ICompareRule rewritewr = new RewriteUpdateNum4Renovate(); + processer.addBeforeRule(rewritewr); + // д۶ۼƲ + ICompareRule rewriteso = new RewriteUpdateNum4SO(); + processer.addBeforeRule(rewriteso); + // дƻŲ + ICompareRule rewritepsm = new RewriteUpdateNum4PSM(); + processer.addBeforeRule(rewritepsm); + // дƻŲ(ݶ) + ICompareRule rewritepo = new RewriteUpdateNum4MPS(); + processer.addBeforeRule(rewritepo); + // дƻŲ(ݶ) + ICompareRule rewriteinvp = new RewriteUpdateNum4INVP(); + processer.addBeforeRule(rewriteinvp); + // дŲ(ݶ) + ICompareRule rewriteto = new RewriteUpdateNum4TO(); + processer.addBeforeRule(rewriteto); + // Ĺ깤д + ICompareRule rewritesfc = new RewriteUpdateNum4SFC(); + processer.addBeforeRule(rewritesfc); + // (ר)°汾 + ICompareRule verAutoUpRule = new PMOCreateVersionRule(); + processer.addBeforeRule(verAutoUpRule); + + // ÿӿڣעԤ + ICompareRule adjustReserveRule = new PMOAdjustReserveRule(); + processer.addBeforeRule(adjustReserveRule); + + // V65 дջ + ICompareRule rewritePSCrecive = new RewriteUpdateNum4PSCRecive(); + processer.addBeforeRule(rewritePSCrecive); + // V65дWrкʹñ־ + IRule wrMarkRule = new PMOMarkWrSNWhenUpdateRule(); + processer.addBeforeRule(wrMarkRule); + // 65 ޸ı + PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule(); + processer.addBeforeRule(cffileidRule); + // V65 뵥λ + IRule snCheckRule = new PMOCheckSNNumAndUnitRule(); + processer.addBeforeRule(snCheckRule); + // 65 pk + IRule snRule = new PMOFillSNPkAndCodeRule(); + processer.addBeforeRule(snRule); + // V65 + IRule itemDeletesnRule = new PMOSyncSNWhenItemDeleteRule(); + processer.addBeforeRule(itemDeletesnRule); + // V65 + ICompareRule snSyncRule = new PMOSyncSNWhenUpdateRule(); + processer.addBeforeRule(snSyncRule); + + } + + private void addAfterRule(CompareAroundProcesser processer) { + // дԭʼ(Դid) + ICompareRule pmoBills = new RewriteUpdateNum4PMO(); + processer.addAfterRule(pmoBills); + // ޸ͨã±ϼƻ + ICompareRule pickmUpdateRule = new PMOUpdatePickmRule(this.checkInfoList); + processer.addAfterRule(pickmUpdateRule); + // º + IRule atpUpdateRule = new PMOATPUpdateRule(false, PMOConst.PMO_BILLTYPE); + processer.addAfterRule(atpUpdateRule); + // ޸ı漴 added by fengjinga + IRule saveapproverule = new PMOUpdateSaveApproveRule(); + processer.addAfterRule(saveapproverule); + + //MES + IRule pushRZRule = new AfterApprovingSynchronizeRuleRZ(Boolean.FALSE); + processer.addAfterFinalRule(pushRZRule); + } + + // ŲϽ + private List checkInfoList = new ArrayList(); + + public List getCheckInfoList() { + return this.checkInfoList; + } + +} 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 e8de6d88..97eb00a1 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 @@ -52,7 +52,7 @@ public class PMOApproveBP { ICompareRule auditSupplyRule = new PMOApproveAuditSupplyRule(); processer.addAfterRule(auditSupplyRule); // ͵RZϵͳ - processer.addAfterRule(new AfterApprovingSynchronizeRuleRZ()); + processer.addAfterRule(new AfterApprovingSynchronizeRuleRZ(true)); // MES processer.addAfterRule(new AfterApproveRuleSyncMes()); diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 900a5de8..88142f2f 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -5,10 +5,13 @@ import com.alibaba.fastjson.JSONObject; import com.yonyou.iuap.bd.defdoc.dto.DefDoc; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; +import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; +import nc.util.mmf.framework.base.MMMapUtil; +import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.stordoc.StordocVO; @@ -19,13 +22,16 @@ import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.DeptVO; 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.pubapp.pattern.pub.SqlBuilder; import nc.vo.rum.stocks.StocksVO; import nc.vo.scmpub.util.ArrayUtil; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * RZ @@ -34,6 +40,12 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { private static final Log log = Log.getInstance("rzmomlog"); private static final BaseDAO dao = new BaseDAO(); + private Boolean flag; + + public AfterApprovingSynchronizeRuleRZ(Boolean flag) { + this.flag = flag; + } + @Override public void process(PMOAggVO[] pmoAggVOS) { if (ArrayUtil.isEmpty(pmoAggVOS)) { @@ -59,13 +71,35 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { */ private List checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException { List aggvoList = new ArrayList<>(); + List tranidList = new ArrayList(); + for (PMOAggVO aggvo : pmoAggVOS) { + PMOHeadVO headvo = aggvo.getParentVO(); + String tranid = headvo.getCtrantypeid(); + if (!MMValueCheck.isEmpty(tranid)) { + tranidList.add(tranid); + } + } + Map bSaveApproveMap =new HashMap<>(); + if (tranidList.size() > 0) { + bSaveApproveMap = PMOBPService.getIPMOTransTypeQueryService() + .getBSaveApproveByTranTypeIDs(tranidList.toArray(new String[0])); + + } for (PMOAggVO aggvo : pmoAggVOS) { String pkOrg = aggvo.getParentVO().getPk_org(); Integer fbillstatus = aggvo.getParentVO().getFbillstatus(); + String tranid = aggvo.getParentVO().getCtrantypeid(); String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if ("C022".equals(orgCode) && 1 == fbillstatus&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length>0) { - aggvoList.add(aggvo); + if(this.flag){ + if ("C022".equals(orgCode) && 1 == fbillstatus&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length>0) { + aggvoList.add(aggvo); + } + }else{ + if ("C022".equals(orgCode)&& 1 == fbillstatus&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length > 0 && !bSaveApproveMap.isEmpty()&&!bSaveApproveMap.getOrDefault(tranid, UFBoolean.FALSE).booleanValue()) { + aggvoList.add(aggvo); + } } + } return aggvoList; } From e31edd11d768dd7300da9eba16e6bcb64d3d038e Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 26 May 2025 18:42:14 +0800 Subject: [PATCH 19/30] =?UTF-8?q?=E7=89=A9=E6=96=99=E8=BE=85=E5=8A=A9?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=A1=B9=E5=88=86=E9=85=8D=E6=97=B6=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=AD=90=E9=A1=B5=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialAsstFrame1ChangedListener.java | 68 +++++++++++++++++-- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialAsstFrame1ChangedListener.java b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialAsstFrame1ChangedListener.java index fc5cbbbb..66771c54 100644 --- a/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialAsstFrame1ChangedListener.java +++ b/uapbd/src/private/nc/impl/bd/material/baseinfo/MaterialAsstFrame1ChangedListener.java @@ -66,16 +66,26 @@ public class MaterialAsstFrame1ChangedListener implements IBusinessListener { this.dealMaterialStockAssts(event, true); this.dealMaterialPlanUpdateAssts(event, true); } -// else if ("1002".equals(event.getEventType())) { -// this.dealMaterialStockAssts1(event, false); -// this.dealMaterialPlanUpdateAssts1(event, false); -// } }else if("8b7d49ab-7a65-4885-bcf1-7df89b84df4b".equals(event.getSourceID())){ //ƻϢ if ("1009".equals(event.getEventType()) ) { - this.dealMaterialStockAssts1(event, false); this.dealMaterialPlanUpdateAssts1(event, false); } + }else if("13636fc1-0215-4102-a11e-af4be73a05ab".equals(event.getSourceID())){ + //Ϣ + if ("1009".equals(event.getEventType()) ) { + this.dealMaterialStockAssts1(event, false); + } + }else if("a3133495-8c94-47b4-83d4-0d32bd08ac82".equals(event.getSourceID())){ + //Ϣ + if ("1009".equals(event.getEventType()) ) { + this.dealMaterialProdUpdateAssts1(event, false); + } + }else if("d0ff92c6-1059-46b4-97fd-ed8b3d0a85d9".equals(event.getSourceID())){ + //ɱϢ + if ("1009".equals(event.getEventType()) ) { + this.dealMaterialCostAssts1(event, false); + } } } @@ -91,6 +101,9 @@ public class MaterialAsstFrame1ChangedListener implements IBusinessListener { if (!isBatchUp) { BDPKLockUtil.lockString(new String[]{pk_material}); } + if(pk_marasstframe == null){ + continue; + } // this.updateMaterialStockUpdateAssts(pk_marasstframe, pk_material); //ɱ @@ -110,11 +123,48 @@ public class MaterialAsstFrame1ChangedListener implements IBusinessListener { if (!isBatchUp) { BDPKLockUtil.lockString(new String[]{pk_material}); } + if(pk_marasstframe == null){ + return; + } this.updateMaterialStockUpdateAssts(pk_marasstframe, pk_material); } } + private void dealMaterialProdUpdateAssts1(BDCommonEvent event, boolean isBatchUp) throws BusinessException { + for(int i = 0; i < event.getNewObjs().length; ++i) { + MaterialProdVO newVO = (MaterialProdVO)event.getNewObjs()[i]; + String pk_material = newVO.getPk_material(); + String pk_marasstframe = this.getmarasstframe(pk_material).get(0); + if (!isBatchUp) { + BDPKLockUtil.lockString(new String[]{pk_material}); + } + if(pk_marasstframe == null){ + return; + } + this.updateMaterialProdAssts(pk_marasstframe, pk_material); + } + + } + private void dealMaterialCostAssts1(BDCommonEvent event, boolean isBatchUp) throws BusinessException { + for(int i = 0; i < event.getNewObjs().length; ++i) { + MaterialCostVO newVO = (MaterialCostVO)event.getNewObjs()[i]; + String pk_material = newVO.getPk_material(); + String pk_marasstframe = this.getmarasstframe(pk_material).get(0); + if (!isBatchUp) { + BDPKLockUtil.lockString(new String[]{pk_material}); + } + if(pk_marasstframe == null){ + return; + } + //Ϣ + this.updateMaterialCostUpdateAssts(pk_marasstframe, pk_material); + + } + + } + + private void updateMaterialStockUpdateAssts(String pk_marasstframe, String materialVID) throws BusinessException { @@ -271,7 +321,9 @@ public class MaterialAsstFrame1ChangedListener implements IBusinessListener { if (!isBatchUp) { BDPKLockUtil.lockString(new String[]{pk_material}); } - + if(pk_marasstframe == null){ + continue; + } this.updateMaterialPlanAssts(pk_marasstframe, pk_material); } } @@ -285,7 +337,9 @@ public class MaterialAsstFrame1ChangedListener implements IBusinessListener { if (!isBatchUp) { BDPKLockUtil.lockString(new String[]{pk_material}); } - + if(pk_marasstframe == null){ + return; + } this.updateMaterialPlanAssts(pk_marasstframe, pk_material); } From 3bfb0429a09e36b5d8f39e8b3ecaf3b5c8a1ae9e Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 26 May 2025 18:42:30 +0800 Subject: [PATCH 20/30] =?UTF-8?q?=E5=8F=91=E7=A5=A8=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sale/action/InvoiceDownloadAction.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java b/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java index 9ef8900b..42571417 100644 --- a/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java +++ b/sscivm/src/client/nccloud/web/sscivm/ivsale/sale/action/InvoiceDownloadAction.java @@ -122,7 +122,8 @@ public class InvoiceDownloadAction implements ICommonAction { String ofdData = (String) infoMap.get("taxofd"); if (MMValueCheck.isEmpty(pdfData) && MMValueCheck.isEmpty(xmlData) && MMValueCheck.isEmpty(ofdData)) { - throw new Exception("δѯƱϢ"); +// throw new Exception("δѯƱϢ"); + continue; } String ctcode = ""; @@ -135,13 +136,17 @@ public class InvoiceDownloadAction implements ICommonAction { "AND bd.pk_defdoc = '" + ivApplicationHeadVO.getDef2().toString() + "' "; // List> operationresult = (List>) getQueryService().executeQuery(operationSql, new ArrayListProcessor()); Map valList = (Map) getQueryService().executeQuery(operationSql, new MapProcessor()); - ctcode = (String) valList.get("name"); + if(valList == null){ + ctcode = ivApplicationHeadVO.getDef2(); // ͬ + } + } + if(!ctcode.equals("") && !ctcode.equals("/") ){ + ctcode=ctcode+"_"; } - // PDF if (!MMValueCheck.isEmpty(pdfData)) { byte[] pdfBytes = DatatypeConverter.parseBase64Binary(pdfData); - zipStream.putNextEntry(new ZipEntry(ctcode + "_" + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".pdf")); + zipStream.putNextEntry(new ZipEntry(ctcode + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".pdf")); zipStream.write(pdfBytes); zipStream.closeEntry(); } @@ -149,7 +154,7 @@ public class InvoiceDownloadAction implements ICommonAction { // XML if (!MMValueCheck.isEmpty(xmlData)) { byte[] xmlBytes = DatatypeConverter.parseBase64Binary(xmlData); - zipStream.putNextEntry(new ZipEntry(ctcode + "_" + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".xml")); + zipStream.putNextEntry(new ZipEntry(ctcode + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".xml")); zipStream.write(xmlBytes); zipStream.closeEntry(); } @@ -157,11 +162,11 @@ public class InvoiceDownloadAction implements ICommonAction { // OFD if (!MMValueCheck.isEmpty(ofdData)) { byte[] ofdBytes = DatatypeConverter.parseBase64Binary(ofdData); - zipStream.putNextEntry(new ZipEntry(ctcode + "_" + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".ofd")); + zipStream.putNextEntry(new ZipEntry(ctcode + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()) + ".ofd")); zipStream.write(ofdBytes); zipStream.closeEntry(); } - zipName=ctcode + "_" + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()); + zipName=ctcode + headVO.getGmfmc() + "_" + headVO.getFphm() + "_" + String.valueOf(headVO.getJshj().toDouble()); } else { throw new Exception("ȡƱϢʧ"); } From 7ed12f20250d588ee7181efa5faf0574d82ae50c Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 26 May 2025 18:42:53 +0800 Subject: [PATCH 21/30] =?UTF-8?q?=E5=90=88=E5=90=8C=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/so/so/UpCloses/ClosesoUpdateBL.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/so/src/public/nccloud/api/so/so/UpCloses/ClosesoUpdateBL.java b/so/src/public/nccloud/api/so/so/UpCloses/ClosesoUpdateBL.java index 0f24c7cd..a5ea41d3 100644 --- a/so/src/public/nccloud/api/so/so/UpCloses/ClosesoUpdateBL.java +++ b/so/src/public/nccloud/api/so/so/UpCloses/ClosesoUpdateBL.java @@ -79,6 +79,7 @@ public class ClosesoUpdateBL extends AbstractNCCRestResource { public JSONString ClosesoUpdateBL(JSONString json) { JSONObject errojson = new JSONObject(); Set vbillcodes = new HashSet<>(); + Set billcodes = new HashSet<>(); // map 9-᣻ 10-᣻ 11-ֹ 8Ч(ȡ) Map operationMap = new HashMap<>(); @@ -136,9 +137,8 @@ public JSONString ClosesoUpdateBL(JSONString json) { " SET h.vdef1 = '" + operationId + "' "+ " WHERE EXISTS (" + " SELECT 1" + - " FROM so_saleorder_b b" + - " left join bd_defdoc hbd on hbd.pk_defdoc=b.vbdef1 "+ - " WHERE b.csaleorderid = h.csaleorderid" + + " FROM bd_defdoc hbd "+ + " WHERE hbd.pk_defdoc=h.VDEF6" + " AND hbd.code = '" + vctcode + "' " + " );"; @@ -153,10 +153,10 @@ public JSONString ClosesoUpdateBL(JSONString json) { return ResultMessageUtil.exceptionToJSON(new NullPointerException("vctcode:null")); } // ֯ID۶ȡ۶Ψһʶ - String sql = " select h.csaleorderid,b.csaleorderbid,h.ts,hbd.code as vbillcode,o.code as pk_org from so_saleorder h " + String sql = " select h.csaleorderid,b.csaleorderbid,h.ts,hbd.code as vbillcode,o.code as pk_org,h.vbillcode as billcode from so_saleorder h " + "left join so_saleorder_b b on h.csaleorderid=b.csaleorderid " + "left join org_salesorg o on h.pk_org=o.pk_salesorg " - +" left join bd_defdoc hbd on hbd.pk_defdoc=b.vbdef1 "+ + +" left join bd_defdoc hbd on hbd.pk_defdoc=h.VDEF6 "+ "where hbd.code='" + vctcode + "' "; List result = (List) getQueryService().executeQuery(sql, new ArrayListProcessor()); @@ -175,9 +175,11 @@ public JSONString ClosesoUpdateBL(JSONString json) { String ts = (String) row[2]; bidsList.add(csaleorderbid + "," + ts); String vbillcode = (String) row[3]; + String billcode = (String) row[5]; if (vbillcode != null) { pk_org=(String)row[4]; vbillcodes.add(vbillcode); + billcodes.add(billcode); } } } @@ -239,6 +241,14 @@ public JSONString ClosesoUpdateBL(JSONString json) { int succState = updateSaleBSQty(updateSql.toString()); + for (String vbillcode : billcodes){ + // + String updateSql1 = " UPDATE mm_mo h" + + " SET h.vdef5 = '" + operationId + "' "+ + " WHERE h.vsrccode = '" + vbillcode + "' " + + " ;"; + updateSaleBSQty(updateSql1.toString()); + } // ɹôJSONcodeΪ0ʾɹ errojson.put("status", "1"); errojson.put("message", "۶״̬޸"+succState+""+ret2); From 33bb0d8c2a90d272374c71ca9bbd04e7e17a4f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Tue, 27 May 2025 09:44:44 +0800 Subject: [PATCH 22/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AD=BE=E5=AD=97=E6=8E=A8=E6=94=B9=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=8E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../private/nc/bs/ic/m4c/insert/InsertBP.java | 132 ++++++++++++++++++ ic/src/private/nc/bs/ic/m4c/sign/SignBP.java | 2 - .../rule/AfterApprovingSynchronizeRuleRZ.java | 3 +- 3 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 ic/src/private/nc/bs/ic/m4c/insert/InsertBP.java diff --git a/ic/src/private/nc/bs/ic/m4c/insert/InsertBP.java b/ic/src/private/nc/bs/ic/m4c/insert/InsertBP.java new file mode 100644 index 00000000..e5f6e41e --- /dev/null +++ b/ic/src/private/nc/bs/ic/m4c/insert/InsertBP.java @@ -0,0 +1,132 @@ +package nc.bs.ic.m4c.insert; + +import nc.bs.ic.general.insert.IInsertBP; +import nc.bs.ic.general.insert.rule.after.RewriteQCInsertRule; +import nc.bs.ic.general.insert.rule.before.CheckCliabilityValue; +import nc.bs.ic.general.rule.after.AtpAfterUpdate; +import nc.bs.ic.general.rule.before.CtplcustomeridCheck; +import nc.bs.ic.general.rule.before.InvAttributeCheck; +import nc.bs.ic.m4c.base.BPPlugInPoint; +import nc.bs.ic.m4c.base.rule.FillCostOrgRule; +import nc.bs.ic.m4c.base.rule.ReturnBarcodeCheck; +import nc.bs.ic.m4c.base.rule.ReturnDbizdateCheck; +import nc.bs.ic.m4c.base.rule.SaleOutCloseBusiLogRule; +import nc.bs.ic.m4c.base.rule.SaleOutDefaultValueSet; +import nc.bs.ic.m4c.base.rule.SaleOutFillInvoiceNumRule; +import nc.bs.ic.m4c.base.rule.SaleOutFromInvoiceCheckRule; +import nc.bs.ic.m4c.base.rule.SaleOutMarginProcess; +import nc.bs.ic.m4c.base.rule.SaleOutRetMarginProRule; +import nc.bs.ic.m4c.base.rule.SaleOutVOScaleCheckRule; +import nc.bs.ic.m4c.base.rule.SaleOutValueValidCheck; +import nc.bs.ic.m4c.insert.rule.InsertRewriteMMDP; +import nc.bs.ic.m4c.insert.rule.ReWrite5720InsertRule; +import nc.bs.ic.m4c.insert.rule.ReWrite5730InsertRule; +import nc.bs.ic.m4c.insert.rule.ReWrite6020InsertRule; +import nc.bs.ic.m4c.insert.rule.ReWrite6030InsertRule; +import nc.bs.ic.m4c.insert.rule.ReWriteICInsertRule; +import nc.bs.ic.m4c.insert.rule.ReWriteSOInsertForPushSaveRule; +import nc.bs.ic.m4c.insert.rule.ReWriteSOInsertRule; +import nc.bs.ic.m4c.insert.rule.SaleOutCheckRule; +import nc.bs.ic.m4c.insert.rule.credit.RenovateARByHidsBeginRule; +import nc.bs.ic.m4c.insert.rule.credit.RenovateARByHidsEndRule; +import nc.bs.ic.m4c.sign.rule.AfterSigningSynchronizeRuleRZ; +import nc.bs.ic.pub.base.ICAroundProcesser; +import nc.bs.ic.pub.base.IInsertRuleProvider; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.vo.credit.engrossmaintain.pub.action.M4CEngrossAction; +import nc.vo.ic.general.define.MetaNameConst; +import nc.vo.ic.m4c.entity.SaleOutVO; +import nccloud.bs.ic.mobile.component.operation.rule.MobAfterSaveMessageRule; + +/** + *

+ * ۳ⵥBP + * ʽʱ + *

+ * + * @author chenlla + * @version 6.0 + * @time 2010-1-2604:58:23 + * @since + */ +public class InsertBP implements IInsertBP, + IInsertRuleProvider { + + private boolean isPush = false; + + public InsertBP(boolean isPush) { + this.isPush = isPush; + } + + public InsertBP() { + this(false); + } + + @Override + public void addAfterRule(SaleOutVO[] vos, AroundProcesser processor) { + // + processor.addAfterRule(new RenovateARByHidsEndRule(M4CEngrossAction.M4CInsert)); + processor.addAfterRule(new ReWriteICInsertRule()); + /* + * ִ¹֮Ϊд۶ʱڶ + * ԶйرգйرջִԤִʱԤҵ + */ + if (this.isPush) { + ((ICAroundProcesser) processor).addAfterRuleAt( + new ReWriteSOInsertForPushSaveRule(), AtpAfterUpdate.class); + // processor.addAfterRule(new ReWriteSOInsertForPushSaveRule()); + } else { + ((ICAroundProcesser) processor).addAfterRuleAt( + new ReWriteSOInsertRule(), AtpAfterUpdate.class); + // processor.addAfterRule(new ReWriteSOInsertRule()); + } + processor.addAfterRule(new RewriteQCInsertRule()); + processor.addAfterRule(new SaleOutCloseBusiLogRule()); + processor.addAfterRule(new SaleOutFillInvoiceNumRule()); + processor.addAfterRule(new InsertRewriteMMDP()); + // дϸ + processor.addAfterRule(new ReWrite5730InsertRule()); + // дںͬ + processor.addAfterRule(new ReWrite5720InsertRule()); + // дתϸ + processor.addAfterRule(new ReWrite6030InsertRule()); + // дתںͬ + processor.addAfterRule(new ReWrite6020InsertRule()); + // 202032 ƶҵϢ + processor.addAfterRule(new MobAfterSaveMessageRule()); + + //2025527 + processor.addAfterFinalRule(new AfterSigningSynchronizeRuleRZ()); + + } + + @Override + public void addBeforeRule(SaleOutVO[] vos, + AroundProcesser processor) { + processor.addBeforeRule(new FillCostOrgRule()); + ((ICAroundProcesser) processor).addBeforeRuleAt( + new SaleOutDefaultValueSet(), InvAttributeCheck.class); + processor.addBeforeRule(new SaleOutCheckRule()); + processor.addBeforeRule(new SaleOutValueValidCheck()); + processor.addBeforeRule(new SaleOutFromInvoiceCheckRule()); + processor.addBeforeRule(new CtplcustomeridCheck()); + processor.addBeforeRule(new SaleOutMarginProcess()); + // ˻ص + processor.addBeforeRule(new SaleOutRetMarginProRule()); + // У + processor.addBeforeRule(new CheckCliabilityValue(MetaNameConst.CIOLIABILITYOID, MetaNameConst.CLIABILITYOID)); + processor.addBeforeRule(new ReturnBarcodeCheck()); + processor.addBeforeRule(new ReturnDbizdateCheck()); + processor.addBeforeRule(new SaleOutVOScaleCheckRule()); + // + processor.addBeforeRule(new RenovateARByHidsBeginRule(M4CEngrossAction.M4CInsert)); + } + + @Override + public SaleOutVO[] insert(SaleOutVO[] bills) { + M4CInsertBPTemplate insertBP = + new M4CInsertBPTemplate(BPPlugInPoint.InsertBP, this); + SaleOutVO[] insertvo = insertBP.insert(bills); + return insertvo; + } +} diff --git a/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java b/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java index 5db16260..6a067ff3 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/SignBP.java @@ -56,8 +56,6 @@ public class SignBP implements ISignBP, ISignRuleProvider processor.addAfterRule(new AfterSigningSynchronizeRuleMES()); // ̵㣨MES - // ۳ǩֺ ͬ - processor.addAfterRule(new AfterSigningSynchronizeRuleRZ()); } public void addBeforeRule(SaleOutVO[] vos, AroundProcesser processor) { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 88142f2f..37241dbd 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -194,7 +194,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { // detailItem.put("wlzdycs01", body.getCinwarehouseid()); // ID // detailItem.put("scgc_wbid", transferCodeByPk(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, body.getCdeptid())); - detailItem.put("scgc_wbid", body.getCdeptid()); +// detailItem.put("scgc_wbid", body.getCdeptid()); + detailItem.put("cjbz_wbid", body.getCdeptid()); // ע˵ detailItem.put("bzsm", body.getVnote()); From ce5886c7b5a5fbaba10a29a86a875ff03283a5cd Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 27 May 2025 10:44:27 +0800 Subject: [PATCH 23/30] =?UTF-8?q?saleUpdateLJpc=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/so/so/salepc/saleUpdateLJpc.java | 432 +++++++++--------- 1 file changed, 223 insertions(+), 209 deletions(-) diff --git a/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java b/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java index bda49ab2..f8a32059 100644 --- a/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java +++ b/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java @@ -6,14 +6,15 @@ import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; import nc.bs.framework.common.NCLocator; import nc.itf.uap.IUAPQueryBS; -import nc.jdbc.framework.ConnectionFactory; import nc.jdbc.framework.JdbcSession; import nc.jdbc.framework.PersistenceManager; import nc.jdbc.framework.exception.DbException; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapListProcessor; +import nc.jdbc.framework.processor.MapProcessor; import nc.vo.pub.BusinessException; import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.commons.lang.StringUtils; import nccloud.ws.rest.resource.AbstractNCCRestResource; import org.json.JSONString; @@ -30,236 +31,249 @@ import java.util.Map; @Path("so/so/salepc") public class saleUpdateLJpc extends AbstractNCCRestResource { - @Override - public String getModule() { - return "so"; - } - // ڴ洢ֹάıֶκֶ˵ - private Map requiredFields; - // 췽ʼֶμ˵ - public saleUpdateLJpc() { - // ʼֶбֶ˵ - requiredFields = new HashMap<>(); - requiredFields.put("pk_org", "ҵԪ"); - requiredFields.put("array.vbillcode", "ݱ"); - requiredFields.put("array.crowno", "к"); - requiredFields.put("array.sendQty", ""); - } + @Override + public String getModule() { + return "so"; + } - @POST - @Path("/saleUpdateLJpc") - @Consumes({"application/json"}) - @Produces({"application/json"}) - public JSONString saleUpdateLJpc(JSONString json) { - JSONObject returnJson = new JSONObject(); - try { - JSONObject object = JSON.parseObject(json.toJSONString()); - if (object == null) { - return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null")); - } - // Уֶ - String tipsStr = checkRequiredFields(object); - if (!tipsStr.equals("")) { - return ResultMessageUtil.exceptionToJSON(new NullPointerException(tipsStr)); - } - String pk_org = (String) object.getOrDefault("pk_org", ""); - Object obj = object.getOrDefault("array", ""); - ArrayList arrayList = new ArrayList<>(); - if (obj instanceof JSONArray) { - JSONArray jsonArray = (JSONArray) obj; - arrayList = new ArrayList<>(jsonArray.toJavaList(Object.class)); - } + // ڴ洢ֹάıֶκֶ˵ + private Map requiredFields; + + // 췽ʼֶμ˵ + public saleUpdateLJpc() { + // ʼֶбֶ˵ + requiredFields = new HashMap<>(); + requiredFields.put("pk_org", "ҵԪ"); + requiredFields.put("array.vbillcode", "ݱ"); + requiredFields.put("array.crowno", "к"); + requiredFields.put("array.sendQty", ""); + } + + @POST + @Path("/saleUpdateLJpc") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString saleUpdateLJpc(JSONString json) { + JSONObject returnJson = new JSONObject(); + try { + JSONObject object = JSON.parseObject(json.toJSONString()); + if (object == null) { + return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null")); + } + // Уֶ + String tipsStr = checkRequiredFields(object); + if (!tipsStr.isEmpty()) { + return ResultMessageUtil.exceptionToJSON(new NullPointerException(tipsStr)); + } + String pk_org = (String) object.getOrDefault("pk_org", ""); + Object obj = object.getOrDefault("array", ""); + ArrayList arrayList = new ArrayList<>(); + if (obj instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) obj; + arrayList = new ArrayList<>(jsonArray.toJavaList(Object.class)); + } // StringBuilder sqlStr = new StringBuilder(); - List sqlStr = new ArrayList(); - for (int i = 0; i < arrayList.size(); i++) { - Map dataMap = (Map) arrayList.get(i); + List sqlStr = new ArrayList(); + List resList = new ArrayList<>(); + for (int i = 0; i < arrayList.size(); i++) { + Map dataMap = (Map) arrayList.get(i); - String sqlser="SELECT b.csaleorderid, b.vbdef6, b.vbdef12 " - + "FROM so_saleorder_b b " - + "LEFT JOIN so_saleorder h ON b.csaleorderid = h.csaleorderid " - + "LEFT JOIN org_salesorg o ON h.pk_org = o.pk_salesorg " - + "WHERE b.dr=0 and h.vbillcode = '" + dataMap.get("vbillcode") + "' " - + "AND o.code = '" + pk_org + "' " - + "AND b.csaleorderbid = '" + dataMap.get("crowno") + "'"; - List> results = (List>) getQueryService().executeQuery(sqlser, new MapListProcessor()); - if (results.size()==0){ - returnJson.put("state", 'N'); - returnJson.put("msg", "ʧ,"+dataMap.get("vbillcode")+"к:"+dataMap.get("crowno")+""); - return ResultMessageUtil.toJSON(returnJson); - } - if (dataMap.get("sendQty")!=null){ - sqlStr.add("UPDATE so_saleorder_b b " - + "SET b.vbdef6 = '1001A11000000C0W6P7S',b.vbdef12 = '"+dataMap.get("sendQty")+"'" - + "WHERE b.csaleorderid IN (" - + " SELECT h.csaleorderid" - + " FROM so_saleorder h" - + " LEFT JOIN org_salesorg o ON h.pk_org = o.pk_salesorg" - + " WHERE h.vbillcode = '" + dataMap.get("vbillcode") + "' " - + " AND o.code = '" + pk_org + "' " - + " AND b.csaleorderbid = '" + dataMap.get("crowno") + "' and b.dr=0 " - + ");"); - } - } + String sqlser = "SELECT b.csaleorderid, b.vbdef6, b.vbdef12 " + + "FROM so_saleorder_b b " + + "LEFT JOIN so_saleorder h ON b.csaleorderid = h.csaleorderid " + + "LEFT JOIN org_salesorg o ON h.pk_org = o.pk_salesorg " + + "WHERE b.dr=0 and h.vbillcode = '" + dataMap.get("vbillcode") + "' " + + "AND o.code = '" + pk_org + "' " + + "AND b.csaleorderbid = '" + dataMap.get("crowno") + "'"; + List> results = (List>) getQueryService().executeQuery(sqlser, new MapListProcessor()); + if (results.size() == 0) { + returnJson.put("state", 'N'); + returnJson.put("msg", "ʧ," + dataMap.get("vbillcode") + "к:" + dataMap.get("crowno") + ""); + return ResultMessageUtil.toJSON(returnJson); + } + if (dataMap.get("sendQty") != null) { + sqlStr.add("UPDATE so_saleorder_b b " + + "SET b.vbdef6 = '1001A11000000C0W6P7S',b.vbdef12 = '" + dataMap.get("sendQty") + "'" + + "WHERE b.csaleorderid IN (" + + " SELECT h.csaleorderid" + + " FROM so_saleorder h" + + " LEFT JOIN org_salesorg o ON h.pk_org = o.pk_salesorg" + + " WHERE h.vbillcode = '" + dataMap.get("vbillcode") + "' " + + " AND o.code = '" + pk_org + "' " + + " AND b.csaleorderbid = '" + dataMap.get("crowno") + "' and b.dr=0 " + + ");"); + } + JSONObject resJson = new JSONObject(dataMap); + String csaleorderbid = dataMap.getOrDefault("csaleorderbid", "") + ""; + if (StringUtils.isNotEmpty(csaleorderbid)) { + String sql = " select sb.csaleorderbid,sb.vbdef19,sb.vbdef20" + + " from so_saleorder_b sb" + + " where sb.csaleorderbid='" + csaleorderbid + "' "; + Map soMap = (Map) getQueryService().executeQuery(sql, new MapProcessor()); + resJson.put("vbdef19", soMap.getOrDefault("vbdef19", "")); + resJson.put("vbdef20", soMap.getOrDefault("vbdef20", "")); + } + resList.add(resJson); + } // int succState = updateSaleBSQty(sqlStr.toString()); - int succState = executeUpdate(sqlStr); + int succState = executeUpdate(sqlStr); - if (succState == arrayList.size()) { - returnJson.put("state", 'Y'); - returnJson.put("msg", "ɹ,޸"+succState+""); + if (succState == arrayList.size()) { + returnJson.put("state", 'Y'); + returnJson.put("msg", "ɹ,޸" + succState + ""); - }else { - returnJson.put("state", 'N'); - returnJson.put("msg", "ʧ,޸"+succState+""); - } - return ResultMessageUtil.toJSON(returnJson); - } catch (DbException e) { - throw new RuntimeException(e); - } catch (Exception e) { - throw new RuntimeException(e); - } - } + } else { + returnJson.put("state", 'N'); + returnJson.put("msg", "ʧ,޸" + succState + ""); + } + returnJson.put("resList", resList); + return ResultMessageUtil.toJSON(returnJson); + } catch (Exception e) { + throw new RuntimeException(e); + } + } - /** - * updateSqlsΪҪִеsql䡣Ӱ - */ - public int executeUpdate(List updateSqls) throws DbException { - if (updateSqls == null) { - return 0; - } + /** + * updateSqlsΪҪִеsql䡣Ӱ + */ + public int executeUpdate(List updateSqls) throws DbException { + if (updateSqls == null) { + return 0; + } - int ret = 0; - PersistenceManager manager = null; - JdbcSession session = null; - Connection connection = null; + int ret = 0; + PersistenceManager manager = null; + JdbcSession session = null; + Connection connection = null; - try { - manager = PersistenceManager.getInstance(); - session = manager.getJdbcSession(); - connection = session.getConnection(); // ȡʵʵݿ + try { + manager = PersistenceManager.getInstance(); + session = manager.getJdbcSession(); + connection = session.getConnection(); // ȡʵʵݿ // connection = ConnectionFactory.getConnection(); - // ʼ - connection.setAutoCommit(false); // Զύֶ + // ʼ + connection.setAutoCommit(false); // Զύֶ - // ִ - for (String sql : updateSqls) { - session.addBatch(sql); - } + // ִ + for (String sql : updateSqls) { + session.addBatch(sql); + } - // ִ - ret = session.executeBatch(); + // ִ + ret = session.executeBatch(); - // ύ - connection.commit(); // ɹύ + // ύ + connection.commit(); // ɹύ - } catch (DbException e) { - if (connection != null) { - try { - // 쳣ع - connection.rollback(); - } catch (SQLException rollbackEx) { - // ¼ع쳣ϸϢ - throw new DbException("Error during transaction rollback", rollbackEx) { - @Override - public boolean isDataIntegrityViolation() { - return false; - } + } catch (DbException e) { + if (connection != null) { + try { + // 쳣ع + connection.rollback(); + } catch (SQLException rollbackEx) { + // ¼ع쳣ϸϢ + throw new DbException("Error during transaction rollback", rollbackEx) { + @Override + public boolean isDataIntegrityViolation() { + return false; + } - @Override - public boolean isBadSQLGrammar() { - return false; - } - }; - } - } - throw e; // ԭʼ쳣׳ - } catch (SQLException e) { - throw new RuntimeException(e); - } finally { - if (connection != null) { - try { - // ָԶύģʽȷӰ - connection.setAutoCommit(true); - } catch (SQLException e) { - // ԻָԶύʱ쳣 - } - } - if (manager != null) { - manager.release(); - } - } + @Override + public boolean isBadSQLGrammar() { + return false; + } + }; + } + } + throw e; // ԭʼ쳣׳ + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + if (connection != null) { + try { + // ָԶύģʽȷӰ + connection.setAutoCommit(true); + } catch (SQLException e) { + // ԻָԶύʱ쳣 + } + } + if (manager != null) { + manager.release(); + } + } - return ret; - } + return ret; + } - // תMap - public static String checkRequiredFields(JSONObject data) throws Exception { - String returnStr = ""; - // 2. ֶ pk_org - String pkOrg = (String) data.getOrDefault("pk_org", ""); - if (pkOrg.isEmpty()) { - return "ֶpk_orgȱʧΪ!"; - } - // 3. ȡ array ֶ - Object array = data.getOrDefault("array", null); - if (array == null || !(array instanceof JSONArray) || ((JSONArray) array).isEmpty()) { - return "arrayΪջ򲻴!"; - } - ArrayList arrayList = new ArrayList<>(); - if (array instanceof JSONArray) { - JSONArray jsonArray = (JSONArray) array; - arrayList = new ArrayList<>(jsonArray.toJavaList(Object.class)); - } - // 5. ÿ󣬼ֶ - for (int i = 0; i < arrayList.size(); i++) { - Map item = (Map) arrayList.get(i); - // ֶ 'crowno' - if (item.getOrDefault("crowno", "").toString().isEmpty()) { - return " " + (i + 1) + " ȱٱֶcrowno!"; - } - // ֶ 'vbillcode' - if (item.getOrDefault("vbillcode", "").toString().isEmpty()) { - return " " + (i + 1) + " ȱٱֶvbillcode!"; - } - // ֶ 'sendQty' - if (item.getOrDefault("sendQty", "").toString().isEmpty()) { - return " " + (i + 1) + " ȱٱֶsendQty!"; - } - } - return returnStr; - } + // תMap + public static String checkRequiredFields(JSONObject data) throws Exception { + String returnStr = ""; + // 2. ֶ pk_org + String pkOrg = (String) data.getOrDefault("pk_org", ""); + if (pkOrg.isEmpty()) { + return "ֶpk_orgȱʧΪ!"; + } + // 3. ȡ array ֶ + Object array = data.getOrDefault("array", null); + if (array == null || !(array instanceof JSONArray) || ((JSONArray) array).isEmpty()) { + return "arrayΪջ򲻴!"; + } + ArrayList arrayList = new ArrayList<>(); + if (array instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) array; + arrayList = new ArrayList<>(jsonArray.toJavaList(Object.class)); + } + // 5. ÿ󣬼ֶ + for (int i = 0; i < arrayList.size(); i++) { + Map item = (Map) arrayList.get(i); + // ֶ 'crowno' + if (item.getOrDefault("crowno", "").toString().isEmpty()) { + return " " + (i + 1) + " ȱٱֶcrowno!"; + } + // ֶ 'vbillcode' + if (item.getOrDefault("vbillcode", "").toString().isEmpty()) { + return " " + (i + 1) + " ȱٱֶvbillcode!"; + } + // ֶ 'sendQty' + if (item.getOrDefault("sendQty", "").toString().isEmpty()) { + return " " + (i + 1) + " ȱٱֶsendQty!"; + } + } + return returnStr; + } - /* - *ʱ䣺2024-11-28 - *ãѯ - *ֵ - *ֵmap - */ - private String getSaleorderBPK(String pk_org, String vbillcode, String crowno) throws BusinessException { - String sql = " select b.csaleorderbid from so_saleorder h \n" - + "left join so_saleorder_b b on h.csaleorderid=b.csaleorderid\n" - + "left join org_salesorg o on h.pk_org=o.pk_salesorg\n" - + "where h.vbillcode='" + vbillcode + "' and o.code='" + pk_org + "' and b.crowno='" + crowno + "' "; - String saleorderBPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); - return saleorderBPK; - } + /* + *ʱ䣺2024-11-28 + *ãѯ + *ֵ + *ֵmap + */ + private String getSaleorderBPK(String pk_org, String vbillcode, String crowno) throws BusinessException { + String sql = " select b.csaleorderbid from so_saleorder h \n" + + "left join so_saleorder_b b on h.csaleorderid=b.csaleorderid\n" + + "left join org_salesorg o on h.pk_org=o.pk_salesorg\n" + + "where h.vbillcode='" + vbillcode + "' and o.code='" + pk_org + "' and b.crowno='" + crowno + "' "; + String saleorderBPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor()); + return saleorderBPK; + } - /* - *ʱ䣺2024-11-28 - *ãѯ - *ֵ - *ֵmap - */ - private int updateSaleBSQty(String sql) throws BusinessException { - BaseDAO baseDAO = new BaseDAO(); - int succInt = baseDAO.executeUpdate(sql); - return succInt; - } + /* + *ʱ䣺2024-11-28 + *ãѯ + *ֵ + *ֵmap + */ + private int updateSaleBSQty(String sql) throws BusinessException { + BaseDAO baseDAO = new BaseDAO(); + int succInt = baseDAO.executeUpdate(sql); + return succInt; + } - public IUAPQueryBS getQueryService() { - return NCLocator.getInstance().lookup(IUAPQueryBS.class); - } + public IUAPQueryBS getQueryService() { + return NCLocator.getInstance().lookup(IUAPQueryBS.class); + } } \ No newline at end of file From 3982ed1d2fda54780fc2485a9d41e5cd11eb23fb Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 27 May 2025 10:48:22 +0800 Subject: [PATCH 24/30] =?UTF-8?q?saleUpdateLJpc=E5=A2=9E=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java b/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java index f8a32059..c785bfe0 100644 --- a/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java +++ b/so/src/public/nccloud/api/so/so/salepc/saleUpdateLJpc.java @@ -29,6 +29,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * ŲۼŲͬNCC + * 20052312 + */ @Path("so/so/salepc") public class saleUpdateLJpc extends AbstractNCCRestResource { @Override From 05affd15bb17463a09b792b45a34a7260c19331c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Tue, 27 May 2025 13:46:04 +0800 Subject: [PATCH 25/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=96=B0=E5=A2=9E=E6=8E=A8=E9=80=81djbh=5Fid?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E8=A1=A8=E4=BD=93=E4=B8=BB=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleRZ.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleRZ.java b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleRZ.java index 24afad76..7a62aced 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleRZ.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleRZ.java @@ -117,7 +117,7 @@ public class AfterSigningSynchronizeRuleRZ implements IRule { singleObj.put("wbpid",cgeneralhid);//ϵͳid singleObj.put("operate",1);//operate int ״̬ 1/޸ġ2ɾɾʱֻϴwbid singleObj.put("djly",1013);//djly varchar(20) Դ - singleObj.put("djbh_id",cgeneralhid+"_"+cgeneralbid);//id + singleObj.put("djbh_id",cgeneralhid);//id singleObj.put("djbh",vbillcode);//ݱ singleObj.put("djxh",crowno);// singleObj.put("djrq",dbizdate.toString());//-- From 161e38087b1b636eb2f27fd24ca70299ecdbd05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Tue, 27 May 2025 14:59:34 +0800 Subject: [PATCH 26/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E6=94=B9=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=AD=BE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ic/m4c/APISaleOutMaintainImpl.java | 362 ++++++++++++++++++ .../api/ic/m4c/IAPISaleOutMaintain.java | 93 +++++ .../openapi/ic/m4c/SaleOutResource.java | 272 +++++++++++++ 3 files changed, 727 insertions(+) create mode 100644 ic/src/private/nccloud/api/impl/ic/m4c/APISaleOutMaintainImpl.java create mode 100644 ic/src/public/nccloud/api/ic/m4c/IAPISaleOutMaintain.java create mode 100644 ic/src/public/nccloud/openapi/ic/m4c/SaleOutResource.java diff --git a/ic/src/private/nccloud/api/impl/ic/m4c/APISaleOutMaintainImpl.java b/ic/src/private/nccloud/api/impl/ic/m4c/APISaleOutMaintainImpl.java new file mode 100644 index 00000000..5b2246b5 --- /dev/null +++ b/ic/src/private/nccloud/api/impl/ic/m4c/APISaleOutMaintainImpl.java @@ -0,0 +1,362 @@ +package nccloud.api.impl.ic.m4c; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import nc.bs.framework.common.NCLocator; +import nc.bs.scmpub.query.SCMBillQuery; +import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil; +import nc.pubitf.ic.m4c.api.ISaleOutMaintainAPI; +import nc.vo.ic.general.define.ICBillFlag; +import nc.vo.ic.general.define.ICBillHeadVO; +import nc.vo.ic.general.define.MetaNameConst; +import nc.vo.ic.general.util.ICLocationUtil; +import nc.vo.ic.location.ICLocationVO; +import nc.vo.ic.m4c.entity.SaleOutBodyVO; +import nc.vo.ic.m4c.entity.SaleOutHeadVO; +import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.ic.pub.define.ICPubMetaNameConst; +import nc.vo.pub.BusinessException; +import nc.vo.pub.VOStatus; +import nc.vo.pubapp.util.VORowNoUtils; +import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule; +import nc.vo.scmpub.res.billtype.ICBillType; +import nccloud.api.ic.m4c.IAPISaleOutMaintain; +import nccloud.api.impl.ic.m4c.check.CheckSaleOutSaveValidator; +import nccloud.api.impl.ic.m4c.fill.SaleOutSaveFillValue; +import nccloud.api.impl.ic.m4c.fill.SaleOutSaveFromRefFillValue; +import nccloud.api.impl.ic.m4c.fill.SaleOutUpdateFillValue; +import nccloud.api.impl.ic.pub.check.CheckProhibitUpdateFields; +import nccloud.api.impl.ic.pub.rule.ChooseHeadOrg; +import nccloud.commons.lang.ArrayUtils; +import nccloud.commons.lang.StringUtils; +import nccloud.openapi.ic.util.ICAPILocationVOUtils; +import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; +import nccloud.openapi.scmpub.pub.TransferMapToVOTool; + +/** + * @version NCC1909 + * @Description: ۳ⵥάӿʵ + * @author: ܾ + * @date: 2019-5-17 10:19:25 + */ + +public class APISaleOutMaintainImpl implements IAPISaleOutMaintain { + + @Override + public SaleOutVO[] save(List> paramList) throws BusinessException { + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, SaleOutVO.class); + SaleOutVO[] vos = aggVOList.toArray(new SaleOutVO[aggVOList.size()]); + // ûλкVO + ICAPILocationVOUtils.setLocationVO(ICBillType.PurchaseIn.getCode(), vos); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckSaleOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + // λ + ICAPILocationVOUtils.translate(vos); + // + new SaleOutSaveFillValue().setDefaultValue(vos); + + return (SaleOutVO[]) PfServiceScmUtil.processBatch("WRITE", "4C", vos, null, + null); + } + + @Override + public SaleOutVO[] update(List> paramList) throws BusinessException { + + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, SaleOutVO.class); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + SaleOutVO[] vos = + aggVOList.toArray(new SaleOutVO[aggVOList.size()]); + // ûλкVO + ICAPILocationVOUtils.setLocationVO(ICBillType.MaterialOut.getCode(), vos); + SaleOutHeadVO newVO = vos[0].getHead(); + String cgeneralhid = newVO.getCgeneralhid(); + if (StringUtils.isEmpty(cgeneralhid)) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() + .getStrByID("4008027_0", "04008027-0390")/* + * @res + * "޸۳ⵥָͷcgeneralhidֵ" + */); + } + SCMBillQuery queryTool = + new SCMBillQuery(SaleOutVO.class); + SaleOutVO[] saleOutVOs = queryTool.queryVOByIDs(new String[]{ + cgeneralhid + }); + Map deleteLoc = + new HashMap(); + // ԭʼݺͻλϢ + SaleOutVO[] originBills = queryTool.queryVOByIDs(new String[]{ + cgeneralhid + }); + ICLocationUtil.loadLocationVOs(originBills); + if (ArrayUtils.isEmpty(saleOutVOs)) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes() + .getStrByID("4008027_0", "04008027-0360")/* + * @res + * "ûҵҪ޸ĵijⵥϢݵıͷcgeneralhid" + */); + } else { + List headProFields = + CheckProhibitUpdateFields.getHeadProhibitFields("4C"); + List bodyProFields = + CheckProhibitUpdateFields.getBodyProhibitFields("4C"); + SaleOutHeadVO origVO = saleOutVOs[0].getHead(); + if (origVO.getFbillflag() == null + || 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) origVO.getFbillflag())) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0361")/* + * @res + * "ǰⵥţ" + */ + + origVO.getVbillcode() + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0362")/* @res "״̬޸" */); + } + origVO.setStatus(VOStatus.UPDATED); + for (String attr : newVO.getAttributeNames()) { + if (newVO.getAttributeValue(attr) == null) { + continue; + } + if (headProFields.contains(attr) + && !newVO.getAttributeValue(attr).equals( + origVO.getAttributeValue(attr))) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0363")/* + * @res + * "ͷֶΣ" + */ + + attr + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0364")/* @res "޸ġ" */); + } + origVO.setAttributeValue(attr, newVO.getAttributeValue(attr)); + } + for (SaleOutVO orivo : originBills) { + SaleOutBodyVO[] oribodys = orivo.getBodys(); + for (SaleOutBodyVO oribody : oribodys) { + ICLocationVO[] locationVOs = oribody.getLocationVOs(); + if (null != locationVOs) { + deleteLoc.put(oribody.getCgeneralbid(), locationVOs); + } + } + } + if (vos[0].getBodys() != null) { + Map pkbs = + new HashMap(); + for (SaleOutBodyVO origBvo : saleOutVOs[0].getBodys()) { + origBvo.setStatus(VOStatus.UPDATED); + pkbs.put(origBvo.getCgeneralbid(), origBvo); + } + for (SaleOutBodyVO newBvo : vos[0].getBodys()) { + SaleOutBodyVO roigBvo = pkbs.get(newBvo.getCgeneralbid()); + if (newBvo.getCgeneralbid() == null || roigBvo == null) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0365")/* + * @res + * "ûƥ䵽ԭʼⵥϢݵıcgeneralbid" + */); + } + Set bfields = new HashSet(); + for (String battr : newBvo.getAttributeNames()) { + if (newBvo.getAttributeValue(battr) == null) { + continue; + } + if (bodyProFields.contains(battr) + && !newBvo.getAttributeValue(battr).equals( + roigBvo.getAttributeValue(battr))) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0366")/* + * @res + * "ֶΣ" + */ + + battr + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0364")/* @res "޸ġ" */); + } + roigBvo.setAttributeValue(battr, newBvo.getAttributeValue(battr)); + bfields.add(battr); + } + //ûλк,ԭɾ޸ĵĻλΪ + if (null != newBvo.getLocationVOs()) { + List allloc = new ArrayList(); + if (null != deleteLoc && null != deleteLoc.get(roigBvo.getCgeneralbid())) { + for (ICLocationVO delloc : deleteLoc.get(roigBvo.getCgeneralbid())) { + delloc.setStatus(VOStatus.DELETED); + allloc.add(delloc); + } + } + for (ICLocationVO loc : newBvo.getLocationVOs()) { + loc.setStatus(VOStatus.NEW); + allloc.add(loc); + } + roigBvo.setLocationVOs(allloc.toArray(new ICLocationVO[allloc.size()])); + } + // λ + ICAPILocationVOUtils.translate(saleOutVOs); + // + new SaleOutUpdateFillValue().setDefaultValue(saleOutVOs, bfields); + } + } + } + return NCLocator.getInstance() + .lookup(nc.itf.ic.m4c.self.ISaleOutMaintain.class) + .update(saleOutVOs, originBills); + } + + @Override + public SaleOutVO[] updateAndSign(List> paramList) throws BusinessException { + SaleOutVO[] updateVOs =NCLocator.getInstance().lookup(IAPISaleOutMaintain.class).update(paramList); + SaleOutVO[] signVOs =NCLocator.getInstance().lookup(IAPISaleOutMaintain.class).sign(updateVOs); + return signVOs; + } + + @Override + public SaleOutVO[] delete(SaleOutVO[] vos) throws BusinessException { + if (ArrayUtils.isEmpty(vos)) { + return null; + } + for (SaleOutVO aggvo : vos) { + ICBillHeadVO parentVO = aggvo.getParentVO(); + if (parentVO.getFbillflag() == null + || 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) parentVO.getFbillflag())) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0361")/* + * @res + * "ǰⵥţ" + */ + + parentVO.getVbillcode() + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0367")/* @res "״̬ɾ" */); + } + } + return (SaleOutVO[]) PfServiceScmUtil.processBatch("DELETE", "4C", vos, + null, null); + } + + @Override + public SaleOutVO[] sign(SaleOutVO[] vos) throws BusinessException { + if (ArrayUtils.isEmpty(vos)) { + return null; + } + for (SaleOutVO aggvo : vos) { + ICBillHeadVO parentVO = aggvo.getParentVO(); + if (parentVO.getFbillflag() == null + || 0 != ((Integer) ICBillFlag.FREE.value()) + .compareTo((Integer) parentVO.getFbillflag())) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0361")/* + * @res + * "ǰⵥţ" + */ + + parentVO.getVbillcode() + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0330")/* @res "״̬ǩ" */); + } + if (aggvo.getChildrenVO() != null && aggvo.getChildrenVO().length > 0) { + if (aggvo.getChildrenVO()[0] + .getAttributeValue(ICPubMetaNameConst.NNUM) == null) { + throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0361")/* + * @res + * "ǰⵥţ" + */ + + parentVO.getVbillcode() + + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0331")/* @res "Ϊգǩ" */); + } + } + + } + ICLocationUtil.loadLocationVOs(vos); + return (SaleOutVO[]) PfServiceScmUtil.processBatch("SIGN", "4C", vos, + null, null); + } + + @Override + public SaleOutVO[] unSign(SaleOutVO[] vos) throws BusinessException { + // TODO Auto-generated method stub + return null; + } + + + @Override + public SaleOutVO[] saveRefSaleOrder(List> paramList) throws BusinessException { + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, SaleOutVO.class); + SaleOutVO[] vos = aggVOList.toArray(new SaleOutVO[aggVOList.size()]); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckSaleOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + // + new SaleOutSaveFromRefFillValue().setRefValue(vos, "30"); + + // ۳ⵥ + return (SaleOutVO[]) PfServiceScmUtil.processBatch("WRITE", "4C", vos, null, + null); + + } + + @Override + public SaleOutVO[] saveRefDelivery(List> paramList) throws BusinessException { + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, SaleOutVO.class); + SaleOutVO[] vos = aggVOList.toArray(new SaleOutVO[aggVOList.size()]); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckSaleOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + + // + new SaleOutSaveFromRefFillValue().setRefValue(vos, "4331"); + // ۳ⵥ + return (SaleOutVO[]) PfServiceScmUtil.processBatch("WRITE", "4C", vos, null, + null); + } + + @Override + public SaleOutVO[] saveFromRef(List> paramList) + throws BusinessException { + + // MapListתۺVOList + List aggVOList = + TransferMapToVOTool.transferMapToAggVO(paramList, SaleOutVO.class); + SaleOutVO[] vos = + aggVOList.toArray(new SaleOutVO[aggVOList.size()]); + // 1ݻǿУ + BillVOsCheckRule checker = + new BillVOsCheckRule(new CheckSaleOutSaveValidator()); + checker.check(vos); + // 2뷭pk + aggVOList = TransferCodeToPKTool.transferAggVO(aggVOList); + + //֯vid + new ChooseHeadOrg().process(vos); + //к + VORowNoUtils.setVOsRowNoByRule(vos, MetaNameConst.CROWNO); + ISaleOutMaintainAPI saleOut = NCLocator.getInstance().lookup(ISaleOutMaintainAPI.class); + return saleOut.insertBills(vos); + } +} diff --git a/ic/src/public/nccloud/api/ic/m4c/IAPISaleOutMaintain.java b/ic/src/public/nccloud/api/ic/m4c/IAPISaleOutMaintain.java new file mode 100644 index 00000000..35e9c509 --- /dev/null +++ b/ic/src/public/nccloud/api/ic/m4c/IAPISaleOutMaintain.java @@ -0,0 +1,93 @@ +package nccloud.api.ic.m4c; + +import java.util.List; +import java.util.Map; + +import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.pub.BusinessException; + +/** + * + * @Description: ۳ⵥάӿ + * + * @author: ܾ + * @date: 2019-5-17 9:23:53 + * @version NCC1909 + */ + +public interface IAPISaleOutMaintain { + + /** + * ۳ⵥ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] save(List> paramList) throws BusinessException; + + /** + * ۳ⵥ޸IJ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] update(List> paramList) throws BusinessException; + + /** + * ۳ⵥ޸ǩֲ + * @param paramList + * @return + * @throws BusinessException + */ + public SaleOutVO[] updateAndSign(List> paramList) throws BusinessException; + + /** + * ۳ⵥɾ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] delete(SaleOutVO[] vos) throws BusinessException; + + /** + * ۳ⵥǩֲ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] sign(SaleOutVO[] vos) throws BusinessException; + + /** + * ۳ⵥȡǩֲ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] unSign(SaleOutVO[] vos) throws BusinessException; + + /** + * ۶۳ⵥ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] saveRefSaleOrder(List> paramMapList) + throws BusinessException; + /** + * ݷ۳ⵥ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] saveRefDelivery (List> paramMapList) + throws BusinessException; + /** + * ۳ⵥ + * @param vos + * @return + * @throws BusinessException + */ + public SaleOutVO[] saveFromRef (List> paramList) + throws BusinessException; + +} diff --git a/ic/src/public/nccloud/openapi/ic/m4c/SaleOutResource.java b/ic/src/public/nccloud/openapi/ic/m4c/SaleOutResource.java new file mode 100644 index 00000000..6fe0a323 --- /dev/null +++ b/ic/src/public/nccloud/openapi/ic/m4c/SaleOutResource.java @@ -0,0 +1,272 @@ +package nccloud.openapi.ic.m4c; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import nc.bs.framework.common.InvocationInfoProxy; +import org.json.JSONString; + +import nc.bs.framework.common.NCLocator; +import nc.bs.scmpub.query.SCMBillQuery; +import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.ic.pub.define.ICPubMetaNameConst; +import nc.ws.opm.pub.utils.result.APIErrCodeEnum; +import nccloud.api.ic.m4c.IAPISaleOutMaintain; +import nccloud.api.ic.m4c.IAPISaleOutQuery; +import nccloud.api.rest.utils.ResultMessageUtil; +import nccloud.openapi.scmpub.pub.NCCPubRestResource; + +/** + * + * @Description: ۳ⵥԴ + * + * @author: ܾ + * @date: 2019-5-17 10:21:00 + * @version NCC1909 + */ + +@Path("ic/saleout") +public class SaleOutResource extends NCCPubRestResource { + + private Integer pageNo = defaultPageIndex; + + private Integer pageSize = defaultPageNum; + + private static String HEADTABLE = "ic_saleout_h"; + + private static String BODYTABLE = "ic_saleout_b"; + + @POST + @Path("commonquery") + @Consumes("application/json") + @Produces("application/json") + public JSONString queryVOByCommon(Map paramMap) { + if (paramMap == null || !paramMap.containsKey(ICPubMetaNameConst.PK_ORG) + || !paramMap.containsKey(ICPubMetaNameConst.DBILLDATE)) { + return ResultMessageUtil.exceptionToJSON(",֯", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + try { + // ķҳϢ + if (paramMap.get(PAGE_NO) != null) { + Double pageno = (Double) paramMap.get(PAGE_NO); + this.pageNo = pageno.intValue(); + } + if (paramMap.get(PAGE_SIZE) != null) { + Double pagesize = (Double) paramMap.get(PAGE_SIZE); + this.pageSize = pagesize.intValue(); + } + IAPISaleOutQuery iQuery = + NCLocator.getInstance().lookup(IAPISaleOutQuery.class); + SaleOutVO[] saleoutVOs = + iQuery.queryPageVOByScheme(paramMap, this.pageNo, + this.pageSize); + return ResultMessageUtil.toJSON(saleoutVOs, + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID( + "4008027_0", "04008027-0460")/* @res "۳ⵥѯɹ" */); + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("schemequery") + @Consumes("application/json") + @Produces("application/json") + public JSONString queryVOByScheme(Map paramMap) { + if (paramMap == null) { + return ResultMessageUtil.exceptionToJSON("Ϊ,", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + try { + // òѯӿ + IAPISaleOutQuery query = + NCLocator.getInstance().lookup(IAPISaleOutQuery.class); + SaleOutVO[] saleOutVOs = query.queryVOByScheme(paramMap); + return ResultMessageUtil.toJSON(saleOutVOs, + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0", + "04008027-0460")/* @res "۳ⵥѯɹ" */); + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("save") + @Consumes("application/json") + @Produces("application/json") + public JSONString save(List> paramList) { + try { + for (Map map : paramList) { + if (!map.containsKey(HEADTABLE) || !map.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢͱϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + } + // + SaleOutVO[] saleOutVOs = + NCLocator.getInstance().lookup(IAPISaleOutMaintain.class) + .save(paramList); + return ResultMessageUtil.toJSON(saleOutVOs, + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0", + "04008027-0462")/* @res "۳ⵥɹ" */); + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("update") + @Consumes("application/json") + @Produces("application/json") + public JSONString update(Map paramMap) { + try { + if (paramMap == null || !paramMap.containsKey(HEADTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢͱϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + List> paramMapList= new ArrayList<>(); + paramMapList.add(paramMap); + //Ҫ޸ıʱǩ + String userCode = InvocationInfoProxy.getInstance().getUserCode(); + if("gaoning".equals(userCode)){ + // ޸IJǩ--һ + SaleOutVO[] signVOs =NCLocator.getInstance().lookup(IAPISaleOutMaintain.class).updateAndSign(paramMapList); + + + return ResultMessageUtil.toJSON(signVOs, + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0", + "04008027-0464")/* @res "۳ⵥ޸ǩֳɹ" */); + }else{ + // ޸ + SaleOutVO[] updateVO = + NCLocator.getInstance().lookup(IAPISaleOutMaintain.class) + .update(paramMapList); + return ResultMessageUtil.toJSON(updateVO, + nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("4008027_0", + "04008027-0464")/* @res "۳ⵥ޸ijɹ" */); + } + + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("delete") + @Consumes("application/json") + @Produces("application/json") + public JSONString delete(String[] hids) { + if (hids == null || hids.length == 0) { + return ResultMessageUtil.exceptionToJSON("Ϊ,", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + else { + try { + SCMBillQuery queryTool = + new SCMBillQuery(SaleOutVO.class); + SaleOutVO[] saleOutVOs = queryTool.queryVOByIDs(hids); + if (saleOutVOs.length == 0) { + return ResultMessageUtil.exceptionToJSON("ݴδƥ䵽", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + else { + NCLocator.getInstance() + .lookup(IAPISaleOutMaintain.class).delete(saleOutVOs); + return ResultMessageUtil.toJSON(new String[0], nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0466")/* + * @res + * "۳ⵥɾɹ" + */); + } + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + } + + @POST + @Path("sign") + @Consumes("application/json") + @Produces("application/json") + public JSONString sign(String[] hids) { + if (hids == null || hids.length == 0) { + return ResultMessageUtil.exceptionToJSON("Ϊ,", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + else { + try { + SCMBillQuery queryTool = + new SCMBillQuery(SaleOutVO.class); + SaleOutVO[] saleOutVOs = queryTool.queryVOByIDs(hids); + if (saleOutVOs.length == 0) { + return ResultMessageUtil.exceptionToJSON("ݴδƥ䵽", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + else { + saleOutVOs = + NCLocator.getInstance() + .lookup(IAPISaleOutMaintain.class).sign(saleOutVOs); + return ResultMessageUtil.toJSON(saleOutVOs, nc.vo.ml.NCLangRes4VoTransl + .getNCLangRes().getStrByID("4008027_0", "04008027-0468")/* + * @res + * "۳ⵥǩֳɹ" + */); + } + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + } + + @POST + @Path("saveRefSaleOrder") + @Consumes("application/json") + @Produces("application/json") + public JSONString saveRefSaleOrder(Map paramMap) { + try { + if (!paramMap.containsKey(HEADTABLE) || !paramMap.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢͱϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + List> paramMapList= new ArrayList<>(); + paramMapList.add(paramMap); + + IAPISaleOutMaintain service = + NCLocator.getInstance().lookup(IAPISaleOutMaintain.class); + SaleOutVO[] resultVOs = + service.saveRefSaleOrder(paramMapList); + // ؽ + return ResultMessageUtil.toJSON(resultVOs, "۳ⵥɹ"); + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + + @POST + @Path("saveRefDelivery") + @Consumes("application/json") + @Produces("application/json") + public JSONString saveRefDelivery(Map paramMap) { + try { + if (!paramMap.containsKey(HEADTABLE) || !paramMap.containsKey(BODYTABLE)) { + return ResultMessageUtil.exceptionToJSON("쳣ҪͷϢͱϢ", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + List> paramMapList= new ArrayList<>(); + paramMapList.add(paramMap); + IAPISaleOutMaintain service = + NCLocator.getInstance().lookup(IAPISaleOutMaintain.class); + SaleOutVO[] resultVOs = + service.saveRefDelivery(paramMapList); + return ResultMessageUtil.toJSON(resultVOs, "۳ⵥɹ"); + } + catch (Exception e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + +} From 392b00a90099042b792a88f0f02e9693b3ec5088 Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 27 May 2025 18:40:26 +0800 Subject: [PATCH 27/30] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=89=A9=E6=96=99=E8=A1=8C=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/so/m30/APISaleOrderMaitainImpl.java | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index b8545f01..ac275d66 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -320,26 +320,16 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if (null == originVos || originVos.length == 0) { ExceptionUtils.wrappBusinessException("ݴδƥ䵽"); } - + Map delMap = new HashMap<>(); for (Map objectMap : paramList) { Map headdata = (Map) objectMap.get(HEADTABLE); + delMap.put(headdata.get("csaleorderid") + "", headdata.getOrDefault("delId", "") + ""); List bodyArr = (List) objectMap.get(BODYTABLE); for (Object body : bodyArr) { Map bodydata = (Map) body; - if (!(bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) { - String vbdef11 = bodydata.get("vbdef11") + ""; - String dr = bodydata.getOrDefault("dr", "0") + ""; - String csaleorderid = bodydata.get("csaleorderid") + ""; - String countSql = "SELECT count(1) FROM so_saleorder_b" - + " WHERE nvl(dr,0) = 0 and csaleorderid = '[csaleorderid]' and vbdef11 = '[vbdef11]' "; - countSql = countSql.replace("[csaleorderid]", csaleorderid); - countSql = countSql.replace("[vbdef11]", vbdef11); - Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); - if ("0".equals(dr) && num <= 0) { - bodydata.put("status", "add"); - } - } else { - ExceptionUtils.wrappBusinessException("δͬƽ̨ϸӱУ鴫Σ"); + if ((bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) { + // vbdef11ΪΪ + bodydata.put("status", "add"); } } } @@ -366,20 +356,21 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { SaleOrderVO bipVo = vosMap.get(primaryKey); // õ״̬ hvo.setStatus(VOStatus.UPDATED); - - Map bvoMap = new HashMap<>(); - for (SaleOrderBVO saleOrderBVO : bipVo.getChildrenVO()) { - bvoMap.put(saleOrderBVO.getCsaleorderbid(), saleOrderBVO); - } + String delId = delMap.get(primaryKey); // ȽcombinBillVOsеBVOvosеBVO for (SaleOrderBVO bvo : vo.getChildrenVO()) { bvo.setStatus(VOStatus.UPDATED); - // ɾе״̬,bipҲ String csaleorderbid = bvo.getCsaleorderbid(); - if (bvoMap.get(csaleorderbid) == null) { - bvo.setStatus(VOStatus.DELETED); - NCCForUAPLogger.debug("findDeletedBids:" + VOStatus.DELETED + ",csaleorderbid = " + csaleorderbid); + // ɾе״̬,bipҲ + if (StringUtils.isNotEmpty(delId)) { + String[] delIds = delId.split(",", -1); + String vbdef11 = bvo.getVbdef11(); + // BIPͬ۶ɾУΪɾ״̬ + if (Arrays.asList(delIds).contains(vbdef11)) { + bvo.setStatus(VOStatus.DELETED); + NCCForUAPLogger.debug("findDeletedBids:" + VOStatus.DELETED + ",csaleorderbid = " + csaleorderbid); + } } } // combinBillVO еֶΪ vos еֵ @@ -726,6 +717,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { targetBVO.setVbdef18(sourceBVO.getVbdef18()); // Ƿ targetBVO.setVbdef19(sourceBVO.getVbdef19()); // ƻ targetBVO.setVbdef20(sourceBVO.getVbdef20()); // ƻ깤 + targetBVO.setVbdef14(sourceBVO.getVbdef14()); // ͬ۶ϸid } @@ -1262,6 +1254,10 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { */ @Override public void updateBipFlagSo(Map paramMap) throws Exception { + // BOMʱ䡢ʱ䣬ͬ + if (!paramMap.containsKey("vbdef16") && !paramMap.containsKey("vbdef17")) { + return; + } String csaleorderbid = (String) paramMap.get("csaleorderbid"); Map soMap = getSaleOrderInfo(csaleorderbid); // ûдͬ۶Ϣ򲻻д From 14cec2f1a85d76ce56c992ecc7cb9eb34cea9f28 Mon Sep 17 00:00:00 2001 From: lihao Date: Wed, 28 May 2025 14:08:23 +0800 Subject: [PATCH 28/30] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ErpSaleOrderToBIPBackgroupWorkPlugin.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java b/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java index 94e279dc..5e39968c 100644 --- a/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/bip/workplugin/ErpSaleOrderToBIPBackgroupWorkPlugin.java @@ -152,7 +152,8 @@ public class ErpSaleOrderToBIPBackgroupWorkPlugin implements IBackgroundWorkPlug String flag = map.get("flag"); StringBuffer sb = new StringBuffer(); if("2".equals(flag)){ - sb.append(" select ic_saleout_b.cgeneralbid as csaleinvoicebid,so_saleorder.vdef9,so_saleorder_b.vbdef11,so_saleorder_exe.ntotalarmny as totalaccrued ,so_saleorder_exe.ntotalinvoicenum as billqty, NVL(so_saleorder_exe.ntotaloutnum, 0) as totaloutqty "); + sb.append(" select ic_saleout_b.cgeneralbid as csaleinvoicebid,so_saleorder.vdef9,so_saleorder_b.vbdef11, so_saleorder_b.fretexchange, so_saleorder_b.cexchangesrcretid, so_saleorder_b.narrangemonum, so_saleorder_b.ntotalreturnnum, so_saleorder_b.ntotalrednum," + + " so_saleorder_exe.ntotalarmny as totalaccrued ,so_saleorder_exe.ntotalinvoicenum as billqty, NVL(so_saleorder_exe.ntotaloutnum, 0) as totaloutqty "); sb.append(" from so_saleorder_exe,ic_saleout_b,ic_saleout_h,so_saleorder_b,so_saleorder "); sb.append(" where so_saleorder_exe.csaleorderbid=ic_saleout_b.cfirstbillbid "); sb.append(" and ic_saleout_h.cgeneralhid = ic_saleout_b.cgeneralhid "); @@ -162,7 +163,7 @@ public class ErpSaleOrderToBIPBackgroupWorkPlugin implements IBackgroundWorkPlug sb.append(" and nvl(so_saleorder.vdef9,'~') not in ('~') "); sb.append(" and so_saleorder_exe.csaleorderbid='").append(map.get("cfirstbid")).append("'"); }else{ - sb.append(" select so_saleinvoice_b.csaleinvoicebid,so_saleorder.vdef9,so_saleorder_b.vbdef11,so_saleorder_exe.ntotalarmny as totalaccrued ,so_saleorder_exe.ntotalinvoicenum as billqty, NVL(so_saleorder_exe.ntotaloutnum, 0) as totaloutqty "); + sb.append(" select so_saleinvoice_b.csaleinvoicebid,so_saleorder.vdef9,so_saleorder_b.vbdef11,so_saleorder_b.fretexchange, so_saleorder_b.cexchangesrcretid, so_saleorder_b.narrangemonum, so_saleorder_b.ntotalreturnnum, so_saleorder_b.ntotalrednum, so_saleorder_exe.ntotalarmny as totalaccrued ,so_saleorder_exe.ntotalinvoicenum as billqty, NVL(so_saleorder_exe.ntotaloutnum, 0) as totaloutqty "); sb.append(" from so_saleorder_exe,so_saleinvoice_b,so_saleinvoice,so_saleorder_b,so_saleorder "); sb.append(" where so_saleorder_exe.csaleorderbid=so_saleinvoice_b.csrcbid "); sb.append(" and so_saleinvoice.csaleinvoiceid=so_saleinvoice_b.csaleinvoiceid and so_saleinvoice.fstatusflag=2 "); @@ -201,6 +202,14 @@ public class ErpSaleOrderToBIPBackgroupWorkPlugin implements IBackgroundWorkPlug b_map.put("totalAccrued", custpkmap.get("totalaccrued"));// ۼȷӦս b_map.put("totalOutQty", custpkmap.get("totaloutqty"));// ۼƳ + b_map.put("fretexchange", custpkmap.get("fretexchange")); // ˻ + b_map.put("cexchangesrcretid", custpkmap.get("cexchangesrcretid")); // жӦ˻ + b_map.put("narrangemonum", custpkmap.get("narrangemonum")); // ۼư + b_map.put("ntotalreturnnum", custpkmap.get("ntotalreturnnum")); // ۼ˻ + b_map.put("ntotalrednum", custpkmap.get("ntotalrednum")); // ۼƻس + + + l_map_f.add(b_map); js_apct.put("contractOrdersList", l_map_f); From 5f9bd9ac4a37a69ea04517ed251c36db6da530e6 Mon Sep 17 00:00:00 2001 From: maolei Date: Wed, 28 May 2025 14:24:24 +0800 Subject: [PATCH 29/30] =?UTF-8?q?mmpac:=20=E4=BC=98=E5=8C=96=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5=E5=88=B0=20MES=20?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在处理生产订单行时增加日志输出,提高可追踪性 - 修改了对 vparentbillid 为空值的判断逻辑,增加使用 equals("~") 进行比较 --- .../mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java index 1f6691f9..d92f337d 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java @@ -69,10 +69,11 @@ public class AfterApproveRuleSyncMes implements IRule { } for (PMOItemVO item : bodys) { - if (item.getVparentbillid() == null || item.getVparentbillid().isBlank()) { - continue; + obmlog.debug(" " + item.getVrowno()); + obmlog.debug(item); + if (item.getVparentbillid() == null || item.getVparentbillid().equals("~")) { + syncOrderItemToMes(head, item); } - syncOrderItemToMes(head, item); } } obmlog.info("ͬMESϵͳɡ"); From 48843ec04b39c48a1d526af29086a57e3e2435b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Wed, 28 May 2025 14:32:46 +0800 Subject: [PATCH 30/30] =?UTF-8?q?5=E5=8D=95=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=94=90=E5=88=B6=E4=BC=98=E5=8C=96=5F=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8E=A8=E9=80=81=E6=B7=BB=E5=8A=A0scgc=5Fwb?= =?UTF-8?q?id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 37241dbd..b04036d0 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -194,7 +194,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { // detailItem.put("wlzdycs01", body.getCinwarehouseid()); // ID // detailItem.put("scgc_wbid", transferCodeByPk(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, body.getCdeptid())); -// detailItem.put("scgc_wbid", body.getCdeptid()); + detailItem.put("scgc_wbid", body.getCdeptid()); detailItem.put("cjbz_wbid", body.getCdeptid()); // ע˵