diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java index 40a8ec5..b048945 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java @@ -61,7 +61,7 @@ public interface IMesProduceSnExtService { void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList); @ApiOperation(value = "根据条件修改条码状态") - void saveProduceSntatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus); + void saveProduceSnStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus); MesProduceSn insert(MesProduceSn item); diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java index e20c35d..8bf2905 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java @@ -107,7 +107,7 @@ public interface IMesProductionCustomContextStepService { List getSortQueuePushLockContext(String orgainzeCode, String workCenterCode); @ApiOperation(value = "保存排序线工单队列推送锁数据") - Boolean dispatchSortQueuePushLockContext(String organizeCode, String workCenterCode, String queuePushId); + Boolean dispatchSortQueuePushLockContext(String organizeCode, String workCenterCode, Object queuePushId); @ApiOperation(value = "删除排序线工单队列推送锁数据") void removeSortQueuePushLockContext(String orgainzeCode, String workCenterCode, String queuePushId); diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java index c8d9c16..ecd5f85 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesQueueOrderPushService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; @@ -37,4 +38,7 @@ public interface IMesQueueOrderPushService { @ApiOperation(value = "根据分页条件查询生产队列工位推送信息") ListPager queryQueueOrderPushListPager(Map paramMap, List pushSourceCodeList, Pager pager); + @ApiOperation(value = "根据条件修改生产队列工位推送信息状态") + void saveQueueOrderPushStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer queueStatus); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index f91f53d..fd9e154 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -460,7 +460,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean); DdlPreparedPack.getStringEqualPack(produceSn.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean); - produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue()); + produceSnExtService.saveProduceSnStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue()); //查询装配件绑定记录表 List productionAssemblyList = mesAssemblyExtService.getProductionAssemblySortList(requestModel.getOrganizeCode(), workOrder.getWorkOrderNo()); @@ -477,7 +477,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { DdlPreparedPack.getStringEqualPack(productionAssembly.getAssemblySn(), MesPcnExtConstWords.PRODUCT_SN, packBean); DdlPreparedPack.getStringEqualPack(productionAssembly.getAssemblyPartNo(), MesPcnExtConstWords.PART_NO, packBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), MesPcnExtConstWords.SN_STATUS, packBean); - produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_BACK.getValue()); + produceSnExtService.saveProduceSnStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_BACK.getValue()); } //将装配件绑定记录表的非解绑状态的记录改为解绑状态 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java index 76bd313..52d5752 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java @@ -220,18 +220,20 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean); else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); produceSnRepository.updateByPropertiesNoSync( - new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.SN_STATUS}, - new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), snStatus}, + new String[]{MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.SN_STATUS, + MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, + new Object[]{reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), snStatus, + reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}, packBean); } @Override - public void saveProduceSntatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus) { + public void saveProduceSnStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer snStatus) { if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(snStatus)) return; produceSnRepository.updateByPropertiesNoSync( - new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SN_STATUS}, - new Object[]{userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), snStatus}, + new String[]{MesPcnExtConstWords.SN_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, + new Object[]{snStatus, userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}, packBean); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java index 0b5586f..5904686 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesQueueOrderPushService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -165,4 +166,14 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService { return new ListPager<>(list, pager); } + //根据条件修改生产队列工位推送信息状态 + @Override + public void saveQueueOrderPushStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer queueStatus) { + if (StringUtils.isEmpty(userInfo) || StringUtils.isEmpty(queueStatus)) return; + queueOrderPushRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.QUEUE_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, + new Object[]{queueStatus, userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}, + packBean); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CommonCustSnPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CommonCustSnPrintStrategy.java new file mode 100644 index 0000000..682e043 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/CommonCustSnPrintStrategy.java @@ -0,0 +1,71 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy; + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.pojo.mes.bean.MesNumberRule; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description : 客户标签打印 + * @Reference : + * @Author : wangjie + * @CreateDate : 2024/9/29 16:43 + * @Modify: + **/ +@Component +@Slf4j +public class CommonCustSnPrintStrategy implements IPrintTemplateStrategyService { + + @Override + public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel model, + MesNumberRule numberRule , StepResult stepResult, StationRequestBean reqBean, + Boolean isStep) { + + MesWorkOrder workOrder = (MesWorkOrder) model.getSourceData(); + + if (workOrder == null) { + log.info("CommonCustSnPrintStrategy --- execute --- 工单信息为空"); + return null; + } + + // 返回的结果集合 + List> printDataMapList = new ArrayList<>(); + // 单个标签参数值 + Map resultMap = new HashMap<>(); + // 物料名称 + resultMap.put(MesPcnExtConstWords.PART_NAME, workOrder.getPartName()); + // 物料名称 + resultMap.put(MesPcnExtConstWords.CUST_PART_NO, workOrder.getCustPartNo()); + // 客户条码 + resultMap.put(MesPcnExtConstWords.CUST_SN, workOrder.getCustSn()); + + printDataMapList.add(resultMap); + + model.setPrintContextList(packResultMapList(model, printDataMapList)); + + return model; + } + + private List> packResultMapList(MesProduceSnPrintModel printModel, List> printTemplateDateList) { + List> resultMapList = new ArrayList<>(); + Map resultMap = new HashMap<>(); + resultMap.put(MesPcnExtConstWords.LABEL_TEMPLATE, printModel.getMesLabelTemplate()); + resultMap.put(MesPcnExtConstWords.TEMPLATE_DATA, printTemplateDateList); + resultMap.put(MesPcnExtConstWords.TEMPLATE_CODE, printModel.getMesLabelTemplate().getTemplateCode()); + resultMap.put(MesPcnExtConstWords.PRINTER, printModel.getPrinter()); + resultMapList.add(resultMap); + return resultMapList; + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/.DS_Store b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/.DS_Store differ diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java index 744621b..87013a7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueAcceptStepService.java @@ -113,7 +113,7 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService { } //搜集需要考虑加锁的推送来源代码 - List pushSourceCodeList = queueOrderPushCellCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getIsNeedLock()))).map(MesQueueOrderPushCellCfg::getPushSourceCode).collect(Collectors.toList()); + List pushSourceCodeList2NeedLock = queueOrderPushCellCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getIsNeedLock()))).map(MesQueueOrderPushCellCfg::getPushSourceCode).collect(Collectors.toList()); //当前即将执行的接收队列 List curPushList = null; @@ -123,7 +123,7 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService { for (MesQueueOrderPush queueOrderPush : queueOrderPushList) { if (null == queueOrderPush || StringUtils.isEmpty(queueOrderPush.getWorkOrderNo())) continue; //当前遍历中的代码不考虑加锁 - if (CollectionUtils.isEmpty(pushSourceCodeList) || !pushSourceCodeList.contains(queueOrderPush.getPushSourceCode())) { + if (CollectionUtils.isEmpty(pushSourceCodeList2NeedLock) || !pushSourceCodeList2NeedLock.contains(queueOrderPush.getPushSourceCode())) { if (CollectionUtils.isEmpty(curPushList)) curPushList = new ArrayList<>(); curPushList.add(queueOrderPush); //满足腔数的情况下退出循环 @@ -172,18 +172,17 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService { } finally { - //验证是否执行解锁 - if (!CollectionUtils.isEmpty(curPushList)) { - for (MesQueueOrderPush queueOrderPush : curPushList) { - if (null == queueOrderPush) continue; - if (CollectionUtils.isEmpty(pushSourceCodeList) || !pushSourceCodeList.contains(queueOrderPush.getPushSourceCode())) continue; - //当需要考虑加锁且满足腔数的情况下, 保存排序线工单队列推送锁数据 - if (curPushList.size() >= cellEquipContext.getCavity()) productionCustomContextStepService.dispatchSortQueuePushLockContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), queueOrderPush.getId().toString()); - //解锁 - unLock(reqBean.getWorkCenterCode(), queueOrderPush.getPushSourceCode()); - } - } - +// //验证是否执行解锁 +// List pushList2NeedLock = (CollectionUtils.isEmpty(curPushList) || CollectionUtils.isEmpty(pushSourceCodeList2NeedLock)) ? null : +// curPushList.stream().filter(o -> (null != o && pushSourceCodeList2NeedLock.contains(o.getPushSourceCode()))).collect(Collectors.toList()); +// //当需要考虑加锁且满足腔数的情况下, 保存排序线工单队列推送锁数据 +// if (!CollectionUtils.isEmpty(pushList2NeedLock) && curPushList.size() >= cellEquipContext.getCavity()) { +// List idList = pushList2NeedLock.stream().filter(o -> null != o).map(o -> String.valueOf(o.getId())).collect(Collectors.toList()); +// productionCustomContextStepService.dispatchSortQueuePushLockContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), idList); +// } +// +// //解锁 +// if (!CollectionUtils.isEmpty(pushList2NeedLock)) pushList2NeedLock.forEach(o -> unLock(reqBean.getWorkCenterCode(), o.getPushSourceCode())); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSavePushStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSavePushStepService.java new file mode 100644 index 0000000..bc3e192 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSavePushStepService.java @@ -0,0 +1,100 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +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.IMesQueueOrderPushService; +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.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder; +import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * @Description : 保存工位队列信息工步 推单工位 + * @Author : wangjie + **/ +@Slf4j +@Service("mesWorkOrderQueueSavePushStepService") +public class MesWorkOrderQueueSavePushStepService extends BaseStepService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private IMesQueueOrderPushService queueOrderPushService; + + @Autowired + private MesQueueOrderRepository queueOrderRepository; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + //获取上下文信息 + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean); + + //配置错误 抛出异常 + if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); + + //存储生产过程上下文对象 + productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext); + + //获取上下文产出零件信息 + List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); + if (CollectionUtils.isEmpty(productionPartContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件信息,请重置工序解决!"); + + //获取上下文推单队列信息 + List queueOrderPushList = productionDispatchContextStepService.getSortQueuePushContext(reqBean); + if (CollectionUtils.isEmpty(productionPartContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在推单队列信息,请重置工序解决!"); + + //修改推送队列信息状态为已完成 + List idList = queueOrderPushList.stream().filter(o -> null != o).map(MesQueueOrderPush::getId).collect(Collectors.toList()); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); + if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean); + else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); + queueOrderPushService.saveQueueOrderPushStatusByDdlPackBean(packBean, reqBean.getUserInfo(), MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()); + //写入队列信息,默认状态为已完成 + queueOrderPushList.stream().filter(o -> null != o).forEach(o -> insertQueueOrder(reqBean, o, productionPartContextList)); + + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存工位队列成功!"); + + } + + private void insertQueueOrder(StationRequestBean reqBean, MesQueueOrderPush queueOrderPush, List productionPartContextList) { + Optional optional = productionPartContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(queueOrderPush.getWorkOrderNo()))).findFirst(); + MesQueueOrder queueOrder = new MesQueueOrder(); + if (null != optional && optional.isPresent()) BeanUtils.copyProperties(optional.get(), queueOrder, MesPcnExtConstWords.BASE_BEAN_FIELDS); + BeanUtils.copyProperties(queueOrderPush, queueOrder, MesPcnExtConstWords.BASE_BEAN_FIELDS); + queueOrder.setWorkCellCode(reqBean.getWorkCellCode()); + queueOrder.setSerialNumber(queueOrderPush.getProductSn()); + queueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()); + ConvertBean.serviceModelInitialize(queueOrder, reqBean.getUserInfo()); + queueOrderRepository.insert(queueOrder); + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStatusStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStatusStepService.java new file mode 100644 index 0000000..9ef39e1 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStatusStepService.java @@ -0,0 +1,77 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +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.pojo.context.MesProductionProcessContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.List; + +/** + * @Description : 保存工位队列信息工步 非推单工位 + * @Author : wangjie + **/ +@Slf4j +@Service("mesWorkOrderQueueSaveStatusStepService") +public class MesWorkOrderQueueSaveStatusStepService extends BaseStepService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private MesQueueOrderRepository queueOrderRepository; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + //获取上下文信息 + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean); + + //配置错误 抛出异常 + if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); + + //存储生产过程上下文对象 + productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext); + + //获取上下文条码数据信息集合 + List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); + if (CollectionUtils.isEmpty(productionPsInContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在零件条码信息,请重置工序解决!"); + + productionPsInContextList.stream().filter(o -> null != o).forEach(o -> saveWorkOrderQueue(reqBean, o)); + + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存工位队列成功!"); + + } + + private void saveWorkOrderQueue(StationRequestBean reqBean, MesProductionPsInContext productionPsInContext) { + if (StringUtils.isEmpty(productionPsInContext.getRelateId())) return; + queueOrderRepository.updateByPropertiesNoSync( + new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, + new Object[]{productionPsInContext.getRelateId(), reqBean.getOrganizeCode()}, + new String[]{MesPcnExtConstWords.STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, + new Object[]{MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue(), reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}); + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java index bcb6a9c..50c2a63 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java @@ -3,25 +3,20 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; 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.pojo.context.MesProductionProcessContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderRepository; -import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.List; - /** * @Description : 保存工位队列信息工步 * @Author : wangjie @@ -44,8 +39,6 @@ public class MesWorkOrderQueueSaveStepService extends BaseStepService { StationResultBean resultBean = new StationResultBean(); - StepResult stepResult = StepResult.getSuccessComplete(); - //获取上下文信息 MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean); @@ -55,24 +48,16 @@ public class MesWorkOrderQueueSaveStepService extends BaseStepService { //存储生产过程上下文对象 productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext); - //获取上下文条码数据信息集合 - List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); - - if (CollectionUtils.isEmpty(productionPsInContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在零件条码信息,请重置工序解决!"); + //获取生产线信息 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - productionPsInContextList.stream().filter(o -> null != o).forEach(o -> saveWorkOrderQueue(reqBean, o)); + //排序线 保存工位队列信息工步 非推送工位 + if (StringUtils.isEmpty(workCenter.getIsPushQueue()) || workCenter.getIsPushQueue().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) + return ((IStepService) SpringContextsUtil.getBean("mesWorkOrderQueueSaveStatusStepService")).executeInState(reqBean); - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存工位队列成功!"); - - } + //排序线 保存工位队列信息工步 推送工位 + return ((IStepService) SpringContextsUtil.getBean("mesWorkOrderQueueSavePushStepService")).executeInState(reqBean); - private void saveWorkOrderQueue(StationRequestBean reqBean, MesProductionPsInContext productionPsInContext) { - if (StringUtils.isEmpty(productionPsInContext.getRelateId())) return; - queueOrderRepository.updateByPropertiesNoSync( - new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, - new Object[]{productionPsInContext.getRelateId(), reqBean.getOrganizeCode()}, - new String[]{MesPcnExtConstWords.STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, - new Object[]{MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue(), reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java index 9c48eee..c092b52 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java @@ -297,7 +297,7 @@ public class MesProductionCustomContextStepService extends BaseStepService imple } //排序线工单队列推送锁数据KEY 【PS:生产线级别】 - private String getSortQueuePushLockContextKey(String orgainzeCode, String workCenterCode) { return new StringJoiner(MesPcnExtConstWords.COLON).add(orgainzeCode).add(MesPcnExtConstWords.QUEUE_PUSH_LOCK_CONTEXT).add(workCenterCode).toString(); } + private String getSortQueuePushLockContextKey(String orgainzeCode, String workCenterCode) { return new StringJoiner(MesPcnExtConstWords.COLON).add(orgainzeCode).add(workCenterCode).add(MesPcnExtConstWords.QUEUE_PUSH_LOCK_CONTEXT).toString(); } //获取排序线工单队列推送锁数据 @Override @@ -307,7 +307,7 @@ public class MesProductionCustomContextStepService extends BaseStepService imple //保存排序线工单队列推送锁数据 @Override - public Boolean dispatchSortQueuePushLockContext(String organizeCode, String workCenterCode, String queuePushId) { + public Boolean dispatchSortQueuePushLockContext(String organizeCode, String workCenterCode, Object queuePushId) { if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode) || StringUtils.isEmpty(queuePushId)) return false; return dispatchFsmBusiList(organizeCode, getSortQueuePushLockContextKey(organizeCode, workCenterCode), queuePushId); } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java index 45a8b04..c197eb5 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPartContext.java @@ -85,6 +85,12 @@ public class MesProductionPartContext implements Serializable { @ApiParam("零件生产组代码") private String partProdGroupCode; + @ApiParam("零件生产组名称") + private String partProdGroupName; + + @ApiParam("工单标识") + private String orderFlag; + @ApiParam("车型大类") private String carModelCode;