From db379748f22f3cfb244e9a1cc1331f5dff880769 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 7 Mar 2026 14:37:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E6=8A=A5=E8=A1=A8=E7=BB=9F=E8=AE=A1=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=86=B7=E7=A1=AC=E5=8D=B7=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsMaterialCoilService中添加getCoilTrimStatistics方法 - 在WmsMaterialCoilController中新增trimStatistics接口 - 在WmsMaterialCoilMapper中添加selectCoilTrimStatistics查询方法 - 在WmsMaterialCoilMapper.xml中实现切边统计数据SQL查询 - 在WmsMaterialCoilServiceImpl中实现切边统计业务逻辑 - 新增CoilTrimRawVo、CoilTrimStatisticsVo和TrimWidthStatisticsVo数据传输对象 - 按厚度、宽度、切边要求(净边/毛边)统计钢卷数量和重量 - 实现数据分组和排序功能,支持前端展示需求 --- .../controller/WmsMaterialCoilController.java | 10 +++ .../domain/vo/dashboard/CoilTrimRawVo.java | 13 ++++ .../vo/dashboard/CoilTrimStatisticsVo.java | 12 +++ .../vo/dashboard/TrimWidthStatisticsVo.java | 11 +++ .../com/klp/mapper/WmsMaterialCoilMapper.java | 11 +-- .../klp/service/IWmsMaterialCoilService.java | 5 +- .../impl/WmsMaterialCoilServiceImpl.java | 75 +++++++++++++++++++ .../mapper/klp/WmsMaterialCoilMapper.xml | 25 +++++++ 8 files changed, 154 insertions(+), 8 deletions(-) create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimRawVo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimStatisticsVo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/dashboard/TrimWidthStatisticsVo.java 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 23fc406d..6df85839 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -24,6 +24,7 @@ import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.domain.bo.WmsMaterialCoilBo; +import com.klp.domain.vo.dashboard.CoilTrimStatisticsVo; import com.klp.service.IWmsMaterialCoilService; import com.klp.common.core.page.TableDataInfo; @@ -442,6 +443,15 @@ public class WmsMaterialCoilController extends BaseController { } + /** + * 冷硬卷切边统计 + * 按厚度、宽度、切边要求(净边/毛边)统计钢卷数量和重量 + */ + @GetMapping("/trimStatistics") + public R> trimStatistics() { + return R.ok(iWmsMaterialCoilService.getCoilTrimStatistics()); + } + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimRawVo.java b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimRawVo.java new file mode 100644 index 00000000..5a392629 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimRawVo.java @@ -0,0 +1,13 @@ +package com.klp.domain.vo.dashboard; + +import lombok.Data; +import java.math.BigDecimal; + +@Data +public class CoilTrimRawVo { + private String thickness; + private String width; + private String trimmingRequirement; + private Integer coilCount; + private BigDecimal totalWeight; +} diff --git a/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimStatisticsVo.java b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimStatisticsVo.java new file mode 100644 index 00000000..12018d7c --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/CoilTrimStatisticsVo.java @@ -0,0 +1,12 @@ +package com.klp.domain.vo.dashboard; + +import lombok.Data; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class CoilTrimStatisticsVo { + private String thickness; + private List trimmedList; + private List untrimmedList; +} diff --git a/klp-wms/src/main/java/com/klp/domain/vo/dashboard/TrimWidthStatisticsVo.java b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/TrimWidthStatisticsVo.java new file mode 100644 index 00000000..901c18e8 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/dashboard/TrimWidthStatisticsVo.java @@ -0,0 +1,11 @@ +package com.klp.domain.vo.dashboard; + +import lombok.Data; +import java.math.BigDecimal; + +@Data +public class TrimWidthStatisticsVo { + private String width; + private Integer coilCount; + private BigDecimal totalWeight; +} 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 23e899de..18b356e6 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -8,15 +8,10 @@ import com.klp.domain.vo.WmsMaterialCoilDeliveryExportVo; import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import com.klp.domain.vo.dashboard.CoilTrimRawVo; import java.util.List; import java.util.Map; -/** - * 钢卷物料表Mapper接口 - * - * @author Joshi - * @date 2025-07-18 - */ public interface WmsMaterialCoilMapper extends BaseMapperPlus { /** @@ -85,6 +80,8 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus selectDeliveryExportListByCoilIds(@Param("coilIds") java.util.Collection coilIds); +List selectDeliveryExportListByCoilIds(@Param("coilIds") java.util.Collection coilIds); + + List selectCoilTrimStatistics(); } 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 1def57dd..758ed2a9 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -5,6 +5,7 @@ import com.klp.domain.vo.WmsMaterialCoilVo; import com.klp.domain.bo.WmsMaterialCoilBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; +import com.klp.domain.vo.dashboard.CoilTrimStatisticsVo; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -221,6 +222,8 @@ public interface IWmsMaterialCoilService { * @param coilId 原钢卷ID * @return 退货后的新钢卷信息 */ - WmsMaterialCoilVo returnCoil(@NotNull(message = "钢卷ID不能为空") Long coilId); +WmsMaterialCoilVo returnCoil(@NotNull(message = "钢卷ID不能为空") Long coilId); + + List getCoilTrimStatistics(); } 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 d26dac29..6afeddc9 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 @@ -18,6 +18,9 @@ import com.klp.common.utils.StringUtils; import com.klp.domain.*; import com.klp.domain.bo.*; import com.klp.domain.vo.*; +import com.klp.domain.vo.dashboard.CoilTrimStatisticsVo; +import com.klp.domain.vo.dashboard.CoilTrimRawVo; +import com.klp.domain.vo.dashboard.TrimWidthStatisticsVo; import com.klp.domain.WmsCoilPendingAction; import com.klp.domain.bo.WmsCoilPendingActionBo; import com.klp.mapper.*; @@ -4304,5 +4307,77 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + @Override + public List getCoilTrimStatistics() { + List rawList = baseMapper.selectCoilTrimStatistics(); + + Map> byThickness = rawList.stream() + .collect(Collectors.groupingBy(v -> v.getThickness() == null ? "空置" : v.getThickness())); + + List result = new ArrayList<>(); + + for (Map.Entry> thicknessEntry : byThickness.entrySet()) { + CoilTrimStatisticsVo vo = new CoilTrimStatisticsVo(); + vo.setThickness(thicknessEntry.getKey()); + + List thicknessList = thicknessEntry.getValue(); + + Map> byTrim = thicknessList.stream() + .collect(Collectors.groupingBy(v -> v.getTrimmingRequirement() == null ? "未知" : v.getTrimmingRequirement())); + + List resultList = new ArrayList<>(); + for (Map.Entry> trimEntry : byTrim.entrySet()) { + CoilTrimStatisticsVo trimVo = new CoilTrimStatisticsVo(); + trimVo.setThickness(trimEntry.getKey()); + + List widthList = new ArrayList<>(); + for (CoilTrimRawVo raw : trimEntry.getValue()) { + TrimWidthStatisticsVo widthVo = new TrimWidthStatisticsVo(); + widthVo.setWidth(raw.getWidth() == null ? "空置" : raw.getWidth()); + widthVo.setCoilCount(raw.getCoilCount() == null ? 0 : raw.getCoilCount()); + widthVo.setTotalWeight(raw.getTotalWeight() == null ? BigDecimal.ZERO : raw.getTotalWeight()); + widthList.add(widthVo); + } + trimVo.setTrimmedList(widthList); + resultList.add(trimVo); + } + + List trimmedList = byTrim.getOrDefault("净边", new ArrayList<>()); + List untrimmedList = byTrim.getOrDefault("毛边", new ArrayList<>()); + + List trimmedWidthList = new ArrayList<>(); + for (CoilTrimRawVo raw : trimmedList) { + TrimWidthStatisticsVo widthVo = new TrimWidthStatisticsVo(); + widthVo.setWidth(raw.getWidth() == null ? "空置" : raw.getWidth()); + widthVo.setCoilCount(raw.getCoilCount() == null ? 0 : raw.getCoilCount()); + widthVo.setTotalWeight(raw.getTotalWeight() == null ? BigDecimal.ZERO : raw.getTotalWeight()); + trimmedWidthList.add(widthVo); + } + + List untrimmedWidthList = new ArrayList<>(); + for (CoilTrimRawVo raw : untrimmedList) { + TrimWidthStatisticsVo widthVo = new TrimWidthStatisticsVo(); + widthVo.setWidth(raw.getWidth() == null ? "空置" : raw.getWidth()); + widthVo.setCoilCount(raw.getCoilCount() == null ? 0 : raw.getCoilCount()); + widthVo.setTotalWeight(raw.getTotalWeight() == null ? BigDecimal.ZERO : raw.getTotalWeight()); + untrimmedWidthList.add(widthVo); + } + + vo.setTrimmedList(trimmedWidthList); + vo.setUntrimmedList(untrimmedWidthList); + result.add(vo); + } + + result.sort(Comparator.comparing(v -> { + try { + return new BigDecimal(v.getThickness()); + } catch (Exception e) { + return new BigDecimal("999999"); + } + })); + + return result; + } + } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 3337d400..691276ed 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -678,5 +678,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE coil_id = #{coilId} + + +