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} + + +