diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java index ffff61b..bbca02b 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderCutService.java @@ -16,6 +16,6 @@ public interface IMesWorkOrderCutService extends IBaseMesService workOrderIds, String cutCode, String remark, String organizeCode, String userName); @ApiOperation("发布裁片工单") - void doReleaseCutWorkOrder(String cutWorkOrderNo, String organizeCode, String userName); + void doReleaseCutWorkOrder(List cutWorkOrderNos, String organizeCode, String userName); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/aspect/MesRepositoryAspect.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/aspect/MesRepositoryAspect.java index 8985545..4ae6482 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/aspect/MesRepositoryAspect.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/aspect/MesRepositoryAspect.java @@ -125,6 +125,6 @@ public class MesRepositoryAspect { private void updateBeanSync(BaseBean bean) { bean.setSystemSyncStatus(CommonEnumUtil.FALSE); - bean.setModifyDatetime(TimeTool.getNowTime(true)); + bean.setSystemSyncDatetime(""); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java index 5bc661a..95adaa1 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderCutController.java @@ -16,8 +16,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - +import java.util.Arrays; /** * 裁片工单 */ @@ -31,13 +30,13 @@ public class MesWorkOrderCutController extends BaseMesController workOrderIds, String cutCode, String remark) { + public ResultBean doGenerateCutWorkOrder(Long[] workOrderIds, String cutCode, String remark) { try { ValidatorBean.checkNotNull(workOrderIds, "工单不存在"); ValidatorBean.checkNotNull(cutCode, "裁片方案不存在"); - workOrderCutService.doGenerateCutWorkOrder(workOrderIds, cutCode, remark, AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName()); + workOrderCutService.doGenerateCutWorkOrder(Arrays.asList(workOrderIds), cutCode, remark, AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName()); return ResultBean.success("生成成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -49,12 +48,12 @@ public class MesWorkOrderCutController extends BaseMesController sumMesWorkOrderQtyToSap(String organizeCode) { - StringBuffer hql = new StringBuffer("select organize_code as organizeCode,part_no as partNo, date_format(plan_start_time, '%Y-%m-%d' ) as planStartTime, product_version as productVersion, " + - " sum(case when work_order_status = 40 then reported_qty else qty end ) as qty " + - " from mes_work_order where is_deleted=:isDeleted and is_valid = :isValid and organize_code = :organizeCode " + - " and work_order_type = :workOrderType and order_flag != :orderFlag and work_order_status in (20,30,40,50) and plan_start_time >= :today" + - " group by organize_code,part_no, date_format(plan_start_time, '%Y-%m-%d' ), product_version "); + StringBuffer hql = new StringBuffer("select workOrder.organize_code as organizeCode,workOrder.part_no as partNo, " + + " date_format(workOrder.plan_start_time, '%Y-%m-%d' ) as planStartTime, workOrder.product_version as productVersion, " + + " sum(case when workOrder.work_order_status = 40 then workOrder.reported_qty else workOrder.qty end ) as qty " + + " from mes_work_order as workOrder left join mes_part_sap as partSap on workOrder.part_no = partSap.part_no" + + " where workOrder.is_deleted=:isDeleted and workOrder.is_valid = :isValid and workOrder.organize_code = :organizeCode " + + " and partSap.is_deleted=:isDeleted and partSap.is_valid = :isValid and partSap.organize_code = :organizeCode " + + " and partSap.is_test_piece = :isTestPiece and workOrder.work_order_type = :workOrderType and workOrder.order_flag != :orderFlag " + + " and workOrder.work_order_status in (20,30,40,50) and workOrder.plan_start_time >= :today" + + " group by workOrder.organize_code,workOrder.part_no, date_format(workOrder.plan_start_time, '%Y-%m-%d' ), workOrder.product_version "); Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("isTestPiece", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("today", TimeTool.getToday()); query.setParameter("workOrderType", MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()); query.setParameter("orderFlag", MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java index e48673c..f6d52bd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsScrapJob.java @@ -85,7 +85,7 @@ public class MesQmsScrapJob extends BaseMesScheduleJob { for (MesPartInspection mesPartInspection : mesPartInspectionList) { mesPartInspection.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); +// ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); } partInspectionRepository.saveAll(mesPartInspectionList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java index 9ef53e6..6ebec7a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesQmsSuspiciousJob.java @@ -80,13 +80,13 @@ public class MesQmsSuspiciousJob extends BaseMesScheduleJob { // new SimpleDateFormat("yyyy-MM-dd").format(TimeTool.getDateBefore(new Date(), 1)) + " 00:00:00", // TimeTool.getToday() + " 00:00:00", "createDatetime", packBean, true); // 获取当前时间前1小时的时间 - LocalDateTime now = LocalDateTime.now(); - LocalDateTime oneHourAgo = now.minusHours(1); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String formattedNow = now.format(formatter); - String formattedOneHourAgo = oneHourAgo.format(formatter); +// LocalDateTime now = LocalDateTime.now(); +// LocalDateTime oneHourAgo = now.minusHours(1); +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// String formattedNow = now.format(formatter); +// String formattedOneHourAgo = oneHourAgo.format(formatter); +// DdlPreparedPack.timeBuilder(formattedOneHourAgo, formattedNow, "createDatetime", packBean, true); DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "qmsSync", packBean); - DdlPreparedPack.timeBuilder(formattedOneHourAgo, formattedNow, "createDatetime", packBean, true); List mesPartInspectionList = partInspectionRepository.findByHqlWhere(packBean); if (!CollectionUtils.isEmpty(mesPartInspectionList)) { @@ -113,8 +113,9 @@ public class MesQmsSuspiciousJob extends BaseMesScheduleJob { qmsSuspiciousService.doQmsSuspiciousByPartInspection(partInspectionList, organizeCode); for (MesPartInspection mesPartInspection : mesPartInspectionList) { - mesPartInspection.setQmsSync(1); - ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); + mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + //42959 QMS可疑品汇总job 会把电子化检验终检人和终检时间覆盖掉 +// ConvertBean.serviceModelUpdate(mesPartInspection, MesExtConstWords.JOB); } partInspectionRepository.saveAll(mesPartInspectionList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java index f21ff96..7eadfe3 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductionRecordServiceImpl.java @@ -155,7 +155,7 @@ public class MesProductionRecordServiceImpl extends BaseMesService byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean); + //List byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean); resultMap.put("",mesPullingOrder); resultMap.put("success", true); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java index 0972d2e..f325175 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderCutService.java @@ -73,8 +73,10 @@ public class MesWorkOrderCutService extends BaseMesService impl MesException.throwMesBusiException("工单信息不存在"); } + List workOrderIdDbList = workOrderList.stream().map(MesWorkOrder::getId).collect(Collectors.toList()); + for (Long workOrderId : workOrderIds) { - if (!workOrderList.contains(workOrderId)) { + if (!workOrderIdDbList.contains(workOrderId)) { MesException.throwMesBusiException("工单信息ID【%s】不存在", workOrderId); } } @@ -100,7 +102,7 @@ public class MesWorkOrderCutService extends BaseMesService impl partNoList.removeAll(fgPartNoList); - if (CollectionUtils.isEmpty(partNoList)) MesException.throwMesBusiException("物料【%s】未在裁片方案成品中维护", partNoList); + if (!CollectionUtils.isEmpty(partNoList)) MesException.throwMesBusiException("零件号【%s】未在裁片方案成品中维护", partNoList); Map workOrderUnCompleteMap = new HashMap<>(); List workOrderCutDetailtList = new ArrayList<>(); @@ -114,8 +116,8 @@ public class MesWorkOrderCutService extends BaseMesService impl MesWorkOrder workOrder = workOrders.get(0); - if (cutSchemeFg.getQty().compareTo(workOrder.getUnCompleteQty()) < 0) { - MesException.throwMesBusiException("零件号【%s】工单未完成数量不满足产成总数", cutSchemeFg.getPartNo()); + if (cutSchemeFg.getQty().compareTo(workOrder.getUnCompleteQty()) > 0) { + MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】", cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), cutSchemeFg.getQty()); } Double unCompleteQty = workOrder.getUnCompleteQty(); @@ -142,14 +144,16 @@ public class MesWorkOrderCutService extends BaseMesService impl workOrderCut.setCutName(cutScheme.getCutName()); workOrderCut.setWorkOrderStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == cutScheme.getIsAutoRelease() ? MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue() : MesExtEnumUtil.CUT_ORDER_STATUS.CREATE.getValue()); workOrderCut.setRemark(remark); - workOrderCut.setCutWorkOrderNo(doGererateSerialNo(cutScheme.getCutCode(), organizeCode, userName)); + workOrderCut.setCutWorkOrderNo(doGenerateSerialNo(cutScheme.getCutCode(), organizeCode, userName)); workOrderCut.setOrganizeCode(organizeCode); + workOrderCutDetailtList.forEach(o-> o.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo())); + List workOrderCutMaterialList = new ArrayList<>(); for (MesCutSchemeMaterial cutSchemeMaterial : cutSchemeMaterialList) { MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial(); BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID); - ConvertBean.serviceModelInitialize(workOrderCut, userName); + ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName); workOrderCutMaterial.setOrganizeCode(organizeCode); workOrderCutMaterial.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo()); workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE); @@ -169,26 +173,35 @@ public class MesWorkOrderCutService extends BaseMesService impl } @Override - public void doReleaseCutWorkOrder(String cutWorkOrderNo, String organizeCode, String userName) { + public void doReleaseCutWorkOrder(List cutWorkOrderNos, String organizeCode, String userName) { - if (StringUtils.isEmpty(cutWorkOrderNo)) MesException.throwMesBusiException("裁片工单为空"); + if (CollectionUtils.isEmpty(cutWorkOrderNos)) MesException.throwMesBusiException("裁片工单为空"); - DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, MesExtConstWords.CUT_WORK_ORDER_NO, packBean); - MesWorkOrderCut workOrderCutDb = workOrderCutRepository.getByProperty(packBean); + List workOrderCuts = new ArrayList<>(); + + for (String cutWorkOrderNo : cutWorkOrderNos) { - if (workOrderCutDb == null) MesException.throwMesBusiException("裁片工单不存在", cutWorkOrderNo); + if (StringUtils.isEmpty(cutWorkOrderNos)) MesException.throwMesBusiException("裁片工单为空"); - if (workOrderCutDb.getWorkOrderStatus() != MesExtEnumUtil.CUT_ORDER_STATUS.CREATE.getValue()) MesException.throwMesBusiException("裁片工单【%】状态不为【%s】,当前状态为【%s】", cutWorkOrderNo, MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue(), MesExtEnumUtil.CUT_ORDER_STATUS.valueOfDescription(workOrderCutDb.getWorkOrderStatus())); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, MesExtConstWords.CUT_WORK_ORDER_NO, packBean); + MesWorkOrderCut workOrderCutDb = workOrderCutRepository.getByProperty(packBean); - workOrderCutDb.setWorkOrderStatus(MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue()); + if (workOrderCutDb == null) MesException.throwMesBusiException("裁片工单不存在", cutWorkOrderNo); - ConvertBean.serviceModelUpdate(workOrderCutDb, userName); + if (workOrderCutDb.getWorkOrderStatus() != MesExtEnumUtil.CUT_ORDER_STATUS.CREATE.getValue()) MesException.throwMesBusiException("裁片工单【%】状态不为【%s】,当前状态为【%s】", cutWorkOrderNo, MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue(), MesExtEnumUtil.CUT_ORDER_STATUS.valueOfDescription(workOrderCutDb.getWorkOrderStatus())); + + } + + for (MesWorkOrderCut workOrderCut : workOrderCuts) { + workOrderCut.setWorkOrderStatus(MesExtEnumUtil.CUT_ORDER_STATUS.RELEASED.getValue()); + ConvertBean.serviceModelUpdate(workOrderCut, userName); + } - workOrderCutRepository.save(workOrderCutDb); + workOrderCutRepository.saveAll(workOrderCuts); } - private String doGererateSerialNo(String cutCode, String organizeCode, String userName) { + private String doGenerateSerialNo(String cutCode, String organizeCode, String userName) { return syncFuncService.syncSerialNo( new GenSerialNoModel(MesExtConstWords.CUT_WORK_ORDER_NO_FUL).dynamicRule(cutCode).year(TimeTool.pareDateToString(MesExtConstWords.DATE_FORMAT_YY, new Date())).organizeCode(organizeCode), userName, organizeCode, 1).getResultList().get(0).toString(); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 30d65f3..12d15d3 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -483,7 +483,7 @@ public class MesWorkOrderService extends BaseMesService implements } catch (ImppBusiException busExcep) { MesException.throwMesBusiException(busExcep.getErrorDetail()); } catch (Exception e) { - MesException.throwMesBusiException("计划日期格式异常"); + MesException.throwMesBusiException("计划日期格式异常,日期格式应为:%s",DateUtil.SHORT_FORMAT); } //查询班次信息 List mesShifts = mesShiftMap.get(item.getWorkCenterCode() + item.getShiftCode()); @@ -847,12 +847,7 @@ public class MesWorkOrderService extends BaseMesService implements //查询物料信息 MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode()); //查询产线信息 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), "workCenterCode", ddlPackBean); - MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); - if (Objects.isNull(mesWorkCenter)) { - MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode()); - } + MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getWorkCenterCode()); //获取生产版本 MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb); //物料+生产版本获取bom信息 @@ -864,25 +859,22 @@ public class MesWorkOrderService extends BaseMesService implements double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) { - //查询产线信息 - DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", packBean); - MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(packBean); // 以下则是超工单逻辑 // 如果产线中没有配置超工单,则直接阻断 - if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) { + if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesWorkCenter.getIsCheckOrderQty())) { MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); } // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 double rate = MathOperation.div((mesWorkOrderDb.getReportedQty() - mesWorkOrderDb.getQty()),mesWorkOrderDb.getQty()); - if (rate > MathOperation.div(workCenter.getOrderRate(),100)) { - MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate()); + if (rate > MathOperation.div(mesWorkCenter.getOrderRate(),100)) { + MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), mesWorkCenter.getOrderRate()); } mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) { mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else { - mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); + mesWorkOrderDb.setWorkOrderStatus(mesWorkOrder.getWorkOrderStatus()==MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()? + MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue():MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty()); } else { @@ -902,7 +894,8 @@ public class MesWorkOrderService extends BaseMesService implements String sn = getStringList(mesWorkOrder); //保存数据 List mesProductOffLineList = new ArrayList<>(); - String nowTime = TimeTool.getNowTime(true); + String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription(); + for (MesBom mesBom : mesBoms) { mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime)); } @@ -921,6 +914,8 @@ public class MesWorkOrderService extends BaseMesService implements if (mesWorkOrderNew.getNum() <= 0) { MesException.throwMesBusiException("工单报工数量不能为0,不允许报工"); } + //查询产线信息 + MesWorkCenter workCenter = getMesWorkCenter(mesWorkOrder.getOrganizeCode(),mesWorkOrder.getWorkCenterCode()); //报工类型 //报工 if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) { @@ -929,10 +924,6 @@ public class MesWorkOrderService extends BaseMesService implements double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) { - //查询产线信息 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean); - MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); // 以下则是超工单逻辑 // 如果产线中没有配置超工单,则直接阻断 if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) { @@ -1285,6 +1276,15 @@ public class MesWorkOrderService extends BaseMesService implements return newMesProductOffLine; } + + private MesWorkCenter getMesWorkCenter(String organizeCode,String workCenterCode) { + MesWorkCenter mesWorkCenter = workCenterService.getWorkCenterDb(organizeCode, workCenterCode); + if (Objects.isNull(mesWorkCenter)) { + MesException.throwMesBusiException("产线【%s】不存在", workCenterCode); + } + return mesWorkCenter; + } + @Override public List sumMesWorkOrderQtyToSap(String organizeCode) { //查询汇总工单数量 diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index da4b873..a67a8d5 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -139,6 +139,8 @@ public class MesSpotCheckOrderService extends BaseMesService BeanUtils.copyProperties(equipmentSpotCheck, bean, "id"); bean.setSpotCheckOrderNo(orderNo); + bean.setSystemSyncStatus(CommonEnumUtil.FALSE); + bean.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName()); bean = baseRDao.insert(bean); @@ -155,6 +157,8 @@ public class MesSpotCheckOrderService extends BaseMesService result.setSpotCheckItemId(k.getId()); result.setTaskItemName(k.getSpotCheckItemName()); result.setSpotCheckStandardValue(k.getStandardValue()); + result.setSystemSyncStatus(CommonEnumUtil.FALSE); + result.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(result, AuthUtil.getSessionUser().getUserName()); // ConvertBean.serviceModelInitialize(result, "LML"); spotCheckOrderResults.add(result); @@ -168,6 +172,8 @@ public class MesSpotCheckOrderService extends BaseMesService MesSpotCheckOrderPart spotCheckOrderPart = new MesSpotCheckOrderPart(); spotCheckOrderPart.setSpotCheckOrderId(finalBean.getId()); BeanUtils.copyProperties(k, spotCheckOrderPart, "id"); + spotCheckOrderPart.setSystemSyncStatus(CommonEnumUtil.FALSE); + spotCheckOrderPart.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(spotCheckOrderPart, AuthUtil.getSessionUser().getUserName()); // ConvertBean.serviceModelInitialize(spotCheckOrderPart, "LML"); spotCheckOrderPartList.add(spotCheckOrderPart); @@ -209,6 +215,8 @@ public class MesSpotCheckOrderService extends BaseMesService //软删点检单明细 oldOrderResultList.forEach(k -> { + k.setSystemSyncStatus(CommonEnumUtil.FALSE); + k.setSystemSyncDatetime(""); k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); }); @@ -222,6 +230,8 @@ public class MesSpotCheckOrderService extends BaseMesService //软删点检单零件号及条码 oldOrderPartList.forEach(k -> { k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + k.setSystemSyncStatus(CommonEnumUtil.FALSE); + k.setSystemSyncDatetime(""); ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); }); spotCheckOrderPartRepository.saveAll(oldOrderPartList); @@ -276,6 +286,8 @@ public class MesSpotCheckOrderService extends BaseMesService MesSpotCheckOrderResult result = new MesSpotCheckOrderResult(); BeanUtils.copyProperties(k, result, "id"); result.setPid(finalBean.getId()); + result.setSystemSyncStatus(CommonEnumUtil.FALSE); + result.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(result, AuthUtil.getSessionUser().getUserName()); spotCheckOrderResults.add(result); }); @@ -287,6 +299,8 @@ public class MesSpotCheckOrderService extends BaseMesService MesSpotCheckOrderPart spotCheckOrderPart = new MesSpotCheckOrderPart(); spotCheckOrderPart.setSpotCheckOrderId(finalBean.getId()); BeanUtils.copyProperties(k, spotCheckOrderPart, "id"); + spotCheckOrderPart.setSystemSyncStatus(CommonEnumUtil.FALSE); + spotCheckOrderPart.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(spotCheckOrderPart, AuthUtil.getSessionUser().getUserName()); spotCheckOrderPartList.add(spotCheckOrderPart); }); @@ -295,6 +309,8 @@ public class MesSpotCheckOrderService extends BaseMesService spotCheckOrderResultService.insertBatch(spotCheckOrderResults); + bean.setSystemSyncStatus(CommonEnumUtil.FALSE); + bean.setSystemSyncDatetime(""); ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName()); baseRDao.update(bean); return originBean; @@ -323,6 +339,8 @@ public class MesSpotCheckOrderService extends BaseMesService List detailList = spotCheckOrderResultRepository.findByHqlWhere(packBean); detailList.forEach(k -> { k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + k.setSystemSyncStatus(CommonEnumUtil.FALSE); + k.setSystemSyncDatetime(""); ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); }); spotCheckOrderResultRepository.saveAll(detailList); @@ -336,6 +354,8 @@ public class MesSpotCheckOrderService extends BaseMesService if (CollectionUtils.isEmpty(oldOrderPartList)) { oldOrderPartList.forEach(k -> { k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + k.setSystemSyncStatus(CommonEnumUtil.FALSE); + k.setSystemSyncDatetime(""); ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName()); }); spotCheckOrderPartRepository.saveAll(oldOrderPartList); @@ -439,12 +459,16 @@ public class MesSpotCheckOrderService extends BaseMesService mesSpotCheckOrder.setStatus(MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.CREATE.getValue()); mesSpotCheckOrder.setSpotCheckId(spotCheck.getId()); mesSpotCheckOrder.setSpotCheckOrderNo(orderNo); + mesSpotCheckOrder.setSystemSyncStatus(CommonEnumUtil.FALSE); + mesSpotCheckOrder.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(mesSpotCheckOrder, userName); mesSpotCheckOrder = baseRDao.insert(mesSpotCheckOrder); //保存单据明细 saveMesSpotCheckOrderDetails(userName, detailMap, spotCheck.getId(), mesSpotCheckOrder); //保存单据零件 saveMesEquipmentSpotCheckPartList(userName, checkPartListMap, spotCheck.getId(), mesSpotCheckOrder.getId()); + spotCheck.setSystemSyncStatus(CommonEnumUtil.FALSE); + spotCheck.setSystemSyncDatetime(""); ConvertBean.serviceModelUpdate(spotCheck, userName); baseRDao.update(spotCheck); count++; @@ -523,6 +547,7 @@ public class MesSpotCheckOrderService extends BaseMesService spotCheckOrderPart.setSpotCheckOrderId(spotCheckOrderId); BeanUtils.copyProperties(k, spotCheckOrderPart, "id"); spotCheckOrderPart.setSystemSyncStatus(CommonEnumUtil.FALSE); + spotCheckOrderPart.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(spotCheckOrderPart, userName); spotCheckOrderPartList.add(spotCheckOrderPart); }); @@ -543,6 +568,7 @@ public class MesSpotCheckOrderService extends BaseMesService result.setTaskItemName(k.getSpotCheckItemName()); result.setSpotCheckStandardValue(k.getStandardValue()); result.setSystemSyncStatus(CommonEnumUtil.FALSE); + result.setSystemSyncDatetime(""); ConvertBean.serviceModelInitialize(result, userName); spotCheckOrderResults.add(result); }); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java index 984eda0..6009bae 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesEquipmentLogDetailService.java @@ -16,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.StringJoiner; @Service @@ -29,9 +30,17 @@ public class MesEquipmentLogDetailService extends BaseMesService