diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java index 298a72e..bb6eb59 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesEquipmentLogService.java @@ -118,7 +118,7 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.RECORD_STATUS.RECORD_STATUS_10.getValue(), "recordStatus", ddlPackBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"createDatetime"}, ddlPackBean); - List mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlWhere(ddlPackBean); + List mesEquipmentRecords = mesEquipmentRecordRepository.findByHqlTopWhere(ddlPackBean, 10); if (CollectionUtils.isEmpty(mesEquipmentRecords)) { LOGGER.info("没有设备记录需要同步"); } @@ -159,6 +159,7 @@ public class MesEquipmentLogService implements IMesEquipmentLogService { mesEquipmentLogDetail.setExtend(mesEquipmentRecord.getProduceSnJson()); } + ConvertBean.serviceModelInitialize(mesEquipmentLogDetail, "job"); mesEquipmentLogDetails.add(mesEquipmentLogDetail); } mesEquipmentLogDetailRepository.saveAll(mesEquipmentLogDetails); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 8b51643..1b2ad59 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -13,6 +13,7 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection; @@ -353,7 +354,6 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()); ConvertBean.serviceModelUpdate(model.getPartInspection(), AuthUtil.getSessionUser().getUserName()); - partInspectionRepository.save(model.getPartInspection()); //查询当前单据明细 List resultDetailList = queryResultDetailList(model, org); @@ -387,10 +387,19 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService if (model.getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) { checkProduceSn(produceSn, model.getSn()); produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + String defectTypeCode = MesEnumUtil.DEFECT_TYPE_CODE.DETERMIND.getValue(); + //根据页面上选择的位置 查询位置,若不存在则提示 位置不存在,请检查数据 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); + DdlPreparedPack.getStringEqualPack("QX130", "defectTypeCode", packBean); + MesDefectType defectType = defectTypeRepository.getByProperty(packBean); + + model.getPartInspection().setDefectTypeCode(defectType.getDefectTypeCode()); + model.getPartInspection().setDefectTypeId(defectType.getId()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); } + partInspectionRepository.save(model.getPartInspection()); partInspectionDetailRepository.saveAll(resultDetailList); partInspectionDetailRepository.saveAll(model.getPartInspectionDetailList()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 97d85e2..5484251 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -462,6 +462,14 @@ public class MesWorkOrderService implements IMesWorkOrderService { try { List oldMesWorkOrderList = getMesWorkOrder(productionRecord, organizeCode); if (CollectionUtils.isEmpty(oldMesWorkOrderList)) { + if (Objects.equals(productionRecord.getReportStatus(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue())) { + LOGGER.warn("报工条码:{}工单为试制单,更新成无需报工", productionRecord.getProductSn()); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", ddlPackBean); + productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "reportStatus"}, + new Object[]{userName, TimeTool.getNowTime(true), productionRecord.getReportStatus()},ddlPackBean); + return; + } LOGGER.error("报工条码:{}找不到加工单", productionRecord.getProductSn()); updateProductionRecord(organizeCode, userName, productionRecord.getId()); return; @@ -782,6 +790,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { List oldMesWorkOrders = workOrderRepository.findByHqlWhere(ddlPackBean); if (!CollectionUtils.isEmpty(oldMesWorkOrders)) { oldMesWorkOrders = oldMesWorkOrders.stream().filter(mesWorkOrder -> !Objects.equals(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue(), mesWorkOrder.getOrderFlag())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(oldMesWorkOrders)) { + productionRecord.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue()); + } } return oldMesWorkOrders; } @@ -875,7 +886,11 @@ public class MesWorkOrderService implements IMesWorkOrderService { DdlPreparedPack.getNotInPack(centerList, "workCenterCode", ddlPackBean); } DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"modifyDatetime"}, ddlPackBean); - List mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, 50); + + String numStr = configService.getCfgValue(organizeCode, "MES_PCN_REPORT_NUM"); + int num = StringUtils.isEmpty(numStr) ? 50 : Integer.valueOf(numStr); + + List mesProductionRecordList = productionRecordRao.findByHqlTopWhere(ddlPackBean, num); List recordList = new ArrayList<>(); // 根据零件号分组 /*if(!CollectionUtils.isEmpty(mesProductionRecordList)) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionUnlockService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionUnlockService.java index 7fac0bb..9a77b40 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionUnlockService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionUnlockService.java @@ -42,7 +42,7 @@ public class MesFunctionProductionUnlockService extends BaseSwsService implement reqBean.setBusiType(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_DO_SCAN.getCode()); reqBean.setTriggerAutoFsm(true); - shippingDispatchService.doSendScanQueueIfNoQueue(reqBean); + shippingDispatchService.doSendScanQueueIfNoQueue(reqBean, false, this.getClass().getSimpleName()); return true; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java index 78ed874..c487b10 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesEquipByPassReadStepService.java @@ -59,7 +59,7 @@ public class MesEquipByPassReadStepService extends BaseStepService { //当前工位使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - if (null == cellEquipContext || StringUtils.isEmpty(cellEquipContext.getCtrlByPass()) || cellEquipContext.getCtrlByPass().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) return stepResult.isCompleted(false); + if (null == cellEquipContext) return stepResult.isCompleted(false); //获取生产过程上下文对象有异常信息 if (!productionProcessContextStepService.getEquipmentVariableCfgList(productionProcessContext).getSuccess()) return stepResult.isCompleted(false).msg(productionProcessContext.getMessage()); @@ -72,7 +72,7 @@ public class MesEquipByPassReadStepService extends BaseStepService { //配置错误 if (!productionProcessContextStepService.checkNecessaryEquipmentVariableCfgAndValue(productionProcessContext, cellEquipContext, equipmentVariableCfgList, MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.BYPASS.getValue()).getSuccess()) - return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().checkRepeat(), stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, productionProcessContext.getMessage()); + return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, false, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, productionProcessContext.getMessage()); //搜集设备数据变量接口逻辑信息中的二级变量 List categoryLevelTwoList = productionProcessContextStepService.collectCategoryLevelTwoList(equipmentVariableCfgList); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoReadStepService.java index fe874df..d2c4845 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionPartNoReadStepService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; import cn.estsh.i3plus.mes.pcn.api.iservice.base.IPartService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil; @@ -39,6 +40,9 @@ import java.util.stream.Collectors; public class MesProductionPartNoReadStepService extends BaseStepService { @Autowired + private IFsmCommonService fsmCommonService; + + @Autowired private IMesProductionProcessContextStepService productionProcessContextStepService; @Autowired @@ -64,10 +68,20 @@ public class MesProductionPartNoReadStepService extends BaseStepService { @Override public StepResult init(StationRequestBean reqBean) { + StepResult stepResult = StepResult.getSuccessComplete(); + + String endlessLoopReadTimes = fsmCommonService.doHandleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.ENDLESS_LOOP_READ_TIMES); + if (StringUtils.isEmpty(endlessLoopReadTimes)) endlessLoopReadTimes = MesPcnExtConstWords.ENDLESS_LOOP_READ_TIMES_DEFAULT; + if (productionDispatchContextStepService.doCheckOverEndlessLoopReadTimes(reqBean, endlessLoopReadTimes)) { + execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, new StationResultBean().isWs(false).restoreDbLog().checkRepeat(), + stepResult.isCompleted(false).msg(String.format("当前读取到设备的零件号匹配失败超过[%s]次!", endlessLoopReadTimes)), + MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, getStepParams(reqBean), MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); + } + //发送工步内容 productionCustomContextStepService.doSendStepContextMessage(reqBean); - return super.init(reqBean); + return stepResult; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java index 18c1d9d..6a5bd8a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepService.java @@ -1,26 +1,22 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesEquipmentProdParamCfgService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEquipVariableRwExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteVariableService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; -import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; -import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -28,7 +24,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -46,117 +45,214 @@ public class MesSendEquipParamsCmdStepService extends BaseStepService { private IMesProductionDispatchContextStepService productionDispatchContextStepService; @Autowired - private IWriteVariableService writeVariableService; + private IMesProductionCustomContextStepService productionCustomContextStepService; @Autowired - private MesEquipmentVariableRepository mesEquipmentVariableRepository; + private IMesEquipmentProdParamCfgService equipmentProdParamCfgService; @Autowired - private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository; + private IMesEquipVariableRwExtService equipVariableRwExtService; + @Autowired + private IMesEquipmentExtService equipmentExtService; @Override public StepResult execute(StationRequestBean reqBean) { StationResultBean resultBean = new StationResultBean(); - StepResult stepResult = StepResult.getSuccessComplete(); - - //获取工步参数 - Optional> stepParamMap = getStepParams(reqBean); + //获取上下文加工规则数据信息集合 + List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); + if (CollectionUtils.isEmpty(prodRuleContextList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), "发送设备加工参数:当前没有加工规则数据,跳过发送!"); //获取上下文信息 - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean, stepParamMap); + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean); + + //获取生产过程上下文对象有异常信息 抛出异常 + if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); + + //获取生产线信息 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); + + //搜集加工参数关联ID集合 + List sourceIdList = getEquipmentProdParamCfgSourceIdList(productionProcessContext, prodRuleContextList, workCenter); + + //根据来源ID查询设备加工参数信息 + List equipmentProdParamCfgList = equipmentProdParamCfgService.getEquipmentProdParamCfgList(reqBean.getOrganizeCode(), sourceIdList); + + if (CollectionUtils.isEmpty(equipmentProdParamCfgList)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), "发送设备加工参数:当前加工规则未匹配到设备加工参数相关配置,跳过发送!"); + + //设备加工参数信息集合根据来源ID分组 + Map> eppcMap2SourceId = equipmentProdParamCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesEquipmentProdParamCfg::getSourceId)); + + //设备加工参数信息集合根据数据变量ID分组 + Map> eppcMap2EquipVariableId = equipmentProdParamCfgList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesEquipmentProdParamCfg::getEquipVariableId)); + + //根据设备数据变量ID集合查询设备数据变量信息 + List equipmentVariableList = equipmentExtService.getEquipmentVariableList(reqBean.getOrganizeCode(), new ArrayList<>(eppcMap2EquipVariableId.keySet())); + + //设备加工参数信息集合根据数据变量ID分组 + Map evMap = CollectionUtils.isEmpty(equipmentVariableList) ? null : equipmentVariableList.stream().filter(o -> null != o).collect(Collectors.toMap(MesEquipmentVariable::getId, o -> o)); //当前工位使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); - //获取上下文加工规则数据信息集合 - List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); + //获取上下文中的业务数据 + String productResult = productionDispatchContextStepService.getProductResultContext(reqBean); + List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); + List productionPsInContexts = productionDispatchContextStepService.getProductionPsInContext(reqBean); + List productionPsOutContexts = productionDispatchContextStepService.getProductionPsOutContext(reqBean); + MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + + //发送设备加工参数 + prodRuleContextList.stream().filter(o -> null != o).forEach(o -> { + + Optional productionPartContextOp = CollectionUtils.isEmpty(productionPartContextList) ? null : + productionPartContextList.stream().filter(i -> (null != i && !StringUtils.isEmpty(i.getForeignKey()) && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst(); + + Optional productionPsInContextOp = CollectionUtils.isEmpty(productionPsInContexts) ? null : + productionPsInContexts.stream().filter(i -> (null != i && !StringUtils.isEmpty(i.getForeignKey()) && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst(); + + Optional productionPsOutContextOp = CollectionUtils.isEmpty(productionPsOutContexts) ? null : + productionPsOutContexts.stream().filter(i -> (null != i && !StringUtils.isEmpty(i.getForeignKey()) && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst(); + + + doSendEquipParamsCmd(reqBean, resultBean, o, workCenter, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); - if (CollectionUtils.isEmpty(prodRuleContextList)) { - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!"); - } - List mesEquipmentVariableList = new ArrayList<>(); - List mesEquipmentProdParamCfgList = new ArrayList<>(); - Map> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList); - - - mesEquipmentVariableMap.forEach((k, v) -> { - v.stream().forEach(mesEquipmentProdParamCfg -> { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean); - MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean); - if (mesEquipmentVariable == null) { - return; - } - mesEquipmentVariableList.add(mesEquipmentVariable); - mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg); - execSendEquipParamsCmd(reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), k, stepParamMap); - }); }); + return StepResult.getSuccessComplete(); + } + + //搜集加工参数关联ID集合 + private List getEquipmentProdParamCfgSourceIdList(MesProductionProcessContext productionProcessContext, List prodRuleContextList, MesWorkCenter workCenter) { + if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()) { + return prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPid()))).map(MesProdRuleContext::getPid).collect(Collectors.toList()); + } else { + List sourceIdList = null; + for (MesProdRuleContext prodRuleContext : prodRuleContextList) { + if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue; + List itemIdList = prodRuleContext.getSortAssemblyDataContext().stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getSourceId()))).map(MesProductionAssemblySortContext::getSourceId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(itemIdList)) continue; + if (CollectionUtils.isEmpty(sourceIdList)) sourceIdList = new ArrayList<>(); + sourceIdList.addAll(itemIdList); + } + return sourceIdList; + } + } - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送加工参数成功!"); + //发送设备加工参数 + private void doSendEquipParamsCmd(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesWorkCenter workCenter, MesCellEquipContext cellEquipContext, + Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, + Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { + if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()) + doSendEquipParamsCmdNosort(reqBean, resultBean, prodRuleContext, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); + else + doSendEquipParamsCmdSort(reqBean, resultBean, prodRuleContext, cellEquipContext, eppcMap2SourceId, evMap, productionProcessContext, productResult, productionPartContextOp, productionPsInContextOp, productionPsOutContextOp); } - /** - * 根据排序和非排序 获取对应的加工参数 - * @param reqBean - * @param prodRuleContextList - * @param mesEquipmentProdParamCfgList - * @return - */ - private Map> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List prodRuleContextList, List mesEquipmentProdParamCfgList) { + //发送设备加工参数【非排序】 + private void doSendEquipParamsCmdNosort(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesCellEquipContext cellEquipContext, + Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, + Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { - MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean); + //当前加工规则的PID对应的设备加工参数 + List equipmentProdParamCfgList = eppcMap2SourceId.get(prodRuleContext.getPid()); + + if (CollectionUtils.isEmpty(equipmentProdParamCfgList)) return; + + MesProductionPartContext productionPartContext = (null != productionPartContextOp && productionPartContextOp.isPresent()) ? productionPartContextOp.get() : null; + + MesProductionPsInContext productionPsInContext = (null != productionPsInContextOp && productionPsInContextOp.isPresent()) ? productionPsInContextOp.get() : null; + + MesProductionPsOutContext productionPsOutContext = (null != productionPsOutContextOp && productionPsOutContextOp.isPresent()) ? productionPsOutContextOp.get() : null; + + //搜集发送规则并去重 + List matchRuleList = (equipmentProdParamCfgList.stream().filter(o -> null != o).map(o -> o.getMatchRule().toUpperCase()).collect(Collectors.toList())).stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList()); + + for (String matchRule : matchRuleList) { + + if (StringUtils.isEmpty(matchRule)) continue; + + Optional equipmentProdParamCfgOp = equipmentProdParamCfgList.stream().filter(o -> (null != o && o.getMatchRule().toUpperCase().equals(matchRule) && evMap.containsKey(o.getEquipVariableId()))).findFirst(); + + if (null == equipmentProdParamCfgOp || !equipmentProdParamCfgOp.isPresent()) continue; - Map> map = new HashMap<>(); - for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) { - List mesEquipmentProdParamCfgs= new ArrayList<>(); - //从上下文中取出生产线对象 - MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); - // 获取加工参数 - if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){ - - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean); - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); - } else { - MesWorkCenter mesWorkCenter = new MesWorkCenter(); - mesWorkCenter.setWorkCenterCode(reqBean.getWorkCenterCode()); - List assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter); - List sourceIds = assemblyDataContext.stream().map(MesProductionAssemblyContext::getSourceId).collect(Collectors.toList()); - - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); - DdlPreparedPack.getInPackList(sourceIds, "sourceId", ddlPackBean); - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); + evMap.remove(equipmentProdParamCfgOp.get().getId()); + + //数据转换 + String matchValue = transferValue(matchRule, reqBean, prodRuleContext, productionProcessContext, productResult, productionPartContext, productionPsInContext, productionPsOutContext); + + if (StringUtils.isEmpty(matchValue)) { + this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("发送设备加工参数:[%s]未匹配到业务数据", matchRule), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + continue; + } + + MesEquipmentVariable equipmentVariable = evMap.get(equipmentProdParamCfgOp.get().getEquipVariableId()); + if (null == equipmentVariable) { + this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("发送设备加工参数:设备加工参数信息ID[%s]关联的设备数据变量ID[%s]未维护有效的设备数据变量信息!", equipmentProdParamCfgOp.get().getId(), equipmentProdParamCfgOp.get().getEquipVariableId()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + continue; } - if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) { - mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList()); + + //写值 + MesEquipVariableRwResult equipVariableRwResult = equipVariableRwExtService.writeVariable(matchValue, equipmentVariable, cellEquipContext.getKepwareFlag(equipmentVariable.getChannel())); + + if (!equipVariableRwResult.getIsSuccessed()) { + this.sendMessage(reqBean, new StationResultBean().writeDbLog().checkRepeat(), String.format("设备[%s]:发送设备加工参数失败!原因:%s", cellEquipContext.getEquipmentName(), equipVariableRwResult.getMessage()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + continue; } - map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs); + + this.sendMessage(reqBean, new StationResultBean().writeDbLog(), String.format("设备[%s]:发送设备加工参数成功!%s", cellEquipContext.getEquipmentName(), equipVariableRwResult.getMessage()), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT); + } - return map; - } - private void execSendEquipParamsCmd(StationRequestBean reqBean, - String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional> stepParamMap) { - //最大重试次数[工步参数] - Integer maxRetryTimes = getMaxRetryTimes(stepParamMap); + } - writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes); + //发送设备加工参数【排序】 + private void doSendEquipParamsCmdSort(StationRequestBean reqBean, StationResultBean resultBean, MesProdRuleContext prodRuleContext, MesCellEquipContext cellEquipContext, + Map> eppcMap2SourceId, Map evMap, MesProductionProcessContext productionProcessContext, String productResult, + Optional productionPartContextOp, Optional productionPsInContextOp, Optional productionPsOutContextOp) { } - //最大重试次数[工步参数] - private Integer getMaxRetryTimes(Optional> stepParamMap) { - Integer maxRetryTimes = null; - try { - maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null; - } catch (NumberFormatException e) { + //数据转换 + private String transferValue(String matchRule, StationRequestBean reqBean, MesProdRuleContext prodRuleContext, MesProductionProcessContext productionProcessContext, String productResult, + MesProductionPartContext productionPartContext, MesProductionPsInContext productionPsInContext, MesProductionPsOutContext productionPsOutContext) { + switch (matchRule) { + case "%RESULT%" : + return MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.codeOfValue(productResult); + case "%PARAM%": + case "%ORDERCODE%": + return prodRuleContext.getWorkOrderNo(); + case "%CUSTPARTNO%": + return null != productionPartContext ? productionPartContext.getCustPartNo() : null; + case "%EMPLOYEENO%": + case "%CREATEUSER%": + return reqBean.getUserInfo(); + case "%BARCODE%": + return null != productionPsOutContext ? productionPsOutContext.getProductSn() : null; + case "%CREATEDATE%": + case "%GETDATE%": + return TimeTool.getNowTime(true); + case "%SHIFT%": + return "shift"; + case "%STATUS%": + return null != productionPsInContext ? productionPsInContext.getSnStatus().toString() : null; + case "%CUSTORDERCOD%": + return null != productionPartContext ? productionPartContext.getCustOrderNo() : null; + case "%PARTNO%": + return null != productionPsOutContext ? productionPsOutContext.getPartNo() : null; + case "%VINCODE%": + return null != productionPartContext ? productionPartContext.getVinCode() : null; + case "%SEQUENCE%": + return null != productionPartContext ? productionPartContext.getWorkOrderSeq() : null; + case "%CUSTBARCODE%": + return null != productionPsOutContext ? productionPsOutContext.getCustSn() : null; + default: + return matchRule; } - return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3; + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java new file mode 100644 index 0000000..7d7154e --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendEquipParamsCmdStepServiceBak.java @@ -0,0 +1,162 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWriteVariableService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyContext; +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.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; +import cn.estsh.i3plus.pojo.mes.model.StationResultBean; +import cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository; +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.*; +import java.util.stream.Collectors; + +/** + * @Description : 发送加工参数 + * @Author : zxw + **/ +@Slf4j +@Service("mesSendEquipParamsCmdStepServiceBak") +public class MesSendEquipParamsCmdStepServiceBak extends BaseStepService { + + @Autowired + private IMesProductionProcessContextStepService productionProcessContextStepService; + + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + + @Autowired + private IWriteVariableService writeVariableService; + + @Autowired + private MesEquipmentVariableRepository mesEquipmentVariableRepository; + + @Autowired + private MesEquipmentProdParamCfgRepository mesEquipmentProdParamCfgRepository; + + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + //获取工步参数 + Optional> stepParamMap = getStepParams(reqBean); + + //获取上下文信息 + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean, stepParamMap); + + //当前工位使用的设备 + MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); + + //获取上下文加工规则数据信息集合 + List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); + + if (CollectionUtils.isEmpty(prodRuleContextList)) { + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "未找到加工规则,无需发送加工参数!"); + } + List mesEquipmentVariableList = new ArrayList<>(); + List mesEquipmentProdParamCfgList = new ArrayList<>(); + Map> mesEquipmentVariableMap = getMesEquipmentProdParamCfgs(reqBean, prodRuleContextList, mesEquipmentProdParamCfgList); + + + mesEquipmentVariableMap.forEach((k, v) -> { + v.stream().forEach(mesEquipmentProdParamCfg -> { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", packBean); + MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(packBean); + if (mesEquipmentVariable == null) { + return; + } + mesEquipmentVariableList.add(mesEquipmentVariable); + mesEquipmentProdParamCfgList.add(mesEquipmentProdParamCfg); + execSendEquipParamsCmd(reqBean, mesEquipmentProdParamCfg.getMatchRule(), mesEquipmentVariable, cellEquipContext.getKepwareFlag(mesEquipmentVariable.getChannel()), k, stepParamMap); + }); + }); + + + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "发送加工参数成功!"); + } + + /** + * 根据排序和非排序 获取对应的加工参数 + * @param reqBean + * @param prodRuleContextList + * @param mesEquipmentProdParamCfgList + * @return + */ + private Map> getMesEquipmentProdParamCfgs(StationRequestBean reqBean, List prodRuleContextList, List mesEquipmentProdParamCfgList) { + + MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean); + + Map> map = new HashMap<>(); + for (MesProdRuleContext mesProdRuleContext : prodRuleContextList) { + List mesEquipmentProdParamCfgs= new ArrayList<>(); + //从上下文中取出生产线对象 + MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); + // 获取加工参数 + if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == workCenter.getCenterType()){ + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(mesProdRuleContext.getPid(), "sourceId", ddlPackBean); + mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); + } else { + MesWorkCenter mesWorkCenter = new MesWorkCenter(); + mesWorkCenter.setWorkCenterCode(reqBean.getWorkCenterCode()); + List assemblyDataContext = mesProdRuleContext.getAssemblyDataContext(mesWorkCenter); + List sourceIds = assemblyDataContext.stream().map(MesProductionAssemblyContext::getSourceId).collect(Collectors.toList()); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getInPackList(sourceIds, "sourceId", ddlPackBean); + mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean); + } + if (!CollectionUtils.isEmpty(mesEquipmentProdParamCfgs)) { + mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgs.stream().distinct().collect(Collectors.toList()); + } + map.put(mesProdRuleContext.getForeignKey(), mesEquipmentProdParamCfgs); + } + return map; + } + + private void execSendEquipParamsCmd(StationRequestBean reqBean, + String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Optional> stepParamMap) { + //最大重试次数[工步参数] + Integer maxRetryTimes = getMaxRetryTimes(stepParamMap); + + writeVariableService.writeVariable(reqBean, value, equipmentVariable, kepwareFlag, foreignKey, null, maxRetryTimes); + } + + //最大重试次数[工步参数] + private Integer getMaxRetryTimes(Optional> stepParamMap) { + Integer maxRetryTimes = null; + try { + maxRetryTimes = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.MAX_RETRY_TIMES)) ? Integer.valueOf(stepParamMap.get().get(MesPcnExtConstWords.MAX_RETRY_TIMES).getParamValue()) : null; + } catch (NumberFormatException e) { + } + return !StringUtils.isEmpty(maxRetryTimes) ? maxRetryTimes : 3; + } + + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java index 9f71809..2e61c9c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesVariableWhenFinishedReadStepService.java @@ -11,7 +11,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ActorMessage; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesOrderModel; import cn.estsh.i3plus.mes.pcn.config.SpringExtProvider; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; -import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; @@ -35,8 +34,6 @@ import java.util.stream.Collectors; @Slf4j @Service public class MesVariableWhenFinishedReadStepService extends BaseStepService { - @Autowired - private SnowflakeIdMaker snowflakeIdMaker; @Autowired private ActorSystem actorSystem; @@ -44,13 +41,9 @@ public class MesVariableWhenFinishedReadStepService extends BaseStepService { @Autowired private IMesProductionProcessContextStepService productionProcessContextStepService; - - @Autowired private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService; - public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT"; - private static final Map refMap = new ConcurrentHashMap<>(200); /** diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java index 06c513a..ceaebb9 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderReadStepService.java @@ -68,7 +68,7 @@ public class MesWorkOrderReadStepService extends BaseStepService { if (StringUtils.isEmpty(endlessLoopReadTimes)) endlessLoopReadTimes = MesPcnExtConstWords.ENDLESS_LOOP_READ_TIMES_DEFAULT; if (productionDispatchContextStepService.doCheckOverEndlessLoopReadTimes(reqBean, endlessLoopReadTimes)) { execThreadSleepAndSendTaskCompleteAndThrowEx(reqBean, new StationResultBean().isWs(false).restoreDbLog().checkRepeat(), - stepResult.isCompleted(false).msg(String.format("当前读取到设备的装配件条码匹配失败超过[%s]次!", endlessLoopReadTimes)), + stepResult.isCompleted(false).msg(String.format("当前读取到设备的加工单匹配失败超过[%s]次!", endlessLoopReadTimes)), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, getStepParams(reqBean), MesPcnExtConstWords.READ_FAILURE_SLEEP, MesPcnExtConstWords.READ_FAILURE_SLEEP_DEFAULT_TIME); }