新增-每个排单都保存对应的方案组信息,增加修改排单方案组配置接口,创建组织复制系统配置信息,增加打印标签查询小板信息接口

This commit is contained in:
liuzhaotian
2025-04-17 16:18:26 +08:00
parent f93631333d
commit d2d891a289
15 changed files with 694 additions and 147 deletions
@@ -196,6 +196,31 @@ public class OptimizePlanController {
} }
@GetMapping("/newPlanPlate")
@Operation(summary = "获取排单是否有新加板材")
@Parameter(name = "planId", description = "排单ID", required = true)
public CommonResult<Boolean> getNewPlanPlate(@Valid @RequestParam("planId") Long planId) {
return success(optimizePlanService.getNewPlanPlate(planId));
}
@PutMapping("/updateConfig")
@Operation(summary = "修改排单对应的加工方案组的配置信息")
public CommonResult<Boolean> updateProcessSchemeConfig(@RequestBody PlanSchemeConfigReqVO reqVO) {
optimizePlanService.updateProcessSchemeConfig(reqVO);
return success(Boolean.TRUE);
}
@GetMapping("/getGoodsDataFilter") @GetMapping("/getGoodsDataFilter")
@Operation(summary = "未排单高级筛选-板材分组") @Operation(summary = "未排单高级筛选-板材分组")
@PreAuthorize("@ss.hasPermission('manage:pack:query')") @PreAuthorize("@ss.hasPermission('manage:pack:query')")
@@ -196,4 +196,17 @@ public class PlanController {
} }
@GetMapping("getPlanPlate")
@Operation(summary = "根据排单ID获取打印标签需要的小板信息")
@PreAuthorize("@ss.hasAnyPermissions('placeorder:print-label','producePlan:print-label')")
public CommonResult<PageResult<PlateResList>> getPlanPlateList(@Valid PlanPageReqVO pageReqVO) {
return success(planService.getPlanPlateList(pageReqVO));
}
} }
@@ -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;
}
@@ -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;
}
@@ -48,6 +48,10 @@ public class OptimizeBoardModelDO extends ESDocument {
private Boolean isLock; private Boolean isLock;
@Schema(description = "是否有新加入的小板")
private Boolean isNewInsertPlate;
@Schema(description = "实际的开料的大板的ID") @Schema(description = "实际的开料的大板的ID")
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private List<String> goodsId; private List<String> goodsId;
@@ -22,6 +22,8 @@ public interface OptimizePlanService {
String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model"; String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model";
String PLAN_PROCESS_SCHEME_CONFIG = "imes_plan_process_scheme_config_model";
List<PlateOptimize> getPlateListByPlanId(Long planId); List<PlateOptimize> getPlateListByPlanId(Long planId);
@@ -61,5 +63,9 @@ public interface OptimizePlanService {
PageResult<OrderRespVOCopy> getOrderPlateDataFilter(FilterDataPageReqVO pageReqVO); PageResult<OrderRespVOCopy> getOrderPlateDataFilter(FilterDataPageReqVO pageReqVO);
Boolean getNewPlanPlate(Long planId);
void updateProcessSchemeConfig(PlanSchemeConfigReqVO reqVO);
PageResult<OrderGoodsResp> getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO); PageResult<OrderGoodsResp> getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO);
} }
@@ -712,6 +712,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
planDO.setProcessId(req.getProcessId()); planDO.setProcessId(req.getProcessId());
planMapper.updateById(planDO); planMapper.updateById(planDO);
// 保存排单对应的方案组的配置信息
getPlanProcessSchemeConfig(planDO.getProcessId(),planId);
esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL); esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL);
}else { }else {
@@ -742,6 +745,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
plateMapper.updateBatch(plateDOS); 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); esUtils.deleteEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL);
} }
// List<OptimizeBoardModelDO> 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 @Override
public void saveProcessSchemeResults(SaveProcessSchemeReqVO saveProcessSchemeReqVO) { public void saveProcessSchemeResults(SaveProcessSchemeReqVO saveProcessSchemeReqVO) {
@@ -815,9 +792,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(CollUtil.isNotEmpty(plateDOS)) { if(CollUtil.isNotEmpty(plateDOS)) {
plateDOS.forEach(f -> { plateDOS.forEach(f -> f.setIsOptimized(true));
f.setIsOptimized(true);
});
plateMapper.updateBatch(plateDOS); plateMapper.updateBatch(plateDOS);
} }
@@ -830,10 +805,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
throw exception(THIS_PLAN_PLATE_IS_CUT); throw exception(THIS_PLAN_PLATE_IS_CUT);
} }
// 保存排单对应的加工方案组的配置信息
getPlanProcessSchemeConfig(processId,planId);
planMapper.updateById(planDO.setProcessId(processId)); planMapper.updateById(planDO.setProcessId(processId));
// 修改方案组,删除全部的方案组的优化信息 // 修改方案组,删除全部的方案组的优化信息
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
@@ -847,40 +823,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
} }
List<ProcessSchemeModelDO> 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.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS); esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS);
} }
// // 不能加非空判断,因为方案组里可能没有优化信息
// List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
//
//// List<Boolean> 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(); PlanProcessSchemeList planProcessSchemeList = new PlanProcessSchemeList();
List<ProcessSchemeDTO> schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData(); PlanDO planDO = validatePlanExists(planId);
// List<ProcessSchemeDTO> schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData();
List<ProcessSchemeDTO> schemeDTOList;
// 获取排单对应的方案组的配置信息
List<ProcessSchemeModelDO> 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<ProcessSchemeDTO> schemeDTOS = BeanUtils.toBean(schemeModelDOS, ProcessSchemeDTO.class);
schemeDTOList = systemConfigApi.getPlanProcessSchemeConfig(schemeDTOS).getCheckedData();
}
}else {
schemeDTOList = systemConfigApi.getProcessById(processId).getCheckedData();
}
planProcessSchemeList.setProcessSchemeList(schemeDTOList); planProcessSchemeList.setProcessSchemeList(schemeDTOList);
validatePlanExists(planId);
// 查询排单对应的方案组信息 // 查询排单对应的方案组信息
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class); List<SaveProcessSchemeModelDO> 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<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
List<OptimizeBoardModelDO> modelDOS = optimizeBoardModelDOS.stream().filter(f -> f.getIsNewInsertPlate().equals(Boolean.TRUE)).toList();
return modelDOS.isEmpty() ? Boolean.FALSE : Boolean.TRUE;
}
return Boolean.FALSE;
}
@Override @Override
public PageResult<OrderGoodsResp> getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO) { public PageResult<OrderGoodsResp> getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO) {
@@ -1768,6 +1769,27 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询排单对应的加工方案组的配置信息并保存
private void getPlanProcessSchemeConfig(Long processId,Long planId){
List<ProcessSchemeDTO> schemeDTOS = systemConfigApi.getProcessSchemeConfig(processId).getCheckedData();
List<ProcessSchemeModelDO> 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<Boolean> isLocks){ private void validatePlanStatus(PlanDO planDO,List<Boolean> isLocks){
@@ -72,4 +72,7 @@ public interface PlanService {
List<OrderRoomBodyList> getOrderRoomBody(List<Long> orderIds); List<OrderRoomBodyList> getOrderRoomBody(List<Long> orderIds);
List<PlanActualGoodsResp> getPlanGoodsList(SavePlanPlateList savePlanPlateList); List<PlanActualGoodsResp> getPlanGoodsList(SavePlanPlateList savePlanPlateList);
PageResult<PlateResList> getPlanPlateList(PlanPageReqVO pageReqVO);
} }
@@ -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.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; 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.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.saveOptimize.RemainBoardInfo;
import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds; 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_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model";
private static final String PLAN_PROCESS_SCHEME_CONFIG = "imes_plan_process_scheme_config_model";
@Resource @Resource
private ElasticsearchClient elasticsearchClient; private ElasticsearchClient elasticsearchClient;
@@ -225,6 +228,25 @@ public class PlanServiceImpl implements PlanService {
orderMapper.updateBatch(orderDOS); orderMapper.updateBatch(orderDOS);
} }
// 排单对应的加工方案组的配置信息
List<ProcessSchemeModelDO> 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); planMapper.insertBatch(planDOS);
planItemMapper.insertBatch(planItemDOS, planItemDOS.size()); planItemMapper.insertBatch(planItemDOS, planItemDOS.size());
@@ -357,18 +379,8 @@ public class PlanServiceImpl implements PlanService {
.inIfPresent(OrderItemDO::getOrderId, orderIds) .inIfPresent(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIdList)); .in(OrderItemDO::getPlateId, plateIdList));
} }
// 排单对应的优化数据删除
esUtils.deleteEsDocument(FIELD_PLANID,planIds,ORDER_REMAIN_PLATE_MODEL);
// 删除排单对应的加工方案的优化数据
esUtils.deleteEsDocument(FIELD_PLANID,planIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
// 查询删除排单对应的生产单是否还有进行了其他排单 // 查询删除排单对应的生产单是否还有进行了其他排单
List<Long> orderIdList = planItemMapper.selectOrderPlateList(orderIds, getUserOrganId()); List<Long> orderIdList = planItemMapper.selectOrderPlateList(orderIds, getUserOrganId());
@@ -387,6 +399,19 @@ public class PlanServiceImpl implements PlanService {
orderMapper.updateBatch(orderList); 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<PlateResList> getPlanPlateList(PlanPageReqVO pageReqVO) {
Long planId = Long.valueOf(pageReqVO.getId());
QueryWrapperX<PlanItemDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX.eq("opi.organ_id",getUserOrganId())
.eq(FIELD_PLAN_ID,planId);
Integer pageNo = (pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize();
List<PlateResList> plateResLists = planItemMapper.selectPlateListByPlateIds(queryWrapperX,pageNo,pageReqVO.getPageSize());
if (CollUtil.isEmpty(plateResLists)) {
return new PageResult<>();
}
Long sum = planItemMapper.selectPlateCountByPlateIds(queryWrapperX);
List<OptimizeBoardModelDO> boardModelDOS = esUtils.getEsDocument(FIELD_PLANID, planId, ORDER_REMAIN_PLATE_MODEL, OptimizeBoardModelDO.class);
if(CollUtil.isNotEmpty(boardModelDOS)) {
List<RemainBoardInfo> 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<RemainBoardInfo.PlaceBoardList> placeBoardList = new ArrayList<>();
remainBoardInfos.forEach(f-> placeBoardList.addAll(f.getPlaceBoardList()));
if(CollUtil.isNotEmpty(placeBoardList)){
List<RemainBoardInfo.Blocks> 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) { private PlanDO validatePlan(Long id) {
PlanDO planDO = planMapper.selectById(id); PlanDO planDO = planMapper.selectById(id);
@@ -1346,6 +1446,36 @@ public class PlanServiceImpl implements PlanService {
}); });
// 有新添加的小板,修改优化信息的字段信息
try {
List<FieldValue> 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); 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<OrderGoodsResp> list1, List<OrderGoodsResp> list2) { public static void mergeOrderGoodsLists(List<OrderGoodsResp> list1, List<OrderGoodsResp> list2) {
// Build a map for quick lookup of items in list1 by their unique properties // Build a map for quick lookup of items in list1 by their unique properties
@@ -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.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
@@ -45,15 +43,20 @@ public interface SystemConfigApi {
@Operation(summary = "获取默认的加工方案组的配置信息") @Operation(summary = "获取默认的加工方案组的配置信息")
CommonResult<SystemConfigRespDTO> getDefaultProcessConfig(); CommonResult<SystemConfigRespDTO> getDefaultProcessConfig();
@GetMapping(PREFIX + "/organ/plan-process-config")
@GetMapping(PREFIX + "/organ/process-config")
@Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息") @Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息")
CommonResult<List<ProcessSchemeDTO>> getProcessById(@RequestParam("processId") Long processId); CommonResult<List<ProcessSchemeDTO>> getProcessById(@RequestParam("processId") Long processId);
@GetMapping(PREFIX + "/organ/multi-color-config-status") @PostMapping(PREFIX + "/organ/plan-scheme-config")
@Operation(summary = "查询组织的混单是否开启") @Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息")
CommonResult<Boolean> getMultiColorConfigStatus(); CommonResult<List<ProcessSchemeDTO>> getPlanProcessSchemeConfig(@RequestBody List<ProcessSchemeDTO> schemeDTOList);
@GetMapping(PREFIX + "/organ/process-config")
@Operation(summary = "获取加工方案组的配置信息")
CommonResult<List<ProcessSchemeDTO>> getProcessSchemeConfig(@RequestParam("processId") Long processId);
@GetMapping(PREFIX + "/organ/sealedge-config") @GetMapping(PREFIX + "/organ/sealedge-config")
@Operation(summary = "获取组织下封边条对应配置") @Operation(summary = "获取组织下封边条对应配置")
@@ -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.SystemConfigDataDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigProcessDO; 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.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.label.LabelMapper;
import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; 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.*;
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.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum;
import com.cf.imes.module.system.service.systemconfig.SystemConfigService; import com.cf.imes.module.system.service.systemconfig.SystemConfigService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -151,6 +146,8 @@ public class SystemConfigApiImpl implements SystemConfigApi {
} }
@Override @Override
public CommonResult<List<ProcessSchemeDTO>> getProcessById(Long processId) { public CommonResult<List<ProcessSchemeDTO>> getProcessById(Long processId) {
@@ -169,19 +166,71 @@ public class SystemConfigApiImpl implements SystemConfigApi {
throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR);
} }
List<ProcessSchemeDTO> schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class); List<ProcessSchemeDTO> schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class);
return success(getProcessSchemeConfig(schemeDTOS));
}
@Override
public CommonResult<List<ProcessSchemeDTO>> getPlanProcessSchemeConfig(List<ProcessSchemeDTO> schemeDTOList) {
return success(getProcessSchemeConfig(schemeDTOList));
}
@Override
public CommonResult<List<ProcessSchemeDTO>> getProcessSchemeConfig(Long processId) {
SystemConfigSchemeDO systemConfigSchemeDO = systemConfigSchemeMapper.selectById(processId);
AssertUtils.notEmpty(systemConfigSchemeDO,THIS_PROCESS_CONFIG_DATA_ERROR);
List<ProcessSchemeConfig> 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<ProcessSchemeDTO> getProcessSchemeConfig(List<ProcessSchemeDTO> schemeDTOS){
// 配置ID查询和数据校验 // 配置ID查询和数据校验
List<String> processLineConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getProcessLineConfig).distinct().toList(); List<Long> processLineConfigIds = schemeDTOS.stream().map(ProcessSchemeDTO::getProcessLineConfig).distinct().toList();
checkValueIsNotEmpty(processLineConfigIds,"加工分线"); checkValueIsNotEmpty(processLineConfigIds,"加工分线");
List<String> optimizationConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getOptimizationConfig).distinct().toList(); List<Long> optimizationConfigIds = schemeDTOS.stream().map(ProcessSchemeDTO::getOptimizationConfig).distinct().toList();
checkValueIsNotEmpty(optimizationConfigIds,"优化数据配置"); checkValueIsNotEmpty(optimizationConfigIds,"优化数据配置");
List<String> analyzerIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList(); List<Long> analyzerIds = schemeDTOS.stream().map(ProcessSchemeDTO::getAnalyzer).distinct().toList();
checkValueIsNotEmpty(analyzerIds,"解析器"); checkValueIsNotEmpty(analyzerIds,"解析器");
@@ -267,28 +316,13 @@ public class SystemConfigApiImpl implements SystemConfigApi {
}); });
return success(schemeDTOS); return schemeDTOS;
}
@Override
public CommonResult<Boolean> getMultiColorConfigStatus() {
// List<SystemConfigDO> 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);
}
} }
@Override @Override
public CommonResult<List<SystemConfigRespDTO>> getOrgSealEdgeConfig() { public CommonResult<List<SystemConfigRespDTO>> getOrgSealEdgeConfig() {
return success(BeanUtils.toBean(systemConfigSealedgeMapper.selectSystemConfigList(SystemConfigTypeEnum.SEALEDGE.getType(), null), SystemConfigRespDTO.class)); return success(BeanUtils.toBean(systemConfigSealedgeMapper.selectSystemConfigList(SystemConfigTypeEnum.SEALEDGE.getType(), null), SystemConfigRespDTO.class));
@@ -32,7 +32,7 @@ public class ProcessSchemeConfig {
private String optimizationConfig; private String optimizationConfig;
@Schema(description = "数据优化配置", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "数据优化配置名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String optimizationConfigName; private String optimizationConfigName;
@@ -1,7 +1,6 @@
package com.cf.imes.module.system.service.machine; package com.cf.imes.module.system.service.machine;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; 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.pojo.PageResult;
import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.common.util.object.BeanUtils; 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.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.framework.security.core.LoginUser; 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.MachineBrandMapper;
import com.cf.imes.module.system.dal.mysql.machine.MachineLimitMapper; 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.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.machinetemplate.MachineTemplateMapper;
import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; import com.cf.imes.module.system.dal.mysql.organ.OrganMapper;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigSchemeMapper; import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigSchemeMapper;
@@ -62,14 +59,6 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
@Validated @Validated
public class MachineServiceImpl implements MachineService { public class MachineServiceImpl implements MachineService {
@Resource
private ElasticsearchClient elasticsearchClient;
@Resource
private ESDocumentService esDocumentService;
//钻孔机台配置索引
public final static String DRILL_MACHINE_SETTING = "drill_machine_setting";
@Resource @Resource
private MachineMapper machineMapper; private MachineMapper machineMapper;
@@ -77,9 +66,6 @@ public class MachineServiceImpl implements MachineService {
@Resource @Resource
private MachineLimitMapper machineLimitMapper; private MachineLimitMapper machineLimitMapper;
@Resource
private MachineTemplateLimitMapper machineTemplateLimitMapper;
@Resource @Resource
private MachineTemplateMapper machineTemplateMapper; private MachineTemplateMapper machineTemplateMapper;
@@ -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.OrganSaveReqVO;
import com.cf.imes.module.system.controller.admin.organ.vo.organ.OrganSimpleRespVO; 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.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.tokenconfig.vo.JwtConfig;
import com.cf.imes.module.system.controller.admin.user.vo.user.UserSaveReqVO; 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.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.machine.MachineLimitDO;
import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; 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.OrganizationDO;
import com.cf.imes.module.system.dal.dataobject.organ.TenantPackageDO; 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.MenuDO;
import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; 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.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.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.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.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.RoleCodeEnum;
import com.cf.imes.module.system.enums.permission.RoleTypeEnum; import com.cf.imes.module.system.enums.permission.RoleTypeEnum;
import com.cf.imes.module.system.service.organ.handler.OrganInfoHandler; import com.cf.imes.module.system.service.organ.handler.OrganInfoHandler;
@@ -63,6 +73,7 @@ import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; 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.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.system.service.tokenconfig.TokenConfigServiceImpl.generateBaseToken; import static com.cf.imes.module.system.service.tokenconfig.TokenConfigServiceImpl.generateBaseToken;
@@ -106,13 +117,39 @@ public class OrganServiceImpl implements OrganService {
@Resource @Resource
private TokenConfigMapper tokenConfigMapper; private TokenConfigMapper tokenConfigMapper;
@Resource @Resource
private JwtConfig jwtConfig; private JwtConfig jwtConfig;
@Resource @Resource
private StringRedisTemplate stringRedisTemplate; 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 @Override
public List<Long> getOrganIdList() { public List<Long> getOrganIdList() {
@@ -200,6 +237,9 @@ public class OrganServiceImpl implements OrganService {
.build(); .build();
machineLimitMapper.insert(machineLimitDO); machineLimitMapper.insert(machineLimitDO);
// 复制系统配置里的相关配置
copySystemConfig(tenant.getId());
return tenant.getId(); return tenant.getId();
} }
@@ -527,4 +567,192 @@ public class OrganServiceImpl implements OrganService {
return BeanUtils.toBean(organMapper.selectOrgCountExpired(alertDay), OrganRespVO.class); return BeanUtils.toBean(organMapper.selectOrgCountExpired(alertDay), OrganRespVO.class);
} }
// 系统配置数据复制
private void copySystemConfig(Long organId) {
List<DictDataDO> 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<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX<SystemConfigDO>()
.eq(SystemConfigDO::getType, SystemConfigTypeEnum.CUSTOM_PLATE_NO.getType())
.eq(SystemConfigDO::getOrganId, copyOrganId)
.eq(SystemConfigDO::getDeleted, false));
if(CollUtil.isNotEmpty(systemConfigDOS)){
Optional<SystemConfigDO> 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<SystemConfigFilterDO> systemConfigFilterDOS = systemConfigFilterMapper.selectList(new LambdaQueryWrapperX<SystemConfigFilterDO>()
.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<SystemConfigProcessDO> systemConfigProcessDOS = systemConfigProcessMapper.selectList(new LambdaQueryWrapperX<SystemConfigProcessDO>()
.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<SystemConfigDataDO> systemConfigDataDOS = systemConfigDataMapper.selectList(new LambdaQueryWrapperX<SystemConfigDataDO>()
.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<SystemConfigSealedgeDO> systemConfigSealedgeDOS = systemConfigSealedgeMapper.selectList(new LambdaQueryWrapperX<SystemConfigSealedgeDO>()
.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<SystemConfigSchemeDO> systemConfigSchemeDOS = systemConfigSchemeMapper.selectList(new LambdaQueryWrapperX<SystemConfigSchemeDO>()
.eq(SystemConfigSchemeDO::getOrganId, copyOrganId)
.eq(SystemConfigSchemeDO::getDeleted, false)
.eq(SystemConfigSchemeDO::getType, SystemConfigTypeEnum.PROCESS_SCHEME.getType()));
if(CollUtil.isNotEmpty(systemConfigSchemeDOS)){
// 加工方案组的配置信息
List<ProcessSchemeConfig> 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<String> machineIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList();
List<MachineDO> 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<Long> labelIds = machineDOS.stream().map(MachineDO::getLabelId).distinct().toList();
List<LabelDO> 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);
}
}
} }
@@ -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.controller.admin.setting.vo.PackageConfigReqVO;
import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO; 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.setting.PackageConfigMapper;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -27,8 +26,6 @@ public class SettingServiceImpl implements SettingService{
@Resource @Resource
private PackageConfigMapper packageConfigMapper; private PackageConfigMapper packageConfigMapper;
@Resource
private SystemConfigMapper systemConfigMapper;
@Override @Override
public Long insertSetting(PackageConfigReqVO reqVO) { public Long insertSetting(PackageConfigReqVO reqVO) {
@@ -81,7 +78,7 @@ public class SettingServiceImpl implements SettingService{
if (packageConfigDO == null) { if (packageConfigDO == null) {
// throw exception(CURRENTLY_NO_CONFIGURATION_AVAILABLE,type == 1 ? UserSettingTypeEnum.PREPACKAGED.getName(): UserSettingTypeEnum.PACKAGED.getName()); // throw exception(CURRENTLY_NO_CONFIGURATION_AVAILABLE,type == 1 ? UserSettingTypeEnum.PREPACKAGED.getName(): UserSettingTypeEnum.PACKAGED.getName());
return new PackageConfigDO(); return null;
} }
packageConfigDO.setSetting(unzipString(packageConfigDO.getSetting())); packageConfigDO.setSetting(unzipString(packageConfigDO.getSetting()));