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 f14df06..2da87b4 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 @@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; +import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import io.swagger.annotations.ApiOperation; @@ -18,7 +19,10 @@ public interface IMesProductionProcessContextStepService { Boolean doCacheContext(StationRequestBean reqBean, String item, Object o); @ApiOperation(value = "获取上下文对象") - Object getCachedContext(StationRequestBean reqBean, String item); + String getCachedContext(StationRequestBean reqBean, String item); + + @ApiOperation(value = "获取展示组件MODULE_CONTENT内容") + List> getCachedModuleContext(StationRequestBean reqBean); @ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】") Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java index 581351d..53916b2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyReadStepService.java @@ -112,7 +112,7 @@ public class MesAssemblyReadStepService extends BaseStepService { if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]装配件条码,持续监听中...", cellEquipContext.getEquipmentCode())); - //保存设备当前一轮工序的装配件信息 + //保存设备当前一轮工序待验证的装配件条码信息 productionProcessContext.assemblySnJson(equipVariableCollectContextList); return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java index a1dbd1a..37ee7c1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyScanStepService.java @@ -1,14 +1,20 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.platform.common.tool.TimeTool; 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; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; /** * @Description : 扫描装配件条码工步 @@ -22,23 +28,36 @@ public class MesAssemblyScanStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Override + public StepResult guide(StationRequestBean reqBean) { + return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描装配件条码!"); + } + + @Override public StepResult execute(StationRequestBean reqBean) { StationResultBean resultBean = new StationResultBean(); StepResult stepResult = StepResult.getSuccessComplete(); - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); - - + if (StringUtils.isEmpty(reqBean.getScanInfo())) execSendGuideAndThrowEx(reqBean, resultBean, "请扫描装配件条码!"); + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean); + //保存设备当前一轮工序待验证的装配件条码信息 + productionProcessContext.assemblySnJson(getAssemblySnJson(reqBean)); return stepResult; } + private List getAssemblySnJson(StationRequestBean reqBean) { + + List equipVariableCollectContextList = new ArrayList<>(); + equipVariableCollectContextList.add(new MesEquipVariableCollectContext(reqBean.getOrganizeCode(), reqBean.getScanInfo(), TimeTool.getNowTime(true))); + return equipVariableCollectContextList; + + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowStepService.java new file mode 100644 index 0000000..cb129f8 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowStepService.java @@ -0,0 +1,35 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +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("mesAssemblyShowStepService") +public class MesAssemblyShowStepService extends BaseStepService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + + return stepResult; + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java index 2308933..1eba828 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesFirstMouldNoReadStepService.java @@ -9,12 +9,13 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCfgCollectContex import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; 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.api.iservice.base.IPartService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; +import cn.estsh.i3plus.platform.common.util.MesPcnConstWords; 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.bean.MesMouldMultiCavity; -import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; @@ -26,9 +27,11 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; /** * @Description : 读头道模具号工步 @@ -50,6 +53,9 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { @Autowired private IMesMouldMultiCavityService mouldMultiCavityService; + @Autowired + private IPartService partService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -115,15 +121,63 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); - List mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), firstMouldNo); + //验证一模多腔信息 + List mouldMultiCavityList = getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), firstMouldNo, true); - if (CollectionUtils.isEmpty(mouldMultiCavityList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("当前设备[%s]与读取到的头道模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentCode(), firstMouldNo)); + //获取物料信息 + Map partDataMap = getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList); - //保存设备当前一轮工序的头道模具号与一模多腔信息 - productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList); + //保存设备当前一轮工序的头道模具号,一模多腔信息,物料信息 + productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap); + + //更新展示组件MODULE_CONTENT内容 + productionProcessContextStepService.doCacheContext(reqBean, MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), getModuleContextData(reqBean, mouldMultiCavityList, true)); return stepResult; } + public List getMouldMultiCavityList(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, String equipmentCode, String mouldNo, Boolean isFirstMouldNo) { + + List mouldMultiCavityList = productionProcessContext.getMouldCavityList(); + + if (!checkCachedMouldMultiCavityValid(mouldMultiCavityList, equipmentCode, mouldNo)) mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), equipmentCode, mouldNo); + + //配置错误 抛出异常 + if (CollectionUtils.isEmpty(mouldMultiCavityList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("当前设备[%s]与读取到的%s模具号[%s]未维护有效的一模多腔信息!", equipmentCode, isFirstMouldNo ? "头道" : MesPcnExtConstWords.EMPTY, mouldNo)); + + return mouldMultiCavityList; + + } + + private Boolean checkCachedMouldMultiCavityValid(List mouldMultiCavityList, String equipmentCode, String firstMouldNo) { + return (!CollectionUtils.isEmpty(mouldMultiCavityList) && mouldMultiCavityList.get(0).getEquipmentCode().equals(equipmentCode) && mouldMultiCavityList.get(0).getMouldNo().equals(firstMouldNo)) ? true : false; + } + + public Map getPartDataMap(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, List mouldMultiCavityList) { + + Map partDataMap = productionProcessContext.getPartDataMap(); + + List partNoList = (mouldMultiCavityList.stream().filter(o -> (null != o)).map(MesMouldMultiCavity::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + if (!CollectionUtils.isEmpty(partDataMap) && partDataMap.keySet().containsAll(partNoList) && partNoList.containsAll(partDataMap.keySet())) return partDataMap; + + Map finalPartDataMap = partService.getPartMap(reqBean.getOrganizeCode(), partNoList); + + //物料信息缺失 抛出异常 + List filterList = CollectionUtils.isEmpty(finalPartDataMap) ? null : partNoList.stream().filter(o -> (null != o && !finalPartDataMap.containsKey(o))).collect(Collectors.toList()); + + if (CollectionUtils.isEmpty(partDataMap) || !CollectionUtils.isEmpty(filterList)) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("请检查物料信息,物料编码%s信息不存在!", CollectionUtils.isEmpty(finalPartDataMap) ? partNoList.toString() : filterList.toString())); + + return finalPartDataMap; + + } + + public List> getModuleContextData(StationRequestBean reqBean, List mouldMultiCavityList, Boolean isFirstMouldNo) { + List> moduleContextData = new ArrayList<>(); + mouldMultiCavityList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(moduleContextData, + new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.MOULD_NO, isFirstMouldNo ? "头道模具号" : "模具号", o.getMouldNo()), new StationKvBean(MesPcnConstWords.PART_NO, "物料编码", o.getPartNo()), new StationKvBean(MesPcnConstWords.PART_NAME, "物料名称", o.getPartName()))); + return moduleContextData; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldNoReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldNoReadStepService.java index 415110e..bf9c713 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldNoReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesMouldNoReadStepService.java @@ -11,10 +11,7 @@ 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.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.bean.MesMouldMultiCavity; -import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; @@ -50,6 +47,9 @@ public class MesMouldNoReadStepService extends BaseStepService { @Autowired private IMesMouldMultiCavityService mouldMultiCavityService; + @Autowired + private MesFirstMouldNoReadStepService firstMouldNoReadStepService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -97,6 +97,9 @@ public class MesMouldNoReadStepService extends BaseStepService { //验证模具号的有效性 if (stepResult.isCompleted()) checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, collectContextList); + //保存设备当前一轮工序的模具号 + if (stepResult.isCompleted()) productionProcessContext.mouldNo((MesEquipVariableCollectContext) stepResult.getObj()); + productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -115,23 +118,21 @@ public class MesMouldNoReadStepService extends BaseStepService { String mouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); - if (StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) && !checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, mouldNo).isCompleted()) return stepResult; + stepResult.obj(equipVariableCollectContextList.get(0)); - //保存设备当前一轮工序的模具号 - productionProcessContext.mouldNo(equipVariableCollectContextList.get(0)); - - return stepResult; - - } + if (!StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) || !StringUtils.isEmpty(productionProcessContext.getWorkOrderDataJson())) return stepResult; - private StepResult checkMouldNoValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, String mouldNo) { + //磨具号当头道模具号的使用 + List mouldMultiCavityList = firstMouldNoReadStepService.getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), mouldNo, false); - List mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode(), mouldNo); + //获取物料信息 + Map partDataMap = firstMouldNoReadStepService.getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList); - if (CollectionUtils.isEmpty(mouldMultiCavityList)) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("当前设备[%s]与读取到的模具号[%s]未维护有效的一模多腔信息!", cellEquipContext.getEquipmentCode(), mouldNo)); + //保存设备当前一轮工序的一模多腔信息,物料信息 + productionProcessContext.mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap); - //保存设备当前一轮工序的一模多腔信息 - productionProcessContext.mouldCavityJson(mouldMultiCavityList); + //更新展示组件MODULE_CONTENT内容 + productionProcessContextStepService.doCacheContext(reqBean, MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), firstMouldNoReadStepService.getModuleContextData(reqBean, mouldMultiCavityList, false)); return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java index 12fd253..40eee53 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnReadStepService.java @@ -112,7 +112,7 @@ public class MesProductSnReadStepService extends BaseStepService { if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]主条码,持续监听中...", cellEquipContext.getEquipmentCode())); - //保存设备当前一轮工序的主信息 + //保存设备当前一轮工序的待验证的主条码信息 productionProcessContext.productSnJson(equipVariableCollectContextList); return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionProcessContextStepService.java index 1f00fd6..a39891a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionProcessContextStepService.java @@ -10,10 +10,12 @@ import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.model.StationKvBean; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -56,6 +58,12 @@ public class MesProductionProcessContextStepService extends BaseStepService impl } @Override + public List> getCachedModuleContext(StationRequestBean reqBean) { + String moduleContent = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue()); + return StringUtils.isEmpty(moduleContent) ? null : JSONObject.parseObject(moduleContent, new TypeReference>>() {}); + } + + @Override public Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesProductionProcessContext.class.getSimpleName(), JSONObject.toJSONString(productionProcessContext)); } @@ -75,7 +83,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) productionProcessContext.workCenterJson(prodOrgExtService.getWorkCenterDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode())); //生产过程上下文对象赋值工位信息 - if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) productionProcessContext.workCellJson(prodOrgExtService.getWorkCellDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); + if (StringUtils.isEmpty(productionProcessContext.getWorkCellJson())) productionProcessContext.workCellJson(prodOrgExtService.getWorkCellDb(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); //生产过程上下文对象赋值工序工艺信息 if (StringUtils.isEmpty(productionProcessContext.getProcessCode()) || !productionProcessContext.getProcessCode().equals(reqBean.getProcessCode())) processContext(reqBean, productionProcessContext); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java index 8c2c305..b8fc2d6 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java @@ -6,7 +6,7 @@ import lombok.Data; import org.springframework.beans.BeanUtils; /** - * 生产过程上下文对象-数据变量平铺设备LOG信息 + * 生产过程上下文对象-数据变量平铺设备LOG信息(兼容扫描信息) */ @Data public class MesEquipVariableCollectContext { @@ -89,6 +89,12 @@ public class MesEquipVariableCollectContext { this.equipVariableId = equipVariableId; } + public MesEquipVariableCollectContext(String organizeCode, String equipVariableValue, String equipVariableReadtime) { + this.organizeCode = organizeCode; + this.equipVariableValue = equipVariableValue; + this.equipVariableReadtime = equipVariableReadtime; + } + public void copyValue(MesEquipmentLog equipmentLog, String equipVariableReadtime) { if (null == equipmentLog) return; BeanUtils.copyProperties(equipmentLog, this); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionProcessContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionProcessContext.java index d53acdc..d9c3d64 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionProcessContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionProcessContext.java @@ -2,15 +2,13 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context; import cn.estsh.i3plus.pojo.mes.bean.*; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; import io.swagger.annotations.ApiParam; import lombok.Data; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.TreeSet; +import java.util.*; import java.util.stream.Collectors; /** @@ -80,7 +78,7 @@ public class MesProductionProcessContext { private String mouldCavityJson; @ApiParam("零件信息") - private String partJson; + private String partDataJson; @ApiParam("扫描信息:生产工单号") private String workOrderNoJson; @@ -335,19 +333,22 @@ public class MesProductionProcessContext { } //从上下文中取出零件信息集合 - public List getPartList() { - return StringUtils.isEmpty(this.partJson) ? null : JSONObject.parseArray(this.partJson, MesPart.class); + public Map getPartDataMap() { +// Map partMap = StringUtils.isEmpty(this.partDataJson) ? null : JSONObject.parseObject(this.partDataJson, Map.class); +// return CollectionUtils.isEmpty(partMap) ? null : partMap.entrySet().stream().filter(o -> null != o).collect(Collectors.toMap(Map.Entry::getKey, o -> JSONObject.parseObject(o.getValue(), MesPart.class))); + return StringUtils.isEmpty(this.partDataJson) ? null : JSONObject.parseObject(this.partDataJson, new TypeReference>() {}); } //上下文赋值零件信息集合 - public MesProductionProcessContext partJson(List partList) { - this.partJson = !CollectionUtils.isEmpty(partList) ? JSONObject.toJSONString(partList) : null; + public MesProductionProcessContext partDataJson(Map partDataMap) { +// Map partDataMap = partMap.entrySet().stream().filter(o -> null != o).collect(Collectors.toMap(Map.Entry::getKey, o -> JSONObject.toJSONString(o.getValue()))); + this.partDataJson = !CollectionUtils.isEmpty(partDataMap) ? JSONObject.toJSONString(partDataMap) : null; return this; } //上下文清除零件信息 - public MesProductionProcessContext partJsonClear() { - this.partJson = null; + public MesProductionProcessContext partDataJsonClear() { + this.partDataJson = null; return this; } 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 063b731..b1e94d5 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 @@ -81,6 +81,8 @@ public class MesPcnExtConstWords { public static final String SQUARE_BRACKETS = "[]"; // & public static final String AND = "&"; + // 空 + public static final String EMPTY = ""; //生产过程控制上下文 public static final String PRODUCTION_PROCESS_CONTEXT = "PRODUCTION_PROCESS_CONTEXT";