diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java index ce8dd57..d9d8000 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveNosortStepService.java @@ -66,10 +66,12 @@ public class MesAssemblySaveNosortStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "上下文中不存在产出零件条码信息,请重置工序解决!"); + //从上下文中取出工位当前要使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); Map ppMap = CollectionUtils.isEmpty(productionPsOutContextList) ? null : productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsOutContext::getForeignKey, o -> o)); + //保存装配记录 prodRuleContextList.stream().filter(o -> null != o).forEach(o -> saveProductionAssemblyData(reqBean, resultBean, stepResult, productionProcessContext, o, ppMap, cellEquipContext)); return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存装配记录成功!"); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java new file mode 100644 index 0000000..2fba363 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveStepService.java @@ -0,0 +1,57 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; + +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService; +import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService; +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.MesProductionRecordRepository; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 保存加工结果工步 + * @Author : wangjie + **/ +@Slf4j +@Service("mesProductionDataSaveStepService") +public class MesProductionDataSaveStepService extends BaseStepService { + + @Autowired + private MesProductionRecordRepository productionRecordRepository; + + @Override + public StepResult execute(StationRequestBean reqBean) { + + StationResultBean resultBean = new StationResultBean(); + + StepResult stepResult = StepResult.getSuccessComplete(); + + //保存开模记录工步 + //((IStepService) SpringContextsUtil.getBean("")).execute(reqBean); + + //保存零件条码信息工步 + ((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).execute(reqBean); + + //加工异常处理工步【此工步未整改】 + //((IStepService) SpringContextsUtil.getBean("mesProductResultErrorHandleStepService")).execute(reqBean); + + //生成加工记录工步 + ((IStepService) SpringContextsUtil.getBean("mesProductionRecordGenerateStepService")).execute(reqBean); + + //保存装配记录工步 + ((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).execute(reqBean); + + //生产汇报工步 【此工步未整改】 + //((IStepService) SpringContextsUtil.getBean("mesReportGenerateStepService")).execute(reqBean); + + //保存工单信息工步 + //((IStepService) SpringContextsUtil.getBean("")).execute(reqBean); + + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存加工结果成功!"); + + } + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java index 19cd666..7750a43 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java @@ -66,22 +66,27 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "上下文中不存在产出零件条码信息,请重置工序解决!"); + //获取上下文(头道)模具号 MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getFirstMouldNoContext(reqBean); if (null == equipVariableCollectContext) equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean); + //从上下文中取出工位当前要使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); Map prMap = CollectionUtils.isEmpty(prodRuleContextList) ? null : prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProdRuleContext::getForeignKey, o -> o)); + //生成加工记录 String mouldNo = null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null; - productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProductionRecordData(reqBean, resultBean, stepResult, mouldNo, productionProcessContext, o, prMap, cellEquipContext)); + productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProductionRecordData(reqBean, resultBean, stepResult, mouldNo, prodRuleContextList, productionProcessContext, o, prMap, cellEquipContext)); - return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存装配记录成功!"); + //保存上下文产品加工规则信息集合 + productionDispatchContextStepService.saveProdRuleDataContext(reqBean, prodRuleContextList); + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "生成加工记录成功!"); } - private void saveProductionRecordData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String mouldNo, + private void saveProductionRecordData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String mouldNo, List prodRuleContextList, MesProductionProcessContext productionProcessContext, MesProductionPsOutContext productionPsOutContext, Map prMap, MesCellEquipContext cellEquipContext) { MesProdRuleContext prodRuleContext = CollectionUtils.isEmpty(prMap) ? null : prMap.get(productionPsOutContext.getForeignKey()); @@ -93,7 +98,7 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { productionRecord.setEquipmentCode(cellEquipContext.getEquipmentCode()); productionRecord.setEquipmentName(cellEquipContext.getEquipmentName()); - productionRecord.setReportType(!StringUtils.isEmpty(prodRuleContext.getReportType()) ? prodRuleContext.getReportType() : MesExtEnumUtil.NOSORT_REPORT_TYPE.NO_REPORT.getValue()); + productionRecord.setReportType((null != prodRuleContext && !StringUtils.isEmpty(prodRuleContext.getReportType())) ? prodRuleContext.getReportType() : MesExtEnumUtil.NOSORT_REPORT_TYPE.NO_REPORT.getValue()); if (MesExtEnumUtil.NOSORT_REPORT_TYPE.NO_REPORT.getValue() != productionRecord.getReportType()) productionRecord.setReportPartNo(productionPsOutContext.getPartNo()); productionRecord.setReportStatus(MesExtEnumUtil.NOSORT_REPORT_TYPE.NO_REPORT.getValue() != productionRecord.getReportType() ? MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue() : MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue()); @@ -110,7 +115,10 @@ public class MesProductionRecordGenerateStepService extends BaseStepService { ConvertBean.serviceModelInitialize(productionRecord, reqBean.getUserInfo()); productionRecord.setCompleteDateTime(productionRecord.getModifyDatetime()); - productionRecordRepository.insert(productionRecord); + productionRecord = productionRecordRepository.insert(productionRecord); + + if (null != prodRuleContext) prodRuleContextList.stream().filter(o -> (null != o && + !StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(productionPsOutContext.getForeignKey()) == 0)).findFirst().get().productionRecordId(productionRecord.getId()).mouldNo(mouldNo); } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java index 5f65feb..0aabd46 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProdRuleContext.java @@ -150,6 +150,11 @@ public class MesProdRuleContext implements Serializable { return this; } + public MesProdRuleContext mouldNo(String mouldNo) { + this.mouldNo = mouldNo; + return this; + } + public MesProdRuleContext inPartIsEmpty() { this.inPartIsEmpty = true; return this;