From 93cee1552c6b6087e3449bfa6b299b5a314720c2 Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 19 Sep 2025 16:18:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=B5=81=E7=A8=8B=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A2=E5=8D=95-=E5=BA=8F=E5=88=97=E5=8F=B7-?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pluginpoint/PmoSerialNoImportProcess.java | 51 ++++++++++++++++--- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/pluginpoint/PmoSerialNoImportProcess.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/pluginpoint/PmoSerialNoImportProcess.java index eef786a8..6501c5b0 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/pluginpoint/PmoSerialNoImportProcess.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/pluginpoint/PmoSerialNoImportProcess.java @@ -7,22 +7,32 @@ package nc.bs.mmpac.pmo.pac0002.pluginpoint; import nc.bs.dao.BaseDAO; import nc.bs.framework.common.InvocationInfoProxy; +import nc.bs.framework.common.NCLocator; +import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; import nc.bs.trade.business.HYPubBO; import nc.impl.pubapp.pattern.data.bill.BillQuery; import nc.jdbc.framework.processor.MapProcessor; +import nc.pubitf.sn.doc.ISnService; +import nc.pubitf.sn.doc.param.SnDocParam; import nc.vo.ml.NCLangRes4VoTransl; 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.mmpac.pmo.pac0002.entity.PMOSerialNoVO; +import nc.vo.mmpac.pmo.parameter.PMOMaterlKey; import nc.vo.pub.BusinessException; import nc.vo.pub.VOStatus; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.pubapp.pattern.pub.MathTool; import nccloud.baseapp.core.log.NCCForUAPLogger; import nccloud.bs.excel.IXChangeContext; import nccloud.bs.excel.plugin.AbstractImportProceeWithContext; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.Set; /** * 导入流程生产订单-序列号 @@ -46,13 +56,16 @@ public class PmoSerialNoImportProcess extends AbstractImportProceeWithContext { String cpmohid = pmoSerialNoVO.getVsndef1();// 订单号 String vsncode = pmoSerialNoVO.getVsncode();// 序列号 UFDouble nsnastnum = pmoSerialNoVO.getNsnastnum();// 数量 + if (!MathTool.equals(nsnastnum, UFDouble.ONE_DBL)) { + throw new BusinessException("数量应该等于1,请检查数据,单号:" + cpmohid + ",行号:" + cmoid); + } // 查询生产订单的主键 String selSql = " SELECT a.cpmohid,b.cmoid" + " FROM mm_mo b" + " LEFT JOIN mm_pmo a ON a.cpmohid = b.cpmohid" + // " LEFT JOIN org_factory c ON c.pk_factory = b.pk_org " + - " WHERE" + - " a.vbillcode = '[cpmohid]'" + + " WHERE b.dr = 0" + + " AND a.vbillcode = '[cpmohid]'" + " AND b.vrowno = '[cmoid]'" + " AND b.pk_org = '[pk_org]'"; selSql = selSql.replace("[cpmohid]", cpmohid); @@ -69,6 +82,15 @@ public class PmoSerialNoImportProcess extends AbstractImportProceeWithContext { BillQuery query = new BillQuery(PMOAggVO.class); PMOAggVO[] vos = query.query(new String[]{cpmohid1}); for (PMOAggVO pmoAggVO : vos) { + PMOHeadVO headVO = pmoAggVO.getParentVO(); + // 交易类型编码 + String vtrantypecode = headVO.getVtrantypecode(); + Set billTypeCodes = Set.of( + "55A2-Cxx-01", "55A2-Cxx-18" + ); + if (!billTypeCodes.contains(vtrantypecode)) { + throw new BusinessException("订单类型不符合要求,请检查数据,单号:" + cpmohid + ",行号:" + cmoid); + } PMOItemVO[] pmoItemVOS = pmoAggVO.getChildrenVO(); for (PMOItemVO pmoItemVO : pmoItemVOS) { if (cmoid1.equals(pmoItemVO.getCmoid())) { @@ -77,14 +99,14 @@ public class PmoSerialNoImportProcess extends AbstractImportProceeWithContext { pmoSerialNoVO1.setPk_group(pmoItemVO.getPk_group()); pmoSerialNoVO1.setPk_org(pmoItemVO.getPk_org()); pmoSerialNoVO1.setPk_org_v(pmoItemVO.getPk_org_v()); + pmoSerialNoVO1.setCsnunitid(pmoItemVO.getCunitid());// 主单位 + pmoSerialNoVO1.setCsnastunitid(pmoItemVO.getCastunitid());// 单位 pmoSerialNoVO1.setVsncode(vsncode); pmoSerialNoVO1.setNsnnum(nsnastnum); pmoSerialNoVO1.setNsnastnum(nsnastnum); - // pmoItemVO.setStatus(VOStatus.UPDATED); pmoSerialNoVO1.setStatus(VOStatus.NEW); pmoSerialNoVO1.setDr(0); - this.doAddSave(pmoSerialNoVO1); - // pmoItemVO.setSerialnos(new PMOSerialNoVO[]{pmoSerialNoVO1}); + this.doAddSave(pmoSerialNoVO1, headVO, pmoItemVO); } } } @@ -93,15 +115,30 @@ public class PmoSerialNoImportProcess extends AbstractImportProceeWithContext { } } - private void doAddSave(PMOSerialNoVO vo) { + private void doAddSave(PMOSerialNoVO vo, PMOHeadVO headvo, PMOItemVO itemvo) { try { HYPubBO hy = new HYPubBO(); + // 之前序列号全部设置为删除状态 + // int num = dao.executeUpdate("update mm_pmo_serialno set dr = 1 where cmoid = '" + itemvo.getCmoid() + "'"); + // NCCForUAPLogger.debug("PmoSerialNoImportProcess-num = " + num); String insert = hy.insert(vo); - NCCForUAPLogger.debug(insert); + NCCForUAPLogger.debug("PmoSerialNoImportProcess-insert = " + insert); + if (insert != null && !insert.isEmpty()) { + PMOSerialNoVO pmoSerialNoVO = (PMOSerialNoVO) hy.queryByPrimaryKey(PMOSerialNoVO.class, insert); + // 新增序列号档案 + List saveParams = new ArrayList<>(); + this.construcParams(saveParams, headvo, itemvo, pmoSerialNoVO, null); + ISnService service = NCLocator.getInstance().lookup(ISnService.class); + service.saveSerialnos(saveParams.toArray(new SnDocParam[0])); + } // NCLocator.getInstance().lookup(IPMOMaintainService.class).insert(resvo); } catch (BusinessException e) { ExceptionUtils.wrappException(e); } + } + private void construcParams(List params, PMOHeadVO headvo, PMOItemVO itemvo, PMOSerialNoVO snvo, Map snUint) { + SnDocParam docParam = PMOBPUtil.getSnDocParam(headvo, itemvo, snvo, snUint); + params.add(docParam); } }