From d2d891a2896af4e4279425cefee19f4e9aba1146 Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Thu, 17 Apr 2025 16:18:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E-=E6=AF=8F=E4=B8=AA=E6=8E=92?= =?UTF-8?q?=E5=8D=95=E9=83=BD=E4=BF=9D=E5=AD=98=E5=AF=B9=E5=BA=94=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E7=BB=84=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BF=AE=E6=94=B9=E6=8E=92=E5=8D=95=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E7=BB=84=E9=85=8D=E7=BD=AE=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=BB=84=E7=BB=87=E5=A4=8D=E5=88=B6=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=A0=87=E7=AD=BE=E6=9F=A5=E8=AF=A2=E5=B0=8F?= =?UTF-8?q?=E6=9D=BF=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/plan/OptimizePlanController.java | 25 ++ .../controller/admin/plan/PlanController.java | 13 + .../saveOptimize/PlanSchemeConfigReqVO.java | 52 ++++ .../saveOptimize/ProcessSchemeModelDO.java | 63 +++++ .../goods/OptimizeBoardModelDO.java | 4 + .../optimizeplan/OptimizePlanService.java | 6 + .../optimizeplan/OptimizePlanServiceImpl.java | 144 ++++++----- .../executor/service/plan/PlanService.java | 3 + .../service/plan/PlanServiceImpl.java | 169 ++++++++++--- .../api/systemconfig/SystemConfigApi.java | 19 +- .../api/systemconfig/SystemConfigApiImpl.java | 92 ++++--- .../systemconfig/vo/ProcessSchemeConfig.java | 2 +- .../service/machine/MachineServiceImpl.java | 14 -- .../service/organ/OrganServiceImpl.java | 230 +++++++++++++++++- .../service/setting/SettingServiceImpl.java | 5 +- 15 files changed, 694 insertions(+), 147 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlanSchemeConfigReqVO.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/ProcessSchemeModelDO.java diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java index 34103dccf..f58fa14c5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java @@ -196,6 +196,31 @@ public class OptimizePlanController { } + + @GetMapping("/newPlanPlate") + @Operation(summary = "获取排单是否有新加板材") + @Parameter(name = "planId", description = "排单ID", required = true) + public CommonResult getNewPlanPlate(@Valid @RequestParam("planId") Long planId) { + + return success(optimizePlanService.getNewPlanPlate(planId)); + + } + + + + @PutMapping("/updateConfig") + @Operation(summary = "修改排单对应的加工方案组的配置信息") + public CommonResult updateProcessSchemeConfig(@RequestBody PlanSchemeConfigReqVO reqVO) { + + optimizePlanService.updateProcessSchemeConfig(reqVO); + return success(Boolean.TRUE); + + } + + + + + @GetMapping("/getGoodsDataFilter") @Operation(summary = "未排单高级筛选-板材分组") @PreAuthorize("@ss.hasPermission('manage:pack:query')") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java index 75d991cc4..de5d7b9bf 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java @@ -196,4 +196,17 @@ public class PlanController { } + + @GetMapping("getPlanPlate") + @Operation(summary = "根据排单ID获取打印标签需要的小板信息") + @PreAuthorize("@ss.hasAnyPermissions('placeorder:print-label','producePlan:print-label')") + public CommonResult> getPlanPlateList(@Valid PlanPageReqVO pageReqVO) { + + return success(planService.getPlanPlateList(pageReqVO)); + + } + + + + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlanSchemeConfigReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlanSchemeConfigReqVO.java new file mode 100644 index 000000000..512a65980 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/PlanSchemeConfigReqVO.java @@ -0,0 +1,52 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class PlanSchemeConfigReqVO { + + + @Schema(description = "排单ID") + private Long planId; + + + @Schema(description = "方案组ID") + private Long processId; + + + @Schema(description = "加工方案组的配置项ID") + private Long planConfigId; + + + @Schema(description = "方案组配置项名称") + private String planName; + + + @Schema(description = "加工分线配置ID") + private String processLineConfig; + + + @Schema(description = "加工分线名称") + private String processLineName; + + + @Schema(description = "数据优化配置ID") + private String optimizationConfig; + + + @Schema(description = "数据优化配置名称") + private String optimizationConfigName; + + + @Schema(description = "解析器配置ID") + private String analyzer; + + + @Schema(description = "解析器名称") + private String analyzerName; + + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/ProcessSchemeModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/ProcessSchemeModelDO.java new file mode 100644 index 000000000..fdafeb192 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/ProcessSchemeModelDO.java @@ -0,0 +1,63 @@ +package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; + + +import com.cf.imes.framework.es.core.dal.ESDocument; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + + +/** + * @author 排单对应的加工方案组的配置信息 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ProcessSchemeModelDO extends ESDocument { + + + @Schema(description = "排单ID") + private Long planId; + + + @Schema(description = "方案组ID") + private Long processId; + + + @Schema(description = "加工方案组的配置项ID") + private Long planConfigId; + + + @Schema(description = "方案组配置项名称") + private String planName; + + + @Schema(description = "加工分线配置ID") + private String processLineConfig; + + + @Schema(description = "加工分线名称") + private String processLineName; + + + @Schema(description = "数据优化配置ID") + private String optimizationConfig; + + + @Schema(description = "数据优化配置名称") + private String optimizationConfigName; + + + @Schema(description = "解析器配置ID") + private String analyzer; + + + @Schema(description = "解析器名称") + private String analyzerName; + + + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java index 1b785f1a9..956fefed2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java @@ -48,6 +48,10 @@ public class OptimizeBoardModelDO extends ESDocument { private Boolean isLock; + @Schema(description = "是否有新加入的小板") + private Boolean isNewInsertPlate; + + @Schema(description = "实际的开料的大板的ID") @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private List goodsId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java index 8b3793d1c..f38c9ad3f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java @@ -22,6 +22,8 @@ public interface OptimizePlanService { String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model"; + String PLAN_PROCESS_SCHEME_CONFIG = "imes_plan_process_scheme_config_model"; + List getPlateListByPlanId(Long planId); @@ -61,5 +63,9 @@ public interface OptimizePlanService { PageResult getOrderPlateDataFilter(FilterDataPageReqVO pageReqVO); + Boolean getNewPlanPlate(Long planId); + + void updateProcessSchemeConfig(PlanSchemeConfigReqVO reqVO); + PageResult getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index 910d6bc77..c28a76d6c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -712,6 +712,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { planDO.setProcessId(req.getProcessId()); planMapper.updateById(planDO); + // 保存排单对应的方案组的配置信息 + getPlanProcessSchemeConfig(planDO.getProcessId(),planId); + esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL); }else { @@ -742,6 +745,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { plateMapper.updateBatch(plateDOS); } + boardModelDO.setIsNewInsertPlate(Boolean.FALSE); // 保存优化后的大板数据 @@ -757,39 +761,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL); } - - -// List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); - - - // 查询原优化信息然后进行判断 -// if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ -// -// if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ -// throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR); -// } -// -// -// OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); -// -// Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false); -// -// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); -// assert loginUser != null; -// -// Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData(); -// -// if(Boolean.TRUE.equals(isLock) && planDO.getIsScheduled().equals(true) && Boolean.FALSE.equals(data)){ -// throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK); -// } -// -// } - - } + + @Override public void saveProcessSchemeResults(SaveProcessSchemeReqVO saveProcessSchemeReqVO) { @@ -815,9 +792,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if(CollUtil.isNotEmpty(plateDOS)) { - plateDOS.forEach(f -> { - f.setIsOptimized(true); - }); + plateDOS.forEach(f -> f.setIsOptimized(true)); plateMapper.updateBatch(plateDOS); } @@ -830,10 +805,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { throw exception(THIS_PLAN_PLATE_IS_CUT); } + // 保存排单对应的加工方案组的配置信息 + getPlanProcessSchemeConfig(processId,planId); planMapper.updateById(planDO.setProcessId(processId)); - // 修改方案组,删除全部的方案组的优化信息 esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); @@ -847,40 +823,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } + List processSchemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_CONFIG, ProcessSchemeModelDO.class); + + // 保存排单对应的加工方案组的配置信息 + if(CollUtil.isEmpty(processSchemeModelDOS)){ + + getPlanProcessSchemeConfig(processId,planId); + + } + esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS); - } -// // 不能加非空判断,因为方案组里可能没有优化信息 -// List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); -// -//// List isLocks = new ArrayList<>(); -// -// if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ -// -// optimizeBoardModelDOS.forEach(f->{ -// -//// isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false)); -// -// schemeModelDOS.add(SaveProcessSchemeModelDO.builder() -// .planConfigId(f.getPlanConfigId()) -// .planName(f.getPlanConfigName()) -// .plateNum(f.getPlaceBlockNumber()) -// .goodsNum(f.getBoardCount()) -// .isOptimized(true) -// .build()); -// -// }); -// -// } - - - @@ -891,11 +850,36 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { PlanProcessSchemeList planProcessSchemeList = new PlanProcessSchemeList(); - List schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData(); + PlanDO planDO = validatePlanExists(planId); + +// List schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData(); + + + List schemeDTOList; + + // 获取排单对应的方案组的配置信息 + List schemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_CONFIG, ProcessSchemeModelDO.class); + + if(CollUtil.isNotEmpty(schemeModelDOS)){ + + if(!planDO.getProcessId().equals(processId)){ + schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData(); + + }else { + + List schemeDTOS = BeanUtils.toBean(schemeModelDOS, ProcessSchemeDTO.class); + schemeDTOList = systemConfigApi.getPlanProcessSchemeConfig(schemeDTOS).getCheckedData(); + } + + }else { + + schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData(); + + } + planProcessSchemeList.setProcessSchemeList(schemeDTOList); - validatePlanExists(planId); // 查询排单对应的方案组信息 List saveProcessSchemeReqVOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class); @@ -1159,6 +1143,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { + @Override + public Boolean getNewPlanPlate(Long planId) { + + List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); + + if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ + List modelDOS = optimizeBoardModelDOS.stream().filter(f -> f.getIsNewInsertPlate().equals(Boolean.TRUE)).toList(); + return modelDOS.isEmpty() ? Boolean.FALSE : Boolean.TRUE; + } + + return Boolean.FALSE; + + } + + + + @Override public PageResult getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO) { @@ -1768,6 +1769,27 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { + // 查询排单对应的加工方案组的配置信息并保存 + private void getPlanProcessSchemeConfig(Long processId,Long planId){ + + List schemeDTOS = systemConfigApi.getProcessSchemeConfig(processId).getCheckedData(); + + List modelDOS = BeanUtils.toBean(schemeDTOS, ProcessSchemeModelDO.class); + + modelDOS.forEach(f->{ + f.setProcessId(processId); + f.setPlanId(planId); + }); + + // 删除旧的排单对应的加工方案组的配置信息 + esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_CONFIG); + + // 保存新的排单对应的加工方案组的配置信息 + esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_CONFIG,modelDOS); + + } + + private void validatePlanStatus(PlanDO planDO,List isLocks){ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java index f57b2f3e1..5a40054aa 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java @@ -72,4 +72,7 @@ public interface PlanService { List getOrderRoomBody(List orderIds); List getPlanGoodsList(SavePlanPlateList savePlanPlateList); + + PageResult getPlanPlateList(PlanPageReqVO pageReqVO); + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 1bdb3e2f2..7cc8ba529 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -24,6 +24,7 @@ import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo; +import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.ProcessSchemeModelDO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardInfo; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds; @@ -119,6 +120,8 @@ public class PlanServiceImpl implements PlanService { private static final String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model"; + private static final String PLAN_PROCESS_SCHEME_CONFIG = "imes_plan_process_scheme_config_model"; + @Resource private ElasticsearchClient elasticsearchClient; @@ -225,6 +228,25 @@ public class PlanServiceImpl implements PlanService { orderMapper.updateBatch(orderDOS); } + // 排单对应的加工方案组的配置信息 + List processSchemeModelDOS; + + try { + processSchemeModelDOS = parseArray(systemConfigRespDTO.getSetting(), ProcessSchemeModelDO.class); + + }catch (Exception e){ + log.error(e.getMessage()); + throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); + } + + planDOS.forEach(f-> processSchemeModelDOS.forEach(p->{ + p.setPlanId(f.getId()); + p.setProcessId(processId); + })); + + esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_CONFIG,processSchemeModelDOS); + + planMapper.insertBatch(planDOS); planItemMapper.insertBatch(planItemDOS, planItemDOS.size()); @@ -357,18 +379,8 @@ public class PlanServiceImpl implements PlanService { .inIfPresent(OrderItemDO::getOrderId, orderIds) .in(OrderItemDO::getPlateId, plateIdList)); - } - - // 排单对应的优化数据删除 - esUtils.deleteEsDocument(FIELD_PLANID,planIds,ORDER_REMAIN_PLATE_MODEL); - - - // 删除排单对应的加工方案的优化数据 - esUtils.deleteEsDocument(FIELD_PLANID,planIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); - - // 查询删除排单对应的生产单是否还有进行了其他排单 List orderIdList = planItemMapper.selectOrderPlateList(orderIds, getUserOrganId()); @@ -387,6 +399,19 @@ public class PlanServiceImpl implements PlanService { orderMapper.updateBatch(orderList); } + + // 排单对应的优化数据删除 + esUtils.deleteEsDocument(FIELD_PLANID,planIds,ORDER_REMAIN_PLATE_MODEL); + + + // 删除排单对应的加工方案的优化数据 + esUtils.deleteEsDocument(FIELD_PLANID,planIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); + + + // 删除排单对应的加工方案组的配置信息 + esUtils.deleteEsDocument(FIELD_PLANID,planIds,PLAN_PROCESS_SCHEME_CONFIG); + + } @@ -995,6 +1020,81 @@ public class PlanServiceImpl implements PlanService { } + + @Override + public PageResult getPlanPlateList(PlanPageReqVO pageReqVO) { + + Long planId = Long.valueOf(pageReqVO.getId()); + + QueryWrapperX queryWrapperX = new QueryWrapperX<>(); + + queryWrapperX.eq("opi.organ_id",getUserOrganId()) + .eq(FIELD_PLAN_ID,planId); + + Integer pageNo = (pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize(); + + List plateResLists = planItemMapper.selectPlateListByPlateIds(queryWrapperX,pageNo,pageReqVO.getPageSize()); + + + if (CollUtil.isEmpty(plateResLists)) { + return new PageResult<>(); + } + + Long sum = planItemMapper.selectPlateCountByPlateIds(queryWrapperX); + + List boardModelDOS = esUtils.getEsDocument(FIELD_PLANID, planId, ORDER_REMAIN_PLATE_MODEL, OptimizeBoardModelDO.class); + + if(CollUtil.isNotEmpty(boardModelDOS)) { + + List remainBoardInfos = new ArrayList<>(); + + boardModelDOS.forEach(f -> { + + if (f.getRemainBoardInfo() != null) { + try { + remainBoardInfos.addAll(new ArrayList<>(parseArray(f.getRemainBoardInfo(), RemainBoardInfo.class))); + + } catch (Exception e) { + log.error(e.getMessage()); + throw exception(PLAN_PLATE_OPTIMIZE_DATA_ERROR); + } + + } + + }); + + List placeBoardList = new ArrayList<>(); + + remainBoardInfos.forEach(f-> placeBoardList.addAll(f.getPlaceBoardList())); + + if(CollUtil.isNotEmpty(placeBoardList)){ + + List blocksList = new ArrayList<>(); + placeBoardList.forEach(f->blocksList.addAll(f.getBlocks())); + + if(CollUtil.isNotEmpty(blocksList)){ + + plateResLists.forEach(f->{ + + f.setBoardId(blocksList.stream().filter(b->b.getBlockId().equals(f.getPlateNo())).findFirst().orElse(new RemainBoardInfo.Blocks()).getBoardId()); + + f.setPlaceId(blocksList.stream().filter(b->b.getBlockId().equals(f.getPlateNo())).findFirst().orElse(new RemainBoardInfo.Blocks()).getPlaceId()); + + }); + + } + + } + + } + + + + return new PageResult<>(plateResLists, sum); + } + + + private PlanDO validatePlan(Long id) { PlanDO planDO = planMapper.selectById(id); @@ -1346,6 +1446,36 @@ public class PlanServiceImpl implements PlanService { }); + // 有新添加的小板,修改优化信息的字段信息 + try { + + List fieldValues = insertPlanIds.stream().map(FieldValue::of).toList(); + + UpdateByQueryRequest.Builder builder = new UpdateByQueryRequest.Builder(); + + builder.index(ORDER_REMAIN_PLATE_MODEL) + .query(qb -> qb.bool(bq -> bq.filter(f->{ + f.terms(t->t.field(FIELD_PLANID).terms(e->e.value(fieldValues))); + return f; + }) + )) + .script(s -> s.inline(i -> i + .source("ctx._source.isNewInsertPlate = params.new_value") + .params("new_value", JsonData.of(Boolean.TRUE)) + )); + + UpdateByQueryRequest request = builder.build(); + + elasticsearchClient.updateByQuery(request); + + }catch (Exception e){ + log.error(e.getMessage()); + throw new ServiceException(ES_DATA_ERROR); + + } + + + // 修改排单加工方案的优化状态 updateProcessSchemeStatus(insertPlanIds); @@ -1605,25 +1735,6 @@ public class PlanServiceImpl implements PlanService { - // // 构建查询和脚本 -// builder.index(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL) -// .query(qb -> qb.bool(bq -> bq -// .must(mq -> mq.terms(tq -> tq.field("FIELD_PLANID").terms(t -> t.value(fieldValues)))) -// .must(mq -> mq.match(mtq -> mtq.field("machineType").query(MachineTypeEnum.CUTTING.getType()))) -// )) -// .script(s -> s.inline(i -> i -// .source(""" -// ctx._source.isOptimized = params.isOptimized; -// ctx._source.lastUpdated = params.lastUpdated; -// ctx._source.updatedBy = params.updatedBy; -// """) -// .params("isOptimized", JsonData.of(false)) -// .params("lastUpdated", JsonData.of("2025-01-02T12:00:00Z")) -// .params("updatedBy", JsonData.of("AutomatedSystem")) -// )); - - - public static void mergeOrderGoodsLists(List list1, List list2) { // Build a map for quick lookup of items in list1 by their unique properties diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApi.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApi.java index 29ac2b23b..cd2f4bf7f 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApi.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApi.java @@ -7,9 +7,7 @@ import com.cf.imes.module.system.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -45,15 +43,20 @@ public interface SystemConfigApi { @Operation(summary = "获取默认的加工方案组的配置信息") CommonResult getDefaultProcessConfig(); - - @GetMapping(PREFIX + "/organ/process-config") + @GetMapping(PREFIX + "/organ/plan-process-config") @Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息") CommonResult> getProcessById(@RequestParam("processId") Long processId); - @GetMapping(PREFIX + "/organ/multi-color-config-status") - @Operation(summary = "查询组织的混单是否开启") - CommonResult getMultiColorConfigStatus(); + @PostMapping(PREFIX + "/organ/plan-scheme-config") + @Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息") + CommonResult> getPlanProcessSchemeConfig(@RequestBody List schemeDTOList); + + + @GetMapping(PREFIX + "/organ/process-config") + @Operation(summary = "获取加工方案组的配置信息") + CommonResult> getProcessSchemeConfig(@RequestParam("processId") Long processId); + @GetMapping(PREFIX + "/organ/sealedge-config") @Operation(summary = "获取组织下封边条对应配置") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java index 66a77a6fb..12f442250 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java @@ -16,14 +16,9 @@ import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDataDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigProcessDO; import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigSchemeDO; -import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigSealedgeDO; import com.cf.imes.module.system.dal.mysql.label.LabelMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigDataMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigProcessMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigSchemeMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigSealedgeMapper; +import com.cf.imes.module.system.dal.mysql.systemconfig.*; import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.service.systemconfig.SystemConfigService; import lombok.extern.slf4j.Slf4j; @@ -151,6 +146,8 @@ public class SystemConfigApiImpl implements SystemConfigApi { } + + @Override public CommonResult> getProcessById(Long processId) { @@ -169,19 +166,71 @@ public class SystemConfigApiImpl implements SystemConfigApi { throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); } - List schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class); + return success(getProcessSchemeConfig(schemeDTOS)); + + } + + + + @Override + public CommonResult> getPlanProcessSchemeConfig(List schemeDTOList) { + + return success(getProcessSchemeConfig(schemeDTOList)); + + } + + + + @Override + public CommonResult> getProcessSchemeConfig(Long processId) { + + SystemConfigSchemeDO systemConfigSchemeDO = systemConfigSchemeMapper.selectById(processId); + + AssertUtils.notEmpty(systemConfigSchemeDO,THIS_PROCESS_CONFIG_DATA_ERROR); + + List processSchemeConfigs; + + try { + + processSchemeConfigs = parseArray(systemConfigSchemeDO.getSetting(), ProcessSchemeConfig.class); + + } catch (Exception e) { + log.error(e.getMessage()); + throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); + } + + return success(BeanUtils.toBean(processSchemeConfigs,ProcessSchemeDTO.class)); + + } + + + + + private void checkValueIsNotEmpty(List value,String error) { + + if(ObjectUtils.isEmpty(value)){ + throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR,error); + } + + } + + + + + private List getProcessSchemeConfig(List schemeDTOS){ + // 配置ID查询和数据校验 - List processLineConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getProcessLineConfig).distinct().toList(); + List processLineConfigIds = schemeDTOS.stream().map(ProcessSchemeDTO::getProcessLineConfig).distinct().toList(); checkValueIsNotEmpty(processLineConfigIds,"加工分线"); - List optimizationConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getOptimizationConfig).distinct().toList(); + List optimizationConfigIds = schemeDTOS.stream().map(ProcessSchemeDTO::getOptimizationConfig).distinct().toList(); checkValueIsNotEmpty(optimizationConfigIds,"优化数据配置"); - List analyzerIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList(); + List analyzerIds = schemeDTOS.stream().map(ProcessSchemeDTO::getAnalyzer).distinct().toList(); checkValueIsNotEmpty(analyzerIds,"解析器"); @@ -267,28 +316,13 @@ public class SystemConfigApiImpl implements SystemConfigApi { }); - return success(schemeDTOS); - } - - @Override - public CommonResult getMultiColorConfigStatus() { - -// List systemConfigDOS = systemConfigMapper.selectSystemConfigList(SystemConfigTypeEnum.MULTI_COLOR_ORDER_PLAN.getType(), CommonStatusEnum.ENABLE.getStatus()); -// -// return success(CollUtil.isNotEmpty(systemConfigDOS)); - - return success(Boolean.TRUE); - } - - - private void checkValueIsNotEmpty(List value,String error) { - - if(ObjectUtils.isEmpty(value)){ - throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR,error); - } + return schemeDTOS; } + + + @Override public CommonResult> getOrgSealEdgeConfig() { return success(BeanUtils.toBean(systemConfigSealedgeMapper.selectSystemConfigList(SystemConfigTypeEnum.SEALEDGE.getType(), null), SystemConfigRespDTO.class)); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/systemconfig/vo/ProcessSchemeConfig.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/systemconfig/vo/ProcessSchemeConfig.java index 875d3a312..56c27e144 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/systemconfig/vo/ProcessSchemeConfig.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/systemconfig/vo/ProcessSchemeConfig.java @@ -32,7 +32,7 @@ public class ProcessSchemeConfig { private String optimizationConfig; - @Schema(description = "数据优化配置", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "数据优化配置名称", requiredMode = Schema.RequiredMode.REQUIRED) private String optimizationConfigName; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java index 7d22b7b71..f16b3cc9a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java @@ -1,7 +1,6 @@ package com.cf.imes.module.system.service.machine; import cn.hutool.core.collection.CollUtil; -import co.elastic.clients.elasticsearch.ElasticsearchClient; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; @@ -9,7 +8,6 @@ import com.cf.imes.framework.common.enums.MachineTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; -import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.framework.security.core.LoginUser; @@ -27,7 +25,6 @@ import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigSchemeD import com.cf.imes.module.system.dal.mysql.machine.MachineBrandMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineLimitMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; -import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitMapper; import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper; import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigSchemeMapper; @@ -62,14 +59,6 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; @Validated public class MachineServiceImpl implements MachineService { - @Resource - private ElasticsearchClient elasticsearchClient; - - @Resource - private ESDocumentService esDocumentService; - - //钻孔机台配置索引 - public final static String DRILL_MACHINE_SETTING = "drill_machine_setting"; @Resource private MachineMapper machineMapper; @@ -77,9 +66,6 @@ public class MachineServiceImpl implements MachineService { @Resource private MachineLimitMapper machineLimitMapper; - @Resource - private MachineTemplateLimitMapper machineTemplateLimitMapper; - @Resource private MachineTemplateMapper machineTemplateMapper; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java index 6b96f37cc..8521bccd5 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/OrganServiceImpl.java @@ -26,19 +26,29 @@ import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganRespVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSaveReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSimpleRespVO; import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; +import com.cf.imes.module.system.controller.admin.systemconfig.vo.ProcessSchemeConfig; import com.cf.imes.module.system.controller.admin.tokenconfig.vo.JwtConfig; import com.cf.imes.module.system.controller.admin.user.vo.user.UserSaveReqVO; import com.cf.imes.module.system.convert.organ.OrganConvert; +import com.cf.imes.module.system.dal.dataobject.dict.DictDataDO; +import com.cf.imes.module.system.dal.dataobject.lable.LabelDO; +import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; import com.cf.imes.module.system.dal.dataobject.machine.MachineLimitDO; import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO; import com.cf.imes.module.system.dal.dataobject.organ.TenantPackageDO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; +import com.cf.imes.module.system.dal.dataobject.systemconfig.*; import com.cf.imes.module.system.dal.dataobject.tokenconfig.TokenConfigDO; +import com.cf.imes.module.system.dal.mysql.dict.DictDataMapper; +import com.cf.imes.module.system.dal.mysql.label.LabelMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineLimitMapper; +import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; +import com.cf.imes.module.system.dal.mysql.systemconfig.*; import com.cf.imes.module.system.dal.mysql.tokenconfig.TokenConfigMapper; +import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.enums.permission.RoleCodeEnum; import com.cf.imes.module.system.enums.permission.RoleTypeEnum; import com.cf.imes.module.system.service.organ.handler.OrganInfoHandler; @@ -63,6 +73,7 @@ import java.time.LocalDateTime; import java.util.*; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray; import static com.cf.imes.module.system.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN; import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; import static com.cf.imes.module.system.service.tokenconfig.TokenConfigServiceImpl.generateBaseToken; @@ -106,13 +117,39 @@ public class OrganServiceImpl implements OrganService { @Resource private TokenConfigMapper tokenConfigMapper; - @Resource private JwtConfig jwtConfig; @Resource private StringRedisTemplate stringRedisTemplate; + @Resource + private DictDataMapper dictDataMapper; + + @Resource + private SystemConfigMapper systemConfigMapper; + + @Resource + private SystemConfigFilterMapper systemConfigFilterMapper; + + @Resource + private SystemConfigProcessMapper systemConfigProcessMapper; + + @Resource + private SystemConfigDataMapper systemConfigDataMapper; + + @Resource + private SystemConfigSchemeMapper systemConfigSchemeMapper; + + @Resource + private SystemConfigSealedgeMapper systemConfigSealedgeMapper; + + @Resource + private MachineMapper machineMapper; + + @Resource + private LabelMapper labelMapper; + @Override public List getOrganIdList() { @@ -200,6 +237,9 @@ public class OrganServiceImpl implements OrganService { .build(); machineLimitMapper.insert(machineLimitDO); + // 复制系统配置里的相关配置 + copySystemConfig(tenant.getId()); + return tenant.getId(); } @@ -527,4 +567,192 @@ public class OrganServiceImpl implements OrganService { return BeanUtils.toBean(organMapper.selectOrgCountExpired(alertDay), OrganRespVO.class); } + + + + // 系统配置数据复制 + private void copySystemConfig(Long organId) { + + List dictDataDOS = dictDataMapper.selectListByStatusAndDictType(CommonStatusEnum.ENABLE.getStatus(), "copy_data_organ"); + if(CollUtil.isEmpty(dictDataDOS)){ + return; + } + + String value = dictDataDOS.get(0).getValue(); + + Long copyOrganId = Long.valueOf(value); + + + // 自定义板编号 + List systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType()) + .eq(SystemConfigDO::getOrganId, copyOrganId) + .eq(SystemConfigDO::getDeleted, false)); + + if(CollUtil.isNotEmpty(systemConfigDOS)){ + Optional configDO = systemConfigDOS.stream().max(Comparator.comparing(SystemConfigDO::getVersion)); + if (configDO.isPresent()) { + SystemConfigDO systemConfigDO = configDO.get(); + systemConfigMapper.insert(SystemConfigDO.builder() + .name(systemConfigDO.getName()) + .status(systemConfigDO.getStatus()) + .sort(systemConfigDO.getSort()) + .type(systemConfigDO.getType()) + .setting(systemConfigDO.getSetting()) + .organId(organId) + .build()); + } + } + + + // 板件分线 + List systemConfigFilterDOS = systemConfigFilterMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigFilterDO::getOrganId, copyOrganId) + .eq(SystemConfigFilterDO::getDeleted, false) + .eq(SystemConfigFilterDO::getType, SystemConfigTypeEnum.INTELLIGENT_BRANCH.getType())); + if(CollUtil.isNotEmpty(systemConfigFilterDOS)){ + systemConfigFilterDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + systemConfigFilterMapper.insertBatch(systemConfigFilterDOS); + } + + + // 加工分线 + List systemConfigProcessDOS = systemConfigProcessMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigProcessDO::getOrganId, copyOrganId) + .eq(SystemConfigProcessDO::getDeleted, false) + .eq(SystemConfigProcessDO::getType, SystemConfigTypeEnum.PROCESSING_SCREENING.getType())); + if(CollUtil.isNotEmpty(systemConfigProcessDOS)){ + systemConfigProcessDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + systemConfigProcessMapper.insertBatch(systemConfigProcessDOS); + } + + + // 数据处理 + List systemConfigDataDOS = systemConfigDataMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigDataDO::getOrganId, copyOrganId) + .eq(SystemConfigDataDO::getDeleted, false) + .eq(SystemConfigDataDO::getType, SystemConfigTypeEnum.DATA_PROCESSING.getType())); + if(CollUtil.isNotEmpty(systemConfigDataDOS)){ + systemConfigDataDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + systemConfigDataMapper.insertBatch(systemConfigDataDOS); + } + + + // 加工方案,(需要复制的组织ID,需要添加数据的组织ID) + copyConfigSchemeMachineAndLabel(copyOrganId,organId); + + + // 封边条对应 + List systemConfigSealedgeDOS = systemConfigSealedgeMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigSealedgeDO::getOrganId, copyOrganId) + .eq(SystemConfigSealedgeDO::getDeleted, false) + .eq(SystemConfigSealedgeDO::getType, SystemConfigTypeEnum.SEALEDGE.getType())); + if(CollUtil.isNotEmpty(systemConfigSealedgeDOS)){ + systemConfigSealedgeDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + systemConfigSealedgeMapper.insertBatch(systemConfigSealedgeDOS); + } + + } + + + + // 复制加工方案组以及里面的机台信息以及标签的配置信息 + private void copyConfigSchemeMachineAndLabel(Long copyOrganId,Long organId){ + + List systemConfigSchemeDOS = systemConfigSchemeMapper.selectList(new LambdaQueryWrapperX() + .eq(SystemConfigSchemeDO::getOrganId, copyOrganId) + .eq(SystemConfigSchemeDO::getDeleted, false) + .eq(SystemConfigSchemeDO::getType, SystemConfigTypeEnum.PROCESS_SCHEME.getType())); + + + if(CollUtil.isNotEmpty(systemConfigSchemeDOS)){ + + // 加工方案组的配置信息 + List processSchemeConfigs = new ArrayList<>(); + + systemConfigSchemeDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + + try { + processSchemeConfigs.addAll(parseArray(f.getSetting(), ProcessSchemeConfig.class)); + } catch (Exception e) { + log.error("加工方案组复制数据异常"+e.getMessage()); + } + }); + + + List machineIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList(); + List machineDOS = machineMapper.selectBatchIds(machineIds); + if(CollUtil.isNotEmpty(machineDOS)){ + machineDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + + List labelIds = machineDOS.stream().map(MachineDO::getLabelId).distinct().toList(); + List labelDOS = labelMapper.selectBatchIds(labelIds); + if(CollUtil.isNotEmpty(labelDOS)){ + labelDOS.forEach(f->{ + f.setId(null); + f.setOrganId(organId); + f.setCreateTime(null); + f.setCreator(null); + f.setUpdateTime(null); + f.setUpdater(null); + }); + + labelMapper.insertBatch(labelDOS); + } + + machineMapper.insertBatch(machineDOS); + } + + systemConfigSchemeMapper.insertBatch(systemConfigSchemeDOS); + } + } + + + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java index 5e0b221e0..7f09146b3 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/setting/SettingServiceImpl.java @@ -7,7 +7,6 @@ import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO; import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO; import com.cf.imes.module.system.dal.mysql.setting.PackageConfigMapper; -import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -27,8 +26,6 @@ public class SettingServiceImpl implements SettingService{ @Resource private PackageConfigMapper packageConfigMapper; - @Resource - private SystemConfigMapper systemConfigMapper; @Override public Long insertSetting(PackageConfigReqVO reqVO) { @@ -81,7 +78,7 @@ public class SettingServiceImpl implements SettingService{ if (packageConfigDO == null) { // throw exception(CURRENTLY_NO_CONFIGURATION_AVAILABLE,type == 1 ? UserSettingTypeEnum.PREPACKAGED.getName(): UserSettingTypeEnum.PACKAGED.getName()); - return new PackageConfigDO(); + return null; } packageConfigDO.setSetting(unzipString(packageConfigDO.getSetting()));