|
|
@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdShiftRecordService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesQueueOrderPushService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
|
|
@ -17,8 +18,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesStateMachineStatus;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.AttrBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.AttrBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationKvBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
@ -59,6 +59,9 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private MesQueueOrderRepository queueOrderRepository;
|
|
|
|
private MesQueueOrderRepository queueOrderRepository;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesQueueOrderPushService queueOrderPushService;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void init(StationRequestBean reqBean) {
|
|
|
|
public void init(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
|
|
|
@ -93,16 +96,22 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
|
|
|
|
|
|
|
|
// 获取工单信息
|
|
|
|
// 获取工单信息
|
|
|
|
List<List<StationKvBean>> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean);
|
|
|
|
List<List<StationKvBean>> moduleContentContext = productionDispatchContextStepService.getModuleContentContext(reqBean);
|
|
|
|
// 获取产成零件信息
|
|
|
|
|
|
|
|
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
|
|
|
|
|
|
|
// 排除掉空腔的产成零件
|
|
|
|
|
|
|
|
productionPartContext = CollectionUtils.isEmpty(productionPartContext) ? null : productionPartContext.stream().filter(o -> !StringUtils.isEmpty(o.getForeignKey())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 发送班次班组和工单
|
|
|
|
// 发送班次班组和工单
|
|
|
|
StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext);
|
|
|
|
StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext);
|
|
|
|
|
|
|
|
|
|
|
|
//封装工位展示的客制化信息 (获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条)
|
|
|
|
//生产线是否推单
|
|
|
|
StationResultBean resultBeanCustom = getStationResultBean(queryQueueOrderTopFiftyProductSeq(reqBean, getNewPartProdGroupCode(reqBean, moduleContentContext, productionPartContext)));
|
|
|
|
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
|
|
|
|
|
|
|
|
Boolean isPushQueue = (StringUtils.isEmpty(workCenter.getIsPushQueue()) || workCenter.getIsPushQueue().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) ? false : true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取队列信息
|
|
|
|
|
|
|
|
//非推单【获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条】
|
|
|
|
|
|
|
|
List<MesQueueOrderModel> queueOrderModelList = !isPushQueue
|
|
|
|
|
|
|
|
? queryQueueOrderTopFiftyProductSeq(reqBean, getNewPartProdGroupCode(reqBean, moduleContentContext))
|
|
|
|
|
|
|
|
: queryQueueOrderPush(reqBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//封装工位展示的客制化信息
|
|
|
|
|
|
|
|
StationResultBean resultBeanCustom = getStationResultBean(queueOrderModelList);
|
|
|
|
|
|
|
|
|
|
|
|
if (null == resultBeanCustom) this.sendMessage(reqBean, resultBean);
|
|
|
|
if (null == resultBeanCustom) this.sendMessage(reqBean, resultBean);
|
|
|
|
else this.sendMessage(reqBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()).addStationResultBeans(resultBean).addStationResultBeans(resultBeanCustom));
|
|
|
|
else this.sendMessage(reqBean, new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BUSI_LIST.getValue()).addStationResultBeans(resultBean).addStationResultBeans(resultBeanCustom));
|
|
|
@ -113,6 +122,8 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private StationResultBean getStationResultBean(List<MesQueueOrderModel> mesQueueOrderModelList) {
|
|
|
|
private StationResultBean getStationResultBean(List<MesQueueOrderModel> mesQueueOrderModelList) {
|
|
|
|
if (CollectionUtils.isEmpty(mesQueueOrderModelList)) return null;
|
|
|
|
if (CollectionUtils.isEmpty(mesQueueOrderModelList)) return null;
|
|
|
|
return new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue())
|
|
|
|
return new StationResultBean().busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CUSTOM_CONTENT.getValue())
|
|
|
@ -130,6 +141,7 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
return attrBeanList;
|
|
|
|
return attrBeanList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取当前工位最新修改的完成状态的队列单据数据 并根据其零件生产组代码按生产序号倒序前50条
|
|
|
|
private List<MesQueueOrderModel> queryQueueOrderTopFiftyProductSeq(StationRequestBean reqBean, List<String> partProdGroupCodeList) {
|
|
|
|
private List<MesQueueOrderModel> queryQueueOrderTopFiftyProductSeq(StationRequestBean reqBean, List<String> partProdGroupCodeList) {
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(partProdGroupCodeList)) return null;
|
|
|
|
if (CollectionUtils.isEmpty(partProdGroupCodeList)) return null;
|
|
|
@ -170,7 +182,13 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
return queueOrderModelList;
|
|
|
|
return queueOrderModelList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<String> getNewPartProdGroupCode(StationRequestBean reqBean, List<List<StationKvBean>> moduleContentContext, List<MesProductionPartContext> productionPartContext) {
|
|
|
|
//获取零件生产组代码
|
|
|
|
|
|
|
|
private List<String> getNewPartProdGroupCode(StationRequestBean reqBean, List<List<StationKvBean>> moduleContentContext) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取产成零件信息
|
|
|
|
|
|
|
|
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
|
|
|
|
|
|
|
// 排除掉空腔的产成零件
|
|
|
|
|
|
|
|
productionPartContext = CollectionUtils.isEmpty(productionPartContext) ? null : productionPartContext.stream().filter(o -> !StringUtils.isEmpty(o.getForeignKey())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
// 扫描验证完加工单才能拿到产成零件信息
|
|
|
|
// 扫描验证完加工单才能拿到产成零件信息
|
|
|
|
if (!CollectionUtils.isEmpty(productionPartContext)) {
|
|
|
|
if (!CollectionUtils.isEmpty(productionPartContext)) {
|
|
|
@ -190,6 +208,15 @@ public class MesProductionSortModuleService extends BaseModuleService {
|
|
|
|
return queueOrder == null ? null : Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList());
|
|
|
|
return queueOrder == null ? null : Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询推单队列
|
|
|
|
|
|
|
|
private List<MesQueueOrderModel> queryQueueOrderPush(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
//处理排序线推单上下文, 返回推送工位类型对应的配置信息 【来源工位】
|
|
|
|
|
|
|
|
List<MesQueueOrderPushCellCfg> queueOrderPushCellCfgList = productionProcessContextStepService.dispatchQueueOrderPushCellCfgContext(reqBean, MesExtEnumUtil.QUEUE_ORDER_CELL_PUSH_TYPE.TARGET.getValue());
|
|
|
|
|
|
|
|
List<MesQueueOrderPush> queueOrderPushList =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private boolean checkJumpNumber(String nextWorkOrderSeq, String currentWorkOrderSeq) {
|
|
|
|
private boolean checkJumpNumber(String nextWorkOrderSeq, String currentWorkOrderSeq) {
|
|
|
|
if (StringUtils.isEmpty(nextWorkOrderSeq) || StringUtils.isEmpty(currentWorkOrderSeq) || !CheckTool.isNumber(nextWorkOrderSeq) || !CheckTool.isNumber(currentWorkOrderSeq)) return false;
|
|
|
|
if (StringUtils.isEmpty(nextWorkOrderSeq) || StringUtils.isEmpty(currentWorkOrderSeq) || !CheckTool.isNumber(nextWorkOrderSeq) || !CheckTool.isNumber(currentWorkOrderSeq)) return false;
|
|
|
|
return Integer.parseInt(currentWorkOrderSeq) != Integer.parseInt(nextWorkOrderSeq) + MesPcnExtConstWords.ONE;
|
|
|
|
return Integer.parseInt(currentWorkOrderSeq) != Integer.parseInt(nextWorkOrderSeq) + MesPcnExtConstWords.ONE;
|
|
|
|