diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java index 77f81ad..474da0e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java @@ -348,9 +348,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //查询ptr总成 DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",detailPartPtr); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"partNo",detailPartPtr); - int detailPtrPartCount = partPtrDetailRao.findByHqlWhereCount(detailPartPtr); - if (detailPtrPartCount > 0){ + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",detailPartPtr); + List ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr); + if (!ptrDetailList.isEmpty()){ //根据mesPartPtr的目标零件号,找到零件信息 String destPartNo = mesPartPtr.getDestPartNo(); String srcPartNo = mesPartPtr.getSrcPartNo(); @@ -358,6 +358,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //更新物料清单 MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo); if (orderPart != null) { + MesPartPtrDetail mesPartPtrDetail = ptrDetailList.get(0); orderPart.setPartNo(mesPartSap.getPartNo()); orderPart.setPartName(mesPartSap.getPartName()); orderPart.setShippingPartNo(mesPartSap.getPartNo()); @@ -365,20 +366,16 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { if (!isModifyPOrder){ isModifyPOrder = true; } + mesWorkOrder.setRemark(mesPartPtr.getRemark()); + String ptrInfoStr = "INFO"+mesPartPtr.getId()+"|PART"+mesPartPtrDetail.getId(); + mesWorkOrder.setPtrInfo(ptrInfoStr); //更新mes_part_ptr的实际数量 + 1 mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1); ConvertBean.saveOrUpdate(mesPartPtr,"JOB"); partPtrRao.update(mesPartPtr); - DdlPackBean partPtrDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",partPtrDetailPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",partPtrDetailPackBean); - List partPtrDetailList = partPtrDetailRao.findByHqlWhere(partPtrDetailPackBean); - if (!partPtrDetailList.isEmpty()){ - MesPartPtrDetail mesPartPtrDetail = partPtrDetailList.get(0); - mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1); - ConvertBean.saveOrUpdate(mesPartPtrDetail,"JOB"); - partPtrDetailRao.update(mesPartPtrDetail); - } + mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1); + ConvertBean.saveOrUpdate(mesPartPtrDetail,"JOB"); + partPtrDetailRao.update(mesPartPtrDetail); //更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么 } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesEarlyWarningServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesEarlyWarningServiceImpl.java index b412ad8..752372d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesEarlyWarningServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesEarlyWarningServiceImpl.java @@ -27,6 +27,9 @@ import javax.persistence.Query; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -120,7 +123,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { List gmGepicsList = getlastDataList(1, jacInfoPoint, organizeCode, 20); //2.获取最新的一条报文信息,取gmGepicsList的第一条 MesCimGmGepics lastCimGmGepics = gmGepicsList.get(0); - //3.获取最新的一条报文信息 + //3.获取最新客户上线的报文 List gmGepicsListOne = getlastDataList(custOnlineInfo, jacInfoPoint, organizeCode, 1); MesCimGmGepics lastOne = !gmGepicsListOne.isEmpty() ?gmGepicsListOne.get(0) : null; if (lastOne==null){ @@ -132,10 +135,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { MesWorkOrder lastWorkOrder = getLastWorkOrder(workCenterCode, workCellCode, organizeCode); //5.获取最新下线工单 MesWorkOrder lastOfflineOrder = getLastOfflineOrder(workCenterCode, organizeCode); -// if (lastWorkOrder == null){ -// //todo 暂时 -// lastWorkOrder = lastOfflineOrder; -// } + //6.查询报警产量 & 获取开班起始时间 Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -162,7 +162,8 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { int productCount = kanBan.getProductCount(); int productDay = kanBan.getProductDay(); calendar1.add(Calendar.DATE,-productDay); - List vehicleNoList = getCLWarning(sdf1.format(calendar1.getTime()), productCount,organizeCode); +// List vehicleNoList = getCLWarning(sdf1.format(calendar1.getTime()), productCount,organizeCode); + List vehicleNoList = new ArrayList<>(); //9.汇总数据 return doGetSGMData(kanBan, gmGepicsList, lastCimGmGepics, lastOne, lastWorkOrder, lastOfflineOrder, workCounts, vehicleNoList); } @@ -181,7 +182,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { /** * 获取最新20条数据 - * @param type 固定 1 + * @param type * @param gaRule 信息点 * @return */ @@ -232,18 +233,18 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { // DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",queueOrderPackBean); DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",queueOrderPackBean); DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",queueOrderPackBean); - DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue(),"status",queueOrderPackBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue(),"status",queueOrderPackBean); DdlPreparedPack.getNotInPack(orderFlagList,"orderFlag",queueOrderPackBean); DdlPreparedPack.getStringNotBlanklPack("custOrderNo",queueOrderPackBean); - DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), queueOrderPackBean); + DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), queueOrderPackBean); //先查对列表,找到对应产线工位的工单 - List queueOrderList = queueOrderRao.findByHqlTopWhere(queueOrderPackBean,20); + List queueOrderList = queueOrderRao.findByHqlTopWhere(queueOrderPackBean,1); //过滤掉关闭和拆解的工单 List workOrderNoQueueList = queueOrderList.stream().map(MesQueueOrder::getWorkOrderNo).distinct().collect(Collectors.toList()); DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(workOrderNoQueueList,"workOrderNo",orderPackBean); - DdlPreparedPack.getNotInPackList(orderStatusList,"workOrderStatus",orderPackBean); - DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), orderPackBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),"workOrderStatus",orderPackBean); + DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), orderPackBean); List workOrderList = workOrderRao.findByHqlTopWhere(orderPackBean, 1); return !workOrderList.isEmpty() ? workOrderList.get(0) : null; } @@ -263,6 +264,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.SORT.getValue(),"workOrderType",workOrderPackBean); DdlPreparedPack.getNotInPack(sortFlagList,"orderFlag",workOrderPackBean); DdlPreparedPack.getStringNotBlanklPack("custOrderNo",workOrderPackBean); + DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), workOrderPackBean); List mesWorkOrders = workOrderRao.findByHqlTopWhere(workOrderPackBean, 1); return mesWorkOrders.get(0); } @@ -318,7 +320,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { * @param workCount 工单数量 * @param vehicleNoList 报警 */ - private MesKanBanShowModel doGetSGMData(MesEarlyWarningKanBan kanBan,List infoV107List,MesCimGmGepics infoDD, MesCimGmGepics infoKH, MesWorkOrder workOrder,MesWorkOrder workOrderLast,int workCount,List vehicleNoList) { + private MesKanBanShowModel doGetSGMData(MesEarlyWarningKanBan kanBan,List infoV107List,MesCimGmGepics infoDD, MesCimGmGepics infoKH, MesWorkOrder workOrder,MesWorkOrder workOrderLast,int workCount,List vehicleNoList) throws ParseException { MesKanBanShowModel mesKanBanShowModel = new MesKanBanShowModel(); //是否截图 boolean shortCut = false; @@ -342,18 +344,26 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService { } mesKanBanShowModel.setErrorMsg(errorMsg.toString()); -// if (infoDD == null){ -// return mesKanBanShowModel; -// } -// if (infoKH == null){ -// return mesKanBanShowModel; -// } -// if (workOrder == null){ -// return mesKanBanShowModel; -// } -// if (workOrderLast == null){ -// return mesKanBanShowModel; -// } + if (infoDD == null){ + return mesKanBanShowModel; + } + if (infoKH == null){ + return mesKanBanShowModel; + } + if (workOrder == null){ + return mesKanBanShowModel; + } + if (workOrderLast == null){ + return mesKanBanShowModel; + } + //据上次获取v107信息的时间 + String matchTime = infoDD.getCreateDatetime(); + + LocalDateTime now = LocalDateTime.now(); + LocalDateTime match = LocalDateTime.parse(matchTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + long minutes = Duration.between(match,now).toMinutes(); + mesKanBanShowModel.setMinutes(minutes); + //最新v107信息 String v107Msg = infoDD.getCsnNo() + "@" + infoDD.getDate() + " " + infoDD.getTime(); mesKanBanShowModel.setV107Msg(v107Msg);