From 0b29ce7f504fc8243931f2e0bc76456a26b2187d Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 17 Nov 2025 17:57:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E5=A2=9E=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=AE=9E=E9=99=85=E5=BA=93=E5=8C=BA=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=92=A2=E5=8D=B7=E5=88=86=E5=B8=83=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=8A=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WmsMaterialCoilController.java | 12 +++ .../com/klp/domain/vo/WmsMaterialCoilVo.java | 36 ++++--- .../com/klp/mapper/WmsMaterialCoilMapper.java | 2 + .../klp/service/IWmsMaterialCoilService.java | 2 + .../impl/WmsMaterialCoilServiceImpl.java | 37 ++++++-- .../mapper/klp/WmsMaterialCoilMapper.xml | 93 ++++++++++++++++++- 6 files changed, 155 insertions(+), 27 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index 3fcfc974..746391dc 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -158,5 +158,17 @@ public class WmsMaterialCoilController extends BaseController { List distribution = iWmsMaterialCoilService.getDistributionByItemType(itemType, itemId); return R.ok(distribution); } + + /** + * 查询不同类型的钢卷在不同库区的分布情况 + * 按物品类型和物品ID分组,统计每个库区的钢卷数量和重量 + */ + @GetMapping("/distributionByActualItemType") + public R> getDistributionByActualItemType( + @RequestParam(required = false) String itemType, + @RequestParam(required = false) Long itemId) { + List distribution = iWmsMaterialCoilService.getDistributionByActualItemType(itemType, itemId); + return R.ok(distribution); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java index b5e807b0..fc12f294 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java @@ -212,81 +212,87 @@ public class WmsMaterialCoilVo extends BaseEntity { private String packagingRequirement; // ========== 联查临时字段(用于优化查询性能,避免单独查询) ========== - + /** * 原材料ID(联查字段) */ private Long rawMaterialId; - + /** * 原材料编号(联查字段) */ private String rawMaterialCode; - + /** * 原材料名称(联查字段) */ private String rawMaterialName; - + /** * 原材料规格(联查字段) */ private String rawMaterialSpecification; - + /** * 原材料钢种(联查字段) */ private String rawMaterialSteelGrade; - + /** * 原材料厚度(联查字段) */ private BigDecimal rawMaterialThickness; - + /** * 原材料宽度(联查字段) */ private BigDecimal rawMaterialWidth; - + /** * 原材料BOM ID(联查字段) */ private Long rawMaterialBomId; - + /** * 产品ID(联查字段) */ private Long productId; - + /** * 产品编号(联查字段) */ private String productCode; - + /** * 产品名称(联查字段) */ private String productName; - + /** * 产品规格(联查字段) */ private String productSpecification; - + /** * 产品厚度(联查字段) */ private BigDecimal productThickness; - + /** * 产品宽度(联查字段) */ private BigDecimal productWidth; - + /** * 产品BOM ID(联查字段) */ private Long productBomId; + private String specification; // 规格 + private String material; // 材质 + private String surfaceTreatmentDesc; // 表面处理 + private String zincLayer; // 锌层 + private String manufacturer; // 厂家 + } diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java index 416a8091..7baaef01 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -43,5 +43,7 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus selectVoListWithDynamicJoin(@Param("ew")QueryWrapper lqw); List> getDistributionByActualWarehouse(@Param("itemType") String itemType, @Param("itemId") Long itemId); + + List> getDistributionByActualItemType(@Param("itemType")String itemType,@Param("itemId") Long itemId); } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index 32f74a19..9585169d 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -86,5 +86,7 @@ public interface IWmsMaterialCoilService { List getDistributionByItemType(String itemType, Long itemId); List getDistributionByActualWarehouse(String itemType, Long itemId); + + List getDistributionByActualItemType(String itemType, Long itemId); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 626e9b68..1c63e55e 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -39,14 +39,8 @@ import com.klp.domain.vo.WmsActualWarehouseVo; import com.klp.domain.vo.WmsProductVo; import com.fasterxml.jackson.databind.ObjectMapper; -import java.util.List; -import java.util.Collection; -import java.util.ArrayList; -import java.util.Map; -import java.util.HashMap; +import java.util.*; import java.util.stream.Collectors; -import java.util.HashSet; -import java.util.Set; import java.math.BigDecimal; /** @@ -1233,12 +1227,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { LambdaQueryWrapper splitWrapper = Wrappers.lambdaQuery(); splitWrapper.like(com.klp.domain.WmsGenerateRecord::getSerialNumber, enterCoilNo + "-"); List splitRecords = generateRecordMapper.selectVoList(splitWrapper); - + // 去重:使用recordId作为唯一标识 Set existingRecordIds = allQrRecords.stream() .map(WmsGenerateRecordVo::getRecordId) .collect(Collectors.toSet()); - + for (WmsGenerateRecordVo record : splitRecords) { if (record.getRecordId() != null && !existingRecordIds.contains(record.getRecordId())) { allQrRecords.add(record); @@ -1252,7 +1246,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 优化2: ObjectMapper在循环外创建,避免重复创建 ObjectMapper objectMapper = new ObjectMapper(); - + // 2. 合并所有二维码的steps信息,去重并重新编号 Map> uniqueSteps = new HashMap<>(); // 用于去重 Set allCoilNos = new HashSet<>(); @@ -1472,6 +1466,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { List> mapList = baseMapper.getDistributionByActualWarehouse(itemType, itemId); return convertMapListToVoListActual(mapList); } + + + private List convertMapListToVoListActual(List> mapList) { List voList = new ArrayList<>(); for (Map map : mapList) { @@ -1483,6 +1480,13 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setCoilCount(map.get("coil_count") != null ? Long.valueOf(map.get("coil_count").toString()) : 0L); vo.setTotalGrossWeight(map.get("total_gross_weight") != null ? new BigDecimal(map.get("total_gross_weight").toString()) : BigDecimal.ZERO); vo.setTotalNetWeight(map.get("total_net_weight") != null ? new BigDecimal(map.get("total_net_weight").toString()) : BigDecimal.ZERO); + vo.setItemName(map.get("itemName") != null ? map.get("itemName").toString() : null); + vo.setItemCode(map.get("itemCode") != null ? map.get("itemCode").toString() : null); + vo.setSpecification(map.get("specification") != null ? map.get("specification").toString() : null); + vo.setMaterial(map.get("material") != null ? map.get("material").toString() : null); + vo.setSurfaceTreatmentDesc(map.get("surfaceTreatmentDesc") != null ? map.get("surfaceTreatmentDesc").toString() : null); + vo.setZincLayer(map.get("zincLayer") != null ? map.get("zincLayer").toString() : null); + vo.setManufacturer(map.get("manufacturer") != null ? map.get("manufacturer").toString() : null); voList.add(vo); } return voList; @@ -1515,9 +1519,22 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setCoilCount(map.get("coil_count") != null ? Long.valueOf(map.get("coil_count").toString()) : 0L); vo.setTotalGrossWeight(map.get("total_gross_weight") != null ? new BigDecimal(map.get("total_gross_weight").toString()) : BigDecimal.ZERO); vo.setTotalNetWeight(map.get("total_net_weight") != null ? new BigDecimal(map.get("total_net_weight").toString()) : BigDecimal.ZERO); + vo.setItemName(map.get("itemName") != null ? map.get("itemName").toString() : null); + vo.setItemCode(map.get("itemCode") != null ? map.get("itemCode").toString() : null); + vo.setSpecification(map.get("specification") != null ? map.get("specification").toString() : null); + vo.setMaterial(map.get("material") != null ? map.get("material").toString() : null); + vo.setSurfaceTreatmentDesc(map.get("surfaceTreatmentDesc") != null ? map.get("surfaceTreatmentDesc").toString() : null); + vo.setZincLayer(map.get("zincLayer") != null ? map.get("zincLayer").toString() : null); + vo.setManufacturer(map.get("manufacturer") != null ? map.get("manufacturer").toString() : null); voList.add(vo); } return voList; } + + @Override + public List getDistributionByActualItemType(String itemType, Long itemId) { + List> mapList = baseMapper.getDistributionByActualItemType(itemType, itemId); + return convertMapListToVoListActual(mapList); + } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 40f7d0f1..d361cc7a 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -149,7 +149,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code WHEN mc.item_type = 'product' THEN p.product_code ELSE NULL - END as itemCode + END as itemCode, + CASE + WHEN mc.item_type = 'raw_material' THEN rm.specification + WHEN mc.item_type = 'product' THEN p.specification + ELSE NULL + END as specification, + CASE + WHEN mc.item_type = 'raw_material' THEN rm.material + WHEN mc.item_type = 'product' THEN p.material + ELSE NULL + END as material, + CASE + WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc + WHEN mc.item_type = 'product' THEN p.surface_treatment_desc + ELSE NULL + END as surfaceTreatmentDesc, + CASE + WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer + WHEN mc.item_type = 'product' THEN p.zinc_layer + ELSE NULL + END as zincLayer, + CASE + WHEN mc.item_type = 'raw_material' THEN rm.manufacturer + WHEN mc.item_type = 'product' THEN p.manufacturer + ELSE NULL + END as manufacturer FROM wms_material_coil mc LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id @@ -165,7 +190,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND mc.item_id = #{itemId} - GROUP BY mc.item_type, mc.item_id, w.warehouse_id, w.warehouse_name + GROUP BY mc.item_type, mc.item_id, w.warehouse_id, w.warehouse_name, itemName, itemCode, specification, material, + surfaceTreatmentDesc, zincLayer, manufacturer ORDER BY mc.item_type, mc.item_id, w.warehouse_id +