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

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
@@ -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;
}