From 598da93dd18d1ad6b2c2be8389241e77d8615899 Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 4 Nov 2025 15:02:51 +0800 Subject: [PATCH] =?UTF-8?q?refactor(task):=20=E4=BC=98=E5=8C=96=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=AB=98=E5=8E=8BIMS-=E7=94=9F=E4=BA=A7=E6=8A=A5?= =?UTF-8?q?=E5=91=8A-=E5=A2=9E=E5=8A=A0=E5=AD=99=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E8=B4=A8=E9=87=8F=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ims/ProductReportGyImsPlugin.java | 68 +++++++++++++++---- 1 file changed, 55 insertions(+), 13 deletions(-) diff --git a/uapbd/src/private/nc/bs/uapbd/task/ims/ProductReportGyImsPlugin.java b/uapbd/src/private/nc/bs/uapbd/task/ims/ProductReportGyImsPlugin.java index a8265de0..2f1f7ecf 100644 --- a/uapbd/src/private/nc/bs/uapbd/task/ims/ProductReportGyImsPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/task/ims/ProductReportGyImsPlugin.java @@ -12,18 +12,22 @@ import nc.itf.uap.pf.busiflow.PfButtonClickContext; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapListProcessor; import nc.util.mmf.busi.service.PFPubService; +import nc.util.mmf.framework.base.MMStringUtil; import nc.util.mmf.framework.base.MMValueCheck; +import nc.util.mmpac.wr.WrItemKeyToQualityItemKeyUtil; import nc.vo.fi.pub.SqlUtils; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.wr.entity.AggWrVO; import nc.vo.mmpac.wr.entity.WrItemVO; +import nc.vo.mmpac.wr.entity.WrQualityVO; import nc.vo.mmpac.wr.entity.WrVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.VOStatus; import nc.vo.pub.lang.UFDate; import nc.vo.pub.lang.UFDateTime; import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.scmpub.res.billtype.MMBillType; -import uap.mw.trans.TransactionFactory; import java.math.BigDecimal; import java.sql.Timestamp; @@ -64,8 +68,6 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin { try { IPMOQueryService pmoQueryService = NCLocator.getInstance().lookup(IPMOQueryService.class); IWrMaintainService wrService = NCLocator.getInstance().lookup(IWrMaintainService.class); - // 手动开启事务 - TransactionFactory.getTMProxy().begin(3, 0); String selSql = "select * from BIPReportMainTab where status = 'C'"; List> mainList = (List>) getImsDao().executeQuery(selSql, new MapListProcessor()); Set pkWrSet = new HashSet<>(); @@ -103,7 +105,7 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin { hvo.setFbillstatus(2); String dmakedateStr = ""; if (mainMap.get("dmakedate") != null && mainMap.get("dmakedate") instanceof Timestamp dmakedate1) { - dmakedateStr = DATE_FORMATTER.format(dmakedate1); + dmakedateStr = DATETIME_FORMATTER.format(dmakedate1); UFDate dmakedate = new UFDate(dmakedateStr); hvo.setDmakedate(dmakedate); } @@ -122,8 +124,10 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin { // 物料或数量替换 bvo.setNbplanwrnum(new UFDouble((BigDecimal) detailMap.get("nbplanwrnum")));// 计划完工主数量 bvo.setNbplanwrastnum(new UFDouble((BigDecimal) detailMap.get("nbplanwrastnum")));// 计划完工数量 - bvo.setNbwrnum(new UFDouble((BigDecimal) detailMap.get("nbwrnum")));// 完工主数量 - bvo.setNbwrastnum(new UFDouble((BigDecimal) detailMap.get("nbwrastnum")));// 完工数量 + UFDouble nbwrnum = new UFDouble((BigDecimal) detailMap.get("nbwrnum")); + bvo.setNbwrnum(nbwrnum);// 完工主数量 + UFDouble nbwrastnum = new UFDouble((BigDecimal) detailMap.get("nbwrastnum")); + bvo.setNbwrastnum(nbwrastnum);// 完工数量 // 如果物料不相等,则BIP物料替换为IMS物料 String cbmaterialvid = bvo.getCbmaterialvid(); String pkOrg = hvo.getPk_org(); @@ -138,14 +142,18 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin { if (!cbmaterialvid.equals(goodsId)) { bvo.setCbmaterialvid(goodsId); } + WrQualityVO bvoQualityVO = new WrQualityVO(); + bvoQualityVO.setNgastnum(nbwrastnum);// 处理数量 + bvoQualityVO.setNgnum(nbwrnum);// 处理主数量 + bvoQualityVO.setFgprocessmethod(1);// 处理方式 默认传1.合格 + bvo.setQualityvos(new WrQualityVO[]{bvoQualityVO}); + fillQualityVOs(bvo); } } } AggWrVO[] resultvos = null; try { - if ("C".equals(status)) { - resultvos = wrService.insert(vos); - } + resultvos = wrService.insert(vos); } catch (BusinessException e) { logger.error("ProductReportGyImsPlugin Error: ", e); // NCCForUAPLogger.debug("ProductReportGyImsPlugin Error: " + e.getMessage()); @@ -166,16 +174,50 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin { String updateSql = "update BIPReportMainTab set status = '2' where " + inSql; getImsDao().executeUpdate(updateSql); } - // 正常结束 - TransactionFactory.getTMProxy().end(null); logger.error("---end----任务结束运行--"); } catch (Exception e) { - // 异常回滚 - TransactionFactory.getTMProxy().end(e); logger.error("ProductReportGyImsPlugin Error: ", e); // NCCForUAPLogger.debug("ProductReportGyImsPlugin Error: " + e.getMessage()); } return null; } + /** + * 填充生产报告的质量信息 + */ + private void fillQualityVOs(WrItemVO item) { + for (WrQualityVO qualityVO : item.getQualityvos()) { + if (MMValueCheck.isEmpty(qualityVO.getNgnum()) && MMValueCheck.isEmpty(qualityVO.getNgastnum())) { + ExceptionUtils.wrappBusinessException("处理数量不能为空"); + } + + if (MMValueCheck.isEmpty(qualityVO.getFgprocessmethod())) { + ExceptionUtils.wrappBusinessException("处理方式不能为空"); + } + + for (String[] itemKeyMap : WrItemKeyToQualityItemKeyUtil.itemNoMaterialKeyToQualityKey) { + if (MMValueCheck.isEmpty(itemKeyMap)) { + break; + } + + if (MMValueCheck.isEmpty(qualityVO.getAttributeValue(itemKeyMap[1])) && MMValueCheck.isNotEmpty(item.getAttributeValue(itemKeyMap[0]))) { + qualityVO.setAttributeValue(itemKeyMap[1], item.getAttributeValue(itemKeyMap[0])); + } + } + + if (MMValueCheck.isEmpty(qualityVO.getCgmaterialid()) || MMStringUtil.isEqual(qualityVO.getCgmaterialid(), item.getCbmaterialid())) { + for (String[] itemKeyMap : WrItemKeyToQualityItemKeyUtil.itemMaterialKeyToQualityKey) { + if (MMValueCheck.isEmpty(itemKeyMap)) { + break; + } + + if (MMValueCheck.isEmpty(qualityVO.getAttributeValue(itemKeyMap[1])) && MMValueCheck.isNotEmpty(item.getAttributeValue(itemKeyMap[0]))) { + qualityVO.setAttributeValue(itemKeyMap[1], item.getAttributeValue(itemKeyMap[0])); + } + } + } + qualityVO.setStatus(VOStatus.NEW); + } + } + }