未排单,排单,优化生产,新需求接口修改

This commit is contained in:
liuzhaotian
2025-01-09 10:06:53 +08:00
parent 376af44963
commit d95d02f9bd
83 changed files with 5237 additions and 1680 deletions
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.api.systemconfig;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.system.api.systemconfig.dto.ProcessSchemeDTO;
import com.cf.imes.module.system.api.systemconfig.dto.SystemConfigRespDTO;
import com.cf.imes.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
@@ -8,6 +9,9 @@ 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 java.util.List;
/**
@@ -28,4 +32,18 @@ public interface SystemConfigApi {
@GetMapping(PREFIX + "/organ/custom-plateno-config/{id}")
@Operation(summary = "获取组织下自定义版编号配置")
CommonResult<SystemConfigRespDTO> getById(@PathVariable("id") Long id);
@GetMapping(PREFIX + "/organ/process-config-List")
@Operation(summary = "获取排单下的加工方案组的配置信息")
CommonResult<List<SystemConfigRespDTO>> getProcessByIds(@RequestParam("processIds") List<Long> processIds);
@GetMapping(PREFIX + "/organ/default-process-config")
@Operation(summary = "获取默认的加工方案组的配置信息")
CommonResult<SystemConfigRespDTO> getDefaultProcessConfig();
@GetMapping(PREFIX + "/organ/process-config")
@Operation(summary = "获取排单下加工方案组的配置信息和具体配置项的配置信息")
CommonResult<List<ProcessSchemeDTO>> getProcessById(@RequestParam("processId") Long processId);
}
@@ -0,0 +1,76 @@
package com.cf.imes.module.system.api.systemconfig.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author 加工方案组配置
*/
@Schema(description = "RPC 服务 - 加工方案组的具体配置信息 Resp DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProcessSchemeDTO implements Serializable {
private static final long serialVersionUID = 1788458794035807655L;
@Schema(description = "方案配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long planConfigId;
@Schema(description = "方案配置名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String planName;
@Schema(description = "加工分线配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long processLineConfig;
@Schema(description = "加工分线配置名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String processLineConfigName;
@Schema(description = "加工分线配置", requiredMode = Schema.RequiredMode.REQUIRED)
private String processLineConfigSetting;
@Schema(description = "数据优化配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long optimizationConfig;
@Schema(description = "数据优化配置名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String optimizationConfigName;
@Schema(description = "数据优化配置", requiredMode = Schema.RequiredMode.REQUIRED)
private String optimizationConfigSetting;
@Schema(description = "解析器配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long analyzer;
@Schema(description = "解析器配置名称-机台名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String analyzerConfigName;
@Schema(description = "解析器配置-机台的配置", requiredMode = Schema.RequiredMode.REQUIRED)
private String analyzerConfigSetting;
@Schema(description = "标签的配置", requiredMode = Schema.RequiredMode.REQUIRED)
private String labelSetting;
@Schema(description = "机台类型", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer machineType;
}
@@ -266,6 +266,8 @@ public class ErrorCodeConstants {
public static final ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_008, "当前板编号无对应包裹信息");
public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_002_033_009, "板材商品编号存在,请重新命名商品编号");
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "当前板材为源小板,无法删除");
public static final ErrorCode PLAN_GOODS_IS_FILTER_DATA_ERROR = new ErrorCode(1_002_033_011, "当前排单为非混单,无法添加颜色的筛选条件");
public static final ErrorCode PLAN_STATUS_ERROR = new ErrorCode(1_002_033_012, "当前排单未投产,无法进行开料");
@@ -331,9 +333,13 @@ public class ErrorCodeConstants {
public static final ErrorCode BRANCHING_DEFAULT_SETTING_ERROR = new ErrorCode(1_002_041_023, "当前组织智能分线无默认配置,请进行配置");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置");
public static final ErrorCode CONFIG_DATA_ERROR = new ErrorCode(1_002_041_025, "当前配置为空,保存失败,请添加配置后再保存");
public static final ErrorCode PLAN_MIXED_DATA_ERROR = new ErrorCode(1_002_041_021, "当前混排条件错误,无法混排,请重新选择条件进行混单!");
public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_002_041_022, "当前排单未保存大板和小板信息,请重新进行排单");
public static final ErrorCode PLAN_MIXED_DATA_ERROR = new ErrorCode(1_002_041_026, "当前混排条件错误,无法混排,请重新选择条件进行混单!");
public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_002_041_027, "当前排单未保存大板和小板信息,请重新进行排单");
public static final ErrorCode PLAN_PLATE_IS_CUTTED = new ErrorCode(1_002_041_028, "当前删除的小板中已有小板开料,无法删除!");
public static final ErrorCode PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_002_041_029, "当前方案组的优化数据未保存,请保存或重新执行方案组");
public static final ErrorCode PLAN_NO_ACTUAL_PLATE = new ErrorCode(1_002_041_030, "当前排单未选择实际开料的大板信息,无法保存优化结果");
public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_002_041_031, "当前组织没有默认的加工方案组,请在系统配置中进行配置");
public static final ErrorCode THIS_PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_002_041_032, "当前选择的加工方案组配置有误,请选择其他方案组或重新配置该方案组");
@@ -1,15 +1,32 @@
package com.cf.imes.module.system.api.systemconfig;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.api.systemconfig.dto.ProcessSchemeDTO;
import com.cf.imes.module.system.api.systemconfig.dto.SystemConfigRespDTO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ProcessSchemeConfig;
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.systemconfig.SystemConfigDO;
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.SystemConfigMapper;
import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum;
import com.cf.imes.module.system.service.systemconfig.SystemConfigService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import static com.cf.imes.framework.common.util.json.JsonUtils.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_CONFIG_DEFAULT_DATA_ERROR;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.THIS_PROCESS_CONFIG_DATA_ERROR;
/**
* 系统配置feign实现类
@@ -24,6 +41,16 @@ public class SystemConfigApiImpl implements SystemConfigApi {
@Resource
private SystemConfigService systemConfigService;
@Resource
private SystemConfigMapper systemConfigMapper;
@Resource
private MachineMapper machineMapper;
@Resource
private LabelMapper labelMapper;
@Override
public CommonResult<SystemConfigRespDTO> getOrgCustomPlateNoConfig() {
return success(BeanUtils.toBean(systemConfigService.getOrgCustomPlateNoConfig(), SystemConfigRespDTO.class));
@@ -33,4 +60,102 @@ public class SystemConfigApiImpl implements SystemConfigApi {
public CommonResult<SystemConfigRespDTO> getById(Long id) {
return success(BeanUtils.toBean(systemConfigService.getSystemConfig(id), SystemConfigRespDTO.class));
}
@Override
public CommonResult<List<SystemConfigRespDTO>> getProcessByIds(List<Long> processIds) {
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectList(new LambdaQueryWrapperX<SystemConfigDO>()
.eq(SystemConfigDO::getOrganId, OrganContextHolder.getOrganId())
.in(SystemConfigDO::getId, processIds)
.select(SystemConfigDO::getId,SystemConfigDO::getName));
// AssertUtils.notEmpty(systemConfigDOS,PROCESS_CONFIG_DATA_ERROR);
return success(BeanUtils.toBean(systemConfigDOS,SystemConfigRespDTO.class));
}
@Override
public CommonResult<SystemConfigRespDTO> getDefaultProcessConfig() {
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectSystemConfigList(SystemConfigTypeEnum.PROCESS_SCHEME.getType(), CommonStatusEnum.ENABLE.getStatus());
AssertUtils.notEmpty(systemConfigDOS,PROCESS_CONFIG_DEFAULT_DATA_ERROR);
return success(BeanUtils.toBean(systemConfigDOS.get(0),SystemConfigRespDTO.class));
}
@Override
public CommonResult<List<ProcessSchemeDTO>> getProcessById(Long processId) {
SystemConfigDO systemConfigDO = systemConfigMapper.selectById(processId);
AssertUtils.notEmpty(systemConfigDO,THIS_PROCESS_CONFIG_DATA_ERROR);
List<ProcessSchemeConfig> processSchemeConfigs = parseArray(systemConfigDO.getSetting(), ProcessSchemeConfig.class);
List<ProcessSchemeDTO> schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class);
List<String> processLineConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getProcessLineConfig).distinct().toList();
List<String> optimizationConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getOptimizationConfig).distinct().toList();
List<String> analyzerIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList();
List<SystemConfigDO> processLineConfigList = systemConfigMapper.selectBatchIds(processLineConfigIds);
List<SystemConfigDO> optimizationConfigList = systemConfigMapper.selectBatchIds(optimizationConfigIds);
List<MachineDO> analyzerList = machineMapper.selectBatchIds(analyzerIds);
List<Long> labelIds = analyzerList.stream().map(MachineDO::getLabelId).distinct().toList();
List<LabelDO> labelDOS = labelMapper.selectBatchIds(labelIds);
schemeDTOS.forEach(f->{
f.setProcessLineConfigName(processLineConfigList.stream()
.filter(p->f.getProcessLineConfig().equals(p.getId()))
.map(SystemConfigDO::getName)
.toList().get(0)
);
f.setProcessLineConfigSetting(toJsonString(
processLineConfigList.stream()
.filter(p->f.getProcessLineConfig().equals(p.getId()))
.map(SystemConfigDO::getSetting)
.toList().get(0)
));
f.setOptimizationConfigName(processLineConfigList.stream()
.filter(p->f.getProcessLineConfig().equals(p.getId()))
.map(SystemConfigDO::getName)
.toList().get(0)
);
f.setOptimizationConfigSetting(toJsonString(
optimizationConfigList.stream()
.filter(p->f.getOptimizationConfig().equals(p.getId()))
.map(SystemConfigDO::getSetting)
.toList().get(0)
));
MachineDO machineDO = analyzerList.stream().filter(p -> f.getAnalyzer().equals(p.getId())).toList().get(0);
f.setAnalyzerConfigName(machineDO.getName());
f.setAnalyzerConfigSetting(toJsonString(unzipString(machineDO.getSetting())));
f.setMachineType(machineDO.getMachineType());
});
return success(schemeDTOS);
}
}
@@ -0,0 +1,17 @@
package com.cf.imes.module.system.controller.admin.machine.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* @author there
*/
@Data
public class MachineReqVO {
@Schema(description = "机台ID", requiredMode = Schema.RequiredMode.REQUIRED)
private List<Long> machinesIds;
}
@@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 系统打包配置")
@@ -73,4 +72,13 @@ public class SettingController {
}
@GetMapping("/selectScheme")
@Operation(summary = "根据加工方案ID获取加工方案的所有配置")
public CommonResult<ConfigRespVO> getProcessScheme(@RequestParam Long id) {
SystemConfigDO systemConfigDO = settingService.selectDefaultBranching();
return success(BeanUtils.toBean(systemConfigDO, ConfigRespVO.class));
}
}
@@ -0,0 +1,46 @@
package com.cf.imes.module.system.controller.admin.systemconfig.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author 加工方案配置信息
*/
@Data
public class ProcessSchemeConfig {
@Schema(description = "加工方案组的配置项ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long planConfigId;
@Schema(description = "方案组配置项名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String planName;
@Schema(description = "加工分线配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String processLineConfig;
@Schema(description = "加工分线名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String processLineName;
@Schema(description = "数据优化配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String optimizationConfig;
@Schema(description = "数据优化配置", requiredMode = Schema.RequiredMode.REQUIRED)
private String optimizationConfigName;
@Schema(description = "解析器配置ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String analyzer;
@Schema(description = "解析器名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String analyzerName;
}
@@ -1,12 +1,7 @@
package com.cf.imes.module.system.service.machine;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.query_dsl.TermQuery;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
@@ -14,7 +9,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.dal.ESDocument;
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;
@@ -23,7 +17,9 @@ import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
import com.cf.imes.module.system.controller.admin.machine.vo.*;
import com.cf.imes.module.system.convert.machine.MachineConvert;
import com.cf.imes.module.system.dal.dataobject.machine.*;
import com.cf.imes.module.system.dal.dataobject.machine.MachineBrandDO;
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.machinetemplate.MachineTemplateDO;
import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO;
import com.cf.imes.module.system.dal.mysql.machine.MachineBrandMapper;
@@ -41,12 +37,13 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString;
import static com.cf.imes.framework.common.util.json.JsonUtils.zipString;
@@ -527,8 +524,6 @@ public class MachineServiceImpl implements MachineService {
return JSON.parseArray(setting).toJavaList(Integer.class);
// return machineMapper.selectOrganMachine(organId);
}
@Override
@@ -621,7 +616,7 @@ public class MachineServiceImpl implements MachineService {
PageResult<MachineDO> machineDOPageResult = machineMapper.selectPage(pageReqVO);
// 将查询到的机台的数据中的配置信息进行解压
List<MachineDO> list = machineDOPageResult.getList().stream().map(m -> m.setSetting(JsonUtils.unzipString(m.getSetting()))).collect(Collectors.toList());
List<MachineDO> list = machineDOPageResult.getList().stream().map(m -> m.setSetting(JsonUtils.unzipString(m.getSetting()))).toList();
return machineDOPageResult.setList(list);
}
@@ -6,10 +6,12 @@ import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqV
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import com.cf.imes.module.system.service.systemconfig.factory.service.AbstractSystemConfigServiceHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@@ -20,10 +22,19 @@ import java.util.List;
@Slf4j
public class MultiColorOrderPlanServiceHandler extends AbstractSystemConfigServiceHandler {
@Resource
private SystemConfigMapper systemConfigMapper;
@Override
public List<SystemConfigDO> selectList(ConfigPageReqVO pageReqVO) {
return null;
List<SystemConfigDO> systemConfigDOS = systemConfigMapper.selectSystemConfigList(pageReqVO.getType(),null);
if (systemConfigDOS.isEmpty()){
return null;
}
return systemConfigDOS;
}
@@ -4,10 +4,7 @@ package com.cf.imes.module.system.service.systemconfig.factory.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigDeleteReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigSaveReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateStatusReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.*;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import com.cf.imes.module.system.service.systemconfig.factory.service.AbstractSystemConfigServiceHandler;
@@ -16,6 +13,11 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray;
import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString;
/**
* @author 加工方案服务处理器
@@ -50,7 +52,21 @@ public class ProcessSchemeServiceHandler extends AbstractSystemConfigServiceHand
@Override
public void beforeSaveConfig(ConfigSaveReqVO reqVO) {
// todo beforeSaveConfig
List<ProcessSchemeConfig> processSchemeConfigs = parseArray(reqVO.getSetting(), ProcessSchemeConfig.class);
AtomicLong sort = new AtomicLong(System.currentTimeMillis());
processSchemeConfigs.forEach(f->{
sort.addAndGet(1);
f.setPlanConfigId(Optional.ofNullable(f.getPlanConfigId()).orElse(sort.get()));
});
reqVO.setSetting(toJsonString(processSchemeConfigs));
}