From d7fff9d0216f5c46a76e7591697f9cca1a8592c3 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sun, 9 Jun 2024 13:38:02 +0800 Subject: [PATCH 1/6] pcn step --- .../mes/pcn/api/busi/IMesProduceSnExtService.java | 4 + .../IMesProductionDispatchContextStepService.java | 30 ++++-- .../IMesProductionProcessContextStepService.java | 3 + .../serviceimpl/busi/MesProduceSnExtService.java | 16 +++ .../MesProductionNoSortFunctionModuleService.java | 110 --------------------- .../MesFunctionChooseWorkOrderService.java | 78 +++++++++++++++ .../function/MesFunctionJumpProcessService.java | 34 +++++++ .../function/MesFunctionJumpStateService.java | 52 ++++++++++ .../MesFunctionResetCellContextService.java | 37 +++++++ .../function/MesFunctionSwitchCellService.java | 32 ++++++ .../step/MesProductSnCheckStepService.java | 28 ++++-- .../step/MesProductSnMarkUnkonwStepService.java | 58 ----------- .../MesProductionDispatchContextStepService.java | 84 ++++++++++------ .../MesProductionProcessContextStepService.java | 3 + .../ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 21 ++-- 15 files changed, 368 insertions(+), 222 deletions(-) delete mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortFunctionModuleService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionChooseWorkOrderService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpProcessService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpStateService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionResetCellContextService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionSwitchCellService.java delete mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnMarkUnkonwStepService.java 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 db5b81d..10b9c96 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 @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -10,4 +11,7 @@ public interface IMesProduceSnExtService { @ApiOperation(value = "根据零件条码查询零件条码信息") List getProduceSnList(String organizeCode, List productSnList); + @ApiOperation(value = "根据零件条码ID修改条码状态,工位") + void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList); + } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java index 1c4871d..f872d3c 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java @@ -173,6 +173,9 @@ public interface IMesProductionDispatchContextStepService { @ApiOperation(value = "删除上下文产品加工规则信息集合") void deleteProdRuleDataContext(StationRequestBean reqBean); + @ApiOperation(value = "获取生产线的当前班组班次信息") + MesProdShiftContext getMesProdShiftKvBean(String orgainzeCode, String workCenterCode); + @ApiOperation(value = "获取上下文班次班组信息") List getProdShiftDataContext(String orgainzeCode, String workCenterCode); @@ -197,7 +200,23 @@ public interface IMesProductionDispatchContextStepService { @ApiOperation(value = "删除上下文工位加工数统计信息") void deleteProductionStatisticsContext(StationRequestBean reqBean); - MesProdShiftContext getMesProdShiftKvBean(String orgainzeCode, String workCenterCode); + @ApiOperation(value = "获取手动选择的腔数及工单信息上下文") + String getFunctionChooseCavityOrderContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存手动选择的腔数及工单信息上下文", notes = "腔数=工单个数 数据格式: 腔数;工单1;工单2;工单3") + Boolean saveFunctionChooseCavityOrderContext(StationRequestBean reqBean, String value); + + @ApiOperation(value = "删除手动选择的腔数及工单信息上下文") + void deleteFunctionChooseCavityOrderContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取料桶原材料数据集合") + List getMesRawPartChargingDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存料桶原材料数据集合", notes = "[JSON]List") + Boolean saveMesRawPartChargingDataContext(StationRequestBean reqBean, List mesRawPartChargingList); + + @ApiOperation(value = "删除料桶原材料数据集合") + void deleteMesRawPartChargingDataContext(StationRequestBean reqBean); @@ -227,13 +246,4 @@ public interface IMesProductionDispatchContextStepService { void deleteOutProduceSnDataContext(StationRequestBean reqBean); - @ApiOperation(value = "获取料桶原材料数据集合") - List getMesRawPartChargingDataContext(StationRequestBean reqBean); - - @ApiOperation(value = "保存料桶原材料数据集合", notes = "[JSON]List") - Boolean saveMesRawPartChargingDataContext(StationRequestBean reqBean, List mesRawPartChargingList); - - @ApiOperation(value = "删除料桶原材料数据集合") - void deleteMesRawPartChargingDataContext(StationRequestBean reqBean); - } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java index 27bc969..783f0b6 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionProcessContextStepService.java @@ -21,6 +21,9 @@ public interface IMesProductionProcessContextStepService { @ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】") Boolean saveProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); + @ApiOperation(value = "删除生产过程上下文对象") + void deleteProductionProcessContext(StationRequestBean reqBean); + @ApiOperation(value = "获取生产过程上下文对象") MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean); 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 a04dc8f..4d3dcbd 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 @@ -2,10 +2,12 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -49,4 +51,18 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { produceSnDataList.stream().filter(o -> null != o).distinct().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesProduceSn::getProductSn))), ArrayList::new)); } + @Override + public void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList) { + + DdlPackBean packBean = new DdlPackBean(); + DdlPreparedPack.getStringEqualPack(reqBean.getOrganizeCode(), MesPcnExtConstWords.ORGANIZE_CODE, packBean); + DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean); + produceSnRepository.updateByProperties( + 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}, + packBean); + + } + + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortFunctionModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortFunctionModuleService.java deleted file mode 100644 index 3d3fa50..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortFunctionModuleService.java +++ /dev/null @@ -1,110 +0,0 @@ -//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station; -// -//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; -//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; -//import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseModuleService; -//import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; -//import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -//import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; -//import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; -//import cn.estsh.i3plus.pojo.mes.model.StationResultBean; -//import com.alibaba.fastjson.JSONObject; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -//import org.springframework.util.StringUtils; -// -//import java.util.Map; -// -///** -// * @Description : 展示组件:非排序生产(按钮 临时) -// * @Author :wangjie -// **/ -//@Slf4j -//@Service("mesProductionNoSortFunctionModuleService") -//class MesProductionNoSortFunctionModuleService extends BaseModuleService { -// -// @Autowired -// private IMesProductionProcessContextStepService productionProcessContextStepService; -// -// @Override -// public boolean doFunction(StationRequestBean reqBean) { -// -// StationResultBean resultBean = new StationResultBean(); -// -// String functionCmd = (String) reqBean.getDataMap().get(MesPcnExtConstWords.FUNCTION_CMD); -// ButtonDynamicModel buttonDynamicModel = !StringUtils.isEmpty(functionCmd) ? JSONObject.parseObject(functionCmd, ButtonDynamicModel.class) : null; -// -// if (null != buttonDynamicModel) -// -// -// -// this.sendMessage(reqBean, resultBean, "后端未获取到业务功能指令!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// -// -// -// -// -// switch (command) { -// case MesPcnExtConstWords.CMD_WORK_ORDER : -// if (StringUtils.isEmpty(value)) { -// this.sendMessage(reqBean, null, "请选择启动状态的生产工单!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// -// String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null); -// selectWorkOrderNo = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1]; -// if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result; -// reqBean.setForceJumpProcess(true); -// if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true; -// else { -// this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// break; -// case MesPcnExtConstWords.CMD_BUSI_FLAG : -// if (StringUtils.isEmpty(value)) { -// this.sendMessage(reqBean, null, "请点击业务按钮!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// -// String curBusiFlag = (String) doHandleBusiFlag(reqBean, 1, null); -// if (!StringUtils.isEmpty(curBusiFlag) && curBusiFlag.equals(value)) return result; -// reqBean.setTriggerAutoFsm(true); -// if (StringUtils.isEmpty(curBusiFlag)) { -// if ((Boolean) doHandleBusiFlag(reqBean, 2, value.toString())) result = true; -// else { -// this.sendMessage(reqBean, null, String.format("业务按钮[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// } -// break; -// case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS : -// if (StringUtils.isEmpty(value)) { -// this.sendMessage(reqBean, null, "入参缺少产线强制放行的工步代码!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// String pwd = (String) dataMap.get(MesPcnExtConstWords.PWD); -// if (!jxProduceSnExtService.checkPorceCenterPassPwd(reqBean, pwd)) { -// this.sendMessage(reqBean, null, String.format("产线强制放行验证密码[%s]不正确!", pwd), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// return result; -// } -// reqBean.setForceSpecStepCode(value.toString()); -// result = true; -// break; -// default: -// break; -// } -// -// if (!result) this.sendMessage(reqBean, null, "操作太频繁!", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); -// else { -// //跳过工序 -// reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); -// reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); -// reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); -// shippingDispatchService.doSendScanQueueNextExec(reqBean); -// } -// return result; -// } -// -//} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionChooseWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionChooseWorkOrderService.java new file mode 100644 index 0000000..9c75ec7 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionChooseWorkOrderService.java @@ -0,0 +1,78 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +/** + * @Description : 工位参数按钮事件接口实现【选择工单】 + **/ +@Service +public class MesFunctionChooseWorkOrderService extends BaseSwsService implements IFsmModuleFunctionService { + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Override + public boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { + + if (!checkCavityOrderIsValid(buttonDynamicModel.getFunctionValue())) { + this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("生产线[%s]工位[%s]%s失败,请检查选择的工单信息[%s]的有效性!", + reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName(), buttonDynamicModel.getFunctionValue()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return false; + } + + //保存手动选择的腔数及工单信息上下文 + productionDispatchContextStepService.saveFunctionChooseCavityOrderContext(reqBean, buttonDynamicModel.getFunctionValue()); + + reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); + reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); + reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); + reqBean.setTriggerAutoFsm(true); + + shippingDispatchService.doSendScanQueueIfNoQueue(reqBean, false); + + return true; + + } + + //腔数=工单个数 数据格式: 腔数;工单1;工单2;工单3 + private Boolean checkCavityOrderIsValid(String functionValue) { + + if (StringUtils.isEmpty(functionValue)) return false; + + String[] value = functionValue.split(MesPcnExtConstWords.SEMICOLON); + + if (null == value) return false; + + try { + + Integer cavity = Integer.valueOf(value[0]); + + if (cavity != value.length - 1) return false; + + } catch (NumberFormatException e) { + + return false; + + } + + return true; + + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpProcessService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpProcessService.java new file mode 100644 index 0000000..9eefe57 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpProcessService.java @@ -0,0 +1,34 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 工位参数按钮事件接口实现【重置工序】 + **/ +@Service +public class MesFunctionJumpProcessService implements IFsmModuleFunctionService { + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Override + public boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { + + reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); + reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); + reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); + reqBean.setForceJumpProcess(true); + shippingDispatchService.doSendScanQueueNextExec(reqBean); + + return true; + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpStateService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpStateService.java new file mode 100644 index 0000000..376a0cf --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionJumpStateService.java @@ -0,0 +1,52 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.Map; + +/** + * @Description : 工位参数按钮事件接口实现【强过工步集】 + **/ +@Service +public class MesFunctionJumpStateService extends BaseSwsService implements IFsmModuleFunctionService { + + @Autowired + private IFsmCommonService fsmCommonService; + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Override + public boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { + + Map wcpcMap = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean); + String jumpState = wcpcMap.get(MesPcnEnumUtil.STATION_REQUEST_BEAN_CMD.JUMP_STATE.getCode()); + + if (StringUtils.isEmpty(jumpState)) { + this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("生产线[%s]工位[%s]%s失败,未配置工位参数[%s]!", + reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName(), MesPcnEnumUtil.STATION_REQUEST_BEAN_CMD.JUMP_STATE.getCode()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + return false; + } + + reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean)); + reqBean.setInterfaceType(MesPcnConstWords.SHIPPING); + reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN); + reqBean.setScanInfo(jumpState); + shippingDispatchService.doSendScanQueueNextExec(reqBean); + + return true; + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionResetCellContextService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionResetCellContextService.java new file mode 100644 index 0000000..7a0f690 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionResetCellContextService.java @@ -0,0 +1,37 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 工位参数按钮事件接口实现【重置上下文】 + **/ +@Service +public class MesFunctionResetCellContextService implements IFsmModuleFunctionService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Override + public boolean doFunction(StationRequestBean reqBean) { + + //删除BASE上下文数据 + productionProcessContextStepService.deleteProductionProcessContext(reqBean); + + //删除BUSI上下文数据 + return ((IStepService) SpringContextsUtil.getBean("mesProductionContextFlushStepService")).execute(reqBean).isCompleted(); + + + } + + @Override + public boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { return doFunction(reqBean); } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionSwitchCellService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionSwitchCellService.java new file mode 100644 index 0000000..707a5a0 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionSwitchCellService.java @@ -0,0 +1,32 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; + +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 工位参数按钮事件接口实现【切换工位】 + **/ +@Service +public class MesFunctionSwitchCellService extends BaseSwsService implements IFsmModuleFunctionService { + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Override + public boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { + + this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("生产线[%s]工位[%s]%s,客户端已下线!", + reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + + return true; + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnCheckStepService.java index e9cc1b9..a230bd4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnCheckStepService.java @@ -43,6 +43,8 @@ public class MesProductSnCheckStepService extends BaseStepService { @Autowired private IMesProduceSnExtService produceSnExtService; + //TODO 装配件工步 判断空腔条码 + @Override public StepResult execute(StationRequestBean reqBean) { @@ -71,7 +73,7 @@ public class MesProductSnCheckStepService extends BaseStepService { List finishCodeList = filterEquipVariableCollectContextList(productionProcessContext, equipVariableCollectContextList, false); //验证上下文中主条码的有效性 - Map produceSnMap = checkProduceSnValid(reqBean, resultBean, stepResult, productionProcessContext, productSnList); + List produceSnList = checkProduceSnValid(reqBean, resultBean, stepResult, productionProcessContext, productSnList); //清除本次已完成验证的主条码信息 productionDispatchContextStepService.deleteScanProductSnContext(reqBean); @@ -81,6 +83,8 @@ public class MesProductSnCheckStepService extends BaseStepService { //获取上下文的工位 MesWorkCell workCell = productionProcessContext.getWorkCell(); + Map produceSnMap = CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> null != o).collect(Collectors.toMap(MesProduceSn::getProductSn, o -> o)); + //封装 读/扫主条件信息到进料主条码数据信息中 List productionPsInContextList = new ArrayList<>(); if (!CollectionUtils.isEmpty(productSnList)) productSnList.stream().filter(o -> null != o).forEach(o -> createProductionPsInContext(reqBean, resultBean, stepResult, workCell, produceSnMap, o, productionPsInContextList)); @@ -93,9 +97,10 @@ public class MesProductSnCheckStepService extends BaseStepService { //保存进料主条码数据 productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList); - return CollectionUtils.isEmpty(produceSnMap) ? - execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("上下文中的主条码[%s]验证条码状态成功!", productSnList)) : - execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("上下文中的主条码[%s]验证条码状态成功,进料零件主条码即将标记状态[未知]!", productSnList)); + //变更主条码状态为未知 + saveProduceSnList(reqBean, resultBean, produceSnList); + + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("上下文中的主条码[%s]验证条码状态成功!", productSnList)); } @@ -105,7 +110,7 @@ public class MesProductSnCheckStepService extends BaseStepService { } //获取进料主条码数据信息 - private Map checkProduceSnValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List productSnList) { + private List checkProduceSnValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, List productSnList) { //根据零件条码查询零件条码信息 List produceSnList = produceSnExtService.getProduceSnList(reqBean.getOrganizeCode(), productSnList); @@ -115,7 +120,7 @@ public class MesProductSnCheckStepService extends BaseStepService { //循环获取进料主条码数据信息 produceSnList.stream().filter(o -> null != o).forEach(o -> checkProduceSnValid(reqBean, stepResult, productionProcessContext, o)); - return !stepResult.isCompleted() ? null : produceSnList.stream().filter(o -> null != o).collect(Collectors.toMap(MesProduceSn::getProductSn, o -> o)); + return !stepResult.isCompleted() ? null : produceSnList; } @@ -127,7 +132,8 @@ public class MesProductSnCheckStepService extends BaseStepService { if (MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() != produceSn.getQcStatus()) return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]质量状态[%s]", suffixMsg, produceSn.getProductSn(), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(produceSn.getQcStatus()))); - if (MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue() != produceSn.getSnStatus() || (MesExtEnumUtil.PRODUCE_SN_STATUS.UNKNOW.getValue() == produceSn.getSnStatus() && !produceSn.getWorkCellCode().equals(reqBean.getWorkCellCode()))) + if (MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue() != produceSn.getSnStatus() || + (MesExtEnumUtil.PRODUCE_SN_STATUS.UNKNOW.getValue() == produceSn.getSnStatus() && !produceSn.getWorkCenterCode().equals(reqBean.getWorkCenterCode()) && !produceSn.getWorkCellCode().equals(reqBean.getWorkCellCode()))) return stepResult.isCompleted(false).msg(String.format("%s主条码[%s]条码状态[%s]", suffixMsg, produceSn.getProductSn(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSn.getSnStatus()))); return stepResult; @@ -141,4 +147,12 @@ public class MesProductSnCheckStepService extends BaseStepService { productionPsInContextList.add(productionPsInContext); } + //变更主条码状态为未知 + private void saveProduceSnList(StationRequestBean reqBean, StationResultBean resultBean, List produceSnList) { + if (CollectionUtils.isEmpty(produceSnList)) return; + Map psMap = produceSnList.stream().filter(o -> null != o).collect(Collectors.toMap(MesProduceSn::getProductSn, MesProduceSn::getId)); + produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.UNKNOW.getValue(), new ArrayList<>(psMap.values())); + this.sendMessage(reqBean, resultBean, String.format("主条码%s信息已变更[%s]状态", psMap.keySet().toString(), MesExtEnumUtil.PRODUCE_SN_STATUS.UNKNOW.getDescription()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnMarkUnkonwStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnMarkUnkonwStepService.java deleted file mode 100644 index 51edb19..0000000 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnMarkUnkonwStepService.java +++ /dev/null @@ -1,58 +0,0 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; - -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; -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.mes.pcn.serviceimpl.fsm.BaseStepService; -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 lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * @Description : 主条码标记未知工步 - * @Author : wangjie - **/ -@Slf4j -@Service("mesProductSnMarkUnkonwStepService") -public class MesProductSnMarkUnkonwStepService extends BaseStepService { - - @Autowired - private IMesProductionProcessContextStepService productionProcessContextStepService; - - @Autowired - private IMesProductionDispatchContextStepService productionDispatchContextStepService; - - @Autowired - private IMesProduceSnExtService produceSnExtService; - - //TODO 更新条码 未知 单独工步 - - //TODO 装配件工步 判断空腔条码 - - @Override - public StepResult execute(StationRequestBean reqBean) { - - StationResultBean resultBean = new StationResultBean(); - - StepResult stepResult = StepResult.getSuccessComplete(); - - //获取上下文信息 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); - - //获取生产过程上下文对象有异常信息 抛出异常 - if (!productionProcessContext.getSuccess()) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, productionProcessContext.getMessage()); - - //存储生产过程上下文对象 - productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); - - return stepResult; - - } - - - -} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java index 229a71f..d33ea9a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java @@ -394,6 +394,23 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PROD_RULE_DATA_CONTEXT); } + //获取生产线的当前班组班次信息 + @Override + public MesProdShiftContext getMesProdShiftKvBean(String orgainzeCode, String workCenterCode) { + List stationKvBeans = getProdShiftDataContext(orgainzeCode, workCenterCode); + + MesProdShiftContext mesProdShiftContext = new MesProdShiftContext(); + if (CollectionUtils.isEmpty(stationKvBeans)) { + return null; + } + StationKvBean shiftGroupKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftGroup")).findFirst().orElse(null); + StationKvBean shiftCodeKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftCode")).findFirst().orElse(null); + + mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftGroupKvBean.getValue()); + mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftCodeKvBean.getValue()); + return mesProdShiftContext; + } + //获取上下文班次班组信息 @Override public List getProdShiftDataContext(String orgainzeCode, String workCenterCode) { @@ -464,6 +481,42 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PRODUCTION_STATISTICS_CONTEXT); } + //获取手动选择的腔数及工单信息上下文 + @Override + public String getFunctionChooseCavityOrderContext(StationRequestBean reqBean) { + return getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_ORDER); + } + + //保存手动选择的腔数及工单信息上下文 腔数=工单个数 数据格式: 腔数;工单1;工单2;工单3 + @Override + public Boolean saveFunctionChooseCavityOrderContext(StationRequestBean reqBean, String value) { + if (StringUtils.isEmpty(value)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_ORDER, value); + } + + //删除手动选择的腔数及工单信息上下文 + @Override + public void deleteFunctionChooseCavityOrderContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FUNCTION_CHOOSE_CAVITY_ORDER); + } + + @Override + public List getMesRawPartChargingDataContext(StationRequestBean reqBean) { + String mesRawPartChargingDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT"); + return !StringUtils.isEmpty(mesRawPartChargingDataJson) ? JSONObject.parseArray(mesRawPartChargingDataJson, MesRawPartCharging.class) : null; + } + + @Override + public Boolean saveMesRawPartChargingDataContext(StationRequestBean reqBean, List mesRawPartChargingList) { + if (CollectionUtils.isEmpty(mesRawPartChargingList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT", JSONObject.toJSONString(mesRawPartChargingList)); + } + + @Override + public void deleteMesRawPartChargingDataContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT"); + } + @@ -503,36 +556,5 @@ public class MesProductionDispatchContextStepService extends BaseStepService imp deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "OUT_PRODUCE_SN_DATA_CONTEXT"); } - @Override - public List getMesRawPartChargingDataContext(StationRequestBean reqBean) { - String mesRawPartChargingDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT"); - return !StringUtils.isEmpty(mesRawPartChargingDataJson) ? JSONObject.parseArray(mesRawPartChargingDataJson, MesRawPartCharging.class) : null; - } - - @Override - public Boolean saveMesRawPartChargingDataContext(StationRequestBean reqBean, List mesRawPartChargingList) { - if (CollectionUtils.isEmpty(mesRawPartChargingList)) return false; - return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT", JSONObject.toJSONString(mesRawPartChargingList)); - } - - @Override - public void deleteMesRawPartChargingDataContext(StationRequestBean reqBean) { - deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), "RAW_PART_CHARGING_DATA_CONTEXT"); - } - - @Override - public MesProdShiftContext getMesProdShiftKvBean(String orgainzeCode, String workCenterCode) { - List stationKvBeans = getProdShiftDataContext(orgainzeCode, workCenterCode); - - MesProdShiftContext mesProdShiftContext = new MesProdShiftContext(); - if (CollectionUtils.isEmpty(stationKvBeans)) { - return null; - } - StationKvBean shiftGroupKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftGroup")).findFirst().orElse(null); - StationKvBean shiftCodeKvBean = stationKvBeans.stream().filter(stationKvBean -> Objects.equal(stationKvBean.getKey(), "shiftCode")).findFirst().orElse(null); - mesProdShiftContext.setShiftCode(shiftGroupKvBean == null ? null : shiftGroupKvBean.getValue()); - mesProdShiftContext.setShiftGroup(shiftCodeKvBean == null ? null : shiftCodeKvBean.getValue()); - return mesProdShiftContext; - } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java index 203e6fa..bbddfab 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java @@ -54,6 +54,9 @@ public class MesProductionProcessContextStepService extends BaseStepService impl return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.BASE_DATA_CONTEXT, JSONObject.toJSONString(productionProcessContext)); } + @Override + public void deleteProductionProcessContext(StationRequestBean reqBean) { deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.BASE_DATA_CONTEXT); } + //获取生产过程上下文对象 @Override public MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean) { diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index ba3e600..cf3284e 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -48,6 +48,8 @@ public class MesPcnExtConstWords { public static final String MODIFY_USER = "modifyUser"; // 修改人 public static final String USER_INFO = "userInfo"; + // 同步标志 + public static final String SYSTEM_SYNC_STATUS = "systemSyncStatus"; // 零件编码 public static final String PART_NO = "partNo"; // 零件名称 @@ -112,6 +114,8 @@ public class MesPcnExtConstWords { public static final String PRODUCT_SN = "productSn"; // 客户条码 public static final String CUST_SN = "custSn"; + // 条码状态 + public static final String SN_STATUS = "snStatus"; //设备数据变量读写访问配置 @@ -151,14 +155,18 @@ public class MesPcnExtConstWords { // 工位/工步 参数按钮事件值 public static final String FUNCTION_VALUE = "FUNCTION_VALUE"; - // 工位参数按钮事件: 跳过工序 + // 工位参数按钮事件参数: 是否验证密码 + public static final String IS_CHECK_WCPC_PWD = "IS_CHECK_WCPC_PWD"; + // 工位参数按钮事件参数: 是否二次确认 + public static final String IS_CONFIRM = "IS_CONFIRM"; + // 工位参数按钮事件: 重置工序 public static final String FUNCTION_JUMP_PROCESS = "FUNCTION_JUMP_PROCESS"; - // 工位参数按钮事件: 强过状态点(工步集) + // 工位参数按钮事件: 强过工步集 public static final String FUNCTION_JUMP_STATE = "FUNCTION_JUMP_STATE"; - // 工位参数按钮事件: 重置工位上下文 + // 工位参数按钮事件: 重置上下文 public static final String FUNCTION_RESET_CELL_CONTEXT = "FUNCTION_RESET_CELL_CONTEXT"; - // 工位参数按钮事件: 选择工单 - public static final String FUNCTION_CHOOSE_WORK_ORDER = "FUNCTION_CHOOSE_WORK_ORDER"; + // 工位参数按钮事件: 选择工单(先选腔数, 再选工单) + public static final String FUNCTION_CHOOSE_CAVITY_ORDER = "FUNCTION_CHOOSE_CAVITY_ORDER"; // 工位参数按钮事件: 切换工位 public static final String FUNCTION_SWITCH_CELL = "FUNCTION_SWITCH_CELL"; @@ -177,6 +185,8 @@ public class MesPcnExtConstWords { public static final String EMPTY = ""; // ; public static final String SEMICOLON = ";"; + // , + public static final String comma = ","; // 定制页面名称(默认) public static final String CUSTOM_PAGE_NAME_DEFAULT = "CUSTOM_PAGE_NAME_DEFAULT"; @@ -238,7 +248,6 @@ public class MesPcnExtConstWords { public static final String CHANNEL = "channel"; public static final String EQUIPMENT_ID = "equipmentId"; - @Deprecated public static final String OPC_WRITE_VARIABLE="/api/OPCService/WriteVariable"; @Deprecated From b41d8c0c5eb8c4c188847a88f8bf355b5eef4957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Sun, 9 Jun 2024 13:47:19 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=B1=95=E7=A4=BA=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../station/MesProductionNoSortModuleService.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java index 1f66007..a9fa869 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java @@ -75,15 +75,14 @@ public class MesProductionNoSortModuleService extends BaseModuleService { StationResultBean resultBean = getStationResultBean(reqBean, moduleContentContext, prodShiftDataContext); this.sendMessage(reqBean, resultBean); - // 整合班次加工数量 - if (mesWorkCell.getIsShowMsg() != null && Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.HISTOGRAM.getValue(),mesWorkCell.getIsShowMsg())) { - List productionStatisticsContext = mesProductionDispatchContextStepService.getProductionStatisticsContext(reqBean); - if (CollectionUtils.isEmpty(productionStatisticsContext)) { - StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), new StationKvBean(new StringJoiner(MesPcnExtConstWords.AND).add(mesProdShiftKvBean.getShiftGroup()).add(mesProdShiftKvBean.getShiftCode()).toString(), "加工次数", "0")); - } - StationResultBean shiftCountBean = getStationResultBean(reqBean, productionStatisticsContext,mesWorkCell); - this.sendMessage(reqBean, shiftCountBean); + // 整合班次加工数量 + List productionStatisticsContext = mesProductionDispatchContextStepService.getProductionStatisticsContext(reqBean); + if (CollectionUtils.isEmpty(productionStatisticsContext)) { + productionStatisticsContext = StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), new StationKvBean(new StringJoiner(MesPcnExtConstWords.AND).add(mesProdShiftKvBean.getShiftGroup()).add(mesProdShiftKvBean.getShiftCode()).toString(), "加工次数", "0")); } + StationResultBean shiftCountBean = getStationResultBean(reqBean, productionStatisticsContext,mesWorkCell); + this.sendMessage(reqBean, shiftCountBean); + From 120a232840bb05d295d5ee86755ce0d1d58964bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Sun, 9 Jun 2024 14:58:46 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=B1=95=E7=A4=BA=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/controller/busi/MesWorkCenterController.java | 2 +- .../pcn/apiservice/controller/busi/MesWorkOrderController.java | 6 +++++- .../pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java | 10 +++++++--- .../serviceimpl/step/MesMaterialReadStepService.java | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkCenterController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkCenterController.java index 145af3c..0309adf 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkCenterController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkCenterController.java @@ -39,7 +39,7 @@ public class MesWorkCenterController { try { - return ResultBean.success("查询成功").setResultList(workCenterService.queryMesWorkCenterList(workCenter)); + return ResultBean.success("查询DefectActionService成功").setResultList(workCenterService.queryMesWorkCenterList(workCenter)); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java index e5e5199..7422395 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesWorkOrderController.java @@ -3,9 +3,11 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; @@ -15,7 +17,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Description : @@ -52,7 +57,6 @@ public class MesWorkOrderController { public ResultBean queryWorkOrderByPager(MesWorkOrder workOrder, Pager pager) { try { - return ResultBean.success("查询成功").setListPager(workOrderService.queryMesWorkOrderListByPager(workOrder, pager)); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index dcaf9d8..4948bb4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -22,6 +22,7 @@ import org.springframework.util.StringUtils; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Description : @@ -85,7 +86,10 @@ public class MesWorkOrderService implements IMesWorkOrderService { } private DdlPackBean getDdlPackBean(MesWorkOrder workOrder) { - + List list = Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(workOrder.getStatusList())) { + workOrder.setStatusList(list); + } DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(workOrder.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringLikerPack(workOrder.getWorkCellCode(), "workCellCode", packBean); @@ -102,7 +106,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { Map mesPartMap = new HashMap<>(); MesPart mesPart = null; //查询工单状态 - Integer[] orderStatus =new Integer[]{MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),MesExtEnumUtil.ORDER_STATUS.process.getValue()}; + Integer[] orderStatus =new Integer[]{MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(),MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()}; for (Map.Entry> mesProduceSn : mesWorkOrderMap.entrySet()) { List mesWorkOrderList = mesProduceSn.getValue(); //获取物料信息 @@ -165,7 +169,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } else if (Objects.equals(oldMesWorkOrder.getReportedQty(), oldMesWorkOrder.getQty())) { oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else { - oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue()); + oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } ConvertBean.serviceModelUpdate(oldMesWorkOrder,userName); workOrderRepository.update(oldMesWorkOrder); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java index f71167b..b9b48ad 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java @@ -33,7 +33,7 @@ import java.util.Optional; /** * @Description : 从料桶中获取原材料 - * @Author : wangjie + * @Author : zxw **/ @Slf4j @Service("mesMaterialReadStepService") From c61c9cf2e2f160adce11c537bff784926239b349 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sun, 9 Jun 2024 15:21:55 +0800 Subject: [PATCH 4/6] step --- ...esEquipVariableCfgRuleMatchDispatchService.java | 1 + .../step/MesEquipByPassReadStepService.java | 112 +++++++++++++++++++++ .../mes/pcn/pojo/context/MesCellEquipContext.java | 6 -- 3 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEquipVariableCfgRuleMatchDispatchService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEquipVariableCfgRuleMatchDispatchService.java index ef58a84..4f8e777 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEquipVariableCfgRuleMatchDispatchService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesEquipVariableCfgRuleMatchDispatchService.java @@ -31,6 +31,7 @@ public class MesEquipVariableCfgRuleMatchDispatchService implements IMesEquipVar case PRODUCT_SCRAP: case PRODUCT_SUSPICIOUS: case READY_SIGNAL: + case BYPASS: return matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, variableCategory, collectContextList, "mesEvcRuleMatchCompareValueService"); case FIRST_MOULD_NO: case MOULD_NO: diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java new file mode 100644 index 0000000..eb909c4 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java @@ -0,0 +1,112 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableCfgRuleMatchDispatchService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipmentLogExtService; +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.MesCellEquipContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipLogDispatchContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; +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.util.MesExtEnumUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.List; + +/** + * @Description : 读BYPASS信号工步 + * @Author : wangjie + **/ +@Slf4j +@Service("mesEquipByPassReadStepService") +public class MesEquipByPassReadStepService extends BaseStepService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private IMesEquipmentLogExtService equipmentLogExtService; + + @Autowired + private IMesEquipVariableCfgRuleMatchDispatchService equipVariableCfgRuleMatchService; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + //获取上下文信息 + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean); + + if (productionProcessContext.getSuccess()) return stepResult.isCompleted(false); + + //当前工位使用的设备 + MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); + + if (null == cellEquipContext || StringUtils.isEmpty(cellEquipContext.getCtrlByPass())) return stepResult.isCompleted(false); + + //获取生产过程上下文对象有异常信息 + if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) return stepResult.isCompleted(false).msg(productionProcessContext.getMessage()); + + //从上下文的设备数据变量接口逻辑对象集合中取出当前设备信息的逻辑类型对应的接口逻辑对象集合 + List equipmentVariableCfgList = productionProcessContext.getEquipVariableCfgListByVct(); + + //根据变量类别[就绪信号]搜集设备数据变量接口逻辑信息 + equipmentVariableCfgList = productionProcessContextStepService.collectEquipmentVariableCfgList(equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.BYPASS.getValue()); + + //配置错误 + if (!productionProcessContextStepService.checkNecessaryEquipmentVariableCfgAndValue(productionProcessContext, cellEquipContext, equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.BYPASS.getValue()).getSuccess()) + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, productionProcessContext.getMessage()); + + //搜集设备数据变量接口逻辑信息中的二级变量 + List categoryLevelTwoList = productionProcessContextStepService.collectCategoryLevelTwoList(equipmentVariableCfgList); + + //根据变量类型与二级变量获取设备数据变量信息 + List equipmentVariableList = productionProcessContextStepService.findEquipmentVariableList(productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue(), categoryLevelTwoList); + + //配置错误 + if (!productionProcessContextStepService.checkIsEmptyEquipmentVariableList(productionProcessContext, cellEquipContext, equipmentVariableList, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION, categoryLevelTwoList).getSuccess()) + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, productionProcessContext.getMessage()); + + //获取设备LOG采集数据 + MesEquipLogDispatchContext equipLogDispatchContext = equipmentLogExtService.doHandleEquipmentLogList(cellEquipContext, equipmentVariableList, equipmentVariableCfgList); + this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + + //匹配BYPASS有效性 + return matchByPassValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); + + } + + private StepResult matchByPassValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, + MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesEquipLogDispatchContext equipLogDispatchContext) { + //未采集到数据 + if (!equipLogDispatchContext.getIsCollectValue()) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("当前未读取到设备[%s]BYPASS信号,持续监听中...", cellEquipContext.getEquipmentCode())); + + //匹配BYPASS信号有效性 + Boolean result = (Boolean) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.BYPASS.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList()); + + //发送BYPASS信号给客户端 + this.sendMessage(reqBean, resultBean.busiType(MesPcnEnumUtil.STATION_BUSI_TYPE.BYPASS_MODULE.getValue()).dataType(MesPcnEnumUtil.STATION_DATA_TYPE.COLOR.getValue()).resultObj(result ? MesExtEnumUtil.COLOR.GREEN.getValue() : MesExtEnumUtil.COLOR.RED.getValue())); + + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, + true, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("当前已读取到设备[%s]BYSS信号[%s]!", cellEquipContext.getEquipmentCode(), resultBean.getResultObj())); + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesCellEquipContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesCellEquipContext.java index 510a089..e5de13e 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesCellEquipContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesCellEquipContext.java @@ -47,12 +47,6 @@ public class MesCellEquipContext implements Serializable { @ApiParam("是否控制byPass") private Integer ctrlByPass; - @ApiParam("是否监控停机") - private Integer monitorDown; - - @ApiParam("是否监控停机") - private String monitorDownTime; - @ApiParam("设备质量") private Integer quality = MesExtEnumUtil.EQUIP_LOG_QUALITY.QUALITY.getValue(); From 182ec47820f6f5b49186e96cf6d5a07691c3b358 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sun, 9 Jun 2024 16:43:45 +0800 Subject: [PATCH 5/6] pcn --- .../apiservice/serviceimpl/busi/MesWorkOrderService.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 4948bb4..684e36a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -86,15 +86,20 @@ public class MesWorkOrderService implements IMesWorkOrderService { } private DdlPackBean getDdlPackBean(MesWorkOrder workOrder) { - List list = Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(workOrder.getStatusList())) { - workOrder.setStatusList(list); - } + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(workOrder.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringLikerPack(workOrder.getWorkCellCode(), "workCellCode", packBean); DdlPreparedPack.getStringLikerPack(workOrder.getWorkOrderNo(), "workOrderNo", packBean); - DdlPreparedPack.getInPackList(workOrder.getStatusList(), "status", packBean); + + if (!StringUtils.isEmpty(workOrder.getWorkOrderStatus())) DdlPreparedPack.getNumEqualPack(workOrder.getStatusList(), "workOrderStatus", packBean); + else DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()).collect(Collectors.toList()), "workOrderStatus", packBean); + + DdlPreparedPack.getStringBiggerPack(workOrder.getStartTimeStart(), "planStartTime", packBean); + DdlPreparedPack.getStringSmallerPack(workOrder.getStartTimeEnd(), "planStartTime", packBean); + DdlPreparedPack.getStringBiggerPack(workOrder.getEndTimeStart(), "planEndTime", packBean); + DdlPreparedPack.getStringSmallerPack(workOrder.getEndTimeEnd(), "planEndTime", packBean); + return packBean; } From b49d55575b8d6ae7f1948456452b1833c5661800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Sun, 9 Jun 2024 16:49:01 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=B1=95=E7=A4=BA=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../station/MesProductionNoSortModuleService.java | 5 +++-- .../serviceimpl/step/MesMaterialReadStepService.java | 5 ++++- .../step/MesProductionReocrdGenerateStepService.java | 13 +++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java index a9fa869..58e1568 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java @@ -123,11 +123,12 @@ public class MesProductionNoSortModuleService extends BaseModuleService { dataType = MesPcnEnumUtil.STATION_DATA_TYPE.IMAGE.getValue(); reqJson.put("url", url); resultBean.setResultObj(reqJson); - } else { + } + + if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesWorkCell.getIsCountFinish())) { dataType = MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue(); resultBean.setResultList(productionStatisticsContext); } - resultBean.setDataType(dataType); resultBean.setCustomPageName(MesPcnExtConstWords.CUSTOM_PAGE_NAME_WORK_CELL); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java index b9b48ad..b710086 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMaterialReadStepService.java @@ -99,6 +99,9 @@ public class MesMaterialReadStepService extends BaseStepService { * @return */ private List getListByParentDetailId(Long id){ + if (id == null) { + return null; + } List list = new ArrayList<>(); DdlPackBean packBean = DdlPackBean.getDdlPackBean(); @@ -111,7 +114,7 @@ public class MesMaterialReadStepService extends BaseStepService { for (MesRawPartCharging mesRawPartCharging : parentList) { List chilrenList = getListByParentDetailId(mesRawPartCharging.getPackageDetailId()); if (CollectionUtils.isEmpty(chilrenList)) { - list.addAll(parentList); + list.add(mesRawPartCharging); } } return list; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionReocrdGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionReocrdGenerateStepService.java index 996cb9a..e45d428 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionReocrdGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionReocrdGenerateStepService.java @@ -2,6 +2,7 @@ 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.MesCellEquipContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; @@ -9,6 +10,7 @@ import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; @@ -22,6 +24,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.hutool.core.date.DateUtil; +import com.google.common.base.Objects; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -59,6 +62,8 @@ public class MesProductionReocrdGenerateStepService extends BaseStepService { public StepResult execute(StationRequestBean reqBean) { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getEquipmentVariableList(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PRODUCTION.getValue()); + MesWorkCell mesWorkCell = productionProcessContext.getWorkCell(); + List mesProduceSns = mesProductionDispatchContextStepService.getOutProduceSnDataContext(reqBean); List mesProductionRecords = new ArrayList<>(); @@ -70,10 +75,10 @@ public class MesProductionReocrdGenerateStepService extends BaseStepService { }); mesProductionRecordRepository.saveAll(mesProductionRecords); - - MesProdShiftContext mesProdShiftKvBean = mesProductionDispatchContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); - // 保存班次加工数量上下文 - mesProductionDispatchContextStepService.addProductionStatisticsContext(reqBean,mesProduceSns.size()); + if (Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesWorkCell.getIsCountFinish())) { + // 保存班次加工数量上下文 + mesProductionDispatchContextStepService.addProductionStatisticsContext(reqBean,mesProduceSns.size()); + } return StepResult.getSuccessComplete(); }