From 98f999bc7ed2faf10bba7296e15a918a6dc85e63 Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Sat, 28 Dec 2024 14:25:18 +0800 Subject: [PATCH] =?UTF-8?q?=2044630=20=E8=AF=BB=E8=83=8E=E8=86=9C=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E5=B7=A5=E6=AD=A5=EF=BC=8C=E6=97=A0=E6=B3=95=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=9F=94=E6=80=A7=E7=84=8A=E6=B5=81=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesManyCellTriggerJumpProcessStepService.java | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesManyCellTriggerJumpProcessStepService.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesManyCellTriggerJumpProcessStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesManyCellTriggerJumpProcessStepService.java new file mode 100644 index 0000000..2e8ebb5 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesManyCellTriggerJumpProcessStepService.java @@ -0,0 +1,91 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; +import cn.estsh.i3plus.mes.pcn.websocket.StationWebSocket; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellExtendCfg; +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.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 + **/ +@Slf4j +@Service("mesManyCellTriggerJumpProcessStepService") +public class MesManyCellTriggerJumpProcessStepService extends BaseStepService { + + @Autowired + private IFsmCommonService fsmCommonService; + + @Autowired + private IMesProdOrgExtService prodOrgExtService; + + @Autowired + private IShippingDispatchService shippingDispatchService; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StepResult stepResult = StepResult.getSuccessComplete(); + + if (StringUtils.isEmpty(reqBean.getScanInfo())) return stepResult; + + StationResultBean resultBean = new StationResultBean(); + + + + + + + + + + //根据生产线代码,工位代码查询主子工位实虚关系信息(排除当前工位) + List workCellExtendCfgList = prodOrgExtService.getWorkCellExtendCfgRvListByBak(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); + + if (CollectionUtils.isEmpty(workCellExtendCfgList)) return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("生产线[%s]工位[%s]未配置实虚工位对应关系", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); + + for (MesWorkCellExtendCfg workCellExtendCfg : workCellExtendCfgList) { + + if (null == workCellExtendCfg) continue; + + if (workCellExtendCfg.getWorkCenterCodeBak().equals(reqBean.getWorkCenterCode()) && workCellExtendCfg.getWorkCellCodeBak().equals(reqBean.getWorkCellCode())) continue; + + //验证下个工位是否在线 + String clientInfo = shippingDispatchService.getActorClientInfo(reqBean.getOrganizeCode(), workCellExtendCfg.getWorkCenterCodeBak(), workCellExtendCfg.getWorkCellCodeBak()); + if (CollectionUtils.isEmpty(StationWebSocket.getStationWebSocketList(clientInfo))) continue; + + //调用多工位场景触发定位分屏工步, CLIENT_INFO是必要传参 + reqBean.getDataMap().put(MesPcnExtConstWords.CLIENT_INFO, clientInfo); + return ((IStepService) SpringContextsUtil.getBean("mesManyCellTriggerTabSwitchStepService")).executeInState(reqBean); + + } + + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, + String.format("生产线[%s]工位[%s]切换分屏失败!原因:实体生产线[%s]工位[%s]%s!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), + workCellExtendCfgList.get(0).getWorkCenterCode(), workCellExtendCfgList.get(0).getWorkCellCode(), workCellExtendCfgList.size() == 1 ? "仅关联了当前操作的虚拟工位" : "关联的其他虚拟工位当前均不在线")); + + } + + //未知腔数配置【工位参数】 + private String getManyCellJumpProcess(StationRequestBean reqBean) { + String cavityUnknownCfg = fsmCommonService.handleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.CAVITY_UNKNOWN_CFG); + return (!StringUtils.isEmpty(cavityUnknownCfg) && cavityUnknownCfg.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? cavityUnknownCfg : null; + } + +}