diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java index 7e5637b..a6d8857 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutCheckStepService.java @@ -92,7 +92,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { if (CollectionUtils.isEmpty(equipVariableCollectContextList)) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "当前缺失待验证的裁片工单信息!"); //清除本次已获取得到的裁片工单信息 - //productionDispatchContextStepService.removeScanWorkOrderNoContext(reqBean); + productionDispatchContextStepService.removeScanWorkOrderNoContext(reqBean); //从上下文中取出生产线对象 MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); @@ -147,9 +147,8 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { //保存扫描的工单信息上下文 if (MesExtEnumUtil.CELL_MESSAGE_SOURCE.SCAN.getValue() == equipVariableCollectContextList.get(0).getMessageSource()) { productionProcessContextStepService.dispatchFunctionChooseCavityOrderContext(reqBean, StationKvBeanUtil.addStationKvBeanList(new ArrayList<>(), - new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", String.valueOf(productionPartContextList.size())), + new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", String.valueOf(productionPartContextList.stream().collect(Collectors.groupingBy(MesProductionPartContext::getPartNo)).size())), new StationKvBean(MesPcnExtConstWords.CELL_MESSAGE_SOURCE, "工位信息来源", MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValueStr()), - new StationKvBean(MesPcnExtConstWords.CRAFT_JUMP_CODE, "是否已验证顺序防错", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValueStr()), new StationKvBean(MesPcnExtConstWords.WORK_ORDER_NO, "裁片工单", productionPartContextList.stream().filter(o -> null != o).map(MesProductionPartContext::getWorkOrderNo).collect(Collectors.joining(MesPcnExtConstWords.SEMICOLON))))); } @@ -323,14 +322,17 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService { } - List produceSnList = produceSnExtService.getProduceSnList(reqBean.getOrganizeCode(), cutWorkOrderNo); + // 如果裁片工单明细 productSn存在值则表名已 经过上道工位 + if (!StringUtils.isEmpty(mesWorkOrderCutDetailList.stream().findFirst().get().getProductSn())) { + List produceSnList = produceSnExtService.getProduceSnList(reqBean.getOrganizeCode(), cutWorkOrderNo); - // 获取上道工艺生产的条码并封装到进料上下文中 - if (!CollectionUtils.isEmpty(produceSnList)) - produceSnList.stream().filter(o -> null != o).forEach(o -> { - productionPsInContextList.add(new MesProductionPsInContext(workCell, o).cutCode(cutScheme.getCutCode())); - productionPsOutContextList.add(new MesProductionPsOutContext().copy(o)); - }); + // 获取上道工艺生产的条码并封装到进料上下文中 + if (!CollectionUtils.isEmpty(produceSnList)) + produceSnList.stream().filter(o -> null != o).forEach(o -> { + productionPsInContextList.add(new MesProductionPsInContext(workCell, o).cutCode(cutScheme.getCutCode())); + productionPsOutContextList.add(new MesProductionPsOutContext().copy(o).cutWorkOrderNo(cutWorkOrderNo)); + }); + } return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutMatchingProdRuleStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutMatchingProdRuleStepService.java index 9d9f1e2..d729980 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutMatchingProdRuleStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutMatchingProdRuleStepService.java @@ -27,6 +27,7 @@ import org.springframework.util.StringUtils; import java.util.*; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -84,7 +85,7 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); //获取上下文进料零件条码信息集合 - //List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); + List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); //根据现有数据【产出零件数据】【进料零件条码信息】比对上下文中已经存在的加工规则数据信息集合, 没有加工规则的数据进行查询 if (CollectionUtils.isEmpty(prodRuleContextList)) prodRuleContextList = new ArrayList<>(); @@ -92,7 +93,7 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService //封装非排序加工规则 if (!doHandleProdRuleData(reqBean, resultBean, stepResult, productionProcessContext, cellEquipContext, - prodRuleContextList, productionPartContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); + prodRuleContextList, productionPartContextList, productionPsInContextList).isCompleted()) return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg()); //匹配失败需要清除本次扫描/读取信息 //if (!stepResult.isCompleted() && doBusiCheckToDelete(reqBean, stepResult, productionPartContextList, productionPsInContextList)) @@ -104,7 +105,9 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService //保存上下文产品加工规则信息集合 productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList); //保存上下文产出零件信息 - //if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList); + if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.dispatchProductionPartContext(reqBean, productionPartContextList); + //保存进料主条码数据 + if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.dispatchProductionPsInContext(reqBean, productionPsInContextList); } return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "匹配完成!"); @@ -113,11 +116,12 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService private StepResult doHandleProdRuleData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, List prodRuleContextList, - List productionPartContextList) { + List productionPartContextList, + List productionPsInContextList) { //根据是否存在【产出零件数据】获取剩余待匹配的加工规则数据 (只能查询到一条,否则报错) return doHandleProdRuleDataByProductionPart(reqBean, resultBean, stepResult, productionProcessContext, - cellEquipContext, prodRuleContextList, productionPartContextList); + cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList); } @@ -127,7 +131,8 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, List prodRuleContextList, - List productionPartContextList) { + List productionPartContextList, + List productionPsInContextList) { //加工规则的数据已与产出零件的数量一致 //if (!CollectionUtils.isEmpty(prodRuleContextList) && prodRuleContextList.size() == productionPartContextList.size()) return stepResult; @@ -149,9 +154,9 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService log.info("doHandleProdRuleDataByProductionPart --- outPartNoList:{}", foreignKey); - //没有【进料零件条码信息】信息, 根据进料[NULL]条件获取匹配当前产出零件的加工规则数据(只能查询到一条,否则报错) + //根据产出零件条件获取匹配当前产出零件的加工规则数据(只能查询到一条,否则报错) return doHandleProdRuleDataByProductionPartAndEmptyProductSn(reqBean, resultBean, stepResult, productionProcessContext, - cellEquipContext, prodRuleContextList, productionPartContextList, outPartNoList, foreignKey); + cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList, outPartNoList, foreignKey); //存在【产出零件数据】信息, 存在【进料零件条码信息】 获取匹配当前产出零件的加工规则数据 (只能查询到一条,否则报错) //else return doHandleProdRuleDataByProductionPartAndProductSn(reqBean, resultBean, stepResult, workCenter, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList, outPartNoList, foreignKey); @@ -159,7 +164,8 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService //没有【进料零件条码信息】信息, 根据进料[NULL]条件获取匹配当前产出零件的加工规则数据(只能查询到一条,否则报错) private StepResult doHandleProdRuleDataByProductionPartAndEmptyProductSn(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext, - MesCellEquipContext cellEquipContext, List prodRuleContextList, List productionPartContextList, List outPartNoList, Integer foreignKey) { + MesCellEquipContext cellEquipContext, List prodRuleContextList, List productionPartContextList, + List productionPsInContextList, List outPartNoList, Integer foreignKey) { //【非排序线】获取产品加工规则 ; 条件进料[NULL] List prodRuleNosortCfgList = prodRuleCfgExtService.getProdRuleNosortCfgList(new MesProdRuleContext(reqBean.getOrganizeCode()).equipmentCode(cellEquipContext.getEquipmentCode()).outPartNos(outPartNoList).inPartIsEmpty(true)); @@ -175,6 +181,9 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format( "未维护裁片方案代码[%s]设备[%s]的裁片设备配置信息!", cutCode, cellEquipContext.getEquipmentName())); + // 根据工单分组进料条码 + Map productionPsInContextMapByWorkOrder = CollectionUtils.isEmpty(productionPsInContextList) ? null : productionPsInContextList.stream().collect(Collectors.toMap(MesProductionPsInContext::getWorkOrderNo, Function.identity(), (x, y) -> y)); + for (MesProductionPartContext productionPartContext : productionPartContextList) { log.info("doHandleProdRuleDataByProductionPartAndEmptyProductSn --- 是否找加工规则:{}", null == productionPartContext || productionPartContext.getIsFinishCode().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 || !StringUtils.isEmpty(productionPartContext.getForeignKey())); @@ -193,9 +202,12 @@ public class MesWorkOrderCutMatchingProdRuleStepService extends BaseStepService MesProdRuleContext prodRuleContext = prodRuleCfgExtService.getProdRuleNosortContext( new MesProdRuleContext(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()) .copy(filterList.get(0)).workOrderNo(productionPartContext.getWorkOrderNo()).foreignKey(productionPartContext.foreignKey(foreignKey += 1).getForeignKey())); - prodRuleContext.setIsPrint(cutSchemeEquipment.getIsPrint()); + //prodRuleContext.setIsPrint(cutSchemeEquipment.getIsPrint()); prodRuleContextList.add(prodRuleContext); + if (!CollectionUtils.isEmpty(productionPsInContextMapByWorkOrder) && productionPsInContextMapByWorkOrder.containsKey(productionPartContext.getWorkOrderNo())) + productionPsInContextMapByWorkOrder.get(productionPartContext.getWorkOrderNo()).foreignKey(productionPartContext.getForeignKey()); + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- 设备:{} 产出零件信息:{} 产品加工规则:{} ---", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), cellEquipContext.getEquipmentCode(), JSONObject.toJSONString(productionPartContext), JSONObject.toJSONString(prodRuleContext)); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutPackagePrintStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutPackagePrintStepService.java index 753eb10..de1cc86 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutPackagePrintStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutPackagePrintStepService.java @@ -1,10 +1,7 @@ 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.IMesWorkOrderCutService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPartContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java index 0e6056d..5444a01 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCutProductSnSaveStepService.java @@ -15,19 +15,16 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; 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.MesProductionAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderCutDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderCutRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; -import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -74,6 +71,9 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { @Autowired private MesProductionAssemblyRepository productionAssemblyRepository; + @Autowired + private MesWorkOrderCutDetailRepository workOrderCutDetailRepository; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -88,10 +88,10 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { //存储生产过程上下文对象 productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext); - //获取上下文生产扫/读信息:加工单 - List equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean); - - String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); + ////获取上下文生产扫/读信息:加工单 + //List equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean); + // + //String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue(); //看是否修改裁片工单状态 //获取上下文进料零件条码信息集合 @@ -103,6 +103,9 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { //获取上下文产出零件数据信息集合 List productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); + // 从产出零件上下文中获取裁片工单号 + String cutWorkOrderNo = productionPartContextList.stream().findFirst().get().getCutWorkOrderNo(); + //获取上下文产品加工规则数据信息集合 List prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean); @@ -117,14 +120,14 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { //从上下文中取出工位对象 MesWorkCell workCell = productionProcessContext.getWorkCell(); + //获取生产线的当前班组班次信息 + MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); + // 无进料条码则生成条码 if (CollectionUtils.isEmpty(productionPsInContextList)) { productionPsOutContextList = new ArrayList<>(); - //获取生产线的当前班组班次信息 - MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode()); - if (null == prodShiftContext) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在生产开班记录,请重新开班!"); for (MesProductionPartContext mesProductionPartContext : productionPartContextList) { @@ -183,6 +186,13 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { productionPsOutContextList.add(productionPsOutContext); + // 裁片工单明细 条码赋值 作用:多工位情况下 判定productSn是否有值,无值则无需查条码表 + workOrderCutDetailRepository.updateByProperties( + new String[]{MesPcnExtConstWords.CUT_WORK_ORDER_NO, MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED}, + new Object[]{cutWorkOrderNo, reqBean.getOrganizeCode(), CommonEnumUtil.VALID, CommonEnumUtil.FALSE}, + new String[]{MesPcnExtConstWords.PRODUCT_SN, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME}, + new Object[]{cutWorkOrderNo, reqBean.getUserInfo(), TimeTool.getNowTime(true)}); + // 新增装配件加工记录 //saveProductionAssembly(reqBean, productionProcessContext, cellEquipContext, mesProdRuleContext, productionPsOutContext); @@ -193,10 +203,11 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { } else { - if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在加工规则信息,请重置工序解决!"); + // 保存零件条码 + productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> o.copy(saveProduceSnData(reqBean, resultBean, productionProcessContext, o, prodShiftContext, workCell))); - //保存零件条码信息工步 - ((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).executeInState(reqBean); + //保存上下文产出条码数据信息集合 + productionDispatchContextStepService.dispatchProductionPsOutContext(reqBean, productionPsOutContextList); for (MesProductionPartContext mesProductionPartContext : productionPartContextList) { @@ -219,6 +230,44 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService { } + private MesProduceSn saveProduceSnData(StationRequestBean reqBean, StationResultBean resultBean, MesProductionProcessContext productionProcessContext, MesProductionPsOutContext productionPsOutContext, + MesProdShiftContext prodShiftContext, MesWorkCell workCell) { + + //根据零件条码ID查询零件条码信息 + MesProduceSn produceSn = produceSnExtService.getProduceSn(reqBean.getOrganizeCode(), productionPsOutContext.getId()); + + if (null == produceSn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查零件条码信息,产出零件条码[%s]ID[%s]信息不存在!", productionPsOutContext.getProductSn(), productionPsOutContext.getId())); + + produceSn.setAreaCode(workCell.getAreaCode()); + produceSn.setWorkCenterCode(workCell.getWorkCenterCode()); + produceSn.setWorkCellCode(workCell.getWorkCellCode()); + + produceSn.setRouteCode(reqBean.getRouteCode()); + produceSn.setProcessCode(reqBean.getProcessCode()); + produceSn.setCraftCode(productionProcessContext.getCraftCode()); + + produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + + produceSn.setShiftCode(prodShiftContext.getShiftCode()); + produceSn.setShiftGroup(prodShiftContext.getShiftGroup()); + + ConvertBean.serviceModelUpdate(produceSn, reqBean.getUserInfo()); + produceSn.setLotNo(produceSn.getModifyDatetime().substring(0, 10)); + if (StringUtils.isEmpty(produceSn.getInWorkCenterTime())) produceSn.setInWorkCenterTime(produceSn.getModifyDatetime()); + + produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue()); + + produceSnExtService.update(produceSn); + + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProductionPsOutContext:{} --- MesProduceSn:{}", + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), JSONObject.toJSONString(productionPsOutContext), JSONObject.toJSONString(produceSn)); + + return produceSn; + + } + + private void saveProductionAssembly(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesProdRuleContext mesProdRuleContext, MesProductionPsOutContext productionPsOutContext) { diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsOutContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsOutContext.java index 3abbfe3..fccedb2 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsOutContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionPsOutContext.java @@ -22,6 +22,9 @@ public class MesProductionPsOutContext extends MesProduceSn implements Serializa @ApiParam(name = "是否计算工单完成数量") private Integer isCalcCompleteQty = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); + @ApiParam(name = "裁片工单号") + private String cutWorkOrderNo; + public MesProductionPsOutContext() {} public MesProductionPsOutContext copy(MesProduceSn produceSn, Integer foreignKey) { @@ -41,6 +44,11 @@ public class MesProductionPsOutContext extends MesProduceSn implements Serializa return this; } + public MesProductionPsOutContext cutWorkOrderNo(String cutWorkOrderNo) { + this.setCutWorkOrderNo(cutWorkOrderNo); + return this; + } + public MesProductionPsOutContext isCalcCompleteQty(Boolean isCalcCompleteQty) { if (isCalcCompleteQty) this.isCalcCompleteQty = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); return this;