优化生产大板字段类型更改,未排单接口查询速度优化

This commit is contained in:
liuzhaotian
2024-09-11 16:12:27 +08:00
parent 433e6825e5
commit 62026720da
39 changed files with 675 additions and 573 deletions
@@ -123,6 +123,7 @@ public interface ErrorCodeConstants {
ErrorCode ORGAN_NAME_DUPLICATE = new ErrorCode(1_002_015_004, "名字为【{}】的组织已存在");
ErrorCode ORGAN_WEBSITE_DUPLICATE = new ErrorCode(1_002_015_005, "域名为【{}】的组织已存在");
ErrorCode ORGAN_DATA_CODE_NOT_EXISTS = new ErrorCode(1_002_015_006, "组织未配置数据源标识");
ErrorCode ORGAN_ALREADY_EXISTS = new ErrorCode(1_002_015_007, "该新增组织已授权机台数量无需重复新增!");
// ========== 组织套餐 1-002-016-000 ==========
ErrorCode TENANT_PACKAGE_NOT_EXISTS = new ErrorCode(1_002_016_000, "组织套餐不存在");
@@ -196,12 +197,6 @@ public interface ErrorCodeConstants {
ErrorCode PROCESS_STATUS_DISABLE = new ErrorCode(1_002_027_003, "工序状态以已禁用");
ErrorCode PROCESS_NAME_EXISTS = new ErrorCode(1_002_027_004, "工序名称已存在");
//=========== 工序组信息 1-002-029-000 ============
ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_010, "工序组不存在");
ErrorCode PROCESS_GROUP_USED = new ErrorCode(1_002_029_011, "工序组已使用,禁止删除 ");
ErrorCode PROCESS_GROUP_NAME_EXISTS = new ErrorCode(1_002_029_012, "工序名称已存在");
ErrorCode PROCESS_GROUP_CUTTING_ERROR = new ErrorCode(1_002_029_012, "开料工序类型已经存在,禁止重复");
ErrorCode PROCESS_GROUP_PACKING_ERROR = new ErrorCode(1_002_029_012, "打包工序类型已经存在,禁止重复");
// ========== 机台 1-002-029-000 ==========
ErrorCode MACHINE_NOT_EXISTS = new ErrorCode(1_002_029_000, "机台不存在");
@@ -219,6 +214,9 @@ public interface ErrorCodeConstants {
ErrorCode MACHINE_NUM_ERROR = new ErrorCode(1_002_029_011, "当前模板创建的机台数量已达到最大值,无法继续创建");
ErrorCode MACHINE_NAME_ERROR = new ErrorCode(1_002_029_012, "当前机台名称已存在,请重新输入机台名称");
ErrorCode MACHINETEMPLATE_NAME_ERROR = new ErrorCode(1_002_029_013, "当前机台模板的名称已存在,请重新输入机台模板名称");
ErrorCode LABELINGMACHINE_RELATED_DATA_ERROR = new ErrorCode(1_002_029_014, "当前机台关联的贴标机数据有误,请在高级配置中重新配置贴标机或选择其他模板");
ErrorCode DRILLMACHINE_RELATED_DATA_ERROR = new ErrorCode(1_002_029_015, "当前机台关联的钻孔机数据有误,请在钻孔模块中重新配置钻孔机或选择其他模板");
// ========== 标签模板 1-002-300-000 ==========
ErrorCode LABEL_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_300_000, "标签模板不存在");
@@ -228,71 +226,79 @@ public interface ErrorCodeConstants {
ErrorCode DEFAULT_NOT_DELETED = new ErrorCode(1_002_300_004, "默认标签模板无法删除");
ErrorCode LABEL_ERROR = new ErrorCode(1_002_300_005, "当前标签错误,请重新配置标签");
// ========== 系统数据源 1_002_301_000 ==========
ErrorCode DATA_SOURCE_NOT_EXISTS = new ErrorCode(1_002_301_000, "系统数据源不存在");
//=========== 工序组信息 1-002-031-000 ============
ErrorCode PLATE_NOT_EXISTS = new ErrorCode(1_002_029_001, "板材不存在");
//=========== 板材信息 1-002-032-000 ============
ErrorCode PLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_032_001, "导入板材数据不能为空!");
ErrorCode PLATE_EXISTS = new ErrorCode(1_002_032_002, "板材存在");
ErrorCode THE_CURRENT_BOARD_IS_NOT_SELECTED = new ErrorCode(1_002_032_003, "当前板材没有选择房间和柜体,请选择");
ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_032_004, "当前排单已有板材开料,禁止修改");
//=========== 工序组信息 1-002-032-000 ============
ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_032_001, "工序组不存在");
ErrorCode PROCESS_GROUP_USED = new ErrorCode(1_002_032_002, "工序组已使用,禁止删除 ");
ErrorCode PROCESS_GROUP_NAME_EXISTS = new ErrorCode(1_002_032_003, "工序名称已存在");
ErrorCode PROCESS_GROUP_CUTTING_ERROR = new ErrorCode(1_002_032_004, "开料工序类型已经存在,禁止重复");
ErrorCode PROCESS_GROUP_PACKING_ERROR = new ErrorCode(1_002_032_005, "打包工序类型已经存在,禁止重复");
//=========== 板材信息 1-002-033-000 ============
ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_032_002, "板材不存在");
//=========== 板材信息 1-002-034-000 ============
ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_032_002, "工序用户不存在");
ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_032_003, "工序用户存在");
//=========== 工序的生产状态 1-002-034-000 ============
ErrorCode UNPROCESSED_BEFORE_PROCESSING = new ErrorCode(1_002_034_666, "未加工状态方可进行加工");
// ========== 新增外部配件 1-002-035-000 ==========
ErrorCode THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED = new ErrorCode(1_002_035_666, "配件名称不能重复");
ErrorCode PLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_001, "导入板材数据不能为空!");
ErrorCode PLATE_EXISTS = new ErrorCode(1_002_033_002, "板材存在");
ErrorCode THE_CURRENT_BOARD_IS_NOT_SELECTED = new ErrorCode(1_002_033_003, "当前板材没有选择房间和柜体,请选择");
ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_033_004, "当前排单已有板材开料,禁止修改");
ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_033_005, "板材不存在");
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在");
ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空");
ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_008, "当前板编号无对应包裹信息");
//=========== 板材信息 1-002-035-000 ============
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_001, "设计板材不存再");
ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_002, "生产板材导入数据不可以为空");
ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_003, "当前板编号无对应包裹信息");
//=========== 配件信息 1-002-035-000 ============
ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_034_001, "生产配件导入数据不可以为空");
//=========== 柜体信息 1-002-035-000 ============
ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_035_001, "柜体信息不存在");
//=========== 柜体信息 1-002-035-000 ============
ErrorCode ORDER_GROUP_NOT_EXISTS = new ErrorCode(1_002_036_001, "加工组信息不存在");
//=========== 工序信息 1-002-034-000 ============
ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_034_001, "工序用户不存在");
ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_034_002, "工序用户存在");
ErrorCode UNPROCESSED_BEFORE_PROCESSING = new ErrorCode(1_002_034_003, "未加工状态方可进行加工");
//=========== 包裹信息 1-002-038-000 ============
ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_038_666, "当前包裹还有未封包包裹");
ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_038_777, "当前包裹类型错误");
ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_038_778, "修改当前生产单的工序状态和生产单的状态失败");
ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_038_779, "当前订单无优化信息");
ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_038_780, "已经是{}一条了");
// ========== 配件信息 1-002-035-000 ==========
ErrorCode THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED = new ErrorCode(1_002_035_001, "配件名称不能重复");
ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_035_002, "生产配件导入数据不可以为空");
//=========== 柜体信息 1-002-036-000 ============
ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_036_001, "柜体信息不存在");
//=========== 加工组信息 1-002-037-000 ============
ErrorCode ORDER_GROUP_NOT_EXISTS = new ErrorCode(1_002_037_001, "加工组信息不存在");
//=========== 包裹信息 1-002-040-000 ============
ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_040_001, "当前包裹还有未封包包裹");
ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_040_002, "当前包裹类型错误");
ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_040_003, "修改当前生产单的工序状态和生产单的状态失败");
ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_004, "当前订单无优化信息");
ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_005, "已经是{}一条了");
//=========== 断言提示信息 1-002-041-000 ============
ErrorCode ORDER_DATE_ERROR = new ErrorCode(1_002_041_001, "生产单信息不存在,请重新进入或切换生产单");
ErrorCode ORDER_PLATE_ERROR = new ErrorCode(1_002_041_002, "生产单对应的板材信息不存在");
//=========== 应用信息 1-002-037-000 ============
ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_037_001, "应用信息不存在");
ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_037_001, "应用登陆失败");
ErrorCode ERR = new ErrorCode(1_002_038_001, "未知错误");
ErrorCode DATA_ERR = new ErrorCode(1_002_038_002, "数据错误,需要清除数据重新导入");
ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_001, "余料板正在使用中,禁止修改");
ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_002, "余料板使用");
ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_003, "余料板使用类型为不可核销类型");
ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_004, "未选中余料板,请选择余料板");
ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_003, "余料板正在使用中,禁止修改");
ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_004, "余料板未使用");
ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_005, "余料板使用类型为不可核销类型");
ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_006, "未选中余料板,请选择余料板");
ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_038_007, "应用信息不存在");
ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_038_008, "应用登陆失败");
//=========== 用户的系统配置 1-002-039-000 ============
@@ -11,6 +11,7 @@ import com.cf.imes.module.system.controller.admin.machine.vo.*;
import com.cf.imes.module.system.dal.dataobject.machine.MachineDO;
import com.cf.imes.module.system.service.machine.MachineService;
import com.cf.imes.module.system.service.machine.MachineTemplateService;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -41,7 +42,7 @@ public class MachineController {
@Operation(summary = "创建机台")
//@PreAuthorize("@ss.hasPermission('machine::create')")
@OperateLog(logArgs = false)
public CommonResult<Long> createCutting(@Validated(CreateGroup.class) @RequestBody CuttingSaveReqVO createReqVO) {
public CommonResult<Long> createCutting(@Validated(CreateGroup.class) @RequestBody CuttingSaveReqVO createReqVO) throws JsonProcessingException {
return success(machineService.createCutting(createReqVO));
}
@@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.machine;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.system.controller.admin.machine.vo.*;
import com.cf.imes.module.system.dal.dataobject.machine.MachineDO;
import com.fasterxml.jackson.core.JsonProcessingException;
import javax.validation.Valid;
import java.util.Collection;
@@ -22,7 +23,7 @@ public interface MachineService {
* @param createReqVO 创建信息
* @return 编号
*/
Long createCutting(@Valid CuttingSaveReqVO createReqVO);
Long createCutting(@Valid CuttingSaveReqVO createReqVO) throws JsonProcessingException;
/**
* 更新机台
@@ -69,7 +70,9 @@ public interface MachineService {
Map<Integer, List<MachineVO>> getMachineTree(Long type);
Boolean auth(MachineOrgAuthReq vo);
Boolean authInsert(MachineOrgAuthReq vo);
Boolean authUpdate(MachineOrgAuthReq vo);
PageResult<OrganMachineResp> organMachinePage(OrganMachinePage page);
@@ -32,7 +32,9 @@ 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.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +48,7 @@ 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;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
@@ -92,7 +95,7 @@ public class MachineServiceImpl implements MachineService {
@Override
@Transactional(rollbackFor = Exception.class)
public Long createCutting(CuttingSaveReqVO createReqVO) {
public Long createCutting(CuttingSaveReqVO createReqVO) throws JsonProcessingException {
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
assert loginUser != null;
@@ -114,7 +117,9 @@ public class MachineServiceImpl implements MachineService {
// 插入
machineDO = MachineConvert.convert(createReqVO);
machineDO.setSetting(copyMachineDO.getSetting());
String updatedJsonString = handleMachineSpecificConfiguration(machineDO, machineDO.getMachineType(),copyMachineDO.getSetting(),true);
machineDO.setSetting(updatedJsonString == null ? copyMachineDO.getSetting() : zipString(updatedJsonString));
machineDO.setId(null);
@@ -133,11 +138,13 @@ public class MachineServiceImpl implements MachineService {
// 创建新的机器对象
machineDO = MachineConvert.convert(createReqVO);
machineDO.setSetting(machineTemplateDO.getSetting());
machineMapper.insert(machineDO);
// 处理不同机台类型的配置
handleMachineSpecificConfiguration(machineDO, machineTemplateDO);
String updatedJsonString = handleMachineSpecificConfiguration(machineDO, machineTemplateDO.getMachineType(), machineTemplateDO.getSetting(),false);
machineDO.setSetting(updatedJsonString == null ? machineTemplateDO.getSetting() : zipString(updatedJsonString));
machineMapper.insert(machineDO);
// 返回新机器的ID
return machineDO.getId();
@@ -146,67 +153,176 @@ public class MachineServiceImpl implements MachineService {
// 判断机台的模板是否是钻孔机或封边机
private void handleMachineSpecificConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) {
Integer machineType = machineTemplateDO.getMachineType();
private String handleMachineSpecificConfiguration(MachineDO machineDO, Integer machineType,String machineSetting,Boolean isMachine) throws JsonProcessingException {
String updatedJsonString = null;
if (MachineTypeEnum.CUTTING.getType().equals(machineType)) {
handleCuttingMachineConfiguration(machineDO, machineTemplateDO);
updatedJsonString = handleCuttingMachineConfiguration(machineDO, machineSetting,isMachine);
} else if (MachineTypeEnum.BANDING.getType().equals(machineType)) {
handleBandingMachineConfiguration(machineDO, machineTemplateDO);
updatedJsonString = handleBandingMachineConfiguration(machineDO, machineSetting,isMachine);
}
return updatedJsonString;
}
// 创建贴标机
private void handleCuttingMachineConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) {
private String handleCuttingMachineConfiguration(MachineDO machineDO, String machineSetting,Boolean isMachine) throws JsonProcessingException {
JsonNode cuttingSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting()));
String unzipMachineSetting = unzipString(machineSetting);
JsonNode cuttingSetting = JsonUtils.parseTree(unzipMachineSetting);
JsonNode advancedConfigsRef = cuttingSetting.get("advancedConfigsRef");
boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled").asBoolean();
if (isAutoLabelEnabled && advancedConfigsRef.has("autoLabelModel")) {
Integer autoLabelModel = advancedConfigsRef.get("autoLabelModel").asInt();
createAndInsertMachine(autoLabelModel, machineDO, "开料" + machineDO.getName() + "-贴标机");
Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt();
MachineDO newMachine ;
if(isMachine){
MachineDO machine = machineMapper.selectById(autoLabelModelId);
if (machine != null) {
newMachine = MachineDO.builder()
.labelId(machine.getLabelId())
.machineType(machine.getMachineType())
.brandId(machine.getBrandId())
.setting(machine.getSetting())
.name("开料" + machineDO.getName() + "-贴标机")
.build();
machineMapper.insert(newMachine);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipMachineSetting, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
advancedConfigs.put("autoLabelModel", newMachine.getId());
// 将 Map 转换为 JSON 字符串
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}
}
MachineTemplateDO machineTemplate = machineTemplateMapper.selectById(autoLabelModelId);
if (machineTemplate != null) {
newMachine = MachineDO.builder()
.labelId(machineDO.getLabelId())
.machineType(machineTemplate.getMachineType())
.brandId(machineTemplate.getBrandId())
.setting(machineTemplate.getSetting())
.name("开料" + machineDO.getName() + "-贴标机")
.build();
machineMapper.insert(newMachine);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipMachineSetting, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
advancedConfigs.put("autoLabelModel", newMachine.getId());
// 将 Map 转换为 JSON 字符串
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}
}
return null;
}
// 创建钻孔机
private void handleBandingMachineConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) {
JsonNode drillSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting()));
private String handleBandingMachineConfiguration(MachineDO machineDO, String machineSetting,Boolean isMachine) throws JsonProcessingException {
String unzipMachineSetting = unzipString(machineSetting);
JsonNode drillSetting = JsonUtils.parseTree(unzipMachineSetting);
JsonNode cuttingModuleRef = drillSetting.get("cuttingModuleRef");
boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled").asBoolean();
if (isDrillEnabled && cuttingModuleRef.has("drillModel")) {
Integer drillModel = cuttingModuleRef.get("drillModel").asInt();
createAndInsertMachine(drillModel, machineDO, "开料" + machineDO.getName() + "钻孔机");
Integer drillModelId = cuttingModuleRef.get("drillModel").asInt();
MachineDO newMachine ;
if(isMachine){
MachineDO machine = machineMapper.selectById(drillModelId);
if (machine != null) {
newMachine = MachineDO.builder()
.labelId(machine.getLabelId())
.machineType(machine.getMachineType())
.brandId(machine.getBrandId())
.setting(machine.getSetting())
.name("封边" + machineDO.getName() + "-钻孔机")
.build();
machineMapper.insert(newMachine);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipMachineSetting, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
advancedConfigs.put("drillModel", newMachine.getId());
// 将 Map 转换为 JSON 字符串并打印输出
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}
}
MachineTemplateDO machineTemplate = machineTemplateMapper.selectById(drillModelId);
if (machineTemplate != null) {
newMachine = MachineDO.builder()
.labelId(machineDO.getLabelId())
.machineType(machineTemplate.getMachineType())
.brandId(machineTemplate.getBrandId())
.setting(machineTemplate.getSetting())
.name("封边" + machineDO.getName() + "-钻孔机")
.build();
machineMapper.insert(newMachine);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipMachineSetting, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
advancedConfigs.put("drillModel", newMachine.getId());
// 将 Map 转换为 JSON 字符串并打印输出
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}
}
return null;
}
private void createAndInsertMachine(Integer modelId, MachineDO parentMachine, String machineName) {
MachineTemplateDO template = machineTemplateMapper.selectById(modelId);
if (template != null) {
MachineDO newMachine = MachineDO.builder()
.labelId(parentMachine.getLabelId())
.machineType(template.getMachineType())
.brandId(template.getBrandId())
.setting(template.getSetting())
.name(machineName)
.build();
machineMapper.insert(newMachine);
}
}
@@ -24,6 +24,7 @@ import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitM
import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper;
import com.cf.imes.module.system.dal.mysql.organ.OrganMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -92,12 +93,12 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
MachineTemplateDO machineTemplateDO = machineTemplateMapper.selectMachine(reqVO.getBrandId(), reqVO.getMachineId());
templateDO.setSetting(machineTemplateDO.getSetting());
String updatedJsonString = handleMachineType(templateDO.getName(),machineTemplateDO.getMachineType(),machineTemplateDO.getSetting());
templateDO.setSetting(updatedJsonString == null ? machineTemplateDO.getSetting() : JsonUtils.zipString(updatedJsonString));
machineTemplateMapper.insert(templateDO);
handleMachineType(machineTemplateDO, templateDO);
return templateDO.getId();
}
@@ -481,68 +482,115 @@ public class MachineTemplateServiceImpl implements MachineTemplateService {
// 判断机台模板的类型
private void handleMachineType(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) {
private String handleMachineType(String machineName,Integer machineType,String machineSetting) {
if(machineTemplateDO.getMachineType().equals(MachineTypeEnum.CUTTING.getType())) {
handleCuttingMachine(machineTemplateDO, templateDO);
} else if(machineTemplateDO.getMachineType().equals(MachineTypeEnum.BANDING.getType())) {
handleBandingMachine(machineTemplateDO, templateDO);
String updatedJsonString = null;
if(machineType.equals(MachineTypeEnum.CUTTING.getType())) {
updatedJsonString = handleCuttingMachine(machineName, machineSetting);
} else if(machineType.equals(MachineTypeEnum.BANDING.getType())) {
updatedJsonString = handleBandingMachine(machineName, machineSetting);
}
return updatedJsonString;
}
private void handleCuttingMachine(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) {
JsonNode cuttingSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting()));
private String handleCuttingMachine(String machineName, String machineSetting) {
String unzipString = unzipString(machineSetting);
JsonNode cuttingSetting = JsonUtils.parseTree(unzipString);
JsonNode advancedConfigsRef = cuttingSetting.get("advancedConfigsRef");
boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled").asBoolean();
if(isAutoLabelEnabled && advancedConfigsRef.get("autoLabelBrand") != null && advancedConfigsRef.get("autoLabelModel") != null){
Integer autoLabelModel = advancedConfigsRef.get("autoLabelModel").asInt();
MachineTemplateDO labelingMachineTemplateDO = machineTemplateMapper.selectById(autoLabelModel);
Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt();
if(labelingMachineTemplateDO != null) {
try {
MachineTemplateDO labelingMachineTemplateDO = machineTemplateMapper.selectById(autoLabelModelId);
MachineTemplateDO labelingMachineDO = MachineTemplateDO.builder()
.machineType(labelingMachineTemplateDO.getMachineType())
.brandId(labelingMachineTemplateDO.getBrandId())
.setting(labelingMachineTemplateDO.getSetting())
.name("开料" + templateDO.getName() + "-贴标机")
.name("开料" + machineName + "-贴标机")
.build();
machineTemplateMapper.insert(labelingMachineDO);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipString, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("advancedConfigsRef");
advancedConfigs.put("autoLabelModel", labelingMachineDO.getId());
// 将 Map 转换为 JSON 字符串
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}catch (Exception e){
throw exception(LABELINGMACHINE_RELATED_DATA_ERROR);
}
}
return null;
}
private void handleBandingMachine(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) {
private String handleBandingMachine(String machineName, String machineSetting){
String unzipString = unzipString(machineSetting);
JsonNode drillSetting = JsonUtils.parseTree(unzipString);
JsonNode drillSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting()));
JsonNode cuttingModuleRef = drillSetting.get("cuttingModuleRef");
boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled").asBoolean();
if(isDrillEnabled && cuttingModuleRef.get("drillBrand") != null && cuttingModuleRef.get("drillModel") != null){
Integer drillModel = cuttingModuleRef.get("drillModel").asInt();
MachineTemplateDO drillMachineTemplateDO = machineTemplateMapper.selectById(drillModel);
Integer drillModelId = cuttingModuleRef.get("drillModel").asInt();
if(drillMachineTemplateDO != null) {
try {
MachineTemplateDO drillMachineTemplateDO = machineTemplateMapper.selectById(drillModelId);
MachineTemplateDO drillMachineDO = MachineTemplateDO.builder()
.machineType(drillMachineTemplateDO.getMachineType())
.brandId(drillMachineTemplateDO.getBrandId())
.setting(drillMachineTemplateDO.getSetting())
.name("开料" + templateDO.getName() + "钻孔机")
.name("封边" + machineName + "-钻孔机")
.build();
machineTemplateMapper.insert(drillMachineDO);
// 创建 ObjectMapper 对象
ObjectMapper mapper = new ObjectMapper();
// 将 JSON 字符串解析为 Map
Map map = mapper.readValue(unzipString, Map.class);
// 修改值
Map<String, Object> advancedConfigs = (Map<String, Object>) map.get("cuttingModuleRef");
advancedConfigs.put("drillModel", drillMachineDO.getId());
// 将 Map 转换为 JSON 字符串
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
}catch (Exception e){
throw exception(DRILLMACHINE_RELATED_DATA_ERROR);
}
}
return null;
}