线末大屏

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

@ -45,7 +45,7 @@ public interface IMesEarlyWarningService {
*
* @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) {
MesKanBanShowModel data = null;
try {
data = mesEarlyWarningService.getData(id, organizeCode);
data = mesEarlyWarningService.doGetData(id, organizeCode);
} catch (Exception e) {
ResultBean.fail(e.getMessage());
}

@ -100,7 +100,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
}
@Override
public MesKanBanShowModel getData(Long id, String organizeCode) throws ParseException {
public MesKanBanShowModel doGetData(Long id, String organizeCode) throws ParseException {
DdlPackBean earlyWarningKanBanPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(id, "id", earlyWarningKanBanPackBean);
List<MesEarlyWarningKanBan> list = earlyWarningKanBanRao.findByHqlTopWhere(earlyWarningKanBanPackBean, 1);
@ -132,7 +132,6 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
lastWorkOrder = lastOfflineOrder;
}
//6.查询报警产量 & 获取开班起始时间
String dStart;
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
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不为空】
// workOrderAssembly
DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",assemblyPackBean);
DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",assemblyPackBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(),"assemblyStatus",assemblyPackBean);
List<MesWorkOrderAssembly> mesWorkOrderAssemblyList = workOrderAssemblyRao.findByHqlWhere(assemblyPackBean);
List<String> workOrderNoList = mesWorkOrderAssemblyList.stream().map(MesWorkOrderAssembly::getWorkOrderNo).distinct().collect(Collectors.toList());
// DdlPackBean assemblyPackBean = DdlPackBean.getDdlPackBean(organizeCode);
// DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",assemblyPackBean);
// DdlPreparedPack.getStringEqualPack(workCellCode,"workCellCode",assemblyPackBean);
// DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(),"assemblyStatus",assemblyPackBean);
// List<MesWorkOrderAssembly> mesWorkOrderAssemblyList = workOrderAssemblyRao.findByHqlWhere(assemblyPackBean);
// //todo 有内存溢出风险 调试一下,写hql按照分组查询出workOrderNoList
// List<String> workOrderNoList = mesWorkOrderAssemblyList.stream().map(MesWorkOrderAssembly::getWorkOrderNo).distinct().collect(Collectors.toList());
List<Integer> orderStatusList = new ArrayList<>();
orderStatusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.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.X.getValue());
DdlPackBean queueOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderNoList,"workOrderNo",queueOrderPackBean);
// 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.getNotInPack(orderFlagList,"orderFlag",queueOrderPackBean);
DdlPreparedPack.getStringNotBlanklPack("custOrderNo",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());
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -264,7 +265,7 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
DdlPreparedPack.getStringEqualPack(workCenterCode,"workCenterCode",workOrderPackBean);
DdlPreparedPack.getInPackList(orderStatusList,"workOrderStatus",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);
return workOrderRao.findByHqlWhereCount(workOrderPackBean);
@ -273,8 +274,10 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
//报警产量
private List<String> getCLWarning(String date, int qty,String organizeCode) {
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.SHIPPING.getValue());
StringBuilder hql = new StringBuilder();
hql.append(" select carModelCode from MesWorkOrder");
@ -312,18 +315,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if (infoV107List.isEmpty()){
return mesKanBanShowModel;
}
StringBuilder errorMsg = new StringBuilder();
for (int i = 0; i < infoV107List.size()-1; i++) {
int preCsnNo = Integer.parseInt(infoV107List.get(i+1).getCsnNo().substring(3,10));
int curCsnNo = Integer.parseInt(infoV107List.get(i).getCsnNo().substring(3,10));
if (curCsnNo != preCsnNo+1){
//需要保留截图
//需要发声音
mesKanBanShowModel.setVoice("跳号的声音");
//需要发送记录信息 当前csnNo进行了跳号
mesKanBanShowModel.setErrorMsg(String.format("当前CsnNo:%d进行了跳号",curCsnNo));
break;
errorMsg.append(String.format("当前CsnNo:%d进行了跳号;\n",curCsnNo));
}
}
if (errorMsg.length()>0){
shortCut = true;
mesKanBanShowModel.setVoice("跳号的声音");
}
mesKanBanShowModel.setErrorMsg(errorMsg.toString());
// if (infoDD == null){
// return mesKanBanShowModel;
// }
@ -347,12 +355,18 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
mesKanBanShowModel.setWorkOrderCenter(workOrderCenter);
//供货缓冲 >=
Long supplyRedBuffer = kanBan.getSupplyRedBuffer();
Long supplyYellowBuffer = kanBan.getSupplyYellowBuffer();
mesKanBanShowModel.setSupplyRedBuffer(supplyRedBuffer);
//供货缓冲实际
Long realSupplyBuffer = Long.parseLong(infoDD.getCsnNo().substring(3,10)) - Long.parseLong(infoKH.getCsnNo().substring(3,10)) - kanBan.getOnlineAdjustNum();
mesKanBanShowModel.setRealSupplyBuffer(realSupplyBuffer);
//成品缓冲文字颜色
//private String realSupplyBufferColor;
if (realSupplyBuffer < supplyRedBuffer){
mesKanBanShowModel.setRealSupplyBufferColor("RED");
mesKanBanShowModel.setSupplyRedBuffer(supplyRedBuffer);
}else if (realSupplyBuffer < supplyYellowBuffer){
mesKanBanShowModel.setRealSupplyBufferColor("YELLOW");
mesKanBanShowModel.setSupplyRedBuffer(supplyYellowBuffer);
}
//线头积单
Long summaryWorkOrderRedCount = kanBan.getSummaryWorkOrderRedCount();
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();
}
mesKanBanShowModel.setSummaryRealSupplyRealCount(summaryRealSupplyRealCount);
Long summaryWorkOrderYellowCount = kanBan.getSummaryWorkOrderYellowCount();
if (summaryRealSupplyRealCount > summaryWorkOrderRedCount){
mesKanBanShowModel.setSummaryWorkOrderColor("RED");
}else if (summaryRealSupplyRealCount > summaryWorkOrderYellowCount){
mesKanBanShowModel.setSummaryWorkOrderColor("YELLOW");
}
//成品缓冲
Long productionRedBuffer =kanBan.getProductionRedBuffer();
mesKanBanShowModel.setProductionRedBuffer(productionRedBuffer);
@ -377,8 +398,12 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
}
mesKanBanShowModel.setRealProductionBuffer(realProductionBuffer);
//成品缓冲文字颜色
//private String realProductionBufferColor;
Long productionYellowBuffer = kanBan.getProductionYellowBuffer();
if (realProductionBuffer < productionRedBuffer){
mesKanBanShowModel.setRealProductionBufferColor("RED");
}else if (realProductionBuffer < productionYellowBuffer){
mesKanBanShowModel.setRealProductionBufferColor("YELLOW");
}
//声音信息
//private String voice;
//错误信息
@ -390,14 +415,23 @@ public class MesEarlyWarningServiceImpl implements IMesEarlyWarningService {
if (kanBan.getRecord().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())){
MesEarlyWarningRecord record = new MesEarlyWarningRecord();
//供货缓冲实际值
record.setRealSupplyBuffer(realSupplyBuffer);
//实际积累
record.setSummaryRealSupplyRealCount(summaryRealSupplyRealCount);
//成品缓冲
record.setRealProductionBuffer(realProductionBuffer);
// 告警数量
record.setWorkOrderCount((long)workCount);
record.setWorkCenterCode(workOrderCenter);
record.setGaNo(infoDD.getCsnNo());
record.setLastGaNo(infoKH.getCsnNo());
record.setRemark(kanBan.getId().toString());
ConvertBean.saveOrUpdate(record,"kanban");
earlyWarningRecordRao.insert(record);
mesKanBanShowModel.setRecordId(record.getId());
}
mesKanBanShowModel.setTotalCount((long)workCount);
return mesKanBanShowModel;
}
}

Loading…
Cancel
Save