高压IMS-生产报告同步-调整为独立事务

This commit is contained in:
mzr 2025-11-13 20:28:56 +08:00
parent 3b996941f7
commit ab0a8975be
1 changed files with 29 additions and 44 deletions

View File

@ -6,7 +6,6 @@ import nc.bs.logging.Log;
import nc.bs.pub.pa.PreAlertObject; import nc.bs.pub.pa.PreAlertObject;
import nc.bs.pub.taskcenter.BgWorkingContext; import nc.bs.pub.taskcenter.BgWorkingContext;
import nc.bs.pub.taskcenter.IBackgroundWorkPlugin; import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
import nc.bs.uapbd.util.ImsDaoUtil;
import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; import nc.itf.mmpac.pmo.pac0002.IPMOQueryService;
import nc.itf.mmpac.wr.IWrMaintainService; import nc.itf.mmpac.wr.IWrMaintainService;
import nc.itf.uap.pf.busiflow.PfButtonClickContext; import nc.itf.uap.pf.busiflow.PfButtonClickContext;
@ -16,7 +15,6 @@ import nc.util.mmf.busi.service.PFPubService;
import nc.util.mmf.framework.base.MMStringUtil; import nc.util.mmf.framework.base.MMStringUtil;
import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.base.MMValueCheck;
import nc.util.mmpac.wr.WrItemKeyToQualityItemKeyUtil; import nc.util.mmpac.wr.WrItemKeyToQualityItemKeyUtil;
import nc.vo.fi.pub.SqlUtils;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.wr.entity.AggWrVO; import nc.vo.mmpac.wr.entity.AggWrVO;
import nc.vo.mmpac.wr.entity.WrItemVO; import nc.vo.mmpac.wr.entity.WrItemVO;
@ -33,7 +31,9 @@ import nc.vo.scmpub.res.billtype.MMBillType;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 定时同步高压加工车间IMS的生产报告 * 定时同步高压加工车间IMS的生产报告
@ -66,19 +66,16 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin {
@Override @Override
public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException { public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
logger.error("---start----任务开始运行--"); logger.error("---start----任务开始运行--");
Set<String> pkWrFailSet = new HashSet<>(); IPMOQueryService pmoQueryService = NCLocator.getInstance().lookup(IPMOQueryService.class);
try { IWrMaintainService wrService = NCLocator.getInstance().lookup(IWrMaintainService.class);
Set<String> pkWrSet = new HashSet<>(); String selSql = "select * from BIPReportMainTab where status = 'C'";
IPMOQueryService pmoQueryService = NCLocator.getInstance().lookup(IPMOQueryService.class); List<Map<String, Object>> mainList = (List<Map<String, Object>>) getImsDao().executeQuery(selSql, new MapListProcessor());
IWrMaintainService wrService = NCLocator.getInstance().lookup(IWrMaintainService.class); for (Map<String, Object> mainMap : mainList) {
String selSql = "select * from BIPReportMainTab where status = 'C'"; // IMS生产报告的主键
List<Map<String, Object>> mainList = (List<Map<String, Object>>) getImsDao().executeQuery(selSql, new MapListProcessor()); String pkWr = mainMap.get("pk_wr").toString();
for (Map<String, Object> mainMap : mainList) { // 同步标识 IMS:C-创建;U-修改 BIP:2-BIP单据接收完成
// IMS生产报告的主键 String status = mainMap.get("status").toString();
String pkWr = mainMap.get("pk_wr").toString(); try {
pkWrFailSet.add(pkWr);
// 同步标识 IMS:C-创建;U-修改 BIP:2-BIP单据接收完成
String status = mainMap.get("status").toString();
String pkWrSql = "select * from BIPReportDetailTab where pk_wr = '" + pkWr + "'"; String pkWrSql = "select * from BIPReportDetailTab where pk_wr = '" + pkWr + "'";
List<Map<String, Object>> detailList = (List<Map<String, Object>>) getImsDao().executeQuery(pkWrSql, new MapListProcessor()); List<Map<String, Object>> detailList = (List<Map<String, Object>>) getImsDao().executeQuery(pkWrSql, new MapListProcessor());
Map<String, Map<String, Object>> detailIdMap = new HashMap<>(); Map<String, Map<String, Object>> detailIdMap = new HashMap<>();
@ -159,38 +156,26 @@ public class ProductReportGyImsPlugin implements IBackgroundWorkPlugin {
} }
} }
} }
AggWrVO[] resultvos = null; // 用_RequiresNew方法单独启事务
try { AggWrVO[] wrVOS = wrService.insert_RequiresNew(vos);
resultvos = wrService.insert(vos); String updateSql;
} catch (BusinessException e) { if (wrVOS != null && wrVOS.length > 0) {
logger.error("ProductReportGyImsPlugin Error: ", e); updateSql = "update BIPReportMainTab set status = '2',err_msg = null where pk_wr = '[pkWr]'";
// NCCForUAPLogger.debug("ProductReportGyImsPlugin Error: " + e.getMessage()); } else {
String updateSql = "update BIPReportMainTab set err_msg = '[err_msg]' where pk_wr = '[pkWr]'"; updateSql = "update BIPReportMainTab set err_msg = '[err_msg]' where pk_wr = '[pkWr]'";
updateSql = updateSql.replace("[err_msg]", e.getMessage()); updateSql = updateSql.replace("[err_msg]", "新增返回空");
updateSql = updateSql.replace("[pkWr]", pkWr);
// NCCForUAPLogger.debug("ProductReportGyImsPlugin-updateSql = " + updateSql);
ImsDaoUtil.executeUpdate(updateSql, pkWr);
} }
if (MMValueCheck.isEmpty(resultvos)) { updateSql = updateSql.replace("[pkWr]", pkWr);
continue; getImsDao().executeUpdate(updateSql);
} } catch (BusinessException e) {
pkWrSet.add(pkWr); logger.error("ProductReportGyImsPlugin Error: ", e);
} String updateSql = "update BIPReportMainTab set err_msg = '[err_msg]' where pk_wr = '[pkWr]'";
if (!pkWrSet.isEmpty()) { updateSql = updateSql.replace("[err_msg]", e.getMessage());
// 修改状态为 完成 updateSql = updateSql.replace("[pkWr]", pkWr);
String inSql = SqlUtils.getInStr("pk_wr", pkWrSet.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update BIPReportMainTab set status = '2',err_msg = null where " + inSql;
getImsDao().executeUpdate(updateSql); getImsDao().executeUpdate(updateSql);
} }
logger.error("---end----任务结束运行--");
} catch (Exception e) {
logger.error("ProductReportGyImsPlugin Error: " + e.getMessage(), e);
// NCCForUAPLogger.debug("ProductReportGyImsPlugin Error: " + e.getMessage());
String inSql = SqlUtils.getInStr("pk_wr", pkWrFailSet.toArray(new String[0]), Boolean.TRUE);
String updateSql = "update BIPReportMainTab set err_msg = '[err_msg]' where " + inSql;
updateSql = updateSql.replace("[err_msg]", e.getMessage());
int rows = ImsDaoUtil.executeUpdate(updateSql, pkWrFailSet.toString());
} }
logger.error("---end----任务结束运行--");
return null; return null;
} }