diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java index 5ed16e3..cbd0ae6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java @@ -82,15 +82,10 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { LOGGER.error("无加工单加工记录中没有数据,无需处理"); return; } - try { - for (MesProductionRecord mesProductionRecord : unReportMesProduceSn) { - workOrderService.doProductReportByRecord(mesProductionRecord, organizeCode, userName); - } - - } catch (ImppBusiException e) { - LOGGER.error("条码:{}报工失败", unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); - productionRecordService.updateProductionRecord(organizeCode, userName, unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + for (MesProductionRecord mesProductionRecord : unReportMesProduceSn) { + workOrderService.doProductReportByRecord(mesProductionRecord, organizeCode, userName); } + } private void handlerHasOrder(String organizeCode, String userName) { @@ -106,8 +101,8 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { } } catch (ImppBusiException e) { - LOGGER.error("条码:{}报工失败", unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); - productionRecordService.updateProductionRecord(organizeCode, userName, unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + //LOGGER.error("条码:{}报工失败", unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); + //productionRecordService.updateProductionRecord(organizeCode, userName, unReportMesProduceSn.get(0).getProductSn(), e.getErrorDetail()); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index cd8d2c0..0b14d01 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesShiftService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; @@ -33,6 +34,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.text.ParseException; @@ -100,6 +104,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { @Autowired private MesPartSapRepository partSapRepository; + @Autowired + private IMesProductionRecordService productionRecordService; + @Override public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) { @@ -437,6 +444,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { new Object[]{userName, TimeTool.getNowTime(true)},ddlPackBean); } @Override + @Transactional(propagation= Propagation.REQUIRES_NEW,isolation= Isolation.READ_COMMITTED,readOnly = false,rollbackFor = Exception.class) public void doProductReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) { //新增初始化 todo // 根据 @@ -448,20 +456,29 @@ public class MesWorkOrderService implements IMesWorkOrderService { } report(productionRecord, organizeCode, userName, oldMesWorkOrderList); - } @Override public void doProductHasOrderReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) { //新增初始化 todo // 根据 //根据物料获取已发布的工单 - LOGGER.info("此次报工的条码【{}】,工单【{}】", productionRecord.getProductSn(), productionRecord.getWorkOrderNo()); - List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode); - if (CollectionUtils.isEmpty(oldMesWorkOrders)) { - updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); - return; + try { + LOGGER.info("此次报工的条码【{}】,工单【{}】", productionRecord.getProductSn(), productionRecord.getWorkOrderNo()); + List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode); + if (CollectionUtils.isEmpty(oldMesWorkOrders)) { + updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); + return; + } + report(productionRecord, organizeCode, userName, oldMesWorkOrders); + } catch (Exception e) { + String msg = e.getMessage(); + if (e instanceof ImppBusiException) { + msg = ((ImppBusiException) e).getErrorMsg(); + } + e.printStackTrace(); + LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e); + productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getProductSn(), msg); } - report(productionRecord, organizeCode, userName, oldMesWorkOrders); } @@ -540,7 +557,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { oldMesWorkOrder.setNum(oldMesWorkOrder.getNum() == null ? 1 : oldMesWorkOrder.getNum() + 1); LOGGER.info("工单报工原数量【{}】", oldMesWorkOrder.getReportedQty()); oldMesWorkOrder.setReportedQty(MathOperation.add(oldMesWorkOrder.getNum(), oldMesWorkOrder.getReportedQty())); - if (oldMesWorkOrder.getCompleteQty() == 0) { + if (StringUtils.isEmpty(productionRecord.getWorkOrderNo())) { oldMesWorkOrder.setCompleteQty(oldMesWorkOrder.getReportedQty()); } //更新SAP计划完成数量 @@ -604,6 +621,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo", "reportStatus"}, new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},snDdlPackBean); + LOGGER.info("条码【{}】报工成功,报工工单【{}】",productionRecord.getProductSn(), oldMesWorkOrder.getWorkOrderNo()); + } /**