|
|
@ -27,6 +27,9 @@ import javax.persistence.Query;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
@ -120,7 +123,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
List<MesCimGmGepics> gmGepicsList = getlastDataList(1, jacInfoPoint, organizeCode, 20);
|
|
|
|
List<MesCimGmGepics> gmGepicsList = getlastDataList(1, jacInfoPoint, organizeCode, 20);
|
|
|
|
//2.获取最新的一条报文信息,取gmGepicsList的第一条
|
|
|
|
//2.获取最新的一条报文信息,取gmGepicsList的第一条
|
|
|
|
MesCimGmGepics lastCimGmGepics = gmGepicsList.get(0);
|
|
|
|
MesCimGmGepics lastCimGmGepics = gmGepicsList.get(0);
|
|
|
|
//3.获取最新的一条报文信息
|
|
|
|
//3.获取最新客户上线的报文
|
|
|
|
List<MesCimGmGepics> gmGepicsListOne = getlastDataList(custOnlineInfo, jacInfoPoint, organizeCode, 1);
|
|
|
|
List<MesCimGmGepics> gmGepicsListOne = getlastDataList(custOnlineInfo, jacInfoPoint, organizeCode, 1);
|
|
|
|
MesCimGmGepics lastOne = !gmGepicsListOne.isEmpty() ?gmGepicsListOne.get(0) : null;
|
|
|
|
MesCimGmGepics lastOne = !gmGepicsListOne.isEmpty() ?gmGepicsListOne.get(0) : null;
|
|
|
|
if (lastOne==null){
|
|
|
|
if (lastOne==null){
|
|
|
@ -132,10 +135,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
MesWorkOrder lastWorkOrder = getLastWorkOrder(workCenterCode, workCellCode, organizeCode);
|
|
|
|
MesWorkOrder lastWorkOrder = getLastWorkOrder(workCenterCode, workCellCode, organizeCode);
|
|
|
|
//5.获取最新下线工单
|
|
|
|
//5.获取最新下线工单
|
|
|
|
MesWorkOrder lastOfflineOrder = getLastOfflineOrder(workCenterCode, organizeCode);
|
|
|
|
MesWorkOrder lastOfflineOrder = getLastOfflineOrder(workCenterCode, organizeCode);
|
|
|
|
// if (lastWorkOrder == null){
|
|
|
|
|
|
|
|
// //todo 暂时
|
|
|
|
|
|
|
|
// lastWorkOrder = lastOfflineOrder;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//6.查询报警产量 & 获取开班起始时间
|
|
|
|
//6.查询报警产量 & 获取开班起始时间
|
|
|
|
Date now = new Date();
|
|
|
|
Date now = new Date();
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
@ -162,7 +162,8 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
int productCount = kanBan.getProductCount();
|
|
|
|
int productCount = kanBan.getProductCount();
|
|
|
|
int productDay = kanBan.getProductDay();
|
|
|
|
int productDay = kanBan.getProductDay();
|
|
|
|
calendar1.add(Calendar.DATE,-productDay);
|
|
|
|
calendar1.add(Calendar.DATE,-productDay);
|
|
|
|
List<String> vehicleNoList = getCLWarning(sdf1.format(calendar1.getTime()), productCount,organizeCode);
|
|
|
|
// List<String> vehicleNoList = getCLWarning(sdf1.format(calendar1.getTime()), productCount,organizeCode);
|
|
|
|
|
|
|
|
List<String> vehicleNoList = new ArrayList<>();
|
|
|
|
//9.汇总数据
|
|
|
|
//9.汇总数据
|
|
|
|
return doGetSGMData(kanBan, gmGepicsList, lastCimGmGepics, lastOne, lastWorkOrder, lastOfflineOrder, workCounts, vehicleNoList);
|
|
|
|
return doGetSGMData(kanBan, gmGepicsList, lastCimGmGepics, lastOne, lastWorkOrder, lastOfflineOrder, workCounts, vehicleNoList);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -181,7 +182,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取最新20条数据
|
|
|
|
* 获取最新20条数据
|
|
|
|
* @param type 固定 1
|
|
|
|
* @param type
|
|
|
|
* @param gaRule 信息点
|
|
|
|
* @param gaRule 信息点
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -232,18 +233,18 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
// DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",queueOrderPackBean);
|
|
|
|
// DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",queueOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",queueOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",queueOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",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.getNotInPack(orderFlagList,"orderFlag",queueOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringNotBlanklPack("custOrderNo",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<MesQueueOrder> queueOrderList = queueOrderRao.findByHqlTopWhere(queueOrderPackBean,20);
|
|
|
|
List<MesQueueOrder> queueOrderList = queueOrderRao.findByHqlTopWhere(queueOrderPackBean,1);
|
|
|
|
//过滤掉关闭和拆解的工单
|
|
|
|
//过滤掉关闭和拆解的工单
|
|
|
|
List<String> workOrderNoQueueList = queueOrderList.stream().map(MesQueueOrder::getWorkOrderNo).distinct().collect(Collectors.toList());
|
|
|
|
List<String> workOrderNoQueueList = queueOrderList.stream().map(MesQueueOrder::getWorkOrderNo).distinct().collect(Collectors.toList());
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPreparedPack.getInPackList(workOrderNoQueueList,"workOrderNo",orderPackBean);
|
|
|
|
DdlPreparedPack.getInPackList(workOrderNoQueueList,"workOrderNo",orderPackBean);
|
|
|
|
DdlPreparedPack.getNotInPackList(orderStatusList,"workOrderStatus",orderPackBean);
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),"workOrderStatus",orderPackBean);
|
|
|
|
DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), orderPackBean);
|
|
|
|
DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), orderPackBean);
|
|
|
|
List<MesWorkOrder> workOrderList = workOrderRao.findByHqlTopWhere(orderPackBean, 1);
|
|
|
|
List<MesWorkOrder> workOrderList = workOrderRao.findByHqlTopWhere(orderPackBean, 1);
|
|
|
|
return !workOrderList.isEmpty() ? workOrderList.get(0) : null;
|
|
|
|
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.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.SORT.getValue(),"workOrderType",workOrderPackBean);
|
|
|
|
DdlPreparedPack.getNotInPack(sortFlagList,"orderFlag",workOrderPackBean);
|
|
|
|
DdlPreparedPack.getNotInPack(sortFlagList,"orderFlag",workOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringNotBlanklPack("custOrderNo",workOrderPackBean);
|
|
|
|
DdlPreparedPack.getStringNotBlanklPack("custOrderNo",workOrderPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getOrderBy("productSeq",CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), workOrderPackBean);
|
|
|
|
List<MesWorkOrder> mesWorkOrders = workOrderRao.findByHqlTopWhere(workOrderPackBean, 1);
|
|
|
|
List<MesWorkOrder> mesWorkOrders = workOrderRao.findByHqlTopWhere(workOrderPackBean, 1);
|
|
|
|
return mesWorkOrders.get(0);
|
|
|
|
return mesWorkOrders.get(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -318,7 +320,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
* @param workCount 工单数量
|
|
|
|
* @param workCount 工单数量
|
|
|
|
* @param vehicleNoList 报警
|
|
|
|
* @param vehicleNoList 报警
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private MesKanBanShowModel doGetSGMData(MesEarlyWarningKanBan kanBan,List<MesCimGmGepics> infoV107List,MesCimGmGepics infoDD, MesCimGmGepics infoKH, MesWorkOrder workOrder,MesWorkOrder workOrderLast,int workCount,List<String> vehicleNoList) {
|
|
|
|
private MesKanBanShowModel doGetSGMData(MesEarlyWarningKanBan kanBan,List<MesCimGmGepics> infoV107List,MesCimGmGepics infoDD, MesCimGmGepics infoKH, MesWorkOrder workOrder,MesWorkOrder workOrderLast,int workCount,List<String> vehicleNoList) throws ParseException {
|
|
|
|
MesKanBanShowModel mesKanBanShowModel = new MesKanBanShowModel();
|
|
|
|
MesKanBanShowModel mesKanBanShowModel = new MesKanBanShowModel();
|
|
|
|
//是否截图
|
|
|
|
//是否截图
|
|
|
|
boolean shortCut = false;
|
|
|
|
boolean shortCut = false;
|
|
|
@ -342,18 +344,26 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mesKanBanShowModel.setErrorMsg(errorMsg.toString());
|
|
|
|
mesKanBanShowModel.setErrorMsg(errorMsg.toString());
|
|
|
|
|
|
|
|
|
|
|
|
// if (infoDD == null){
|
|
|
|
if (infoDD == null){
|
|
|
|
// return mesKanBanShowModel;
|
|
|
|
return mesKanBanShowModel;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// if (infoKH == null){
|
|
|
|
if (infoKH == null){
|
|
|
|
// return mesKanBanShowModel;
|
|
|
|
return mesKanBanShowModel;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// if (workOrder == null){
|
|
|
|
if (workOrder == null){
|
|
|
|
// return mesKanBanShowModel;
|
|
|
|
return mesKanBanShowModel;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// if (workOrderLast == null){
|
|
|
|
if (workOrderLast == null){
|
|
|
|
// return mesKanBanShowModel;
|
|
|
|
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信息
|
|
|
|
//最新v107信息
|
|
|
|
String v107Msg = infoDD.getCsnNo() + "@" + infoDD.getDate() + " " + infoDD.getTime();
|
|
|
|
String v107Msg = infoDD.getCsnNo() + "@" + infoDD.getDate() + " " + infoDD.getTime();
|
|
|
|
mesKanBanShowModel.setV107Msg(v107Msg);
|
|
|
|
mesKanBanShowModel.setV107Msg(v107Msg);
|
|
|
|