线末大屏

tags/yfai-mes-ext-v2.3
臧学普 7 months ago
parent 6a1779c6f0
commit c7145fa51b

@ -45,7 +45,7 @@ public interface IMesEarlyWarningService {
* *
* @param id * @param id
*/ */
MesKanBanShowModel getData(Long id, String organizeCode) throws ParseException; MesKanBanShowModel doGetData(Long id, String organizeCode) throws ParseException;
/** /**
* *

@ -102,7 +102,7 @@ public class MesEarlyWarningKanBanController {
public ResultBean getData(@PathVariable Long id, @PathVariable String organizeCode) { public ResultBean getData(@PathVariable Long id, @PathVariable String organizeCode) {
MesKanBanShowModel data = null; MesKanBanShowModel data = null;
try { try {
data = mesEarlyWarningService.getData(id, organizeCode); data = mesEarlyWarningService.doGetData(id, organizeCode);
} catch (Exception e) { } catch (Exception e) {
ResultBean.fail(e.getMessage()); ResultBean.fail(e.getMessage());
} }

@ -100,7 +100,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
} }
@Override @Override
public MesKanBanShowModel getData(Long id, String organizeCode) throws ParseException { public MesKanBanShowModel doGetData(Long id, String organizeCode) throws ParseException {
DdlPackBean earlyWarningKanBanPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean earlyWarningKanBanPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(id, "id", earlyWarningKanBanPackBean); DdlPreparedPack.getNumEqualPack(id, "id", earlyWarningKanBanPackBean);
List<MesEarlyWarningKanBan> list = earlyWarningKanBanRao.findByHqlTopWhere(earlyWarningKanBanPackBean, 1); List<MesEarlyWarningKanBan> list = earlyWarningKanBanRao.findByHqlTopWhere(earlyWarningKanBanPackBean, 1);
@ -132,7 +132,6 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
lastWorkOrder = lastOfflineOrder; lastWorkOrder = lastOfflineOrder;
} }
//6.查询报警产量 & 获取开班起始时间 //6.查询报警产量 & 获取开班起始时间
String dStart;
Date now = new Date(); Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -205,12 +204,13 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
//工单 productSeq = work_order表中最大的排序信息 【work_order 的id in (装配件清单表中 工位等于@workCellCode 且 status = 1 已经装配) 产线=order_type = 排序单sort_flag 不为 x ,E;status not in 入参1入参2cust_order_code不为空】 //工单 productSeq = work_order表中最大的排序信息 【work_order 的id in (装配件清单表中 工位等于@workCellCode 且 status = 1 已经装配) 产线=order_type = 排序单sort_flag 不为 x ,E;status not in 入参1入参2cust_order_code不为空】
// workOrderAssembly // workOrderAssembly
DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode); // DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",assemblyPackBean); // DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",assemblyPackBean);
DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",assemblyPackBean); // DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",assemblyPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(),"assemblyStatus",assemblyPackBean); // DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(),"assemblyStatus",assemblyPackBean);
List<MesWorkOrderAssembly> mesWorkOrderAssemblyList = workOrderAssemblyRao.findByHqlWhere(assemblyPackBean); // List<MesWorkOrderAssembly> mesWorkOrderAssemblyList = workOrderAssemblyRao.findByHqlWhere(assemblyPackBean);
List<String> workOrderNoList = mesWorkOrderAssemblyList.stream().map(MesWorkOrderAssembly::getWorkOrderNo).distinct().collect(Collectors.toList()); // //todo 有内存溢出风险 调试一下,写hql按照分组查询出workOrderNoList
// List<String> workOrderNoList = mesWorkOrderAssemblyList.stream().map(MesWorkOrderAssembly::getWorkOrderNo).distinct().collect(Collectors.toList());
List<Integer> orderStatusList = new ArrayList<>(); List<Integer> orderStatusList = new ArrayList<>();
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()); orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue());
@ -219,14 +219,15 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
orderFlagList.add(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()); orderFlagList.add(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue());
orderFlagList.add(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.X.getValue()); orderFlagList.add(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.X.getValue());
DdlPackBean queueOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean queueOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
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.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.DESC.getValue(), queueOrderPackBean);
//先查对列表,找到对应产线工位的工单 //先查对列表,找到对应产线工位的工单
List<MesQueueOrder> queueOrderList = queueOrderRao.findByHqlWhere(queueOrderPackBean); List<MesQueueOrder> queueOrderList = queueOrderRao.findByHqlTopWhere(queueOrderPackBean,20);
//过滤掉关闭和拆解的工单 //过滤掉关闭和拆解的工单
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);
@ -264,7 +265,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",workOrderPackBean); DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",workOrderPackBean);
DdlPreparedPack.getInPackList(orderStatusList,"workOrderStatus",workOrderPackBean); DdlPreparedPack.getInPackList(orderStatusList,"workOrderStatus",workOrderPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.SORT.getValue(),"workOrderType",workOrderPackBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.SORT.getValue(),"workOrderType",workOrderPackBean);
DdlPreparedPack.getStringBiggerPack(realEndTime,"endTime",workOrderPackBean); DdlPreparedPack.getStringBiggerPack(realEndTime,"offlineTime",workOrderPackBean);
DdlPreparedPack.getStringNoEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.X.getValue(),"orderFlag",workOrderPackBean); DdlPreparedPack.getStringNoEqualPack(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.X.getValue(),"orderFlag",workOrderPackBean);
return workOrderRao.findByHqlWhereCount(workOrderPackBean); return workOrderRao.findByHqlWhereCount(workOrderPackBean);
@ -273,8 +274,10 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
//报警产量 //报警产量
private List<String> getCLWarning(String date, int qty,String organizeCode) { private List<String> getCLWarning(String date, int qty,String organizeCode) {
List<Integer> orderStatusList = new ArrayList<>(); List<Integer> orderStatusList = new ArrayList<>();
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()); orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue());
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.SHIPPING.getValue());
StringBuilder hql = new StringBuilder(); StringBuilder hql = new StringBuilder();
hql.append(" select carModelCode from MesWorkOrder"); hql.append(" select carModelCode from MesWorkOrder");
@ -312,18 +315,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if (infoV107List.isEmpty()){ if (infoV107List.isEmpty()){
return mesKanBanShowModel; return mesKanBanShowModel;
} }
StringBuilder errorMsg = new StringBuilder();
for (int i = 0; i < infoV107List.size()-1; i++) { for (int i = 0; i < infoV107List.size()-1; i++) {
int preCsnNo = Integer.parseInt(infoV107List.get(i+1).getCsnNo().substring(3,10)); int preCsnNo = Integer.parseInt(infoV107List.get(i+1).getCsnNo().substring(3,10));
int curCsnNo = Integer.parseInt(infoV107List.get(i).getCsnNo().substring(3,10)); int curCsnNo = Integer.parseInt(infoV107List.get(i).getCsnNo().substring(3,10));
if (curCsnNo != preCsnNo+1){ if (curCsnNo != preCsnNo+1){
//需要保留截图 //需要保留截图
//需要发声音 //需要发声音
mesKanBanShowModel.setVoice("跳号的声音");
//需要发送记录信息 当前csnNo进行了跳号 //需要发送记录信息 当前csnNo进行了跳号
mesKanBanShowModel.setErrorMsg(String.format("当前CsnNo:%d进行了跳号",curCsnNo)); errorMsg.append(String.format("当前CsnNo:%d进行了跳号;\n",curCsnNo));
break;
} }
} }
if (errorMsg.length()>0){
shortCut = true;
mesKanBanShowModel.setVoice("跳号的声音");
}
mesKanBanShowModel.setErrorMsg(errorMsg.toString());
// if (infoDD == null){ // if (infoDD == null){
// return mesKanBanShowModel; // return mesKanBanShowModel;
// } // }
@ -337,22 +345,28 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
// return mesKanBanShowModel; // return mesKanBanShowModel;
// } // }
//最新v107信息 //最新v107信息
String v107Msg = infoDD.getCsnNo() + " @ " + infoDD.getDate() + " " + infoDD.getTime(); String v107Msg = infoDD.getCsnNo() + "@" + infoDD.getDate() + " " + infoDD.getTime();
mesKanBanShowModel.setV107Msg(v107Msg); mesKanBanShowModel.setV107Msg(v107Msg);
//最新客户上线信息 //最新客户上线信息
String infoKHCsnNo = infoKH.getCsnNo() + " @ " + infoKH.getDate() + " " + infoKH.getTime(); String infoKHCsnNo = infoKH.getCsnNo() + "@" + infoKH.getDate() + " " + infoKH.getTime();
mesKanBanShowModel.setInfoKHCsnNo(infoKHCsnNo); mesKanBanShowModel.setInfoKHCsnNo(infoKHCsnNo);
//生产线 //生产线
String workOrderCenter = kanBan.getWorkCenterName() +" " + kanBan.getWorkCenterDescription(); String workOrderCenter = kanBan.getWorkCenterName() +" " + kanBan.getWorkCenterDescription();
mesKanBanShowModel.setWorkOrderCenter(workOrderCenter); mesKanBanShowModel.setWorkOrderCenter(workOrderCenter);
//供货缓冲 >= //供货缓冲 >=
Long supplyRedBuffer = kanBan.getSupplyRedBuffer(); Long supplyRedBuffer = kanBan.getSupplyRedBuffer();
Long supplyYellowBuffer = kanBan.getSupplyYellowBuffer();
mesKanBanShowModel.setSupplyRedBuffer(supplyRedBuffer); mesKanBanShowModel.setSupplyRedBuffer(supplyRedBuffer);
//供货缓冲实际 //供货缓冲实际
Long realSupplyBuffer = Long.parseLong(infoDD.getCsnNo().substring(3,10)) - Long.parseLong(infoKH.getCsnNo().substring(3,10)) - kanBan.getOnlineAdjustNum(); Long realSupplyBuffer = Long.parseLong(infoDD.getCsnNo().substring(3,10)) - Long.parseLong(infoKH.getCsnNo().substring(3,10)) - kanBan.getOnlineAdjustNum();
mesKanBanShowModel.setRealSupplyBuffer(realSupplyBuffer); mesKanBanShowModel.setRealSupplyBuffer(realSupplyBuffer);
//成品缓冲文字颜色 if (realSupplyBuffer < supplyRedBuffer){
//private String realSupplyBufferColor; mesKanBanShowModel.setRealSupplyBufferColor("RED");
mesKanBanShowModel.setSupplyRedBuffer(supplyRedBuffer);
}else if (realSupplyBuffer < supplyYellowBuffer){
mesKanBanShowModel.setRealSupplyBufferColor("YELLOW");
mesKanBanShowModel.setSupplyRedBuffer(supplyYellowBuffer);
}
//线头积单 //线头积单
Long summaryWorkOrderRedCount = kanBan.getSummaryWorkOrderRedCount(); Long summaryWorkOrderRedCount = kanBan.getSummaryWorkOrderRedCount();
mesKanBanShowModel.setSummaryWorkOrderRedCount(summaryWorkOrderRedCount); mesKanBanShowModel.setSummaryWorkOrderRedCount(summaryWorkOrderRedCount);
@ -365,6 +379,13 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
summaryRealSupplyRealCount = Long.parseLong(infoDD.getCsnNo().substring(infoDD.getCsnNo().length() - 5))- Long.parseLong(workOrder.getCustOrderNo().substring(workOrderLast.getCustOrderNo().length() - 7)) - kanBan.getOnlineAdjustNum(); summaryRealSupplyRealCount = Long.parseLong(infoDD.getCsnNo().substring(infoDD.getCsnNo().length() - 5))- Long.parseLong(workOrder.getCustOrderNo().substring(workOrderLast.getCustOrderNo().length() - 7)) - kanBan.getOnlineAdjustNum();
} }
mesKanBanShowModel.setSummaryRealSupplyRealCount(summaryRealSupplyRealCount); mesKanBanShowModel.setSummaryRealSupplyRealCount(summaryRealSupplyRealCount);
Long summaryWorkOrderYellowCount = kanBan.getSummaryWorkOrderYellowCount();
if (summaryRealSupplyRealCount > summaryWorkOrderRedCount){
mesKanBanShowModel.setSummaryWorkOrderColor("RED");
}else if (summaryRealSupplyRealCount > summaryWorkOrderYellowCount){
mesKanBanShowModel.setSummaryWorkOrderColor("YELLOW");
}
//成品缓冲 //成品缓冲
Long productionRedBuffer =kanBan.getProductionRedBuffer(); Long productionRedBuffer =kanBan.getProductionRedBuffer();
mesKanBanShowModel.setProductionRedBuffer(productionRedBuffer); mesKanBanShowModel.setProductionRedBuffer(productionRedBuffer);
@ -377,8 +398,12 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
} }
mesKanBanShowModel.setRealProductionBuffer(realProductionBuffer); mesKanBanShowModel.setRealProductionBuffer(realProductionBuffer);
//成品缓冲文字颜色 Long productionYellowBuffer = kanBan.getProductionYellowBuffer();
//private String realProductionBufferColor; if (realProductionBuffer < productionRedBuffer){
mesKanBanShowModel.setRealProductionBufferColor("RED");
}else if (realProductionBuffer < productionYellowBuffer){
mesKanBanShowModel.setRealProductionBufferColor("YELLOW");
}
//声音信息 //声音信息
//private String voice; //private String voice;
//错误信息 //错误信息
@ -390,14 +415,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if (kanBan.getRecord().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())){ if (kanBan.getRecord().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())){
MesEarlyWarningRecord record = new MesEarlyWarningRecord(); MesEarlyWarningRecord record = new MesEarlyWarningRecord();
//供货缓冲实际值
record.setRealSupplyBuffer(realSupplyBuffer);
//实际积累
record.setSummaryRealSupplyRealCount(summaryRealSupplyRealCount);
//成品缓冲
record.setRealProductionBuffer(realProductionBuffer);
// 告警数量
record.setWorkOrderCount((long)workCount);
record.setWorkCenterCode(workOrderCenter); record.setWorkCenterCode(workOrderCenter);
record.setGaNo(infoDD.getCsnNo()); record.setGaNo(infoDD.getCsnNo());
record.setLastGaNo(infoKH.getCsnNo()); record.setLastGaNo(infoKH.getCsnNo());
record.setRemark(kanBan.getId().toString());
ConvertBean.saveOrUpdate(record,"kanban"); ConvertBean.saveOrUpdate(record,"kanban");
earlyWarningRecordRao.insert(record); earlyWarningRecordRao.insert(record);
mesKanBanShowModel.setRecordId(record.getId()); mesKanBanShowModel.setRecordId(record.getId());
} }
mesKanBanShowModel.setTotalCount((long)workCount);
return mesKanBanShowModel; return mesKanBanShowModel;
} }
} }

Loading…
Cancel
Save