From a6c1d5a485001026fff2416712b8729f1fe25126 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 25 Jul 2024 13:47:53 +0800 Subject: [PATCH] =?UTF-8?q?CCSC=E6=A3=80=E6=B5=8B=EF=BC=8C=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E6=89=93=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesCcscTaskService.java | 2 + .../ext/mes/api/base/IMesWorkOrderService.java | 2 +- .../controller/base/MesWorkOrderController.java | 4 +- .../serviceimpl/base/MesCcscTaskServiceImpl.java | 52 +++++++++++++++++++++- .../serviceimpl/base/MesWorkOrderService.java | 8 ++-- .../ext/mes/pojo/constant/MesCommonConstant.java | 1 + 6 files changed, 61 insertions(+), 8 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCcscTaskService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCcscTaskService.java index de1a186..653541d 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCcscTaskService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCcscTaskService.java @@ -16,4 +16,6 @@ public interface IMesCcscTaskService extends IBaseMesService { MesCcscTask insert(MesWorkOrder mesWorkOrder,String testType,String orderNo,Integer frequency,Integer rule,Integer qtyRule); void doCcscTaskByMesWorkOrder(String organizeCode,List mesWorkOrderList); + + void insertMesCcscTask(String organizeCode,List mesWorkOrderList); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index a744e27..5d6ae89 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -40,7 +40,7 @@ public interface IMesWorkOrderService extends IBaseMesService { void doReportWorkReversal(WmsProductModel model); @ApiOperation("重新打开") - void doReopen(String[] ids,String userName,String organizeCode); + void doReopen(Long[] ids,String userName,String organizeCode); List getPreDayReportMesProductionRecord(String organizeCode , List mesShiftList, String workCenterCode); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 14590ed..be8bf01 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -185,11 +185,11 @@ public class MesWorkOrderController extends BaseMesController { @PutMapping(value = "/reopen") @ApiOperation(value = "重新打开") - public ResultBean doReopen(String[] ids) { + public ResultBean doReopen(Long[] ids) { try { ValidatorBean.checkNotNull(ids); mesWorkOrderService.doReopen(ids, AuthUtil.getSessionUser().getUserName(),AuthUtil.getOrganizeCode()); - return ResultBean.success("反向冲销成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + return ResultBean.success("重新打开成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCcscTaskServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCcscTaskServiceImpl.java index 6793c46..5e89373 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCcscTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCcscTaskServiceImpl.java @@ -12,8 +12,9 @@ import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.base.util.StringUtil; -import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.bean.MesCcscRule; +import cn.estsh.i3plus.pojo.mes.bean.MesCcscTask; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.repository.MesCcscRuleRepository; import cn.estsh.i3plus.pojo.mes.repository.MesCcscTaskRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -66,6 +67,7 @@ public class MesCcscTaskServiceImpl extends BaseMesService implemen //查ccsc规则表 LOGGER.info("-------- doCcscTaskByMesWorkOrder---{}",organizeCode); DdlPackBean ddlPackBeanRule = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).collect(Collectors.toList()), "partNo",ddlPackBeanRule); List ccscRuleList = ccscRuleRDao.findByHqlWhere(ddlPackBeanRule); Map> ccscRulePartMap = ccscRuleList.stream().collect(Collectors.groupingBy(MesCcscRule::getPartNo)); Map> workOrderPartMap = mesWorkOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getPartNo)); @@ -155,4 +157,50 @@ public class MesCcscTaskServiceImpl extends BaseMesService implemen } } } + + @Override + public void insertMesCcscTask(String organizeCode, List mesWorkOrderList) { + if (CollectionUtils.isEmpty(mesWorkOrderList)) return; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).collect(Collectors.toList()), "partNo", packBean); + List ccscRuleList = ccscRuleRDao.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(ccscRuleList)) return; + Map> ccscRulePartMap = ccscRuleList.stream().collect(Collectors.groupingBy(MesCcscRule::getPartNo)); + //根据物料对工单表分组 + Map> workOrderPartMap = mesWorkOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getPartNo)); + for (Map.Entry> stringListEntry : workOrderPartMap.entrySet()) { + List mesWorkOrders = stringListEntry.getValue(); + MesWorkOrder mesWorkOrder = mesWorkOrders.iterator().next(); + if (CollectionUtils.isEmpty(ccscRulePartMap.get(mesWorkOrder.getPartNo()))) continue; + MesCcscRule ccscRule = ccscRulePartMap.get(mesWorkOrder.getPartNo()).iterator().next(); + for (MesWorkOrder workOrder : mesWorkOrders) { + saveCcscTask(organizeCode, workOrder, ccscRule); + } + } + } + + private void saveCcscTask(String organizeCode, MesWorkOrder workOrder, MesCcscRule ccscRule) { + String orderNo = "1_" + workOrder.getWorkOrderNo(); + int ccscRuleQty = 1; + //新增质量检验任务 MesCcscTask + MesCcscTask mesCcscTask = getMesCcscTask(organizeCode, workOrder); + if (!Objects.isNull(mesCcscTask)) { + ccscRuleQty = mesCcscTask.getQty().intValue(); + if (mesCcscTask.getTaskNo().startsWith(MesCommonConstant.CCSC_RETEST_NO.substring(0,6))) { + String[] split = mesCcscTask.getTaskNo().split("_"); + orderNo = (Integer.parseInt(split[1]) + 1)+ "_" + split[2]; + } else { + orderNo = "1_" + mesCcscTask.getTaskNo(); + } + } + insert(workOrder, ccscRule.getTestType(), String.format(MesCommonConstant.CCSC_RETEST_NO, orderNo), ccscRule.getFrequency(), ccscRule.getRule(), ccscRuleQty); + } + + private MesCcscTask getMesCcscTask(String organizeCode, MesWorkOrder mesWorkOrder) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(), "workOrderNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getOrderBy(null, null, ddlPackBean); + return baseRDao.getByProperty(ddlPackBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 98acf50..c231b03 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -1057,7 +1057,7 @@ public class MesWorkOrderService extends BaseMesService implements } @Override - public void doReopen(String[] ids,String userName,String organizeCode) { + public void doReopen(Long[] ids,String userName,String organizeCode) { //获取工单信息 List mesWorkOrderList = getMesWorkOrderList(ids, organizeCode); //数据更新 @@ -1076,11 +1076,13 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrder.setCcscStatus(""); updateMesWorkOrder(mesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.UPDATE,mesWorkOrder.getQty()); } + //重新生成CCSC task + mesCcscTaskService.insertMesCcscTask(organizeCode,mesWorkOrderList); } - private List getMesWorkOrderList(String[] ids, String organizeCode) { + private List getMesWorkOrderList(Long[] ids, String organizeCode) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getInPack(String.join(",", ids),"id",packBean); + DdlPreparedPack.getInPackArray(ids,"id",packBean); List mesWorkOrderList = baseRDao.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(mesWorkOrderList)) { MesException.throwMesBusiException("选择工单信息不存在"); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index 97d3951..82074a3 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -38,6 +38,7 @@ public class MesCommonConstant { //CCSC生成任务号 public static final String CCSC_TASK_NO = "CCSC_TASK_NO"; + public static final String CCSC_RETEST_NO = "RETEST_%s"; //OBS public static final String OBS_AK = "TPNXQ2LUMRHNYYOBO8QO";