diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressObjectListTypeHandler.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressObjectListTypeHandler.java new file mode 100644 index 000000000..750b64ed0 --- /dev/null +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressObjectListTypeHandler.java @@ -0,0 +1,73 @@ +package com.cf.imes.framework.mybatis.core.type; + +import com.cf.imes.framework.common.util.json.JsonUtils; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +/** + * mb自定义压缩列表类型转换器 + * + * @author Gqr + * @since 2024/7/10 10:51 + */ +@MappedJdbcTypes(JdbcType.VARCHAR) +@MappedTypes(List.class) +public class CompressObjectListTypeHandler extends BaseTypeHandler> { + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + try { + String jsonString = objectMapper.writeValueAsString(parameter); + // 压缩 + String compressJsonString = JsonUtils.zipString(jsonString); + ps.setString(i, compressJsonString); + } catch (JsonProcessingException e) { + throw new RuntimeException("Error serializing List to JSON", e); + } + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + String jsonStr = rs.getString(columnName); + return parseJson(jsonStr); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String jsonStr = rs.getString(columnIndex); + return parseJson(jsonStr); + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String jsonStr = cs.getString(columnIndex); + return parseJson(jsonStr); + } + + private List parseJson(String jsonStr) { + if (jsonStr == null || jsonStr.isEmpty()) { + return null; + } + try { + // Using JavaType to handle List deserialization + JavaType javaType = objectMapper.getTypeFactory().constructCollectionType(List.class, Object.class); + // 解压 + String compressJsonString = JsonUtils.unzipString(jsonStr); + return objectMapper.readValue(compressJsonString, javaType); + } catch (Exception e) { + throw new RuntimeException("Error deserializing JSON to List", e); + } + } +} diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressStringTypeHandler.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressStringTypeHandler.java new file mode 100644 index 000000000..084cb6b4e --- /dev/null +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/type/CompressStringTypeHandler.java @@ -0,0 +1,43 @@ +package com.cf.imes.framework.mybatis.core.type; + +import com.cf.imes.framework.common.util.json.JsonUtils; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.StringTypeHandler; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * mb自定义压缩字符串类型转换器 + * + * @author Gqr + * @since 2024/7/10 16:05 + */ +public class CompressStringTypeHandler extends StringTypeHandler { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) + throws SQLException { + String compressString = JsonUtils.zipString(parameter); + ps.setString(i, compressString); + } + + @Override + public String getNullableResult(ResultSet rs, String columnName) throws SQLException { + String compressedString = rs.getString(columnName); + return JsonUtils.unzipString(compressedString); + } + + @Override + public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String compressedString = rs.getString(columnIndex); + return JsonUtils.unzipString(compressedString); + } + + @Override + public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String compressedString = cs.getString(columnIndex); + return JsonUtils.unzipString(compressedString); + } +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java index 308068d6a..824d6f807 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java @@ -124,7 +124,7 @@ public class PackController { @GetMapping("/getParts") @Operation(summary = "查看配件列表") @PreAuthorize("@ss.hasPermission('manage:pack-parts:query')") - public CommonResult> getParts(@Valid OrderPartsReqVO reqVO) { + public CommonResult> getParts(@Valid OrderPartsReqVO reqVO) { return success(packService.getPartsList(reqVO)); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/GroupNameList.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/GroupNameList.java new file mode 100644 index 000000000..5e8bcb57f --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/GroupNameList.java @@ -0,0 +1,16 @@ +package com.cf.imes.module.manage.controller.admin.pack.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + + +@Schema(description = "工序组名称") +@Data +public class GroupNameList { + + @Schema(description = "工序组名称") + private String name; + +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PlateDetailsRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PlateDetailsRespVO.java index 9f9c244bb..5aaa1bf49 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PlateDetailsRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PlateDetailsRespVO.java @@ -6,6 +6,10 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + @Schema(description = "管理后台 - 板材详情(导出板材表) Response VO") @Data @@ -89,4 +93,7 @@ public class PlateDetailsRespVO { private String remark; + @Schema(description = "加工组名称集合") + private List processGroupNameList; + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java index d9837650d..c8efeac34 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java @@ -1,9 +1,12 @@ package com.cf.imes.module.manage.controller.admin.query.vo.pack; +import com.cf.imes.module.manage.controller.admin.pack.vo.GroupNameList; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + @Schema(description = "管理后台 - 包裹详情 Response VO") @Data public class PackageDetailsRespVO { @@ -66,6 +69,9 @@ public class PackageDetailsRespVO { private String remark; + @Schema(description = "加工组名称集合") + private List processGroupNameList; + @Schema(description = "配件名称-配件类型显示", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java index 68e36213d..c1008cae2 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java @@ -26,7 +26,7 @@ import java.util.stream.Collectors; public interface OrderItemMapper extends BaseMapperX { - IPage selectByPackageId( @Param("page") IPage page, @Param("packageId") Long packageId, @Param("organId") Long organId); + List selectByPackageId( @Param("packageId") Long packageId, @Param("organId") Long organId); List selectCombinationName(Long orderNo); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java index 6475c5e13..b60fcd85a 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java @@ -22,7 +22,7 @@ public interface OrderPartsMapper extends BaseMapperX { IPage selectParts(@Param("page") IPage page, @Param("packageId") Long packageId, @Param("organId") Long organId); - List selectPartsList( @Param("orderId") Long orderId , @Param("organId") Long organId); + IPage selectPartsList(@Param("page") IPage page, @Param("orderId") Long orderId , @Param("organId") Long organId); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java index ecff41dc6..75b3b1fb4 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackService.java @@ -35,7 +35,7 @@ public interface PackService { // 查看配件列表分页 - List getPartsList(OrderPartsReqVO reqVO); + PageResult getPartsList(OrderPartsReqVO reqVO); OrderPackRespVO updateParts(OrderPartsReqVO reqVO); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index fee5e1868..ff42aeb95 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -127,6 +127,18 @@ public class PackServiceImpl implements PackService { // 查询订单对应的板件信息 List plateDetailsRespVOS = orderItemMapper.selectOrderPlateList(orderId,getUserOrganId()); + for (PlateDetailsRespVO plateDetailsRespVO : plateDetailsRespVOS) { + String name = ""; + for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) { + // 去除最后的逗号 + name += groupNameList.getName()+","; + + } + name = name.substring(0, name.length() - 1); + + plateDetailsRespVO.setProcessGroup(name); + } + return plateDetailsRespVOS; @@ -137,7 +149,23 @@ public class PackServiceImpl implements PackService { @Override public List getOrdersPlateList(List orderIds) { - return orderItemMapper.selectOrdersPlateList(orderIds,getUserOrganId()); + + List plateDetailsRespVOS = orderItemMapper.selectOrdersPlateList(orderIds, getUserOrganId()); + + for (PlateDetailsRespVO plateDetailsRespVO : plateDetailsRespVOS) { + String name = ""; + for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) { + // 去除最后的逗号 + name += groupNameList.getName()+","; + + } + name = name.substring(0, name.length() - 1); + + plateDetailsRespVO.setProcessGroup(name); + } + + return plateDetailsRespVOS; + } @@ -170,15 +198,17 @@ public class PackServiceImpl implements PackService { // 查看配件列表分页 @Override - public List getPartsList(OrderPartsReqVO reqVO) { + public PageResult getPartsList(OrderPartsReqVO reqVO) { -// PageDTO page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize()); + PageDTO page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize()); - List orderPartsRespVOS = orderPartsMapper.selectPartsList(reqVO.getOrderId(),getUserOrganId()); + IPage orderPartsRespVOS = orderPartsMapper.selectPartsList(page,reqVO.getOrderId(),getUserOrganId()); + if (CollectionUtil.isEmpty(orderPartsRespVOS.getRecords())) { + return new PageResult<>(); + } - return orderPartsRespVOS; - + return new PageResult<>(orderPartsRespVOS.getRecords(), orderPartsRespVOS.getTotal()); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java index 7047dec27..187dc69d7 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java @@ -3,10 +3,12 @@ package com.cf.imes.module.manage.service.query; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.module.manage.controller.admin.pack.vo.GroupNameList; import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPartsReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PackDetailsReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; @@ -196,17 +198,31 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { } - // 查看板材包裹 - IPage packageDetailsRespVOS = orderItemMapper.selectByPackageId(page,reqVO.getPackageId(),getUserOrganId()); + List packageDetailsRespVOS = orderItemMapper.selectByPackageId(reqVO.getPackageId(),getUserOrganId()); - if (CollectionUtil.isEmpty(packageDetailsRespVOS.getRecords())) { + for (PackageDetailsRespVO plateDetailsRespVO : packageDetailsRespVOS) { + String name = ""; + for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) { + // 去除最后的逗号 + name += groupNameList.getName()+","; + + } + name = name.substring(0, name.length() - 1); + + plateDetailsRespVO.setProcessGroup(name); + } + + Page packageDetailsRespVOPage = page.setRecords(packageDetailsRespVOS); + + + if (CollectionUtil.isEmpty(packageDetailsRespVOPage.getRecords())) { return new PageResult<>(); } - return new PageResult<>(packageDetailsRespVOS.getRecords(), packageDetailsRespVOS.getTotal()); + return new PageResult<>(packageDetailsRespVOPage.getRecords(), packageDetailsRespVOPage.getTotal()); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml index 385405504..225973df3 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml @@ -100,8 +100,7 @@ op.remark as remark, op.is_special_shaped as specialShaped, op.is_sculpt as profiling, - - CASE WHEN op.front_hole_count = 0 or op.back_model_count = 0 or op.side_hole_count = 0 THEN false ELSE true END AS rowHole + op.is_row_hole AS rowHole from order_plate op join order_goods ogs on op.goods_id = ogs.id and op.organ_id = ogs.organ_id diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml index 4b2253fc5..d2bc94b42 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml @@ -21,7 +21,10 @@ - + + + + @@ -132,7 +135,11 @@ - + + + + +