diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java index 219a8d3..8605d73 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductionCustomContextStepService.java @@ -113,10 +113,13 @@ public interface IMesProductionCustomContextStepService { @ApiOperation(value = "删除排序线工单队列推送锁数据") void removeSortQueuePushLockContext(StationRequestBean reqBean, String queuePushId); - @ApiOperation(value = "处理工位维度的工单完成数上下文[查询]") - MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyCellContext(StationRequestBean reqBean, Boolean isCellNoCalcQty, MesProductionPartContext productionPartContext); + @ApiOperation(value = "获取生产线维度的工单完成数上下文[查询]") + MesWorkOrderCompleteQtyContext getWorkOrderCompleteQtyContext(StationRequestBean reqBean, MesProductionPartContext productionPartContext); - @ApiOperation(value = "处理工位维度的工单完成数上下文[保存]") - void dispatchWorkOrderCompleteQtyCellContext(StationRequestBean reqBean, Boolean isCellNoCalcQty, String workOrderNo, Double calcCompleteQty); + @ApiOperation(value = "根据noCalcOrderQty判断维度处理工单完成数上下文[查询]") + MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyContext(StationRequestBean reqBean, Boolean noCalcOrderQty, MesProductionPartContext productionPartContext); + + @ApiOperation(value = "根据noCalcOrderQty判断维度处理处理工单完成数上下文[保存]") + MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyContext(StationRequestBean reqBean, Boolean noCalcOrderQty, String workOrderNo, Double calcCompleteQty); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderCalcQtyRestoreDispatchService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderCalcQtyRestoreDispatchService.java index b3c1222..34c9f3b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderCalcQtyRestoreDispatchService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/MesWorkOrderCalcQtyRestoreDispatchService.java @@ -38,7 +38,7 @@ public class MesWorkOrderCalcQtyRestoreDispatchService implements IMesWorkOrderC @Override public List getWorkOrderCalcQtyRecordList(String organizeCode, Integer qty) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.SYSTEM_SYNC_STATUS, packBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MES_LOG_DEAL_STATUS.UNDEAL.getValue(), MesPcnExtConstWords.DEAL_STATUS, packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.CREATE_DATE_TIME}, packBean); return workOrderCalcQtyRecordRepository.findByHqlTopWhere(packBean, qty); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java index 547f50a..d17edbd 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java @@ -226,7 +226,7 @@ public class MesProductSnGenerateStepService extends BaseStepService { produceSn = produceSnExtService.insert(produceSn); } else produceSnExtService.updateNoSync(produceSn); - //isCalcCompleteQty=true的情况下【工位是否不累计工单完成数isCellNoCalcQty=true最终不会实际累加到工单上】【isCellNoCalcQty=false代表生产线维度的统计,才会实际累加到工单上】 + //isCalcCompleteQty=true的情况下【工位是否不累计工单完成数noCalcOrderQty=true最终不会实际累加到工单上】【noCalcOrderQty=false代表生产线维度的统计,才会实际累加到工单上】 MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext() .copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(isCalcCompleteQty, isSamePart, workCell.getNoCalcOrderQty()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveBeforeLockOrderStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveBeforeLockOrderStepService.java index 8631098..5b20968 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveBeforeLockOrderStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionDataSaveBeforeLockOrderStepService.java @@ -16,6 +16,7 @@ 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; +import org.springframework.util.StringUtils; import java.util.List; import java.util.StringJoiner; @@ -72,6 +73,13 @@ public class MesProductionDataSaveBeforeLockOrderStepService extends BaseStepSer //非排序线 保存加工结果工步 execute 方法 使用的是 新事务 stepResult = ((IStepService) SpringContextsUtil.getBean("mesProductionDataSaveStepService")).execute(reqBean); + //保存加工结果事务提交之后, 保存工单计数 + if (stepResult.isCompleted() && !StringUtils.isEmpty(stepResult.getStepAfterState())) { + IStepService stepService = ((IStepService) SpringContextsUtil.getBean(stepResult.getStepAfterState())); + stepResult.stepAfterState(null); + stepService.executeStepAfterExecute(reqBean, stepResult); + } + } return stepResult; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java index c270c9b..dbc91e7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderCheckNosortStepService.java @@ -1,5 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; +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.pojo.context.MesCellEquipContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; @@ -37,6 +39,9 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer @Autowired private IFsmCommonService fsmCommonService; + @Autowired + private IMesProductionCustomContextStepService productionCustomContextStepService; + @Override public StepResult execute(StationRequestBean reqBean) { @@ -232,7 +237,7 @@ public class MesWorkOrderCheckNosortStepService extends MesWorkOrderCheckStepSer if (!CollectionUtils.isEmpty(orderList)) { orderList.forEach(o -> StationKvBeanUtil.addStationKvBeanList(dataList, new ArrayList<>(), new StationKvBean(MesPcnExtConstWords.WORK_ORDER_NO, "工单号", o.getWorkOrderNo()), new StationKvBean(MesPcnExtConstWords.PART_NO, "零件编码", o.getPartNo()), - new StationKvBean(MesPcnExtConstWords.QTY, "完成数/工单数", new StringJoiner(MesPcnExtConstWords.SLANT_R).add(String.valueOf(o.getCompleteQty().intValue())).add(String.valueOf(o.getQty().intValue())).toString()), + new StationKvBean(MesPcnExtConstWords.QTY, "完成数/工单数", new StringJoiner(MesPcnExtConstWords.SLANT_R).add(String.valueOf(productionCustomContextStepService.getWorkOrderCompleteQtyContext(reqBean, o).getCompleteQty().intValue())).add(String.valueOf(o.getQty().intValue())).toString()), new StationKvBean(MesPcnExtConstWords.CAVITY, "腔数", new StringJoiner(MesPcnExtConstWords.SLANT_R).add(String.valueOf(index.updateAndGet(v -> v + 1))).add(String.valueOf(productionPartContextList.size())).toString()))); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java index 65e10ff..82cb66f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java @@ -4,14 +4,10 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepServi 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.apiservice.serviceimpl.step.method.MesWorkOrderCheckCompleteQtyStepService; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext; -import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesScanMonitorContext; +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.serviceimpl.fsm.BaseStepService; import cn.estsh.i3plus.mes.pcn.util.StringUtil; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; @@ -32,7 +28,6 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; /** @@ -100,7 +95,7 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService { List productionPartContextList, List productionPsOutContextList) { //工位是否不累计工单完成数 - Boolean isCellNoCalcQty = workOrderCheckCompleteQtyStepService.isCellNoCalcQty(productionProcessContext.getWorkCell().getNoCalcOrderQty()); + Boolean noCalcOrderQty = workOrderCheckCompleteQtyStepService.noCalcOrderQty(productionProcessContext.getWorkCell().getNoCalcOrderQty()); //获取上下文工位扫描监控信息 MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true); @@ -137,7 +132,7 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService { //TODO 排序考虑多工位扫描可疑码; 非排序考虑自进自出可疑或报废; 可疑数/报废数是否需要增加的问题[条码+零件+质量状态 增加履历] //工位不累计工单完成数 - if (isCellNoCalcQty) continue; + if (noCalcOrderQty) continue; MesWorkOrderCalcQtyRecord workOrderCalcQtyRecord = new MesWorkOrderCalcQtyRecord(); workOrderCalcQtyRecord.setOrganizeCode(reqBean.getOrganizeCode()); @@ -167,9 +162,9 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService { workOrderCalcQtyRecord = workOrderCalcQtyRecordRepository.insert(workOrderCalcQtyRecord); - log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- QUERY_CompleteQty:{} --- productResult:{} --- MesWorkOrderCalcQtyRecord:{}", + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- productResult:{} --- MesWorkOrderCalcQtyRecord:{}", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), - StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), entry.getKey(), entry.getValue().get(0).getCompleteQty(), productResult, JSONObject.toJSONString(workOrderCalcQtyRecord)); + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), entry.getKey(), productResult, JSONObject.toJSONString(workOrderCalcQtyRecord)); } } @@ -184,7 +179,7 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService { if (CollectionUtils.isEmpty(productionPsOutContextList)) return; //工位是否不累计工单完成数 - Boolean isCellNoCalcQty = workOrderCheckCompleteQtyStepService.isCellNoCalcQty(productionPsOutContextList.get(0).getNoCalcOrderQty()); + Boolean noCalcOrderQty = workOrderCheckCompleteQtyStepService.noCalcOrderQty(productionPsOutContextList.get(0).getNoCalcOrderQty()); //产出条码 根据生产工单分组 Map> proMap = productionPsOutContextList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductionPsOutContext::getWorkOrderNo)); @@ -200,11 +195,22 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService { if (productionPsOutContext.getIsCalcCompleteQty() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) calcCompleteQty = MathOperation.add(calcCompleteQty, new Double(MesPcnExtConstWords.ONE)); } if (MathOperation.compareTo(calcCompleteQty, new Double(MesPcnExtConstWords.ZERO)) == 0) continue; - //处理工位维度的工单完成数上下文[保存] - productionCustomContextStepService.dispatchWorkOrderCompleteQtyCellContext(reqBean, isCellNoCalcQty, productionPsOutContextList.get(0).getWorkOrderNo(), calcCompleteQty); + + //根据noCalcOrderQty判断维度处理处理工单完成数上下文[保存] + MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = productionCustomContextStepService.dispatchWorkOrderCompleteQtyContext(reqBean, noCalcOrderQty, entry.getKey(), calcCompleteQty); + + log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- noCalcOrderQty:{} --- calcCompleteQty:{} --- MesWorkOrderCompleteQtyContext:{}", + reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), + StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), entry.getKey(), noCalcOrderQty, calcCompleteQty, JSONObject.toJSONString(workOrderCompleteQtyContext)); + } } + //执行execute之后根据条件判断是否执行 + @Override + public void executeStepAfterExecute(StationRequestBean reqBean, StepResult stepResult) { + executeStepAfterState(reqBean, stepResult); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java index 6c49094..2fd9f2c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionCustomContextStepService.java @@ -326,17 +326,28 @@ public class MesProductionCustomContextStepService extends BaseStepService imple removeFsmBusiData(reqBean.getOrganizeCode(), getSortQueuePushLockContextKey(reqBean), queuePushId); } - //工单完成数KEY【isCellNoCalcQty=true代表工位维度的统计,最终不一定会实际累加到工单上】【isCellNoCalcQty=false代表生产线维度的统计】 - private String getWorkOrderCompleteQtyContextCellKey(StationRequestBean reqBean, Boolean isCellNoCalcQty, String workOrderNo) { + //工单完成数KEY【noCalcOrderQty=true代表工位维度的统计,最终不一定会实际累加到工单上】【noCalcOrderQty=false代表生产线维度的统计】 + private String getWorkOrderCompleteQtyContextCellKey(StationRequestBean reqBean, Boolean noCalcOrderQty, String workOrderNo) { StringJoiner sj = new StringJoiner(MesPcnExtConstWords.COLON).add(reqBean.getOrganizeCode()).add(reqBean.getWorkCenterCode()); - if (isCellNoCalcQty) sj.add(reqBean.getWorkCellCode()); + if (noCalcOrderQty) sj.add(reqBean.getWorkCellCode()); return sj.add(MesPcnExtConstWords.WORK_ORDER_COMPLETE_CONTEXT).add(workOrderNo).toString(); } - //处理工位维度的工单完成数上下文[查询], 有效期三天 + //获取生产线维度的工单完成数上下文[查询] @Override - public MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyCellContext(StationRequestBean reqBean, Boolean isCellNoCalcQty, MesProductionPartContext productionPartContext) { - String key = getWorkOrderCompleteQtyContextCellKey(reqBean, isCellNoCalcQty, productionPartContext.getWorkOrderNo()); + public MesWorkOrderCompleteQtyContext getWorkOrderCompleteQtyContext(StationRequestBean reqBean, MesProductionPartContext productionPartContext) { + String key = getWorkOrderCompleteQtyContextCellKey(reqBean, false, productionPartContext.getWorkOrderNo()); + String context = getFsmBusiData(reqBean.getOrganizeCode(), key); + MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = !StringUtils.isEmpty(context) + ? JSONObject.parseObject(context, MesWorkOrderCompleteQtyContext.class) + : new MesWorkOrderCompleteQtyContext(productionPartContext.getWorkOrderNo(), productionPartContext.getQty(), productionPartContext.getCompleteQty()); + return workOrderCompleteQtyContext; + } + + //根据noCalcOrderQty判断维度处理处理工单完成数上下文[查询], 有效期三天 + @Override + public MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyContext(StationRequestBean reqBean, Boolean noCalcOrderQty, MesProductionPartContext productionPartContext) { + String key = getWorkOrderCompleteQtyContextCellKey(reqBean, noCalcOrderQty, productionPartContext.getWorkOrderNo()); String context = getFsmBusiData(reqBean.getOrganizeCode(), key); MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = !StringUtils.isEmpty(context) ? JSONObject.parseObject(context, MesWorkOrderCompleteQtyContext.class) @@ -349,16 +360,17 @@ public class MesProductionCustomContextStepService extends BaseStepService imple return workOrderCompleteQtyContext; } - //处理工位维度的工单完成数上下文[保存], 有效期三天 - //【isCellNoCalcQty=true代表工位维度的统计,最终不一定会实际累加到工单上】【isCellNoCalcQty=false代表生产线维度的统计】 + //根据noCalcOrderQty判断维度处理处理工单完成数上下文[保存], 有效期三天 + //【noCalcOrderQty=true代表工位维度的统计,最终不一定会实际累加到工单上】【noCalcOrderQty=false代表生产线维度的统计】 @Override - public void dispatchWorkOrderCompleteQtyCellContext(StationRequestBean reqBean, Boolean isCellNoCalcQty, String workOrderNo, Double calcCompleteQty) { - String key = getWorkOrderCompleteQtyContextCellKey(reqBean, isCellNoCalcQty, workOrderNo); + public MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQtyContext(StationRequestBean reqBean, Boolean noCalcOrderQty, String workOrderNo, Double calcCompleteQty) { + String key = getWorkOrderCompleteQtyContextCellKey(reqBean, noCalcOrderQty, workOrderNo); String context = getFsmBusiData(reqBean.getOrganizeCode(), key); MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = !StringUtils.isEmpty(context) ? JSONObject.parseObject(context, MesWorkOrderCompleteQtyContext.class) : null; - if (null == workOrderCompleteQtyContext) return; + if (null == workOrderCompleteQtyContext) return null; workOrderCompleteQtyContext.overrideCompleteQty(MathOperation.add(workOrderCompleteQtyContext.getCompleteQty(), calcCompleteQty)); dispatchFsmBusiData(reqBean.getOrganizeCode(), key, JSONObject.toJSONString(workOrderCompleteQtyContext), MesPcnEnumUtil.EXPIRE_TIME.THREE_DAY.getValue()); + return workOrderCompleteQtyContext; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesWorkOrderCheckCompleteQtyStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesWorkOrderCheckCompleteQtyStepService.java index 208b527..f3c01bc 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesWorkOrderCheckCompleteQtyStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/MesWorkOrderCheckCompleteQtyStepService.java @@ -68,7 +68,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); MesWorkCell workCell = productionProcessContext.getWorkCell(); //工位是否不累计工单完成数 - Boolean isCellNoCalcQty = isCellNoCalcQty(workCell.getNoCalcOrderQty()); + Boolean noCalcOrderQty = noCalcOrderQty(workCell.getNoCalcOrderQty()); //遍历验证加工单完成数量 List workOrderCompleteQtyContextList = null; @@ -76,7 +76,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { if (null == entry) continue; //验证加工单完成数量 - MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = dispatchWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, isCellNoCalcQty, entry.getValue(), productionPsInContextMap); + MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = dispatchWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, noCalcOrderQty, entry.getValue(), productionPsInContextMap); //验证失败直接退出 if (!stepResult.isCompleted()) break; @@ -101,7 +101,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { //验证加工单完成数量 private MesWorkOrderCompleteQtyContext dispatchWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean, - StepResult stepResult, MesWorkCenter workCenter, Boolean isCellNoCalcQty, + StepResult stepResult, MesWorkCenter workCenter, Boolean noCalcOrderQty, List productionPartContextList, Map productionPsInContextMap) { Double calcCompleteQty = new Double(MesPcnExtConstWords.ZERO); for (MesProductionPartContext productionPartContext : productionPartContextList) { @@ -115,13 +115,11 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { //当前工单无须计算工单完成数 if (MathOperation.compareTo(calcCompleteQty, new Double(MesPcnExtConstWords.ZERO)) == 0) return null; - //处理工位维度的工单完成数上下文; - //flag查询=2;保存=1 - //【isCellNoCalcQty=true代表工位维度的统计,最终不会实际累加到工单上】【isCellNoCalcQty=false代表生产线维度的统计,才会实际累加到工单上】 - MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = productionCustomContextStepService.dispatchWorkOrderCompleteQtyCellContext(reqBean, isCellNoCalcQty, productionPartContextList.get(0)); + //根据noCalcOrderQty判断维度处理工单完成数上下文[查询]【noCalcOrderQty=true代表工位维度的统计,最终不会实际累加到工单上】【noCalcOrderQty=false代表生产线维度的统计,才会实际累加到工单上】 + MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext = productionCustomContextStepService.dispatchWorkOrderCompleteQtyContext(reqBean, noCalcOrderQty, productionPartContextList.get(0)); //验证工单完成数 - checkWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, workOrderCompleteQtyContext, calcCompleteQty); + checkWorkOrderCompleteQty(reqBean, resultBean, stepResult, workCenter, workOrderCompleteQtyContext, calcCompleteQty, noCalcOrderQty); if (!stepResult.isCompleted()) return null; @@ -130,7 +128,7 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { } //工位是否不累计工单完成数 - public Boolean isCellNoCalcQty(Integer noCalcOrderQty) { + public Boolean noCalcOrderQty(Integer noCalcOrderQty) { return (!StringUtils.isEmpty(noCalcOrderQty) && noCalcOrderQty.compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) ? true : false; } @@ -169,8 +167,8 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { } //验证工单完成数 - private void checkWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, - MesWorkCenter workCenter, MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext, Double calcCompleteQty) { + private void checkWorkOrderCompleteQty(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkCenter workCenter, + MesWorkOrderCompleteQtyContext workOrderCompleteQtyContext, Double calcCompleteQty, Boolean noCalcOrderQty) { //当前工序的预计达到的完成数 Double complateQty = MathOperation.add(workOrderCompleteQtyContext.getCompleteQty(), calcCompleteQty); @@ -179,17 +177,18 @@ public class MesWorkOrderCheckCompleteQtyStepService extends BaseStepService { //判断不支持超工单生产 if (StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) { //stepResult.obj(false)目的是在工步最后可以判断是否需要清除进料 - stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]已完成数量[%s]!", - workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), workOrderCompleteQtyContext.getCompleteQty().intValue(), + stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]%s已完成数量[%s]!", + workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), + noCalcOrderQty ? "当前工位" : MesPcnExtConstWords.EMPTY, workOrderCompleteQtyContext.getCompleteQty().intValue(), MathOperation.compareTo(workOrderCompleteQtyContext.getQty(), workOrderCompleteQtyContext.getCompleteQty()) == 0 ? "当前已完成!" : "当前不支持超工单!")); return; } //支持超工单生产情况下判断超出比例 Double rate = MathOperation.div((MathOperation.sub(complateQty, workOrderCompleteQtyContext.getQty())), workOrderCompleteQtyContext.getQty()); if (MathOperation.compareTo(rate, MathOperation.div(workCenter.getOrderRate(), new Double(MesPcnExtConstWords.ONE_HUNDRED))) > 0) { - stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), - String.format("请检查工单数量,工单[%s]计划数量[%s]已完成数量[%s],当前超出超工单比例[%s]!", - workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), workOrderCompleteQtyContext.getCompleteQty().intValue(), workCenter.getOrderRate())); + stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult.obj(false), String.format("请检查工单数量,工单[%s]计划数量[%s]%s已完成数量[%s]超工单比例[%s]!", + workOrderCompleteQtyContext.getWorkOrderNo(), workOrderCompleteQtyContext.getQty().intValue(), + noCalcOrderQty ? "当前工位" : MesPcnExtConstWords.EMPTY, workOrderCompleteQtyContext.getCompleteQty().intValue(), workCenter.getOrderRate())); return; } }