diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java new file mode 100644 index 0000000..0555bdf --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesAssemblyExtService.java @@ -0,0 +1,61 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +public interface IMesAssemblyExtService { + + + @ApiOperation(value = "【排序线】获取生产工单装配件绑定记录 【List】") + List getProductionAssemblySortContextList(MesProductionAssemblySortContext productionAssemblyContext, List workOrderNoList); + + @ApiOperation(value = "【排序线】获取生产工单装配件清单 【List】") + List getWorkOrderAssemblyList(MesProductionAssemblySortContext productionAssemblySortCmontext, List workOrderNoList); + + @ApiOperation(value = "获取装配件绑定记录 【List】") + List getProductionAssemblyList(MesProductionAssemblyContext productionAssemblyContext, List sourceIdList); + + + +// @ApiOperation(value = "【排序线】获取装配件清单 【List】") +// List getAssemblyNosortCfgList(MesProductionAssemblyNoSortContext productionAssemblyNosortContext); + + + +// @ApiOperation(value = "获取装配件绑定记录 【List】") +// List getProductionAssemblyList(MesProductionAssemblyContext productionAssemblyContext); +// + +// +// @ApiOperation(value = "【非排序线】获取装配件绑定记录 【List】") +// List getProductionAssemblyNosortList(MesProductionAssemblyNoSortContext productionAssemblyNosortContext); + + + +// @ApiOperation(value = "【排序线】获取生产工单装配件绑定记录 【List】") +// List getProductionAssemblyContextSortList(List workOrderAssemblyList, List productionAssemblyList); +// +// @ApiOperation(value = "【非排序线】获取装配件绑定记录 【List】") +// List getProductionAssemblyContextNosortList(List workOrderAssemblyList, List productionAssemblyList); +// +// @ApiOperation(value = "获取装配件绑定记录 【List】") +// List getProductionAssemblyContextList(List workOrderAssemblyList, List productionAssemblyList); + + + + + +// @ApiOperation(value = "【排序线】获取生产工单装配件绑定记录 【List】") +// List getProductionAssemblyContextSortList(MesProductionAssemblySortContext productionAssemblySortContext); +// +// @ApiOperation(value = "【非排序线】获取装配件绑定记录 【List】") +// List getProductionAssemblyContextNosortList(MesProductionAssemblyNoSortContext productionAssemblyNosortContext); + + + +} diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java new file mode 100644 index 0000000..db9934d --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProdRuleCfgExtService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleSortCfg; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +public interface IMesProdRuleCfgExtService { + + @ApiOperation(value = "【非排序线】获取产品加工规则信息") + List getProdRuleNosortCfgList(MesProdRuleNosortCfg prodRuleNosortCfg); + + @ApiOperation(value = "【排序线】获取产品加工规则信息") + List getProdRuleSortCfgList(MesProdRuleSortCfg prodRuleSortCfg); + +} 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 new file mode 100644 index 0000000..47fca6d --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionDispatchContextStepService.java @@ -0,0 +1,157 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +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.MesWorkOrderContext; +import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.model.StationKvBean; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import io.swagger.annotations.ApiOperation; + +import java.util.List; +import java.util.Map; + +/** + * 获取生产过程上下文对象接口【BUSI】 + */ +public interface IMesProductionDispatchContextStepService { + + @ApiOperation(value = "发送设备质量信息") + void sendEquipQualityMessage(StationRequestBean reqBean, MesCellEquipContext cellEquipContext); + + @ApiOperation(value = "存储展示组件MODULE_CONTENT内容") + Boolean saveModuleContentContext(StationRequestBean reqBean, List> dataList); + + @ApiOperation(value = "获取展示组件MODULE_CONTENT内容") + List> getModuleContentContext(StationRequestBean reqBean); + + @ApiOperation(value = "存储上个扫描/读取信息") + Boolean saveLastScanContext(StationRequestBean reqBean, List dataList); + + @ApiOperation(value = "获取上个扫描/读取信息") + List getLastScanContext(StationRequestBean reqBean); + + @ApiOperation(value = "发送工步内容") + void doSendStepContextMessage(StationRequestBean reqBean); + + @ApiOperation(value = "发送工步内容") + void doSendStepContextMessage(StationRequestBean reqBean, String scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE source); + + @ApiOperation(value = "发送工步内容") + void sendStepContextMessage(StationRequestBean reqBean, List resultList); + + @ApiOperation(value = "获取上下文加工结果") + String getProductResultContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文加工结果", notes = "加工结果:成功/报废/可疑 【写入的值是变量类别代码】【报废/可疑: 在保存逻辑条码时有特殊业务处理】") + Boolean saveProductResultContext(StationRequestBean reqBean, String productResult); + + @ApiOperation(value = "删除上下文加工结果") + void deleteProductResultContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文就绪信号") + String getReadySignalContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文就绪信号", notes = "写1") + Boolean saveReadySignalContext(StationRequestBean reqBean); + + @ApiOperation(value = "删除上下文就绪信号") + void deleteReadySignalContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文头道模具号") + MesEquipVariableCollectContext getFirstMouldNoContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文头道模具号是否存在") + Boolean checkFirstMouldNoIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文头道模具号", notes = "[JSON]MesEquipVariableCollectContext::equipVariableValue") + Boolean saveFirstMouldNoContext(StationRequestBean reqBean, MesEquipVariableCollectContext firstMouldNo); + + @ApiOperation(value = "删除上下文头道模具号") + void deleteFirstMouldNoContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文一模多腔信息") + List getMouldMultiCavityContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文一模多腔信息是否存在") + Boolean checkMouldMultiCavityIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文一模多腔信息", notes = "[JSON]List") + Boolean saveMouldMultiCavityContext(StationRequestBean reqBean, List mouldMultiCavityList); + + @ApiOperation(value = "删除上下文一模多腔信息") + void deleteMouldMultiCavityContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文零件数据信息") + Map getPartDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文零件数据信息", notes = "[JSON]Map") + Boolean savePartDataContext(StationRequestBean reqBean, Map partDataMap); + + @ApiOperation(value = "删除上下文零件数据信息") + void deletePartDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文模具号") + MesEquipVariableCollectContext getMouldNoContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文模具号是否存在") + Boolean checkMouldNoIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文模具号", notes = "[JSON]MesEquipVariableCollectContext::equipVariableValue") + Boolean saveMouldNoContext(StationRequestBean reqBean, MesEquipVariableCollectContext mouldNo); + + @ApiOperation(value = "删除上下文模具号") + void deleteMouldNoContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文生产工单数据信息集合") + List getWorkOrderDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文生产工单数据信息集合是否存在") + Boolean checkWorkOrderDataIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文生产工单数据信息集合", notes = "[JSON]List") + Boolean saveWorkOrderDataContext(StationRequestBean reqBean, List workOrderContextList); + + @ApiOperation(value = "删除上下文生产工单数据信息集合") + void deleteWorkOrderDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文生产扫/读信息:主条码") + List getScanProductSnContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文扫/读信息:主条码是否存在") + Boolean checkScanProductSnIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文扫/读信息:主条码", notes = "[JSON]List") + Boolean saveScanProductSnContext(StationRequestBean reqBean, List productSnList); + + @ApiOperation(value = "删除上下文扫/读信息:装配件条码") + void deleteScanProductSnContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文生产扫/读信息:装配件条码") + List getScanAssemblySnContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文扫/读信息:装配件条码是否存在") + Boolean checkScanAssemblySnIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文扫/读信息:装配件条码", notes = "[JSON]List") + Boolean saveScanAssemblySnContext(StationRequestBean reqBean, List productSnList); + + @ApiOperation(value = "删除上下文扫/读信息:装配件条码") + void deleteScanAssemblySnContext(StationRequestBean reqBean); + + @ApiOperation(value = "获取上下文产出条码数据信息集合") + List getOutProduceSnDataContext(StationRequestBean reqBean); + + @ApiOperation(value = "验证上下文产出条码数据信息集合是否存在") + Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean); + + @ApiOperation(value = "保存上下文产出条码数据信息集合", notes = "[JSON]List") + Boolean saveOutProduceSnDataContext(StationRequestBean reqBean, List outProduceSnDataList); + + @ApiOperation(value = "删除上下文产出条码数据信息集合") + void deleteOutProduceSnDataContext(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 c06b173..91bbe88 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,7 +5,6 @@ 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 cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import io.swagger.annotations.ApiOperation; @@ -14,10 +13,13 @@ import java.util.List; import java.util.Map; import java.util.Optional; +/** + * 获取生产过程上下文对象接口【BASE】 + */ public interface IMesProductionProcessContextStepService { @ApiOperation(value = "存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】") - Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); + Boolean saveProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext); @ApiOperation(value = "获取生产过程上下文对象") MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean); @@ -83,29 +85,4 @@ public interface IMesProductionProcessContextStepService { @ApiOperation(value = "验证设备数据变量信息是否为空") MesProductionProcessContext checkIsEmptyEquipmentVariableList(MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, List equipmentVariableList, MesExtEnumUtil.EQUIP_VARIABLE_TYPE production, List categoryLevelTwoList); - @ApiOperation(value = "发送设备质量信息") - void sendEquipQualityMessage(StationRequestBean reqBean, MesCellEquipContext cellEquipContext); - - @ApiOperation(value = "存储展示组件MODULE_CONTENT内容") - Boolean doCacheModuleContext(StationRequestBean reqBean, List> dataList); - - @ApiOperation(value = "获取展示组件MODULE_CONTENT内容") - List> getCachedModuleContext(StationRequestBean reqBean); - - @ApiOperation(value = "存储上个扫描/读取信息") - Boolean doCacheLastScanContext(StationRequestBean reqBean, List dataList); - - @ApiOperation(value = "获取上个扫描/读取信息") - List getCachedLastScanContext(StationRequestBean reqBean); - - @ApiOperation(value = "发送工步内容") - void doSendStepContextMessage(StationRequestBean reqBean); - - @ApiOperation(value = "发送工步内容") - void doSendStepContextMessage(StationRequestBean reqBean, String scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE source); - - @ApiOperation(value = "发送工步内容") - void sendStepContextMessage(StationRequestBean reqBean, List resultList); - - } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java new file mode 100644 index 0000000..a7df311 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java @@ -0,0 +1,108 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblySortContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; +import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MesAssemblyExtService implements IMesAssemblyExtService { + + @Autowired + private MesWorkOrderAssemblyRepository workOrderAssemblyRepository; + + @Autowired + private MesProductionAssemblyRepository productionAssemblyRepository; + + @Override + public List getProductionAssemblySortContextList(MesProductionAssemblySortContext productionAssemblySortContext, List workOrderNoList) { + + if (null == productionAssemblySortContext || CollectionUtils.isEmpty(workOrderNoList)) return null; + + if (StringUtils.isEmpty(productionAssemblySortContext.getOrganizeCode()) || StringUtils.isEmpty(productionAssemblySortContext.getWorkCenterCode()) || + StringUtils.isEmpty(productionAssemblySortContext.getWorkCellCode()) || StringUtils.isEmpty(productionAssemblySortContext.getProcessCode())) return null; + + //【排序线】获取生产工单装配件清单 + List workOrderAssemblyList = getWorkOrderAssemblyList(productionAssemblySortContext, workOrderNoList); + + if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null; + + //获取装配件绑定记录 + Map productionAssemblyMap = groupProductionAssembly(filterProductionAssemblyList(getProductionAssemblyList( + productionAssemblySortContext.dataSource(MesExtEnumUtil.PRODUCTION_ASSEMBLY_DATA_SOURCE.SORT.getValue()), workOrderAssemblyList.stream().filter(o -> null != o).map(MesWorkOrderAssembly::getId).collect(Collectors.toList())))); + + List productionAssemblyContextList = new ArrayList<>(); + + workOrderAssemblyList.forEach(o -> productionAssemblyContextList.add(new MesProductionAssemblySortContext(o, getProductionAssembly(productionAssemblyMap, o.getId())))); + + return productionAssemblyContextList; + } + + @Override + public List getWorkOrderAssemblyList(MesProductionAssemblySortContext productionAssemblySortContext, List workOrderNoList) { + + if (null == productionAssemblySortContext || CollectionUtils.isEmpty(workOrderNoList)) return null; + + if (StringUtils.isEmpty(productionAssemblySortContext.getOrganizeCode()) || StringUtils.isEmpty(productionAssemblySortContext.getWorkCenterCode()) || + StringUtils.isEmpty(productionAssemblySortContext.getWorkCellCode()) || StringUtils.isEmpty(productionAssemblySortContext.getProcessCode())) return null; + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(productionAssemblySortContext.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(productionAssemblySortContext.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getStringEqualPack(productionAssemblySortContext.getWorkCellCode(), MesPcnExtConstWords.WORK_CELL_CODE, packBean); + DdlPreparedPack.getStringEqualPack(productionAssemblySortContext.getProcessCode(), MesPcnExtConstWords.PROCESS_CODE, packBean); + if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesPcnExtConstWords.WORK_ORDER_NO, packBean); + else DdlPreparedPack.getInPackList(workOrderNoList, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + + return workOrderAssemblyRepository.findByHqlWhere(packBean); + + } + + @Override + public List getProductionAssemblyList(MesProductionAssemblyContext productionAssemblyContext, List sourceIdList) { + + if (null == productionAssemblyContext || CollectionUtils.isEmpty(sourceIdList)) return null; + + if (StringUtils.isEmpty(productionAssemblyContext.getOrganizeCode()) || StringUtils.isEmpty(productionAssemblyContext.getDataSource())) return null; + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(productionAssemblyContext.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(productionAssemblyContext.getDataSource(), MesPcnExtConstWords.ASSEMBLY_STATUS, packBean); + DdlPreparedPack.getNumEqualPack(productionAssemblyContext.getDataSource(), MesPcnExtConstWords.DATD_SOURCE, packBean); + if (sourceIdList.size() == 1) DdlPreparedPack.getNumEqualPack(sourceIdList.get(0), MesPcnExtConstWords.SOURCE_ID, packBean); + else DdlPreparedPack.getInPackList(sourceIdList, MesPcnExtConstWords.SOURCE_ID, packBean); + + return productionAssemblyRepository.findByHqlWhere(packBean); + + } + + private List filterProductionAssemblyList(List productionAssemblyList) { + return CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().filter(o -> (null != o && MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_PART_STATUS_20.getValue() != o.getAssemblyStatus())).collect(Collectors.toList()); + } + + private Map groupProductionAssembly(List productionAssemblyList) { + return CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().filter(o -> null != o).collect(Collectors.toMap(MesProductionAssembly::getSourceId, o -> o)); + } + + private MesProductionAssembly getProductionAssembly(Map productionAssemblyMap, Long id) { + return CollectionUtils.isEmpty(productionAssemblyMap) ? null : productionAssemblyMap.get(id); + } + + +} 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 6b0e615..e2ae628 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 @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; 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; @@ -23,7 +24,6 @@ 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; import java.util.Map; @@ -42,6 +42,9 @@ public class MesAssemblyReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -54,7 +57,7 @@ public class MesAssemblyReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -74,7 +77,7 @@ public class MesAssemblyReadStepService extends BaseStepService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); //当前工序已存在读取待验证的装配件条码 - if (!StringUtils.isEmpty(productionProcessContext.getAssemblySnJson())) return stepResult; + if (productionDispatchContextStepService.checkScanAssemblySnIsExistContext(reqBean)) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -107,7 +110,7 @@ public class MesAssemblyReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -116,7 +119,7 @@ public class MesAssemblyReadStepService extends BaseStepService { if (stepResult.isCompleted()) matchAssemblySnValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -138,10 +141,10 @@ public class MesAssemblyReadStepService extends BaseStepService { return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的装配件条码,持续监听中...", cellEquipContext.getEquipmentCode())); //保存设备当前一轮工序待验证的装配件条码信息 - productionProcessContext.assemblySnJson(equipVariableCollectContextList); + productionDispatchContextStepService.saveScanAssemblySnContext(reqBean, equipVariableCollectContextList); //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean, + productionDispatchContextStepService.doSendStepContextMessage(reqBean, equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); 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 5acdb37..62bb289 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,5 +1,6 @@ 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.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; @@ -28,10 +29,13 @@ public class MesAssemblyScanStepService extends BaseStepService { @Autowired private IMesProductionProcessContextStepService productionProcessContextStepService; + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + @Override public StepResult guide(StationRequestBean reqBean) { - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描装配件条码!"); @@ -52,9 +56,12 @@ public class MesAssemblyScanStepService extends BaseStepService { if (!productionProcessContext.getSuccess()) return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); //保存设备当前一轮工序待验证的装配件条码信息 - productionProcessContext.assemblySnJson(getAssemblySnJson(reqBean)); + productionDispatchContextStepService.saveScanAssemblySnContext(reqBean, getAssemblySnJson(reqBean)); + + productionDispatchContextStepService.doSendStepContextMessage(reqBean, reqBean.getScanInfo(), MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN); - productionProcessContextStepService.doSendStepContextMessage(reqBean, reqBean.getScanInfo(), MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN); + //扫描信息置空 + reqBean.setScanInfo(null); 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 f9ac809..392a551 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 @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; 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; @@ -45,6 +46,9 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -60,7 +64,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -79,11 +83,8 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { //获取上下文信息 MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); - //当前工序已存在读取待验证的装配件条码 - if (!StringUtils.isEmpty(productionProcessContext.getAssemblySnJson())) return stepResult; - //当前工序已存在头道模具号跟一模多腔信息 - if (!StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) && !StringUtils.isEmpty(productionProcessContext.getMouldCavityJson())) return stepResult; + if (productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean) && productionDispatchContextStepService.checkMouldMultiCavityIsExistContext(reqBean)) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -116,7 +117,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -125,7 +126,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { if (stepResult.isCompleted()) checkFirstMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -150,7 +151,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { String firstMouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean, firstMouldNo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); + productionDispatchContextStepService.doSendStepContextMessage(reqBean, firstMouldNo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); //验证一模多腔信息 List mouldMultiCavityList = getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), firstMouldNo, true); @@ -159,7 +160,9 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { Map partDataMap = getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList); //保存设备当前一轮工序的头道模具号,一模多腔信息,零件信息 - productionProcessContext.firstMouldNo(equipVariableCollectContextList.get(0)).mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap); + productionDispatchContextStepService.saveFirstMouldNoContext(reqBean, equipVariableCollectContextList.get(0)); + productionDispatchContextStepService.saveMouldMultiCavityContext(reqBean, mouldMultiCavityList); + productionDispatchContextStepService.savePartDataContext(reqBean, partDataMap); //更新展示组件MODULE_CONTENT内容 doCacheMoudleContext(reqBean, mouldMultiCavityList, true); @@ -171,7 +174,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { public List getMouldMultiCavityList(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, String equipmentCode, String mouldNo, Boolean isFirstMouldNo) { //从上下文中取出一模多腔信息集合 - List mouldMultiCavityList = productionProcessContext.getMouldCavityList(); + List mouldMultiCavityList = productionDispatchContextStepService.getMouldMultiCavityContext(reqBean); //验证一模多腔信息是否跟当前对设备及模具匹配; 根据设备代码,模具号查询一模多腔信息 if (!checkCachedMouldMultiCavityValid(mouldMultiCavityList, equipmentCode, mouldNo)) mouldMultiCavityList = mouldMultiCavityService.getMouldMultiCavityList(reqBean.getOrganizeCode(), equipmentCode, mouldNo); @@ -190,7 +193,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { public Map getPartDataMap(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, List mouldMultiCavityList) { //从上下文中取出零件信息集合 - Map partDataMap = productionProcessContext.getPartDataMap(); + Map partDataMap = productionDispatchContextStepService.getPartDataContext(reqBean); //从一模多腔信息中搜集零件编码并去重 List partNoList = (mouldMultiCavityList.stream().filter(o -> (null != o)).map(MesMouldMultiCavity::getPartNo).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); @@ -213,7 +216,7 @@ public class MesFirstMouldNoReadStepService extends BaseStepService { public void doCacheMoudleContext(StationRequestBean reqBean, List mouldMultiCavityList, Boolean isFirstMouldNo) { //存储展示组件MODULE_CONTENT内容 - productionProcessContextStepService.doCacheModuleContext(reqBean, getModuleContextData(reqBean, mouldMultiCavityList, isFirstMouldNo)); + productionDispatchContextStepService.saveModuleContentContext(reqBean, getModuleContextData(reqBean, mouldMultiCavityList, isFirstMouldNo)); } //封装展示组件MODULE_CONTENT内容 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 deb15f3..bfb8fbe 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 @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; 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; @@ -21,7 +22,6 @@ 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; import java.util.Map; @@ -39,6 +39,9 @@ public class MesMouldNoReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -54,7 +57,7 @@ public class MesMouldNoReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -73,8 +76,8 @@ public class MesMouldNoReadStepService extends BaseStepService { //获取上下文信息 MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); - //当前工序已存在模具号跟一模多腔信息 - if (!StringUtils.isEmpty(productionProcessContext.getMouldNo()) && !StringUtils.isEmpty(productionProcessContext.getMouldCavityJson())) return stepResult; + //当前工序已存在模具号 并且 存在一模多腔信息或者生产工单数据信息 + if (productionDispatchContextStepService.checkMouldNoIsExistContext(reqBean) && (productionDispatchContextStepService.checkMouldMultiCavityIsExistContext(reqBean) || productionDispatchContextStepService.checkWorkOrderDataIsExistContext(reqBean))) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -107,7 +110,7 @@ public class MesMouldNoReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -116,10 +119,10 @@ public class MesMouldNoReadStepService extends BaseStepService { if (stepResult.isCompleted()) checkMouldNoValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); //保存设备当前一轮工序的模具号 - if (null != stepResult.getObj()) productionProcessContext.mouldNo((MesEquipVariableCollectContext) stepResult.getObj()); + if (null != stepResult.getObj()) productionDispatchContextStepService.saveMouldNoContext(reqBean, (MesEquipVariableCollectContext) stepResult.getObj()); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -136,8 +139,11 @@ public class MesMouldNoReadStepService extends BaseStepService { //读取的模具号进行规则匹配 List equipVariableCollectContextList = (List) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.MOULD_NO.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList()); + Boolean firstMouldNoIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean); + Boolean workOrderDataIsExist = productionDispatchContextStepService.checkFirstMouldNoIsExistContext(reqBean); + //没有有效的数据: 设置常变值 或者 当前没有头道模具号或生产工单信息 - if (CollectionUtils.isEmpty(equipVariableCollectContextList) && (equipLogDispatchContext.getNeedNewValue() || (StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) && StringUtils.isEmpty(productionProcessContext.getWorkOrderDataJson())))) + if (CollectionUtils.isEmpty(equipVariableCollectContextList) && (equipLogDispatchContext.getNeedNewValue() || (!firstMouldNoIsExist && !workOrderDataIsExist))) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的模具号,持续监听中...", cellEquipContext.getEquipmentCode())); else if (CollectionUtils.isEmpty(equipVariableCollectContextList)) //非常变值 没有有效的数据 也无需再读 return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的模具号,接口逻辑设置只读一次,当前读取模具号直接跳过!", cellEquipContext.getEquipmentCode())); @@ -146,13 +152,13 @@ public class MesMouldNoReadStepService extends BaseStepService { String mouldNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean, mouldNo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); + productionDispatchContextStepService.doSendStepContextMessage(reqBean, mouldNo, MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); //将模具信息放到工步结果对象的中, 工步主方法体会从里面取出 stepResult.obj(equipVariableCollectContextList.get(0)); //判断是否存在头道模具号或生产工单信息 - if (!StringUtils.isEmpty(productionProcessContext.getFirstMouldNo()) || !StringUtils.isEmpty(productionProcessContext.getWorkOrderDataJson())) return stepResult; + if (firstMouldNoIsExist || workOrderDataIsExist) return stepResult; //磨具号当头道模具号的使用 List mouldMultiCavityList = firstMouldNoReadStepService.getMouldMultiCavityList(reqBean, resultBean, productionProcessContext, cellEquipContext.getEquipmentCode(), mouldNo, false); @@ -161,7 +167,8 @@ public class MesMouldNoReadStepService extends BaseStepService { Map partDataMap = firstMouldNoReadStepService.getPartDataMap(reqBean, resultBean, productionProcessContext, mouldMultiCavityList); //保存设备当前一轮工序的一模多腔信息,零件信息 - productionProcessContext.mouldCavityJson(mouldMultiCavityList).partDataJson(partDataMap); + productionDispatchContextStepService.saveMouldMultiCavityContext(reqBean, mouldMultiCavityList); + productionDispatchContextStepService.savePartDataContext(reqBean, partDataMap); //更新展示组件MODULE_CONTENT内容 firstMouldNoReadStepService.doCacheMoudleContext(reqBean, mouldMultiCavityList, false); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java index 8f3d200..f1c1f93 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultReadStepService.java @@ -2,6 +2,7 @@ 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; @@ -21,7 +22,6 @@ 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.CollectionUtils; import org.springframework.util.StringUtils; import java.util.List; @@ -41,6 +41,9 @@ public class MesProductResultReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -50,7 +53,7 @@ public class MesProductResultReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -70,7 +73,7 @@ public class MesProductResultReadStepService extends BaseStepService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); //当前工序已存在加工结果 - if (!StringUtils.isEmpty(productionProcessContext.getProductResult())) return stepResult; + if (!StringUtils.isEmpty(productionDispatchContextStepService.getProductResultContext(reqBean))) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -105,7 +108,7 @@ public class MesProductResultReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -114,7 +117,7 @@ public class MesProductResultReadStepService extends BaseStepService { matchProductResult(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -136,7 +139,7 @@ public class MesProductResultReadStepService extends BaseStepService { matchVariableCategoryMap(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, variableCategoryMap); //保存设备当前一轮工序的加工结果: 只保存成功/报废/可疑的结果 - if (stepResult.isCompleted()) productionProcessContext.productResult((String) stepResult.getObj()); + if (stepResult.isCompleted()) productionDispatchContextStepService.saveProductResultContext(reqBean, (String) stepResult.getObj()); return stepResult; @@ -152,7 +155,7 @@ public class MesProductResultReadStepService extends BaseStepService { if (!(Boolean) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, entry.getKey(), entry.getValue())) continue; //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.valueOfDescription(entry.getKey()), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); + productionDispatchContextStepService.doSendStepContextMessage(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.valueOfDescription(entry.getKey()), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); //设备加工失败 if (MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_NOK.getValue().equals(entry.getKey())) 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 d4f541c..fe90f19 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 @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMouldMultiCavityService; 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; @@ -23,7 +24,6 @@ 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; import java.util.Map; @@ -42,6 +42,9 @@ public class MesProductSnReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -54,7 +57,7 @@ public class MesProductSnReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -74,7 +77,7 @@ public class MesProductSnReadStepService extends BaseStepService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); //当前工序已存在读取待验证的主条码信息 - if (!StringUtils.isEmpty(productionProcessContext.getProductSnJson())) return stepResult; + if (productionDispatchContextStepService.checkScanProductSnIsExistContext(reqBean)) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -107,7 +110,7 @@ public class MesProductSnReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -116,7 +119,7 @@ public class MesProductSnReadStepService extends BaseStepService { if (stepResult.isCompleted()) matchProductSnValid(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -138,10 +141,10 @@ public class MesProductSnReadStepService extends BaseStepService { return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.GUIDE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("当前未读取到设备[%s]有效的主条码,持续监听中...", cellEquipContext.getEquipmentCode())); //保存设备当前一轮工序的待验证的主条码信息 - productionProcessContext.productSnJson(equipVariableCollectContextList); + productionDispatchContextStepService.saveScanProductSnContext(reqBean, equipVariableCollectContextList); //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean, + productionDispatchContextStepService.doSendStepContextMessage(reqBean, equipVariableCollectContextList.stream().filter(o -> null != o).map(MesEquipVariableCollectContext::getEquipVariableValue).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON)), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReadySignalReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReadySignalReadStepService.java index 030acb3..0eca998 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReadySignalReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReadySignalReadStepService.java @@ -2,13 +2,13 @@ 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.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; @@ -39,6 +39,9 @@ public class MesReadySignalReadStepService extends BaseStepService { private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired private IMesEquipmentLogExtService equipmentLogExtService; @Autowired @@ -48,7 +51,7 @@ public class MesReadySignalReadStepService extends BaseStepService { public StepResult init(StationRequestBean reqBean) { //发送工步内容 - productionProcessContextStepService.doSendStepContextMessage(reqBean); + productionDispatchContextStepService.doSendStepContextMessage(reqBean); return super.init(reqBean); @@ -68,7 +71,7 @@ public class MesReadySignalReadStepService extends BaseStepService { MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean, stepParamMap); //当前工序已存在就绪信号 - if (!StringUtils.isEmpty(productionProcessContext.getReadySignal())) return stepResult; + if (!StringUtils.isEmpty(productionDispatchContextStepService.getReadySignalContext(reqBean))) return stepResult; //获取生产过程上下文对象有异常信息 抛出异常 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -101,7 +104,7 @@ public class MesReadySignalReadStepService extends BaseStepService { this.sendMessage(reqBean, resultBean, JSONObject.toJSONString(equipLogDispatchContext), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); //验证设备通信质量 - productionProcessContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); + productionDispatchContextStepService.sendEquipQualityMessage(reqBean, cellEquipContext); if (!equipmentLogExtService.checkEquipQuality(cellEquipContext.getQuality())) execDynamicsCompleteAndSendMsg(reqBean, resultBean.writeDbLog(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT, String.format("请检查设备的质量状态,读取到设备[%s]的数据变量质量值为[%s]!", cellEquipContext.getEquipmentCode(), cellEquipContext.getQuality())); @@ -109,11 +112,11 @@ public class MesReadySignalReadStepService extends BaseStepService { //匹配就绪信号有效性 matchReadySignal(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, equipLogDispatchContext); - //保存设备当前一轮工序的加工结果: 只保存成功/报废/可疑的结果 - if (stepResult.isCompleted()) productionProcessContext.readySignal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); + //保存设备当前一轮工序的就绪信号, 写1 + if (stepResult.isCompleted()) productionDispatchContextStepService.saveReadySignalContext(reqBean); //存储生产过程上下文对象 - productionProcessContextStepService.doCacheProductionProcessContext(reqBean, productionProcessContext); + productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext); if (!stepResult.isCompleted()) threadSleep(stepParamMap, MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); @@ -131,7 +134,7 @@ public class MesReadySignalReadStepService extends BaseStepService { Boolean result = (Boolean) equipVariableCfgRuleMatchService.matchEquipVariableCfgCollectContext(reqBean, productionProcessContext, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.READY_SIGNAL.getValue(), equipLogDispatchContext.getEquipVariableCfgCollectContextList()); //匹配成功发送工步内容 - if (result) productionProcessContextStepService.doSendStepContextMessage(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.READY_SIGNAL.getDescription(), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); + if (result) productionDispatchContextStepService.doSendStepContextMessage(reqBean, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.READY_SIGNAL.getDescription(), MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ); //匹配成功 if (result) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("已读取到设备[%s]的就绪信号!", cellEquipContext.getEquipmentCode())); 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 new file mode 100644 index 0000000..703d33f --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionDispatchContextStepService.java @@ -0,0 +1,354 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.context; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +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.MesWorkOrderContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesMouldMultiCavity; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +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.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description : 获取生产过程上下文对象接口实现【BUSI】 + * @Author : wangjie + **/ +@Slf4j +@Service("mesProductionDispatchContextStepService") +public class MesProductionDispatchContextStepService extends BaseStepService implements IMesProductionDispatchContextStepService { + + private String getContextKey(StationRequestBean reqBean) { return getFsmBusikey(reqBean, MesPcnExtConstWords.PRODUCTION_PROCESS_CONTEXT); } + + //发送设备质量信息 + @Override + public void sendEquipQualityMessage(StationRequestBean reqBean, MesCellEquipContext cellEquipContext) { + StationResultBean resultBean = new StationResultBean(); + resultBean.setResultObj(MesExtEnumUtil.EQUIP_LOG_QUALITY.valueOfColor(cellEquipContext.getQuality())); + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.QUALITY_MODULE.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.COLOR.getValue()); + this.sendMessage(reqBean, resultBean); + } + + //存储展示组件MODULE_CONTENT内容 + @Override + public Boolean saveModuleContentContext(StationRequestBean reqBean, List> dataList) { + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MODULE_CONTENT_CONTEXT, JSONObject.toJSONString(dataList)); + } + + @Override + public List> getModuleContentContext(StationRequestBean reqBean) { + String moduleContent = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MODULE_CONTENT_CONTEXT); + return StringUtils.isEmpty(moduleContent) ? null : JSONObject.parseObject(moduleContent, new TypeReference>>() {}); + } + + //存储上个扫描/读取信息 + @Override + public Boolean saveLastScanContext(StationRequestBean reqBean, List dataList) { + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.LAST_SCAN_INFO_CONTEXT, JSONObject.toJSONString(dataList)); + } + + //获取上个扫描/读取信息 + @Override + public List getLastScanContext(StationRequestBean reqBean) { + String lastScanContent = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.LAST_SCAN_INFO_CONTEXT); + return StringUtils.isEmpty(lastScanContent) ? new ArrayList<>() : JSONObject.parseArray(lastScanContent, StationKvBean.class); + } + + //发送工步内容 + @Override + public void doSendStepContextMessage(StationRequestBean reqBean) { + sendStepContextMessage(reqBean, getLastScanContext(reqBean)); + } + + //发送工步内容 + @Override + public void doSendStepContextMessage(StationRequestBean reqBean, String scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE source) { + + List lastScanContext = getLastScanContext(reqBean); + + lastScanContext = StationKvBeanUtil.addStationKvBeanLimix100ThenHalf(lastScanContext, new StationKvBean().name(source.getDescription()).value(scanInfo)); + + saveLastScanContext(reqBean, lastScanContext); + + sendStepContextMessage(reqBean, lastScanContext); + + } + + //发送工步内容 + @Override + public void sendStepContextMessage(StationRequestBean reqBean, List lastScanContext) { + StationResultBean resultBean = new StationResultBean(); + resultBean.setResultList(StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), + lastScanContext.size() > 1 ? lastScanContext.get(1).name("上次" + lastScanContext.get(1).getName()).key(MesPcnExtConstWords.LAST_SCAN_INFO) : null, + lastScanContext.size() > 0 ? lastScanContext.get(0).name("当前" + lastScanContext.get(0).getName()).key(MesPcnExtConstWords.SCAN_INFO) : null)); + resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CONTENT.getValue()); + resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.KEY_VALUE.getValue()); + this.sendMessage(reqBean, resultBean); + } + + //获取上下文加工结果 + @Override + public String getProductResultContext(StationRequestBean reqBean) { + return getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PRODUCT_RESULT_CONTEXT); + } + + //保存上下文加工结果 加工结果:成功/报废/可疑 【写入的值是变量类别代码】【报废/可疑: 在保存逻辑条码时有特殊业务处理】 + @Override + public Boolean saveProductResultContext(StationRequestBean reqBean, String productResult) { + if (StringUtils.isEmpty(productResult)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PRODUCT_RESULT_CONTEXT, productResult); + } + + //删除上下文加工结果 + @Override + public void deleteProductResultContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PRODUCT_RESULT_CONTEXT); + } + + //获取上下文就绪信号 + @Override + public String getReadySignalContext(StationRequestBean reqBean) { + return getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.READY_SIGNAL_CONTEXT); + } + + //保存上下文就绪信号 写1 + @Override + public Boolean saveReadySignalContext(StationRequestBean reqBean) { + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.READY_SIGNAL_CONTEXT, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); + } + + //删除上下文就绪信号 + @Override + public void deleteReadySignalContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.READY_SIGNAL_CONTEXT); + } + + //获取上下文头道模具号 + @Override + public MesEquipVariableCollectContext getFirstMouldNoContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FIRST_MOULD_NO_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? JSONObject.parseObject(firstMouldNo, MesEquipVariableCollectContext.class) : null; + } + + //验证上下文头道模具号是否存在 + @Override + public Boolean checkFirstMouldNoIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FIRST_MOULD_NO_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文头道模具号 [JSON]MesEquipVariableCollectContext::equipVariableValue + @Override + public Boolean saveFirstMouldNoContext(StationRequestBean reqBean, MesEquipVariableCollectContext firstMouldNo) { + if (null == firstMouldNo) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FIRST_MOULD_NO_CONTEXT, JSONObject.toJSONString(firstMouldNo)); + } + + //删除上下文头道模具号 + @Override + public void deleteFirstMouldNoContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.FIRST_MOULD_NO_CONTEXT); + } + + //获取上下文一模多腔信息 + @Override + public List getMouldMultiCavityContext(StationRequestBean reqBean) { + String mouldCavityJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT); + return !StringUtils.isEmpty(mouldCavityJson) ? JSONObject.parseArray(mouldCavityJson, MesMouldMultiCavity.class) : null; + } + + //验证上下文一模多腔信息是否存在 + @Override + public Boolean checkMouldMultiCavityIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文一模多腔信息 [JSON]List + @Override + public Boolean saveMouldMultiCavityContext(StationRequestBean reqBean, List mouldMultiCavityList) { + if (CollectionUtils.isEmpty(mouldMultiCavityList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT, JSONObject.toJSONString(mouldMultiCavityList)); + } + + //删除上下文一模多腔信息 + @Override + public void deleteMouldMultiCavityContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_MULTI_CAVITY_CONTEXT); + } + + //获取上下文零件数据信息 + @Override + public Map getPartDataContext(StationRequestBean reqBean) { + String partDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT); + return !StringUtils.isEmpty(partDataJson) ? JSONObject.parseObject(partDataJson, new TypeReference>() {}) : null; + } + + //保存上下文零件数据信息 [JSON]Map + @Override + public Boolean savePartDataContext(StationRequestBean reqBean, Map partDataMap) { + if (CollectionUtils.isEmpty(partDataMap)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT, JSONObject.toJSONString(partDataMap)); + } + + //删除上下文零件数据信息 + @Override + public void deletePartDataContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.PART_DATA_CONTEXT); + } + + //获取上下文模具号 + @Override + public MesEquipVariableCollectContext getMouldNoContext(StationRequestBean reqBean) { + String mouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT); + return !StringUtils.isEmpty(mouldNo) ? JSONObject.parseObject(mouldNo, MesEquipVariableCollectContext.class) : null; + } + + //验证上下文模具号是否存在 + @Override + public Boolean checkMouldNoIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文模具号 [JSON]MesEquipVariableCollectContext::equipVariableValue + @Override + public Boolean saveMouldNoContext(StationRequestBean reqBean, MesEquipVariableCollectContext mouldNo) { + if (null == mouldNo) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT, JSONObject.toJSONString(mouldNo)); + } + + //删除上下文模具号 + @Override + public void deleteMouldNoContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.MOULD_NO_CONTEXT); + } + + //获取上下文生产工单数据信息集合 + @Override + public List getWorkOrderDataContext(StationRequestBean reqBean) { + String workOrderDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT); + return !StringUtils.isEmpty(workOrderDataJson) ? JSONObject.parseArray(workOrderDataJson, MesWorkOrderContext.class) : null; + } + + //验证上下文生产工单数据信息集合是否存在 + @Override + public Boolean checkWorkOrderDataIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文生产工单数据信息集合 [JSON]List + @Override + public Boolean saveWorkOrderDataContext(StationRequestBean reqBean, List workOrderContextList) { + if (CollectionUtils.isEmpty(workOrderContextList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT, JSONObject.toJSONString(workOrderContextList)); + } + + //删除上下文生产工单数据信息集合 + @Override + public void deleteWorkOrderDataContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.WORK_ORDER_DATA_CONTEXT); + } + + //获取上下文扫/读信息:主条码 + @Override + public List getScanProductSnContext(StationRequestBean reqBean) { + String productSnJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT); + return !StringUtils.isEmpty(productSnJson) ? JSONObject.parseArray(productSnJson, MesEquipVariableCollectContext.class) : null; + } + + //验证上下文扫/读信息:主条码是否存在 + @Override + public Boolean checkScanProductSnIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文扫/读信息:主条码 [JSON]List + @Override + public Boolean saveScanProductSnContext(StationRequestBean reqBean, List productSnList) { + if (CollectionUtils.isEmpty(productSnList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT, JSONObject.toJSONString(productSnList)); + } + + //删除上下文扫/读信息:主条码 + @Override + public void deleteScanProductSnContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_PRODUCT_SN_CONTEXT); + } + + //获取上下文扫/读信息:装配件条码 + @Override + public List getScanAssemblySnContext(StationRequestBean reqBean) { + String assemblySnJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT); + return !StringUtils.isEmpty(assemblySnJson) ? JSONObject.parseArray(assemblySnJson, MesEquipVariableCollectContext.class) : null; + } + + //验证上下文扫/读信息:装配件条码是否存在 + @Override + public Boolean checkScanAssemblySnIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文扫/读信息:装配件条码 [JSON]List + @Override + public Boolean saveScanAssemblySnContext(StationRequestBean reqBean, List assemblySnList) { + if (CollectionUtils.isEmpty(assemblySnList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT, JSONObject.toJSONString(assemblySnList)); + } + + //删除上下文扫/读信息:装配件条码 + @Override + public void deleteScanAssemblySnContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.SCAN_ASSEMBLY_SN_CONTEXT); + } + + //获取上下文产出条码数据信息集合 + @Override + public List getOutProduceSnDataContext(StationRequestBean reqBean) { + String outProduceSnDataJson = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT); + return !StringUtils.isEmpty(outProduceSnDataJson) ? JSONObject.parseArray(outProduceSnDataJson, MesProduceSn.class) : null; + } + + //验证上下文产出条码数据信息集合是否存在 + @Override + public Boolean checkOutProduceSnDataIsExistContext(StationRequestBean reqBean) { + String firstMouldNo = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT); + return !StringUtils.isEmpty(firstMouldNo) ? true : false; + } + + //保存上下文产出条码数据信息集合 [JSON]List + @Override + public Boolean saveOutProduceSnDataContext(StationRequestBean reqBean, List outProduceSnDataList) { + if (CollectionUtils.isEmpty(outProduceSnDataList)) return false; + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT, JSONObject.toJSONString(outProduceSnDataList)); + } + + //删除上下文产出条码数据信息集合 + @Override + public void deleteOutProduceSnDataContext(StationRequestBean reqBean) { + deleteFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.OUT_PRODUCE_SN_DATA_CONTEXT); + } + + +} 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/context/MesProductionProcessContextStepService.java similarity index 79% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionProcessContextStepService.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java index 10d5b9d..1003cd4 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/context/MesProductionProcessContextStepService.java @@ -1,4 +1,4 @@ -package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.context; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; @@ -8,26 +8,24 @@ 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.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; -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; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** - * @Description : 获取生产过程上下文对象接口实现 + * @Description : 获取生产过程上下文对象接口实现【BASE】 * @Author : wangjie **/ @Slf4j @@ -47,8 +45,8 @@ public class MesProductionProcessContextStepService extends BaseStepService impl //存储生产过程上下文对象【工步根据业务实际情况执行,配置错误等情况无需执行】 @Override - public Boolean doCacheProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { - return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesProductionProcessContext.class.getSimpleName(), JSONObject.toJSONString(productionProcessContext)); + public Boolean saveProductionProcessContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { + return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.BASE_DATA_CONTEXT, JSONObject.toJSONString(productionProcessContext)); } //获取生产过程上下文对象 @@ -56,7 +54,7 @@ public class MesProductionProcessContextStepService extends BaseStepService impl public MesProductionProcessContext getProductionProcessContext(StationRequestBean reqBean) { //获取缓存的生产过程上下文对象 - MesProductionProcessContext productionProcessContext = (MesProductionProcessContext) getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesProductionProcessContext.class.getSimpleName(), MesProductionProcessContext.class); + MesProductionProcessContext productionProcessContext = (MesProductionProcessContext) getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.BASE_DATA_CONTEXT, MesProductionProcessContext.class); if (null == productionProcessContext) productionProcessContext = new MesProductionProcessContext(reqBean.getOrganizeCode()); @@ -108,6 +106,8 @@ public class MesProductionProcessContextStepService extends BaseStepService impl if (StringUtils.isEmpty(productionProcessContext.getWorkCenterJson())) return productionProcessContext.message(String.format("请检查组织模型生产线[%s]信息的有效性!", reqBean.getWorkCenterCode())); + if (StringUtils.isEmpty(MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(productionProcessContext.getWorkCenter().getCenterType()))) return productionProcessContext.message(String.format("请检查组织模型生产线,生产线[%s]信息未设置产线类型!", reqBean.getWorkCenterCode())); + if (StringUtils.isEmpty(productionProcessContext.getWorkCellJson())) return productionProcessContext.message(String.format("请检查组织模型生产线[%s]工位[%s]信息的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); if (StringUtils.isEmpty(productionProcessContext.getProcessCode())) return productionProcessContext.message(String.format("请检查工序信息,生产线[%s]工位[%s]对应工序代码[%s]的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode())); @@ -300,71 +300,6 @@ public class MesProductionProcessContextStepService extends BaseStepService impl return productionProcessContext.message(String.format("请检查设备数据变量信息,根据设备[%s]对应的数据变量接口逻辑信息,未配置变量类型[%s]二级变量%s相关的数据变量信息!", cellEquipContext.getEquipmentCode(), variableType.getDescription(), categoryLevelTwoList.toString())); } - //发送设备质量信息 - @Override - public void sendEquipQualityMessage(StationRequestBean reqBean, MesCellEquipContext cellEquipContext) { - StationResultBean resultBean = new StationResultBean(); - resultBean.setResultObj(MesExtEnumUtil.EQUIP_LOG_QUALITY.valueOfColor(cellEquipContext.getQuality())); - resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.QUALITY_MODULE.getValue()); - resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.COLOR.getValue()); - this.sendMessage(reqBean, resultBean); - } - - //存储展示组件MODULE_CONTENT内容 - @Override - public Boolean doCacheModuleContext(StationRequestBean reqBean, List> dataList) { - return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue(), JSONObject.toJSONString(dataList)); - } - - @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 doCacheLastScanContext(StationRequestBean reqBean, List dataList) { - return saveFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.LAST_SCAN_INFO, JSONObject.toJSONString(dataList)); - } - - //获取上个扫描/读取信息 - @Override - public List getCachedLastScanContext(StationRequestBean reqBean) { - String lastScanContent = getFsmBusiData(reqBean.getOrganizeCode(), getContextKey(reqBean), MesPcnExtConstWords.LAST_SCAN_INFO); - return StringUtils.isEmpty(lastScanContent) ? new ArrayList<>() : JSONObject.parseArray(lastScanContent, StationKvBean.class); - } - - //发送工步内容 - @Override - public void doSendStepContextMessage(StationRequestBean reqBean) { - sendStepContextMessage(reqBean, getCachedLastScanContext(reqBean)); - } - - //发送工步内容 - @Override - public void doSendStepContextMessage(StationRequestBean reqBean, String scanInfo, MesExtEnumUtil.CELL_MESSAGE_SOURCE source) { - - List lastScanContext = getCachedLastScanContext(reqBean); - lastScanContext = StationKvBeanUtil.addStationKvBeanLimix100ThenHalf(lastScanContext, new StationKvBean().name(source.getDescription()).value(scanInfo)); - - doCacheLastScanContext(reqBean, lastScanContext); - - sendStepContextMessage(reqBean, lastScanContext); - - } - - //发送工步内容 - @Override - public void sendStepContextMessage(StationRequestBean reqBean, List lastScanContext) { - StationResultBean resultBean = new StationResultBean(); - resultBean.setResultList(StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), - lastScanContext.size() > 1 ? lastScanContext.get(1).name("上次" + lastScanContext.get(1).getName()).key(MesPcnExtConstWords.LAST_SCAN_INFO) : null, - lastScanContext.size() > 0 ? lastScanContext.get(0).name("当前" + lastScanContext.get(0).getName()).key(MesPcnExtConstWords.SCAN_INFO) : null)); - resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.STEP_CONTENT.getValue()); - resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.KEY_VALUE.getValue()); - this.sendMessage(reqBean, resultBean); - } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleNoSortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleNoSortContext.java new file mode 100644 index 0000000..faf321e --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleNoSortContext.java @@ -0,0 +1,28 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.context; + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.io.Serializable; + +/** + * 生产过程上下文对象-产品加工规则(非排序) + */ +@Data +public class MesProdRuleNoSortContext extends MesProductionAssemblyContext implements Serializable { + + private static final long serialVersionUID = 2240955722926511959L; + + @ApiParam(value = "BOM明细ID") + private String bomDetailId; + + @ApiParam(value = "是否可复用条码") + private Integer isRepeat; + + @ApiParam(value = "是否忽略回车") + private Integer isIgnoreEntry; + + @ApiParam(value = "工序用量") + private Integer qty; + +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java index a6e944b..a7b36c3 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyContext.java @@ -14,105 +14,117 @@ public class MesProductionAssemblyContext implements Serializable { private static final long serialVersionUID = 2382117884422723639L; @ApiParam("加工记录ID") - private Long productionRecordId; + public Long productionRecordId; @ApiParam("装配件零件号") - private String assemblyPartNo; + public String assemblyPartNo; @ApiParam("装配件零件名称") - private String assemblyPartName; + public String assemblyPartName; @ApiParam("装配件条码") - private String assemblySn; + public String assemblySn; //非排序可能无值 @ApiParam(value = "生产工单号") - private String workOrderNo; + public String workOrderNo; @ApiParam("过程条码") - private String serialNumber; + public String serialNumber; @ApiParam("零件条码") - private String productSn; + public String productSn; @ApiParam("客户条码") - private String custSn; + public String custSn; @ApiParam("生产工单零件号") - private String partNo; + public String partNo; @ApiParam("生产工单零件名称") - private String partName; + public String partName; @ApiParam("装配零件类型") - private Integer assemblyPartType; + public Integer assemblyPartType; - //10=已绑定, 20=解绑, 30=待绑定, 40=跳过(待绑定) @ApiParam("装配零件状态") - private Integer assemblyStatus; + public Integer assemblyStatus; @ApiParam("是否跳过") - private Integer isSkip; + public Integer isSkip; @ApiParam("开模记录ID") - private String mouldRecordId; + public String mouldRecordId; @ApiParam("模具号") - private String mouldNo; + public String mouldNo; @ApiParam("装配件条码确认方式") - private Integer matchType; + public Integer matchType; @ApiParam("扫描规则") - private String matchRule; + public String matchRule; - //10=非排序装配件维护表ID, 20=排序线排产装配目视项ID @ApiParam("数据来源") - private Integer dataSource; + public Integer dataSource; @ApiParam("来源ID") - private Long sourceId; + public Long sourceId; @ApiParam(value = "生产线类型 10=排序 20=非排序") - private Integer centerType; + public Integer centerType; @ApiParam(value = "排序/非排序产品加工规则ID") - private Long pid; + public Long pid; @ApiParam("最小值") - private Double minValue; + public Double minValue; @ApiParam("最大值") - private Double maxValue; + public Double maxValue; @ApiParam(value = "装备序号") - private Integer routeSeq; + public Integer routeSeq; @ApiParam("组织代码") - private String organizeCode; + public String organizeCode; @ApiParam("区域代码") - private String areaCode; + public String areaCode; @ApiParam("生产线代码") - private String workCenterCode; + public String workCenterCode; @ApiParam("工位代码") - private String workCellCode; + public String workCellCode; @ApiParam("设备代码") - private String equipmentCode; + public String equipmentCode; @ApiParam("工序代码") - private String processCode; + public String processCode; @ApiParam("工序名称") - private String processName; + public String processName; @ApiParam("工艺代码") - private String craftCode; + public String craftCode; @ApiParam("工艺名称") - private String craftName; + public String craftName; + + public MesProductionAssemblyContext() {} + + public MesProductionAssemblyContext(String organizeCode, String workCenterCode, String workCellCode, String processCode) { + this.organizeCode = organizeCode; + this.workCenterCode = workCenterCode; + this.workCellCode = workCellCode; + this.processCode = processCode; + } + + public MesProductionAssemblyContext dataSource(Integer dataSource) { + this.dataSource = dataSource; + return this; + } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java index b774f91..c26d749 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblySortContext.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; import io.swagger.annotations.ApiParam; import lombok.Data; +import org.springframework.beans.BeanUtils; import java.io.Serializable; @@ -59,7 +62,7 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte private String destErpLocation; @ApiParam(value = "装配爆炸图FID") - private Long imageFileId ; + private Long imageFileId; @ApiParam(value = "条码打印方式") private Integer printType; @@ -97,4 +100,15 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte @ApiParam(value = "生产组代码") private String productGroupCode; + public MesProductionAssemblySortContext() {} + + public MesProductionAssemblySortContext(String organizeCode, String workCenterCode, String workCellCode, String processCode) { + super(organizeCode, workCenterCode, workCellCode, processCode); + } + + public MesProductionAssemblySortContext(MesWorkOrderAssembly workOrderAssembly, MesProductionAssembly productionAssembly) { + if (null != workOrderAssembly) BeanUtils.copyProperties(workOrderAssembly, this); + if (null != productionAssembly) BeanUtils.copyProperties(productionAssembly, 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 0a9af77..789b69f 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 @@ -1,15 +1,20 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariableCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; 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.io.Serializable; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.TreeSet; import java.util.stream.Collectors; /** @@ -66,54 +71,7 @@ public class MesProductionProcessContext implements Serializable { private String cavityGroupProdParamJson; - //-----------------根据业务执行情况必要时清理----------------- - - @ApiParam("加工结果:成功/报废/可疑 【报废/可疑: 在保存逻辑条码时有特殊业务处理】") - private String productResult; - - @ApiParam("就绪信号") - private String readySignal; - - @ApiParam("头道模具号") - private String firstMouldNo; - - @ApiParam("模具号") - private String mouldNo; - - @ApiParam("一模多腔信息(JSON LIST)") - private String mouldCavityJson; - - @ApiParam("零件信息") - private String partDataJson; - - @ApiParam("扫描信息:生产工单号") - private String workOrderNoJson; - - @ApiParam("扫描信息:主条码") - private String productSnJson; - - @ApiParam("扫描信息:装配件条码") - private String assemblySnJson; - - @ApiParam("零件条码信息") - private String produceSnDataJson; - - @ApiParam("生产工单信息") - private String workOrderDataJson; - - @ApiParam("装配件信息(非排序/排序线排产装配目视项)") - private String assemblyDataJson; - - @ApiParam("非排序加工规则信息") - private String unSortRuleJson; - - @ApiParam("设备加工参数信息") - private String equipProdParamJson; - - @ApiParam("时效性信息") - private String timeEfficientJson; - - //-------------------------------------------------------- + //---------------------- 构造方法 --------------------------------------- public MesProductionProcessContext() {} @@ -121,6 +79,8 @@ public class MesProductionProcessContext implements Serializable { this.organizeCode = organizeCode; } + //---------------------- 信息初始化/赋值 --------------------------------------- + //上下文信息结果初始化 public MesProductionProcessContext success() { this.success = true; @@ -141,9 +101,11 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 生产线对象 --------------------------------------- + //从上下文中取出生产线对象 public MesWorkCenter getWorkCenter() { - return StringUtils.isEmpty(this.workCenterJson) ? null : JSONObject.parseObject(this.workCenterJson, MesWorkCenter.class); + return !StringUtils.isEmpty(this.workCenterJson) ? JSONObject.parseObject(this.workCenterJson, MesWorkCenter.class) : null; } //上下文赋值生产线对象 @@ -152,9 +114,11 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 工位对象 --------------------------------------- + //从上下文中取出工位对象 public MesWorkCell getWorkCell() { - return StringUtils.isEmpty(this.workCellJson) ? null : JSONObject.parseObject(this.workCellJson, MesWorkCell.class); + return !StringUtils.isEmpty(this.workCellJson) ? JSONObject.parseObject(this.workCellJson, MesWorkCell.class) : null; } //上下文赋值工位对象 @@ -163,6 +127,8 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 工序/工艺信息 --------------------------------------- + //上下文赋值工序信息 public MesProductionProcessContext processCode(String processCode, String processName) { this.processCode = processCode; @@ -177,9 +143,11 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 工位设备对象集合 --------------------------------------- + //从上下文中取出工位设备对象集合 private List getCellEquipList() { - return StringUtils.isEmpty(this.cellEquipListJson) ? null : JSONObject.parseArray(this.cellEquipListJson, MesCellEquipContext.class); + return !StringUtils.isEmpty(this.cellEquipListJson) ? JSONObject.parseArray(this.cellEquipListJson, MesCellEquipContext.class) : null; } //上下文赋值工位设备对象集合 @@ -188,6 +156,8 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 工位当前设备 --------------------------------------- + //从上下文中的工位设备对象集合中取出当前要使用的设备 public MesCellEquipContext filterCurCellEquip() { List cellEquipList = getCellEquipList(); @@ -204,12 +174,12 @@ public class MesProductionProcessContext implements Serializable { //从上下文中的工位设备对象集合中取出第一个设备 private MesCellEquipContext filterCurCellEquip(List cellEquipContextList) { - return CollectionUtils.isEmpty(cellEquipContextList) ? null : cellEquipContextList.get(0); + return !CollectionUtils.isEmpty(cellEquipContextList) ? cellEquipContextList.get(0) : null; } //从上下文中取出工位当前要使用的设备 public MesCellEquipContext getCurCellEquip() { - return StringUtils.isEmpty(this.curCellEquipJson) ? null : JSONObject.parseObject(this.curCellEquipJson, MesCellEquipContext.class); + return !StringUtils.isEmpty(this.curCellEquipJson) ? JSONObject.parseObject(this.curCellEquipJson, MesCellEquipContext.class) : null; } //上下文赋值工位当前要使用的设备 @@ -218,15 +188,17 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 数据变量接口逻辑集合 --------------------------------------- + //从上下文中取出设备数据变量接口逻辑集合 private List getEquipVariableCfgList() { - return StringUtils.isEmpty(this.equipVariableCfgJson) ? null : JSONObject.parseArray(this.equipVariableCfgJson, MesEquipmentVariableCfg.class); + return !StringUtils.isEmpty(this.equipVariableCfgJson) ? JSONObject.parseArray(this.equipVariableCfgJson, MesEquipmentVariableCfg.class) : null; } //从上下文的设备数据变量接口逻辑对象集合中取出当前设备信息的逻辑类型对应的接口逻辑对象集合 public List getEquipVariableCfgListByVct() { MesCellEquipContext cellEquipContext = getCurCellEquip(); - return null == cellEquipContext ? null : getEquipVariableCfgListByVct(cellEquipContext.getVariableCfgType()); + return null != cellEquipContext ? getEquipVariableCfgListByVct(cellEquipContext.getVariableCfgType()) : null; } //从上下文的设备数据变量接口逻辑对象集合中取出当前设备信息的逻辑类型对应的接口逻辑对象集合 @@ -246,15 +218,17 @@ public class MesProductionProcessContext implements Serializable { return this; } + //---------------------- 数据变量对象集合 --------------------------------------- + //从上下文中取出设备数据变量对象集合 private List getEquipVariableList() { - return StringUtils.isEmpty(this.equipVariableJson) ? null : JSONObject.parseArray(this.equipVariableJson, MesEquipmentVariable.class); + return !StringUtils.isEmpty(this.equipVariableJson) ? JSONObject.parseArray(this.equipVariableJson, MesEquipmentVariable.class) : null; } //从上下文的设备数据变量对象集合中取出当前设备对应具体变量类型的数据变量对象集合 public List getEquipVariableListByEquVt(Integer variableType) { MesCellEquipContext cellEquipContext = getCurCellEquip(); - return (null == cellEquipContext || StringUtils.isEmpty(variableType)) ? null : getEquipVariableListByEquVt(cellEquipContext.getEquipmentCode(), variableType); + return (null != cellEquipContext && !StringUtils.isEmpty(variableType)) ? getEquipVariableListByEquVt(cellEquipContext.getEquipmentCode(), variableType) : null; } //从上下文的设备数据变量对象集合中取出当前设备对应具体变量类型的数据变量对象集合 @@ -275,147 +249,4 @@ public class MesProductionProcessContext implements Serializable { return this; } - //上下文赋值加工结果 - public MesProductionProcessContext productResult(String productResult) { - this.productResult = productResult; - return this; - } - - //上下文清除加工结果 - public MesProductionProcessContext productResultClear() { - this.productResult = null; - return this; - } - - //上下文赋值就绪信号 - public MesProductionProcessContext readySignal(String readySignal) { - this.readySignal = readySignal; - return this; - } - - //上下文清除就绪信号 - public MesProductionProcessContext readySignalClear() { - this.readySignal = null; - return this; - } - - //从上下文中取出头道模具号 - public MesEquipVariableCollectContext getFirstMouldNo() { - return StringUtils.isEmpty(this.firstMouldNo) ? null : JSONObject.parseObject(this.firstMouldNo, MesEquipVariableCollectContext.class); - } - - //上下文赋值头道模具号 - public MesProductionProcessContext firstMouldNo(MesEquipVariableCollectContext firstMouldNo) { - this.firstMouldNo = null != firstMouldNo ? JSONObject.toJSONString(firstMouldNo) : null; - return this; - } - - //上下文清除头道模具号 - public MesProductionProcessContext firstMouldNoClear() { - this.firstMouldNo = null; - return this; - } - - //从上下文中取出模具号 - public MesEquipVariableCollectContext getMouldNo() { - return StringUtils.isEmpty(this.mouldNo) ? null : JSONObject.parseObject(this.mouldNo, MesEquipVariableCollectContext.class); - } - - //上下文赋值模具号 - public MesProductionProcessContext mouldNo(MesEquipVariableCollectContext mouldNo) { - this.mouldNo = null != mouldNo ? JSONObject.toJSONString(mouldNo) : null; - return this; - } - - //上下文清除模具号 - public MesProductionProcessContext mouldNoClear() { - this.mouldNo = null; - return this; - } - - //从上下文中取出一模多腔信息集合 - public List getMouldCavityList() { - return StringUtils.isEmpty(this.mouldCavityJson) ? null : JSONObject.parseArray(this.mouldCavityJson, MesMouldMultiCavity.class); - } - - //上下文赋值一模多腔信息 - public MesProductionProcessContext mouldCavityJson(List mouldMultiCavityList) { - this.mouldCavityJson = !CollectionUtils.isEmpty(mouldMultiCavityList) ? JSONObject.toJSONString(mouldMultiCavityList) : null; - return this; - } - - //上下文清除一模多腔信息 - public MesProductionProcessContext mouldCavityJsonClear() { - this.mouldCavityJson = null; - return this; - } - - //从上下文中取出零件信息集合 - public Map getPartDataMap() { - return StringUtils.isEmpty(this.partDataJson) ? null : JSONObject.parseObject(this.partDataJson, new TypeReference>() {}); - } - - //上下文赋值零件信息集合 - public MesProductionProcessContext partDataJson(Map partDataMap) { - this.partDataJson = !CollectionUtils.isEmpty(partDataMap) ? JSONObject.toJSONString(partDataMap) : null; - return this; - } - - //上下文清除零件信息 - public MesProductionProcessContext partDataJsonClear() { - this.partDataJson = null; - return this; - } - - //从上下文中取出主条码信息 - public List getProductSnList() { - return StringUtils.isEmpty(this.productSnJson) ? null : JSONObject.parseArray(this.productSnJson, MesEquipVariableCollectContext.class); - } - - //上下文赋值主条码信息 - public MesProductionProcessContext productSnJson(List productSnList) { - this.productSnJson = !CollectionUtils.isEmpty(productSnList) ? JSONObject.toJSONString(productSnList) : null; - return this; - } - - //上下文清除主条码信息 - public MesProductionProcessContext productSnJsonClear() { - this.productSnJson = null; - return this; - } - - //从上下文中取出装配件条码集合 - public List getAssemblySnList() { - return StringUtils.isEmpty(this.assemblySnJson) ? null : JSONObject.parseArray(this.assemblySnJson, MesEquipVariableCollectContext.class); - } - - //上下文赋值装配件条码集合 - public MesProductionProcessContext assemblySnJson(List assemblySnList) { - this.assemblySnJson = !CollectionUtils.isEmpty(assemblySnList) ? JSONObject.toJSONString(assemblySnList) : null; - return this; - } - - //上下文清除装配件条码集合 - public MesProductionProcessContext assemblySnJsonClear() { - this.assemblySnJson = null; - return this; - } - - //从上下文中取出零件条码信息集合 - public List getProduceSnDataList() { - return StringUtils.isEmpty(this.produceSnDataJson) ? null : JSONObject.parseArray(this.produceSnDataJson, MesProduceSn.class); - } - - //上下文赋值零件条码信息集合 - public MesProductionProcessContext produceSnDataJson(List produceSnDataList) { - this.produceSnDataJson = !CollectionUtils.isEmpty(produceSnDataList) ? JSONObject.toJSONString(produceSnDataList) : null; - return this; - } - - //上下文清除零件条码信息 - public MesProductionProcessContext produceSnDataJsonClear() { - this.produceSnDataJson = null; - return this; - } - } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesWorkOrderContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesWorkOrderContext.java new file mode 100644 index 0000000..0a64738 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesWorkOrderContext.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.context; + +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import lombok.Data; + +import java.io.Serializable; + +/** + * 生产过程上下文对象-装配件清单信息(非排序) + */ +@Data +public class MesWorkOrderContext extends MesWorkOrder implements Serializable { + + private static final long serialVersionUID = 5562937531822977296L; + +} 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 5214ac7..1397776 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 @@ -62,7 +62,16 @@ public class MesPcnExtConstWords { public static final String EQUIP_VARIABLE_STATUS = "equipVariableStatus"; // 模具号 public static final String MOULD_NO = "mouldNo"; - + // 工序代码 + public static final String PROCESS_CODE = "processCode"; + // 生产工单号 + public static final String WORK_ORDER_NO = "workOrderNo"; + // 数据来源 + public static final String DATD_SOURCE = "dataSource"; + // 数据来源ID + public static final String SOURCE_ID = "sourceId"; + // 装配件绑定状态 + public static final String ASSEMBLY_STATUS = "assemblyStatus"; @@ -86,15 +95,50 @@ public class MesPcnExtConstWords { // ; public static final String SEMICOLON = ";"; - // 生产过程控制上下文 - public static final String PRODUCTION_PROCESS_CONTEXT = "PRODUCTION_PROCESS_CONTEXT"; // 定制页面名称(默认) public static final String CUSTOM_PAGE_NAME_DEFAULT = "CUSTOM_PAGE_NAME_DEFAULT"; // 上个扫描信息 public static final String LAST_SCAN_INFO = "lastScanInfo"; - // 当前扫描信息 public static final String SCAN_INFO = "scanInfo"; + // 生产过程控制上下文目录名 + public static final String PRODUCTION_PROCESS_CONTEXT = "PRODUCTION_PROCESS_CONTEXT"; + // 上下文: 基础数据 + public static final String BASE_DATA_CONTEXT = "BASE_DATA_CONTEXT"; + // 上下文: 展示组件数据 + public static final String MODULE_CONTENT_CONTEXT = "MODULE_CONTENT_CONTEXT"; + // 历史扫描信息 + public static final String LAST_SCAN_INFO_CONTEXT = "LAST_SCAN_INFO_CONTEXT"; + // 上下文: 加工结果 + public static final String PRODUCT_RESULT_CONTEXT = "PRODUCT_RESULT_CONTEXT"; + // 上下文: 就绪信号 + public static final String READY_SIGNAL_CONTEXT = "READY_SIGNAL_CONTEXT"; + // 上下文: 头道模具号 + public static final String FIRST_MOULD_NO_CONTEXT = "FIRST_MOULD_NO_CONTEXT"; + // 上下文: 模具号 + public static final String MOULD_NO_CONTEXT = "MOULD_NO_CONTEXT"; + // 上下文: 一模多腔信息 + public static final String MOULD_MULTI_CAVITY_CONTEXT = "MOULD_MULTI_CAVITY_CONTEXT"; + // 上下文: 零件数据信息 + public static final String PART_DATA_CONTEXT = "PART_DATA_CONTEXT"; + // 上下文: 扫/读信息:生产工单号 + public static final String SCAN_WORK_ORDER_NO_CONTEXT = "SCAN_WORK_ORDER_NO_CONTEXT"; + // 上下文: 扫/读信息:主条码 + public static final String SCAN_PRODUCT_SN_CONTEXT = "SCAN_PRODUCT_SN_CONTEXT"; + // 上下文: 扫/读信息:装配件条码 + public static final String SCAN_ASSEMBLY_SN_CONTEXT = "SCAN_ASSEMBLY_SN_CONTEXT"; + // 上下文: 生产工单数据信息 + public static final String WORK_ORDER_DATA_CONTEXT = "WORK_ORDER_DATA_CONTEXT"; + // 上下文: 产品加工规则数据信息 + public static final String PROD_RULE_DATA_CONTEXT = "PROD_RULE_DATA_CONTEXT"; + // 上下文: 进料条码数据信息 + public static final String IN_PRODUCE_SN_DATA_CONTEXT = "IN_PRODUCE_SN_DATA_CONTEXT"; + // 上下文: 产出条码数据信息 + public static final String OUT_PRODUCE_SN_DATA_CONTEXT = "OUT_PRODUCE_SN_DATA_CONTEXT"; + + + + }