diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java index 921ef73..432dec0 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionRecordService.java @@ -40,5 +40,5 @@ public interface IMesProductionRecordService { void updateProductionRecord(String organizeCode, String userName, String sn); - void updateProductionRecord(String organizeCode, String userName, String sn, String errorMsg); + void updateProductionRecord(String organizeCode, String userName, Long id, String errorMsg); } 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 cbd0ae6..bdbc5fd 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 @@ -72,7 +72,7 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { // 处理无工单 handlerNoOrder(organizeCode, userName); // 处理有工单 - handlerHasOrder(organizeCode, userName); + //handlerHasOrder(organizeCode, userName); // } } @@ -83,7 +83,10 @@ public class MesReportNoSortJob extends BaseMesScheduleJob { return; } for (MesProductionRecord mesProductionRecord : unReportMesProduceSn) { + LOGGER.info("----------报工开始-------{}", mesProductionRecord.getProductSn()); workOrderService.doProductReportByRecord(mesProductionRecord, organizeCode, userName); + LOGGER.info("----------报工结束-------{}", mesProductionRecord.getProductSn()); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java index cd2f6c0..b5e9042 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductionRecordService.java @@ -195,10 +195,10 @@ public class MesProductionRecordService implements IMesProductionRecordService { new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue() },ddlPackBean); } @Override - public void updateProductionRecord(String organizeCode, String userName, String sn, String errorMsg) { + public void updateProductionRecord(String organizeCode, String userName, Long id, String errorMsg) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - - DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); + DdlPreparedPack.getNumEqualPack(id, "id", ddlPackBean); +// DdlPreparedPack.getStringEqualPack(sn, "productSn", ddlPackBean); productionRecordRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime","reportStatus", "remark"}, new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue(), errorMsg },ddlPackBean); } 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 63125c3..e751779 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 @@ -436,13 +436,15 @@ public class MesWorkOrderService implements IMesWorkOrderService { return mesProductVersion; } - private void updateProductionRecord(String organizeCode, String userName, String sn) { - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(sn, "custSn", ddlPackBean); + private void updateProductionRecord(String organizeCode, String userName, Long id) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(id, "id", ddlPackBean); +// DdlPreparedPack.getStringEqualPack(sn, "custSn", ddlPackBean); productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime"}, 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) { @@ -452,7 +454,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { try { List oldMesWorkOrderList = getMesWorkOrder(productionRecord, organizeCode); if (CollectionUtils.isEmpty(oldMesWorkOrderList)) { - updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); + LOGGER.error("报工条码:{}找不到加工单", productionRecord.getProductSn()); + updateProductionRecord(organizeCode, userName, productionRecord.getId()); return; } @@ -465,7 +468,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } e.printStackTrace(); LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e); - productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getProductSn(), msg); + productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg); } } @Override @@ -478,7 +481,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { LOGGER.info("此次报工的条码【{}】,工单【{}】", productionRecord.getProductSn(), productionRecord.getWorkOrderNo()); List oldMesWorkOrders = getMesWorkOrders(productionRecord, organizeCode); if (CollectionUtils.isEmpty(oldMesWorkOrders)) { - updateProductionRecord(organizeCode, userName, productionRecord.getProductSn()); + updateProductionRecord(organizeCode, userName, productionRecord.getId()); return; } report(productionRecord, organizeCode, userName, oldMesWorkOrders); @@ -489,7 +492,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } e.printStackTrace(); LOGGER.error("条码:{}报工失败", productionRecord.getProductSn(), e); - productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getProductSn(), msg); + productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg); } } @@ -586,6 +589,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { LOGGER.info("工单报工后数量【{}】", oldMesWorkOrder.getReportedQty()); ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName); workOrderExtService.update(oldMesWorkOrder); + //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; @@ -623,16 +627,20 @@ public class MesWorkOrderService implements IMesWorkOrderService { mesProductOffLineList.add(newMesProductOffLine); } mesProductOffLineRDao.saveAll(mesProductOffLineList); + // 同步工单信息给加工记录、条码信息 DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getStringEqualPack(productionRecord.getProductSn(), "productSn", snDdlPackBean); + DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", snDdlPackBean); DdlPreparedPack.getStringEqualPack(organizeCode, "organizeCode", snDdlPackBean); mesProduceSnRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo"}, new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo()},snDdlPackBean); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", packBean); productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderNo", "reportStatus"}, - new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},snDdlPackBean); + new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()},packBean); + LOGGER.info("条码【{}】报工成功,报工工单【{}】",productionRecord.getProductSn(), oldMesWorkOrder.getWorkOrderNo()); } @@ -693,6 +701,14 @@ public class MesWorkOrderService implements IMesWorkOrderService { list.add(oldMesWorkOrder); } } + // 如果找不到则再根据计划开始时间找 + if (CollectionUtils.isEmpty(list)) { + String beginTime =productionRecord.getLotNo() + " " + currentShift.getStartTime(); + Date beginDate = transfer(beginTime); + list = oldMesWorkOrders.stream().filter(workOrder ->!StringUtils.isEmpty(workOrder.getPlanStartTime()) && !StringUtils.isEmpty(workOrder.getPlanEndTime()) && + beginDate.getTime() >= transfer(workOrder.getPlanStartTime()).getTime() && beginDate.getTime() <= transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList()); + + } workOrders = list; @@ -713,7 +729,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { String endTime = date + " " +currentShift.getStartTime(); String startTime = date + " " +currentShift.getEndTime(); - workOrders = oldMesWorkOrders.stream().filter(workOrder -> transfer(startTime).getTime() > transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() < transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList()); + workOrders = oldMesWorkOrders.stream().filter(workOrder -> !StringUtils.isEmpty(workOrder.getPlanStartTime()) && !StringUtils.isEmpty(workOrder.getPlanEndTime()) && + transfer(startTime).getTime() > transfer(workOrder.getPlanStartTime()).getTime() && transfer(endTime).getTime() < transfer(workOrder.getPlanEndTime()).getTime()).collect(Collectors.toList()); } else { // 早班或者中班 则找当天非当前班次的最早单号