From b5086b450bccc2c96268ee1b57b1bae6e488f73a Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Tue, 9 Jul 2024 15:39:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=8F=B0=EF=BC=8C=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/util/json/JsonUtils.java | 251 +++++++++++++++++- .../admin/label/LabelController.java | 6 +- .../LabelTemplateController.java | 6 +- .../admin/machine/MachineController.java | 14 +- .../admin/machine/vo/CuttingRespVO.java | 9 + .../admin/machine/vo/CuttingSaveReqVO.java | 16 +- .../machine/vo/MachineBrandModelRespVO.java | 17 ++ .../convert/machine/MachineConvert.java | 15 +- .../dal/dataobject/machine/MachineDO.java | 11 + .../machinetemplate/MachineTemplateDO.java | 11 + .../MachineTemplateMapper.java | 9 + .../LabelTemplateServiceImpl.java | 25 +- .../service/lable/LabelServiceImpl.java | 33 ++- .../service/machine/MachineService.java | 2 + .../service/machine/MachineServiceImpl.java | 60 ++++- .../machine/MachineTemplateServiceImpl.java | 30 ++- 16 files changed, 473 insertions(+), 42 deletions(-) create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineBrandModelRespVO.java diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java index 4be3b0821..af9944763 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java @@ -10,13 +10,19 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import lombok.Data; import lombok.SneakyThrows; +import lombok.ToString; import lombok.extern.slf4j.Slf4j; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.lang.reflect.Field; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.zip.DataFormatException; +import java.util.zip.Deflater; +import java.util.zip.Inflater; /** * JSON 工具类 @@ -184,4 +190,245 @@ public class JsonUtils { return JSONUtil.isTypeJSON(text); } + + + + /** + * 压缩 + */ + public static String zipString(String unzipString) { + /** + * https://www.yiibai.com/javazip/javazip_deflater.html#article-start + * 0 ~ 9 压缩等级 低到高 + * public static final int BEST_COMPRESSION = 9; 最佳压缩的压缩级别。 + * public static final int BEST_SPEED = 1; 压缩级别最快的压缩。 + * public static final int DEFAULT_COMPRESSION = -1; 默认压缩级别。 + * public static final int DEFAULT_STRATEGY = 0; 默认压缩策略。 + * public static final int DEFLATED = 8; 压缩算法的压缩方法(目前唯一支持的压缩方法)。 + * public static final int FILTERED = 1; 压缩策略最适用于大部分数值较小且数据分布随机分布的数据。 + * public static final int FULL_FLUSH = 3; 压缩刷新模式,用于清除所有待处理的输出并重置拆卸器。 + * public static final int HUFFMAN_ONLY = 2; 仅用于霍夫曼编码的压缩策略。 + * public static final int NO_COMPRESSION = 0; 不压缩的压缩级别。 + * public static final int NO_FLUSH = 0; 用于实现最佳压缩结果的压缩刷新模式。 + * public static final int SYNC_FLUSH = 2; 用于清除所有未决输出的压缩刷新模式; 可能会降低某些压缩算法的压缩率。 + */ + + //使用指定的压缩级别创建一个新的压缩器。 + Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION); + //设置压缩输入数据。 + deflater.setInput(unzipString.getBytes()); + //当被调用时,表示压缩应该以输入缓冲区的当前内容结束。 + deflater.finish(); + + final byte[] bytes = new byte[256]; + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(256); + + while (!deflater.finished()) { + //压缩输入数据并用压缩数据填充指定的缓冲区。 + int length = deflater.deflate(bytes); + outputStream.write(bytes, 0, length); + } + //关闭压缩器并丢弃任何未处理的输入。 + deflater.end(); + return Base64.getEncoder().encodeToString(outputStream.toByteArray()); + } + + + /** + * 解压缩 + */ + public static String unzipString(String zipString) { + byte[] decode = Base64.getDecoder().decode(zipString); + + //创建一个新的解压缩器 https://www.yiibai.com/javazip/javazip_inflater.html + + Inflater inflater = new Inflater(); + //设置解压缩的输入数据。 + inflater.setInput(decode); + final byte[] bytes = new byte[256]; + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(256); + try { + //finished() 如果已到达压缩数据流的末尾,则返回true。 + while (!inflater.finished()) { + //将字节解压缩到指定的缓冲区中。 + int length = inflater.inflate(bytes); + outputStream.write(bytes, 0, length); + } + } catch (DataFormatException e) { + e.printStackTrace(); + return null; + } finally { + //关闭解压缩器并丢弃任何未处理的输入。 + inflater.end(); + } + + return outputStream.toString(); + } + + + + + + /* + + + + * */ + public static List> jsonTo2DArray(String jsonString) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonArray = objectMapper.readTree(jsonString); + + Set headers = new LinkedHashSet<>(); + List> result = new ArrayList<>(); + + // 从数组中的所有对象收集标头 + if (jsonArray.isArray()) { + for (JsonNode jsonObject : jsonArray) { + Iterator fieldNames = jsonObject.fieldNames(); + while (fieldNames.hasNext()) { + headers.add(fieldNames.next()); + + } + } + } + result.add(new ArrayList<>(headers)); + + // 提取行 + for (JsonNode jsonObject : jsonArray) { + List row = new ArrayList<>(); + for (String header : headers) { + JsonNode valueNode = jsonObject.get(header); + if (valueNode != null) { + if (valueNode.isTextual()) { + row.add(valueNode.asText()); + } else if (valueNode.isInt()) { + row.add(valueNode.asInt()); + } else if (valueNode.isBoolean()) { + row.add(valueNode.asBoolean()); + } else if (valueNode.isDouble()) { + row.add(valueNode.asDouble()); + } else if (valueNode.isArray() || valueNode.isObject() ) { + row.add(jsonTo2DArray(valueNode.toString())); + } else { + row.add(valueNode.asText()); + } + } else { + row.add(null); // 处理缺少的值 + } + } + result.add(row); + } + + return result; + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + // 抽取 json数据,不改变数据结构对应的值,只改变数据结构(参考 HPACK 算法) 实现json数据抽取 + public static List> getData(Object object) { + String jsonString = toJsonString(object); + + ObjectMapper mapper = new ObjectMapper(); + try { + List> list = mapper.readValue(jsonString, new TypeReference<>() {}); + List> result = convertTo2DArray(list); + + // + return result; + + } catch (IOException e) { + + e.printStackTrace(); + } + + return null; + + } + + + private static List> convertTo2DArray(List> list) { + List> result = new ArrayList<>(); + + // Get the headers from the first map + if (list.size() > 0) { + Map firstMap = list.get(0); + List headers = new ArrayList<>(firstMap.keySet()); + result.add(headers); + // + // Add rows + for (Map map : list) { + // + List row = new ArrayList<>(); + for (Object header : headers) { + row.add(map.get(header)); + } + result.add(row); + } + } + + return result; + } + + + + // 将所有抽取后的 json 数据都加入一个统一的数据类型中,方便前端解析哪些代码是抽取的数据,进行数据还原 + @Data + @ToString(callSuper = true) + public static class ExtractedData { + List> extractedData; + + } + + + public static List>> fetchData(Object obj) { + List>> data = new ArrayList<>(); + try { + // 获取所有字段 + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + // 跳过静态或常量字段 + if (java.lang.reflect.Modifier.isStatic(field.getModifiers()) || + java.lang.reflect.Modifier.isFinal(field.getModifiers())) { + continue; + } + + // 确保字段是可访问的 + field.setAccessible(true); + + // 获取字段值 + Object fieldValue = field.get(obj); + + // 如果字段值是一个对象,递归调用 fetchData + if (fieldValue != null && isCustomObject(fieldValue)) { + data.add(JsonUtils.jsonTo2DArray(toJsonString(fieldValue))); + fetchData(fieldValue); + } + } + + + } catch (Exception e) { + e.printStackTrace(); + } + return data; + } + + // 判断一个对象是否是自定义的类对象 + private static boolean isCustomObject(Object obj) { + Class clazz = obj.getClass(); + // 自定义对象通常不会是 Java 的基本类型或标准库类型 + // 这里可以根据具体需求进行更加复杂的判断 + return !clazz.isPrimitive() && + !clazz.getName().startsWith("java.") && + !clazz.getName().startsWith("javax.") && + !clazz.getName().startsWith("sun.") && + !clazz.isAssignableFrom(Collection.class) && + !clazz.isAssignableFrom(Map.class); + } + + + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/label/LabelController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/label/LabelController.java index 5a0dcb680..2f6976d6c 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/label/LabelController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/label/LabelController.java @@ -3,6 +3,7 @@ package com.cf.imes.module.system.controller.admin.label; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageParam; 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.excel.core.util.ExcelUtils; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; @@ -23,6 +24,8 @@ import javax.validation.Valid; import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -103,7 +106,8 @@ public class LabelController { public void exportLabelExcel(@Valid LabelPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = labelService.getLabelPage(pageReqVO).getList(); + List list = labelService.getLabelPage(pageReqVO).getList() + .stream().map(m->m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); // 导出 Excel ExcelUtils.write(response, "标签.xls", "数据", LabelRespVO.class, BeanUtils.toBean(list, LabelRespVO.class)); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/labeltemplate/LabelTemplateController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/labeltemplate/LabelTemplateController.java index 1e95e771e..b72f168b4 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/labeltemplate/LabelTemplateController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/labeltemplate/LabelTemplateController.java @@ -1,5 +1,6 @@ package com.cf.imes.module.system.controller.admin.labeltemplate; +import com.cf.imes.framework.common.util.json.JsonUtils; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; @@ -8,6 +9,8 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import java.util.*; import java.io.IOException; +import java.util.stream.Collectors; + import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.CommonResult; @@ -108,7 +111,8 @@ public class LabelTemplateController { public void exportLabelTemplateExcel(@Valid LabelTemplatePageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = labelTemplateService.getLabelTemplatePage(pageReqVO).getList(); + List list = labelTemplateService.getLabelTemplatePage(pageReqVO).getList() + .stream().map(m->m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); // 导出 Excel ExcelUtils.write(response, "标签模板.xls", "数据", LabelTemplateRespVO.class, BeanUtils.toBean(list, LabelTemplateRespVO.class)); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java index 55a9bfddf..459457a11 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java @@ -1,12 +1,10 @@ package com.cf.imes.module.system.controller.admin.machine; -import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.es.core.valid.CreateGroup; import com.cf.imes.framework.es.core.valid.UpdateGroup; import com.cf.imes.framework.operatelog.core.annotations.OperateLog; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.system.controller.admin.machine.vo.*; -import com.cf.imes.module.system.dal.dataobject.dept.DeptDO; 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; @@ -139,4 +137,16 @@ public class MachineController { return success(list); } + + + @GetMapping("getBrandAndModel") + @Operation(summary = "获得机台的品牌跟型号") + //@PreAuthorize("@ss.hasPermission('machine::query')") + public CommonResult>> getBrandAndModel(@RequestParam Long type) { + return success(machineService.getBrandAndModel(type)); + } + + + + } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingRespVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingRespVO.java index b87a67d7c..21925b3b1 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingRespVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingRespVO.java @@ -31,6 +31,15 @@ public class CuttingRespVO { @Schema(description = "标签id") private Long labelId; + @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("品牌") + private String brand; + + + @Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("型号") + private String model; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingSaveReqVO.java index 34ef90012..918ddf603 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingSaveReqVO.java @@ -29,23 +29,23 @@ public class CuttingSaveReqVO { private Integer machineType; @Schema(description = "标签id") - @NotNull(message = "标签id不能空") +// @NotNull(message = "标签id不能空") private Long labelId; @Schema(description = "机台模板id") @NotNull(groups = CreateGroup.class, message = "机台模板id不能空") private Long templateId; - /* @Schema(description = "机台配置") - @Valid - private CuttingSettingDO machineSettingDO;*/ + @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "机台的品牌不能为空") + private String brand; + + @Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "机台的型号不能为空") + private String model; @Schema(description = "机台配置") private JSONObject machineSettingDO; - /* @Schema(description = "样式配置") - @Valid - private StyleMachineDO styleMachineDO;*/ - } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineBrandModelRespVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineBrandModelRespVO.java new file mode 100644 index 000000000..ba2622b7b --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineBrandModelRespVO.java @@ -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; + + +@Data +@Schema(description = "机台的型号信息") +public class MachineBrandModelRespVO { + + @Schema(description = "机台的品牌") + private String brand; + + @Schema(description = "机台的型号") + private String model; + +} \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineConvert.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineConvert.java index 8d2f31e15..8cc6ecb9e 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineConvert.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineConvert.java @@ -15,11 +15,13 @@ public class MachineConvert { public static MachineDO convert(CuttingSaveReqVO createReqVO) { return MachineDO.builder() - .machineType(createReqVO.getMachineType()) - .name(createReqVO.getName()) - .id(createReqVO.getId()) - .labelId(createReqVO.getLabelId()) - .setting(createReqVO.getMachineSettingDO().toJSONString()) + .machineType(createReqVO.getMachineType()) + .name(createReqVO.getName()) + .id(createReqVO.getId()) + .labelId(createReqVO.getLabelId()) + .setting(createReqVO.getMachineSettingDO().toJSONString()) + .brand(createReqVO.getBrand()) + .model(createReqVO.getModel()) .build(); } @@ -29,7 +31,8 @@ public class MachineConvert { .id(machineDO.getId()) .machineSettingDO(JSON.parseObject(machineDO.getSetting())) .createTime(machineDO.getCreateTime()) - .labelId(machineDO.getLabelId()) + .brand(machineDO.getBrand()) + .model(machineDO.getModel()) .name(machineDO.getName()) .machineType(machineDO.getMachineType()) .labelId(machineDO.getLabelId()) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machine/MachineDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machine/MachineDO.java index 21bbdde38..3bcce9a89 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machine/MachineDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machine/MachineDO.java @@ -45,4 +45,15 @@ public class MachineDO extends OrganBaseDO { */ private String setting; + /** + * 品牌 + */ + private String brand; + + + /** + * 型号 + */ + private String model; + } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java index 05a0a8454..143a93112 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java @@ -37,6 +37,17 @@ public class MachineTemplateDO extends BaseDO { */ private String setting; + /** + * 品牌 + */ + private String brand; + + + /** + * 型号 + */ + private String model; + /** * 标签id */ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machinetemplate/MachineTemplateMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machinetemplate/MachineTemplateMapper.java index bb4b56d91..edcb53e32 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machinetemplate/MachineTemplateMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machinetemplate/MachineTemplateMapper.java @@ -40,4 +40,13 @@ public interface MachineTemplateMapper extends BaseMapperX { Page selectOrganTemplatePage(@Param("page") Page respPage, @Param("vo") OrganTemplatePage page); OrganTemplateResp selectOrganTemplate(Long organId); + + + default MachineTemplateDO selectMachineId(String brand, String model) { + return selectOne(new LambdaQueryWrapperX() + .eqIfPresent(MachineTemplateDO::getBrand,brand) + .eqIfPresent(MachineTemplateDO::getModel,model)); + } + + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java index b9e986dbd..415df5d3f 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/labeltemplate/LabelTemplateServiceImpl.java @@ -1,6 +1,7 @@ package com.cf.imes.module.system.service.labeltemplate; import cn.hutool.core.collection.CollectionUtil; +import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -34,6 +35,7 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { public Long createLabelTemplate(LabelTemplateSaveReqVO createReqVO) { // 插入 LabelTemplateDO labelTemplate = BeanUtils.toBean(createReqVO, LabelTemplateDO.class); + labelTemplate.setTemplate(JsonUtils.zipString(labelTemplate.getTemplate())); labelTemplateMapper.insert(labelTemplate); // 返回 return labelTemplate.getId(); @@ -45,6 +47,10 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { validateLabelTemplateExists(updateReqVO.getId()); // 更新 LabelTemplateDO updateObj = BeanUtils.toBean(updateReqVO, LabelTemplateDO.class); + if(!updateReqVO.getTemplate().isEmpty()){ + updateObj.setTemplate(JsonUtils.zipString(updateObj.getTemplate())); + + } labelTemplateMapper.updateById(updateObj); } @@ -71,6 +77,7 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { @Override public LabelTemplateRespVO getLabelTemplate(Long id) { LabelTemplateDO labelTemplateDO = labelTemplateMapper.selectById(id); + labelTemplateDO.setTemplate(JsonUtils.unzipString(labelTemplateDO.getTemplate())); LabelTemplateRespVO labelTemplateRespVO = BeanUtils.toBean(labelTemplateDO, LabelTemplateRespVO.class); return labelTemplateRespVO; } @@ -83,7 +90,8 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { @Override public Map> getGroupList() { - List labelTemplateDOS = labelTemplateMapper.selectList(); + List labelTemplateDOS = labelTemplateMapper.selectList() + .stream().map( m-> m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); List labelTemplateRespVOS = BeanUtils.toBean(labelTemplateDOS, LabelTemplateRespVO.class); return labelTemplateRespVOS.stream().collect(Collectors.groupingBy(LabelTemplateRespVO::getType)); } @@ -99,6 +107,7 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { throw exception(DEFAULT_TEMPLATE_COUNT); } LabelTemplateDO labelTemplateDO = labelTemplateDOS.get(0); + labelTemplateDO.setTemplate(JsonUtils.unzipString(labelTemplateDO.getTemplate())); LabelTemplateRespVO labelTemplateRespVO = BeanUtils.toBean(labelTemplateDO, LabelTemplateRespVO.class); return labelTemplateRespVO; } @@ -116,13 +125,15 @@ public class LabelTemplateServiceImpl implements LabelTemplateService { .eq(LabelTemplateDO::getIsDefault, Boolean.TRUE) .eq(LabelTemplateDO::getType, labelTemplateDO.getType()) ); - if(CollectionUtil.isEmpty(labelTemplateDOS) || labelTemplateDOS.size()>1) { - throw exception(DEFAULT_TEMPLATE_COUNT); +// if(CollectionUtil.isEmpty(labelTemplateDOS) || labelTemplateDOS.size()>1) { +// throw exception(DEFAULT_TEMPLATE_COUNT); +// } + if(!labelTemplateDOS.isEmpty()){ + LabelTemplateDO templateDO = new LabelTemplateDO(); + templateDO.setId(labelTemplateDOS.get(0).getId()); + templateDO.setIsDefault(Boolean.FALSE); + labelTemplateMapper.updateById(templateDO); } - LabelTemplateDO templateDO = new LabelTemplateDO(); - templateDO.setId(labelTemplateDOS.get(0).getId()); - templateDO.setIsDefault(Boolean.FALSE); - labelTemplateMapper.updateById(templateDO); labelTemplateDO.setIsDefault(Boolean.TRUE); labelTemplateMapper.updateById(labelTemplateDO); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java index 1cdb56de7..5d23a7bc2 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/lable/LabelServiceImpl.java @@ -2,6 +2,7 @@ package com.cf.imes.module.system.service.lable; import cn.hutool.core.collection.CollectionUtil; 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.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.system.controller.admin.label.vo.*; @@ -42,6 +43,7 @@ public class LabelServiceImpl implements LabelService { public Long createLabel(LabelSaveReqVO createReqVO) { // 插入 LabelDO Label = BeanUtils.toBean(createReqVO, LabelDO.class); + Label.setTemplate(JsonUtils.zipString(Label.getTemplate())); labelMapper.insert(Label); // 返回 return Label.getId(); @@ -54,6 +56,10 @@ public class LabelServiceImpl implements LabelService { validateLabelExists(updateReqVO.getId()); // 更新 LabelDO updateObj = BeanUtils.toBean(updateReqVO, LabelDO.class); + if(!updateReqVO.getTemplate().isEmpty()){ + updateObj.setTemplate(JsonUtils.zipString(updateObj.getTemplate())); + } + labelMapper.updateById(updateObj); } @@ -86,34 +92,43 @@ public class LabelServiceImpl implements LabelService { @Override public LabelRespVO getLabel(Long id) { LabelDO LabelDO = labelMapper.selectById(id); + LabelDO.setTemplate(JsonUtils.unzipString(LabelDO.getTemplate())); LabelRespVO LabelRespVO = BeanUtils.toBean(LabelDO, LabelRespVO.class); return LabelRespVO; } @Override public PageResult getLabelPage(LabelPageReqVO pageReqVO) { - return labelMapper.selectPage(pageReqVO); + + PageResult labelDOPageResult = labelMapper.selectPage(pageReqVO); + + labelDOPageResult.setList(labelDOPageResult.getList().stream().map(m -> m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList())); + + return labelDOPageResult; } @Override public Map> getGroupList(Long organId) { - List LabelDOS = labelMapper.selectList(new LambdaQueryWrapperX().eqIfPresent(LabelDO::getOrganId, organId)); + List LabelDOS = labelMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(LabelDO::getOrganId, organId) + /*.eq(LabelDO::getDeleted,false)*/) + .stream().map(m -> m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); List LabelRespVOS = BeanUtils.toBean(LabelDOS, LabelRespVO.class); return LabelRespVOS.stream().collect(Collectors.groupingBy(LabelRespVO::getType)); } @Override public List list(String type) { - return labelMapper.selectList(new LambdaQueryWrapperX() - .eq(LabelDO::getOrganId,getUserOrganId()) - .eqIfPresent(LabelDO::getType, type)); - // return labelMapper.selectList(new LambdaQueryWrapperX() -// .eqIfPresent(LabelDO::getType, type) -// .eq(LabelDO::getOrganId,getUserOrganId())) -// .stream().map( m -> m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); +// .eq(LabelDO::getOrganId,getUserOrganId()) +// .eqIfPresent(LabelDO::getType, type)); + + return labelMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(LabelDO::getType, type) + .eq(LabelDO::getOrganId,getUserOrganId())) + .stream().map( m -> m.setTemplate(JsonUtils.unzipString(m.getTemplate()))).collect(Collectors.toList()); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java index 8640798d7..ba1ba9075 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java @@ -82,4 +82,6 @@ public interface MachineService { PageResult page(MachinePageReqVO pageParam); List simpleList(Long organId,Long type); + + Map> getBrandAndModel(Long type); } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java index 3833f64dc..c123c1a34 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java @@ -11,6 +11,7 @@ import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.search.Hit; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.cf.imes.framework.common.util.json.JsonUtils; 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; @@ -24,10 +25,12 @@ import com.cf.imes.module.system.dal.dataobject.machine.DrillSettingDO; import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; import com.cf.imes.module.system.dal.dataobject.machine.CuttingSettingDO; 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.machinetemplate.MachineTemplateLimitDO; import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineLimitMapper; import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitMapper; +import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -78,6 +81,9 @@ public class MachineServiceImpl implements MachineService { @Resource private MachineTemplateLimitMapper machineTemplateLimitMapper; + @Resource + private MachineTemplateMapper machineTemplateMapper; + @Resource private OrderPlanApi orderPlanApi; @@ -86,13 +92,22 @@ public class MachineServiceImpl implements MachineService { public Long createCutting(CuttingSaveReqVO createReqVO) { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); assert loginUser != null; + +// MachineTemplateDO machineTemplateDO = machineTemplateMapper.selectMachineId(createReqVO.getBrand(), createReqVO.getModel()); + MachineTemplateLimitDO organMachineTemplateDO = machineTemplateLimitMapper.selectOne(new LambdaQueryWrapperX() .eq(MachineTemplateLimitDO::getMachineId, createReqVO.getTemplateId()) .eq(MachineTemplateLimitDO::getOrganId, loginUser.getOrganId()) ); // 插入 MachineDO machineDO = MachineConvert.convert(createReqVO); +// if(createReqVO.getMachineSettingDO().isEmpty()) { +// machineDO.setSetting(machineTemplateDO.getSetting()); +// } + // 将机台的配置数据进行压缩 + machineDO.setSetting(JsonUtils.zipString(machineDO.getSetting())); machineMapper.insert(machineDO); + MachineLimitDO machineLimitDO = MachineLimitDO.builder() .organId(loginUser.getOrganId()) .machineId(machineDO.getId()) @@ -113,6 +128,13 @@ public class MachineServiceImpl implements MachineService { // 更新 MachineDO updateObj = MachineConvert.convert(updateReqVO); //MachineDO updateObj = BeanUtils.toBean(updateReqVO, MachineDO.class); + + + // 判断传入的机台配置是否存在,如果存在,压缩数据后更新 + if(!updateReqVO.getMachineSettingDO().isEmpty()){ + updateObj.setSetting(JsonUtils.zipString(updateObj.getSetting())); + } + machineMapper.updateById(updateObj); } @@ -142,6 +164,10 @@ public class MachineServiceImpl implements MachineService { @Override public CuttingRespVO getCutting(Long id) { MachineDO machineDO = machineMapper.selectById(id); + + // 对机台的配置进行解压 + machineDO.setSetting(JsonUtils.unzipString(machineDO.getSetting())); + if (Objects.isNull(machineDO)) { throw exception(MACHINE_NOT_EXISTS); } @@ -312,16 +338,48 @@ public class MachineServiceImpl implements MachineService { return BeanUtils.toBean(machineDOS, MachineSimpleRespVO.class); } + + @Override + public Map> getBrandAndModel(Long type) { + + List machineDOS = machineMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(MachineDO::getOrganId, getUserOrganId()) + .eqIfPresent(MachineDO::getMachineType, type) + .select(MachineDO::getModel,MachineDO::getBrand) + ).stream().filter(f -> (!Objects.equals(f.getModel(), ""))).toList(); + + List machineVOS = BeanUtils.toBean(machineDOS, MachineBrandModelRespVO.class); + + Map> map = machineVOS.stream().collect(Collectors.groupingBy(MachineBrandModelRespVO::getBrand)); + + return map; + } + + + private void validateExists(Long id) { if (machineMapper.selectById(id) == null) { throw exception(MACHINE_NOT_EXISTS); } } + private Boolean validateBrandAndModel(String brand, String model){ + + + + return true; + } @Override public PageResult getPage(MachinePageReqVO pageReqVO) { - return machineMapper.selectPage(pageReqVO); +// return machineMapper.selectPage(pageReqVO); + + + PageResult machineDOPageResult = machineMapper.selectPage(pageReqVO); + // 将查询到的机台的数据中的配置信息进行解压 + List list = machineDOPageResult.getList().stream().map(m -> m.setSetting(JsonUtils.unzipString(m.getSetting()))).collect(Collectors.toList()); + return machineDOPageResult.setList(list); + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java index cf69c3778..e9a21a438 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java @@ -13,6 +13,7 @@ import co.elastic.clients.elasticsearch.core.search.Hit; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.json.JsonUtils; 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; @@ -156,6 +157,10 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { @Transactional(rollbackFor = Exception.class) public Long createCuttingTemplate(CuttingTemplateSaveReqVO reqVO) { MachineTemplateDO templateDO = MachineTemplateConvert.convert(reqVO); + if(!templateDO.getSetting().isEmpty()){ + templateDO.setSetting(JsonUtils.zipString(templateDO.getSetting())); + } + machineTemplateMapper.insert(templateDO); return templateDO.getId(); } @@ -163,6 +168,10 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { @Override public Boolean updateCuttingTemplate(CuttingTemplateSaveReqVO reqVO) { MachineTemplateDO templateDO = MachineTemplateConvert.convert(reqVO); + if(!reqVO.getSetting().isEmpty()){ + templateDO.setSetting(JsonUtils.zipString(templateDO.getSetting())); + + } machineTemplateMapper.updateById(templateDO); return Boolean.TRUE; } @@ -170,6 +179,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { @Override public CuttingTemplateRespVO getCuttingTemplateById(String id) { MachineTemplateDO templateDO = machineTemplateMapper.selectById(id); + templateDO.setSetting(JsonUtils.unzipString(templateDO.getSetting())); if (Objects.isNull(templateDO)) { throw exception(MACHINE_TEMPLATE_NOT_EXISTS); } @@ -198,6 +208,8 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { throw exception(DEFAULT_TEMPLATE_COUNT); } MachineTemplateDO templateDO = machineTemplateDOS.get(0); + // 将机台的模板配置进行解压 + templateDO.setSetting(JsonUtils.unzipString(templateDO.getSetting())); return MachineTemplateConvert.convert1(templateDO); } throw exception(DEFAULT_TEMPLATE_NOT_EXISTS); @@ -224,7 +236,10 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { @Override public Map> getMachineTemplateTree() { - List machineTemplateDOS = machineTemplateMapper.selectList(); + List machineTemplateDOS = machineTemplateMapper.selectList() + // 将机台的配置进行解压 + .stream().map(m -> m.setSetting(JsonUtils.unzipString(m.getSetting()))).collect(Collectors.toList()); + Map> map = machineTemplateDOS.stream().collect(Collectors.groupingBy(MachineTemplateDO::getMachineType)); return map; } @@ -256,9 +271,9 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { throw exception(MACHINE_TEMPLATE_NOT_EXISTS); } List machineTemplateDOS = machineTemplateMapper.selectList(MachineTemplateDO::getMachineType, templateDO.getMachineType(), MachineTemplateDO::getIsDefault, Boolean.TRUE); -// if(CollectionUtil.isEmpty(machineTemplateDOS) || machineTemplateDOS.size()>1) { -// throw exception(DEFAULT_TEMPLATE_COUNT); -// } + if(CollectionUtil.isEmpty(machineTemplateDOS) || machineTemplateDOS.size()>1) { + throw exception(DEFAULT_TEMPLATE_COUNT); + } if(!machineTemplateDOS.isEmpty()){ MachineTemplateDO machineTemplateDO = new MachineTemplateDO(); @@ -396,7 +411,12 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { if(CollectionUtil.isEmpty(machineIds)) { return new PageResult<>(); }*/ - return machineTemplateMapper.selectPage(pageParam, new ArrayList<>()); + + PageResult machineTemplateDOPageResult = machineTemplateMapper.selectPage(pageParam, new ArrayList<>()); + // 将机台模板的配置进行解压 + machineTemplateDOPageResult.setList(machineTemplateDOPageResult.getList().stream().map(m -> m.setSetting(JsonUtils.unzipString(m.getSetting()))).collect(Collectors.toList())); + + return machineTemplateDOPageResult; }