diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java index b5de78a..0c5f2d8 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/jx/IJxProdBusiStrategyService.java @@ -138,4 +138,12 @@ public interface IJxProdBusiStrategyService { @ApiOperation(value = "验证流程工序", notes = "验证流程工序") default StepResult checkSnProcessIsValid(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { return stepResult; } + /** + * 验证班次启动 + * @param params 参数 + * @return 结果 + */ + @ApiOperation(value = "验证班次启动", notes = "验证班次启动") + default StepResult checkShiftStart(JxProdBusiStrategyParamsBuilder params) {return StepResult.getSuccessComplete(); } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java index 10a0f24..e711865 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyCommonService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx; +import cn.estsh.i3plus.ext.mes.pcn.api.base.*; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IOutPutStatisticsService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnTravelExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.ISxOutPutStatisticsTravelService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnMcRecordService; @@ -12,8 +15,11 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; 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.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesRouteProcess; +import cn.estsh.i3plus.pojo.mes.bean.MesShift; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import lombok.extern.slf4j.Slf4j; @@ -66,6 +72,36 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi @Autowired private IFsmRouteDataService fsmRouteDataService; + @Autowired + private IWorkCenterExtService workCenterExtService; + + @Autowired + private IShiftExtService shiftExtService; + + @Autowired + private IShiftProdCenterRecordService shiftProdCenterRecordService; + + @Autowired + private ISxWorkOrderExtService workOrderExtService; + + @Autowired + private MesWorkOrderExtRepository workOrderExtRepository; + + @Autowired + private IOutPutStatisticsService outPutStatisticsService; + + @Autowired + private MesOutPutStatisticsRepository outPutStatisticsRepository; + + @Autowired + private ISxOutPutStatisticsTravelService outPutStatisticsTravelService; + + @Autowired + private SxProductOffLineRepository productOffLineRepository; + + @Autowired + private IPartExtService partExtService; + @Override public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) { if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) queryBusiData4Mc(params.manageCode(params.getScanInfo())); @@ -529,11 +565,15 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi if (StringUtils.isEmpty(produceSnExt.getProcessCode()) && routeProcessList.get(0).getIsNecessary() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息未经过首道工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), routeProcessList.get(0).getProcessCode())); - Optional completeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(reqBean.getProcessCode()))).findFirst(); - if (null == completeProcessOp || !completeProcessOp.isPresent()) - return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息已经过当前工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), reqBean.getProcessCode())); + List unCompleteProcessList; + if (StringUtils.isEmpty(produceSnExt.getProcessCode())) unCompleteProcessList = routeProcessList; + else { + Optional completeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(produceSnExt.getProcessCode()))).findFirst(); + if (null == completeProcessOp || !completeProcessOp.isPresent()) + return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息已经过当前工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), reqBean.getProcessCode())); - List unCompleteProcessList = routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(completeProcessOp.get().getSeq()) > 0)).collect(Collectors.toList()); + unCompleteProcessList = routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(completeProcessOp.get().getSeq()) > 0)).collect(Collectors.toList()); + } if (CollectionUtils.isEmpty(unCompleteProcessList)) return stepResult; @@ -547,7 +587,156 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi } @Override + public StepResult checkShiftStart(JxProdBusiStrategyParamsBuilder params) { + + StepResult stepResult = StepResult.getNonComplete(); + + MesWorkCenterExt workCenterExtDb = workCenterExtService.getWorkCenterExtByWorkCenterCode(params.getOrganizeCode(), params.getWorkCenterCode()); + if (null == workCenterExtDb) return stepResult.msg(String.format("生产线[%s]信息不存在,操作失败", params.getWorkCenterCode())); + if (StringUtils.isEmpty(workCenterExtDb.getWorkTime()) || StringUtils.isEmpty(workCenterExtDb.getShiftCode())) return stepResult.msg(String.format("生产线[%s]未启动班次,操作失败", params.getWorkCenterCode())); + + MesShift shiftDb = shiftExtService.getShiftByShiftCodeAndCenterCode(params.getOrganizeCode(), params.getWorkCenterCode(), workCenterExtDb.getShiftCode()); + if (null == shiftDb || (StringUtils.isEmpty(shiftDb.getStartTime()) || StringUtils.isEmpty(shiftDb.getEndTime()))) return stepResult.msg(String.format("未配置有效的生产线[%s]班次代码[%s]信息,操作失败", params.getWorkCenterCode(), workCenterExtDb.getShiftCode())); + + String workTime = shiftProdCenterRecordService.getWorkTime(shiftDb.getStartTime(), shiftDb.getEndTime()); + if (StringUtils.isEmpty(workTime) || !workTime.equals(workCenterExtDb.getWorkTime())) return stepResult.msg(String.format("生产线[%s]需要重新启动班次,操作失败", params.getWorkCenterCode())); + + params.workCenterExtDb(workCenterExtDb); + + return stepResult.isCompleted(true); + } + + private void getPartDb(JxProdBusiStrategyParamsBuilder params) { + MesPart partDb = partExtService.getPart(params.getOrganizeCode(), params.getOrderModel().getPartNo()); + if (null != partDb) params.setPartDb(partDb); + } + + @Override public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) { - return null; + + StepResult stepResult = checkShiftStart(params); + + if (!stepResult.isCompleted()) return stepResult; + + getPartDb(params); + + saveWorkOrder4LineOff(params); + + saveProduceSnLineOff(params); + + insertProduceSnTravel(params); + + saveOutPutStatistics(params); + + doProductOffLine(params); + + return stepResult; } + + private void saveWorkOrder4LineOff(JxProdBusiStrategyParamsBuilder params) { + + MesWorkOrderExt workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(params.getOrganizeCode(), params.getOrderModel().getOrderNo()); + + workOrderExt.setCompleteQty(StringUtils.isEmpty(workOrderExt.getCompleteQty()) ? new Double(1) : MathOperation.add(workOrderExt.getCompleteQty(), new Double(1))); + if (MathOperation.compareTo(workOrderExt.getCompleteQty(), workOrderExt.getQty()) == 0) workOrderExt.setWorkOrderStatus(MesPcnExtEnumUtil.WORK_ORDER_STATUS.CLOSE.getValue()); + workOrderExt.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + ConvertBean.serviceModelUpdate(workOrderExt, params.getUserInfo()); + new ConvertBeanExt(workOrderExt).convertBean(workOrderExt); + + workOrderExtRepository.save(workOrderExt); + } + + private void saveProduceSnLineOff(JxProdBusiStrategyParamsBuilder params) { + + MesProduceSnExt produceSnExtDb = queryProduceSnInfo(params).getProduceSnExtDb(); + + produceSnExtDb.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); + ConvertBean.serviceModelUpdate(produceSnExtDb, params.getUserInfo()); + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) packProduceSnLineOff(params, produceSnExtDb); + produceSnExtService.doPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExtDb); + produceSnExtDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + new ConvertBeanExt(produceSnExtDb).convertBean(produceSnExtDb); + + params.produceSnExtDb(produceSnExtRepository.save(produceSnExtDb)); + } + + private void packProduceSnLineOff(JxProdBusiStrategyParamsBuilder params, MesProduceSnExt produceSnExtDb) { + produceSnExtDb.setOutWorkCenterTime(produceSnExtDb.getModifyDatetime()); + produceSnExtDb.setWorkTime(params.getWorkCenterExtDb().getWorkTime()); + produceSnExtDb.setShiftCode(params.getWorkCenterExtDb().getShiftCode()); + produceSnExtDb.setLotNo(produceSnExtDb.getWorkTime()); + } + + private void saveOutPutStatistics(JxProdBusiStrategyParamsBuilder params) { + + MesOutPutStatistics outPutStatistics = outPutStatisticsService.getOutPutStatisticsByTimeAndOrderNo( + params.getOrganizeCode(), params.getOrderModel().getOrderNo(), params.getWorkCenterExtDb().getWorkTime(), params.getWorkCenterExtDb().getShiftCode()); + if (null == outPutStatistics) { + outPutStatistics = new MesOutPutStatistics(); + outPutStatistics.setWorkCenterCode(params.getWorkCenterCode()); + outPutStatistics.setWorkOrderNo(params.getOrderModel().getOrderNo()); + outPutStatistics.setPartNo(params.getOrderModel().getPartNo()); + outPutStatistics.setPartNameRdd(params.getOrderModel().getPartNameRdd()); + outPutStatistics.setShiftCode(params.getWorkCenterExtDb().getShiftCode()); + outPutStatistics.setWorkTime(params.getWorkCenterExtDb().getWorkTime()); + outPutStatistics.setOrderStartTime(params.getOrderModel().getStartTime()); + outPutStatistics.setQty(new Double(1)); + outPutStatistics.setPlanQty(params.getOrderModel().getQty()); + outPutStatistics.setRemakeQty(new Double(0)); + outPutStatistics.setWorkOrderType(params.getOrderModel().getWorkOrderType()); + outPutStatistics.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + outPutStatistics.setOrganizeCode(params.getOrganizeCode()); + ConvertBean.serviceModelInitialize(outPutStatistics, params.getUserInfo()); + outPutStatistics.setStartTime(outPutStatistics.getModifyDatetime()); + outPutStatistics.setEndTime(outPutStatistics.getStartTime()); + outPutStatistics = outPutStatisticsRepository.insert(outPutStatistics); + } else { + outPutStatistics.setQty(MathOperation.add(outPutStatistics.getQty(), new Double(1))); + ConvertBean.serviceModelUpdate(outPutStatistics, params.getUserInfo()); + outPutStatistics.setEndTime(outPutStatistics.getModifyDatetime()); + outPutStatistics.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + outPutStatistics = outPutStatisticsRepository.save(outPutStatistics); + } + outPutStatisticsTravelService.insertOutPutStatisticsTravel(outPutStatistics); + + } + + private void doProductOffLine(JxProdBusiStrategyParamsBuilder params) { + + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) return; + + SxProductOffLine productOffLine = new SxProductOffLine(); + productOffLine.setWorkOrderNo(params.getOrderModel().getOrderNo()); + productOffLine.setPackageNo(params.getProductSn()); + productOffLine.setSerialNumber(params.getSerialNumber()); + productOffLine.setPartNo(params.getOrderModel().getPartNo()); + productOffLine.setPartName(params.getOrderModel().getPartNameRdd()); + productOffLine.setQty(new Double(1)); + productOffLine.setLotNo(params.getWorkCenterExtDb().getWorkTime()); + productOffLine.setShiftCode(params.getWorkCenterExtDb().getShiftCode()); + productOffLine.setWorkCenterCode(params.getWorkCenterCode()); + productOffLine.setErpWarehouse(params.getOrderModel().getErpWarehouse()); + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) productOffLine.setSnType(params.getProduceSnExtDb().getSnType()); + else productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue()); + if (null != params.getPartDb()) { + productOffLine.setUnit(params.getPartDb().getUnit()); + productOffLine.setProdType(getProdType(params.getPartDb().getCategoryCode1())); + } + productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + productOffLine.setOrganizeCode(params.getOrganizeCode()); + ConvertBean.serviceModelInitialize(productOffLine, params.getUserInfo()); + productOffLineRepository.insert(productOffLine); + + } + + private Integer getProdType(String categoryCode1) { + try { + if (StringUtils.isEmpty(categoryCode1)) return null; + else return Integer.valueOf(categoryCode1); + } catch (NumberFormatException e) { + return null; + } + } + + } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java index 43b75df..8701024 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyRepairService.java @@ -1,10 +1,15 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnRepairService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnRepair; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder; +import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesProduceSnRepairRepository; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -17,6 +22,12 @@ import org.springframework.util.StringUtils; @Service public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyService { + @Autowired + private IProduceSnRepairService produceSnRepairService; + + @Autowired + private MesProduceSnRepairRepository produceSnRepairRepository; + @Override public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) { @@ -69,7 +80,25 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi @Override public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) { - return null; + + StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).execLineOff(params); + + if (!stepResult.isCompleted()) return stepResult; + + saveProduceSnRepair(params); + + return stepResult; + } + + private void saveProduceSnRepair(JxProdBusiStrategyParamsBuilder params) { + MesProduceSnRepair produceSnRepairDb = produceSnRepairService.getProduceSnRepairBySnAndOrderNo(params.getOrganizeCode(), params.getProduceSnExtDb().getSerialNumber(), params.getOrderModel().getOrderNo()); + ConvertBean.serviceModelUpdate(produceSnRepairDb, params.getUserInfo()); + produceSnRepairDb.setOutWorkCenterTime(produceSnRepairDb.getModifyDatetime()); + produceSnRepairDb.setWorkTime(params.getWorkCenterExtDb().getWorkTime()); + produceSnRepairDb.setShiftCode(params.getWorkCenterExtDb().getShiftCode()); + produceSnRepairDb.setLotNo(produceSnRepairDb.getWorkTime()); + produceSnRepairDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + produceSnRepairRepository.save(produceSnRepairDb); } } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java index 76e08aa..f18ae66 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/jx/JxProdBusiStrategyStandardService.java @@ -277,7 +277,7 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer @Override public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) { - return null; + return ((IJxProdBusiStrategyService) params.getStrategyService()).execLineOff(params); } } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxBindKeyPartStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxBindKeyPartStepService.java index 072583d..9387d31 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxBindKeyPartStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxBindKeyPartStepService.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx; import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWorkOrderProcessBomService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBindRecordExtService; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnLineOnModuleService; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProcessBom; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProdBindRecordExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; @@ -15,6 +14,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.ConvertBeanExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService; +import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.IShippingDispatchService; import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; import cn.estsh.i3plus.mes.pcn.util.LocaleUtil; @@ -58,9 +58,6 @@ import java.util.stream.Collectors; public class JxBindKeyPartStepService extends BaseStepService { @Autowired - private JxSnLineOnModuleService snLineOnModuleService; - - @Autowired private ISxWorkOrderExtService workOrderExtService; @Autowired @@ -81,7 +78,8 @@ public class JxBindKeyPartStepService extends BaseStepService { @Autowired private IFsmCommonService fsmCommonService; - private static final String METHOD = "doHandleBindKeyPartData"; + @Autowired + private IFsmRouteDataService routeDataService; private static final String VALIDATION_CODE = "VALIDATION_CODE"; private static final String SHOW_KPSN_RULE = "SHOW_KPSN_RULE"; @@ -104,7 +102,7 @@ public class JxBindKeyPartStepService extends BaseStepService { if (!StringUtils.isEmpty(doHandleBindKeyPartData(reqBean, resultBean, moduleService, method, 1, MesPcnExtConstWords.BIND_KEY_PART, null))) return stepResult; - String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean); + String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean, moduleService); WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo); @@ -160,7 +158,7 @@ public class JxBindKeyPartStepService extends BaseStepService { List kpsnRuleList = getKpsnRuleList(reqBean, pbList); - String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean); + String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean, moduleService); WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo); @@ -467,10 +465,10 @@ public class JxBindKeyPartStepService extends BaseStepService { private Method getModuleServiceMethod(StationRequestBean reqBean, StationResultBean resultBean, Object moduleService) { Method method = null; try { - method = moduleService.getClass().getMethod(METHOD, reqBean.getClass(), Integer.class, String.class, String.class); + method = moduleService.getClass().getMethod(MesPcnExtConstWords.doHandleBindKeyPartData, reqBean.getClass(), Integer.class, String.class, String.class); } catch (Exception e) { } - if (null == method) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("展示组件缺失[%s]方法", METHOD)); + if (null == method) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("展示组件缺失[%s]方法", MesPcnExtConstWords.doHandleBindKeyPartData)); return method; } @@ -479,13 +477,22 @@ public class JxBindKeyPartStepService extends BaseStepService { try { obj = method.invoke(moduleService, reqBean, flag, item, data); } catch (Exception e) { - execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("参数ITEM[%s]FLAG[%s]调用展示组件[%s]方法执行异常:[%s]", item, flag, METHOD, e.getMessage())); + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("参数ITEM[%s]FLAG[%s]调用展示组件[%s]方法执行异常:[%s]", item, flag, MesPcnExtConstWords.doHandleBindKeyPartData, e.getMessage())); } return obj; } - private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) { - String curExecWorkOrderNo = (String) snLineOnModuleService.doHandleCurExecWorkOrder(reqBean, 1, null); + private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, Object moduleService) { + + String curExecWorkOrderNo = null; + try { + Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.doHandleCurExecWorkOrder, reqBean.getClass(), Integer.class, String.class); + method.setAccessible(true); + curExecWorkOrderNo = (String) method.invoke(moduleService, reqBean, 1, null); + } catch (Exception e) { + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]参数[flag=1,value=null]出现异常:%s", MesPcnExtConstWords.doHandleCurExecWorkOrder, e.getMessage())); + } + if (StringUtils.isEmpty(curExecWorkOrderNo)) execExpSendMsgAndThrowEx(reqBean, resultBean, "此前操作的工单号已丢失,请选择启动状态的生产工单!"); return curExecWorkOrderNo; } @@ -504,6 +511,5 @@ public class JxBindKeyPartStepService extends BaseStepService { return orderModel; } - } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java index fb5f933..73f7605 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxInitOrderStepService.java @@ -43,10 +43,6 @@ public class JxInitOrderStepService extends BaseStepService { @Autowired private ISxWorkOrderExtService workOrderExtService; - private final String doHandleSelectWorkOrderNo = "doHandleSelectWorkOrderNo"; - private final String doHandleCurExecWorkOrder = "doHandleCurExecWorkOrder"; - private final String execStateModule = "execStateModule"; - @Override public StepResult execute(StationRequestBean reqBean) { @@ -56,10 +52,10 @@ public class JxInitOrderStepService extends BaseStepService { StationResultBean resultBean = new StationResultBean(); - String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, doHandleSelectWorkOrderNo, 1, null); - String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, doHandleCurExecWorkOrder, 1, null); + String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 1, null); + String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 1, null); - if (!StringUtils.isEmpty(selectWorkOrderNo)) doHandleModuleObjectMethod(reqBean, resultBean, doHandleSelectWorkOrderNo, 3, null); + if (!StringUtils.isEmpty(selectWorkOrderNo)) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 3, null); if (!StringUtils.isEmpty(selectWorkOrderNo) && !StringUtils.isEmpty(curExecWorkOrderNo)) { if (selectWorkOrderNo.equals(curExecWorkOrderNo)) selectWorkOrderNo = null; else curExecWorkOrderNo = null; @@ -88,7 +84,7 @@ public class JxInitOrderStepService extends BaseStepService { } private void doCacheCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String selectWorkOrderNo) { - Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, doHandleCurExecWorkOrder, 2, selectWorkOrderNo); + Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 2, selectWorkOrderNo); if (!flag) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("选择的工单号[%s]初始化失败!", selectWorkOrderNo)); else { execStateModule(reqBean, resultBean); @@ -122,7 +118,7 @@ public class JxInitOrderStepService extends BaseStepService { IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); Method method = moduleService.getClass().getDeclaredMethod(methodStr, reqBean.getClass(), Integer.class, String.class); method.setAccessible(true); - return method.invoke(this, reqBean, flag, value); + return method.invoke(moduleService, reqBean, flag, value); } catch (Exception e) { execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]参数[flag=%s,value=%s]出现异常:%s", methodStr, flag, value, e.getMessage())); return null; @@ -133,11 +129,11 @@ public class JxInitOrderStepService extends BaseStepService { if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean)); try { IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT)); - Method method = moduleService.getClass().getDeclaredMethod(execStateModule, reqBean.getClass(), List.class, Map.class); + Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.execStateModule, reqBean.getClass(), List.class, Map.class); method.setAccessible(true); - return method.invoke(this, reqBean, null, null); + return method.invoke(moduleService, reqBean, null, null); } catch (Exception e) { - execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]出现异常:%s", execStateModule, e.getMessage())); + execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]出现异常:%s", MesPcnExtConstWords.execStateModule, e.getMessage())); return null; } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java index dfc54bf..d1cab1e 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCheckPsStepService.java @@ -106,6 +106,7 @@ public class JxSnLineOffCheckPsStepService extends BaseStepService { .location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()) .routeProcess(reqBean.getRouteCode(), reqBean.getProcessCode()) .orderModel(orderModel) + .obj(reqBean) .build(); StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz())).checkLineOff(params); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java index 3280482..84174ad 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/step/jx/JxSnLineOffCompleteStepService.java @@ -9,7 +9,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService; -import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StepResult; @@ -22,7 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; /** - * @Description : 嘉兴条码下线扫描工步 + * @Description : 嘉兴条码下线完成工步 * @Reference : * @Author : wangjie * @CreateDate : 2019-07-11 @@ -53,7 +52,7 @@ public class JxSnLineOffCompleteStepService extends BaseStepService { log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnLineOffCompleteStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - return stepResult; + return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("产品条码[%s]下线完成!", reqBean.getProductSn())); } private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) { @@ -78,18 +77,21 @@ public class JxSnLineOffCompleteStepService extends BaseStepService { private StepResult execLineOff(StationRequestBean reqBean, StationResultBean resultBean, WorkOrderExtModel orderModel) { - StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).execLineOff( + StepResult stepResult = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).execLineOff( new JxProdBusiStrategyParamsBuilder.builder() .organizeCode(reqBean.getOrganizeCode()) .userInfo(reqBean.getUserInfo()) .location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()) .serialNumber(reqBean.getSerialNumber()) .productSn(reqBean.getProductSn()) + .orderModel(orderModel) + .obj(reqBean) + .strategyService(SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz())) .build()); - this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT); + if (!stepResult.isCompleted()) execExpSendMsgAndThrowEx(reqBean, resultBean, stepResult.getMsg()); - return result; + return stepResult; } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxProdBusiStrategyParamsBuilder.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxProdBusiStrategyParamsBuilder.java index e25a291..09d5479 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxProdBusiStrategyParamsBuilder.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/jx/JxProdBusiStrategyParamsBuilder.java @@ -163,6 +163,11 @@ public class JxProdBusiStrategyParamsBuilder implements Serializable { return this; } + public JxProdBusiStrategyParamsBuilder workCenterExtDb(MesWorkCenterExt workCenterExtDb) { + this.workCenterExtDb = workCenterExtDb; + return this; + } + public JxProdBusiStrategyParamsBuilder manageCode() { this.manageCode = null; return this; diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 1b75b78..8ba90f5 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -901,5 +901,10 @@ public class MesPcnExtConstWords { public static final String JX_SN_LINE_OFF_MODULE = "JX_SN_LINE_OFF_MODULE"; public static final String JX_SN_LINE_OFF_DATA = "JX_SN_LINE_OFF_DATA"; + public static final String doHandleBindKeyPartData = "doHandleBindKeyPartData"; + public static final String doHandleSelectWorkOrderNo = "doHandleSelectWorkOrderNo"; + public static final String doHandleCurExecWorkOrder = "doHandleCurExecWorkOrder"; + public static final String execStateModule = "execStateModule"; + }