refactor(task): 优化同步高压IMS-生产报告-增加孙表的质量信息

This commit is contained in:
mzr 2025-11-04 15:02:51 +08:00
parent 64bc4c0f23
commit 598da93dd1
1 changed files with 55 additions and 13 deletions

View File

@ -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<Map<String, Object>> mainList = (List<Map<String, Object>>) getImsDao().executeQuery(selSql, new MapListProcessor());
Set<String> 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);
}
} 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);
}
}
}