From 64d52f1ecf606fdbb098e3e272d239270f84e0bd Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 30 Jun 2026 15:31:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=8C=82=E6=8E=A5=E9=92=A2=E5=8D=B7=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsCoilContractRelService接口中添加queryContractCoilStatistics方法 - 在WmsCoilContractRelController控制器中添加统计查询和导出接口 - 在WmsCoilContractRelMapper中添加selectContractCoilStatistics查询方法 - 实现合同挂接钢卷统计的SQL查询逻辑,支持多条件筛选 - 创建ContractCoilStatisticsBo查询对象和ContractCoilStatisticsVo视图对象 - 开发前端统计页面,包含搜索筛选、统计卡片、图表展示和数据表格 - 集成ECharts实现合同状态分布饼图和销售员挂接钢卷柱状图 - 实现统计数据的Excel导出功能 - 添加响应式设计适配移动端显示 --- klp-ui/src/api/wms/contractCoilStatistics.js | 10 + .../wms/contractCoilStatistics/index.vue | 613 ++++++++++++++++++ .../WmsCoilContractRelController.java | 21 + .../domain/bo/ContractCoilStatisticsBo.java | 36 + .../domain/vo/ContractCoilStatisticsVo.java | 85 +++ .../klp/mapper/WmsCoilContractRelMapper.java | 7 + .../service/IWmsCoilContractRelService.java | 10 + .../impl/WmsCoilContractRelServiceImpl.java | 10 + .../mapper/klp/WmsCoilContractRelMapper.xml | 45 ++ 9 files changed, 837 insertions(+) create mode 100644 klp-ui/src/api/wms/contractCoilStatistics.js create mode 100644 klp-ui/src/views/wms/contractCoilStatistics/index.vue create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/ContractCoilStatisticsBo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/ContractCoilStatisticsVo.java diff --git a/klp-ui/src/api/wms/contractCoilStatistics.js b/klp-ui/src/api/wms/contractCoilStatistics.js new file mode 100644 index 000000000..ee0e97c09 --- /dev/null +++ b/klp-ui/src/api/wms/contractCoilStatistics.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 查询合同挂接情况统计 +export function getContractCoilStatistics(query) { + return request({ + url: '/wms/coilContractRel/statistics', + method: 'get', + params: query + }) +} diff --git a/klp-ui/src/views/wms/contractCoilStatistics/index.vue b/klp-ui/src/views/wms/contractCoilStatistics/index.vue new file mode 100644 index 000000000..99976f573 --- /dev/null +++ b/klp-ui/src/views/wms/contractCoilStatistics/index.vue @@ -0,0 +1,613 @@ + + + + + diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java index f93ead442..b52a5a266 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilContractRelController.java @@ -18,7 +18,9 @@ import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.domain.vo.WmsCoilContractRelVo; +import com.klp.domain.vo.ContractCoilStatisticsVo; import com.klp.domain.bo.WmsCoilContractRelBo; +import com.klp.domain.bo.ContractCoilStatisticsBo; import com.klp.service.IWmsCoilContractRelService; import com.klp.common.core.page.TableDataInfo; @@ -97,6 +99,25 @@ public class WmsCoilContractRelController extends BaseController { return R.ok(updated); } + /** + * 查询合同挂接情况统计 + */ + @GetMapping("/statistics") + public R> statistics(ContractCoilStatisticsBo bo) { + List list = iWmsCoilContractRelService.queryContractCoilStatistics(bo); + return R.ok(list); + } + + /** + * 导出合同挂接情况统计 + */ + @Log(title = "合同挂接情况统计", businessType = BusinessType.EXPORT) + @PostMapping("/statistics/export") + public void statisticsExport(ContractCoilStatisticsBo bo, HttpServletResponse response) { + List list = iWmsCoilContractRelService.queryContractCoilStatistics(bo); + ExcelUtil.exportExcel(list, "合同挂接情况统计", ContractCoilStatisticsVo.class, response); + } + /** * 删除钢卷与合同关联关系 * diff --git a/klp-wms/src/main/java/com/klp/domain/bo/ContractCoilStatisticsBo.java b/klp-wms/src/main/java/com/klp/domain/bo/ContractCoilStatisticsBo.java new file mode 100644 index 000000000..2aa941225 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/bo/ContractCoilStatisticsBo.java @@ -0,0 +1,36 @@ +package com.klp.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 合同挂接情况统计查询对象 + * + * @author klp + * @date 2026-06-30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ContractCoilStatisticsBo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 合同号 */ + private String contractCode; + + /** 合同名称 */ + private String contractName; + + /** 需方(客户) */ + private String customer; + + /** 销售员 */ + private String salesman; + + /** 合同状态 0=草稿 1=生效 2=作废 3=已完成 */ + private Long status; + + /** 订单编号 */ + private String orderCode; +} diff --git a/klp-wms/src/main/java/com/klp/domain/vo/ContractCoilStatisticsVo.java b/klp-wms/src/main/java/com/klp/domain/vo/ContractCoilStatisticsVo.java new file mode 100644 index 000000000..e51ad2762 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/ContractCoilStatisticsVo.java @@ -0,0 +1,85 @@ +package com.klp.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 合同挂接情况统计视图对象 + * 基于 crm_order + wms_coil_contract_rel + wms_material_coil 三表联合统计 + * + * @author klp + * @date 2026-06-30 + */ +@Data +@ExcelIgnoreUnannotated +public class ContractCoilStatisticsVo { + + private static final long serialVersionUID = 1L; + + // ========== 合同信息(来自 crm_order)========== + + /** 订单ID */ + @ExcelProperty(value = "订单ID") + private Long orderId; + + /** 订单编号 */ + @ExcelProperty(value = "订单编号") + private String orderCode; + + /** 合同号 */ + @ExcelProperty(value = "合同号") + private String contractCode; + + /** 合同名称 */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** 需方(客户) */ + @ExcelProperty(value = "需方") + private String customer; + + /** 供方 */ + @ExcelProperty(value = "供方") + private String supplier; + + /** 销售员 */ + @ExcelProperty(value = "销售员") + private String salesman; + + /** 合同状态 0=草稿 1=生效 2=作废 3=已完成 */ + @ExcelProperty(value = "合同状态") + private Long status; + + /** 订单总额 */ + @ExcelProperty(value = "订单总额") + private BigDecimal orderAmount; + + /** 签订时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "签订时间") + private Date signTime; + + /** 交货日期 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "交货日期") + private Date deliveryDate; + + // ========== 统计字段 ========== + + /** 挂接钢卷数量 */ + @ExcelProperty(value = "挂接钢卷数") + private Long coilCount; + + /** 钢卷总净重(kg) */ + @ExcelProperty(value = "钢卷总净重(kg)") + private BigDecimal totalNetWeight; + + /** 钢卷总毛重(kg) */ + @ExcelProperty(value = "钢卷总毛重(kg)") + private BigDecimal totalGrossWeight; +} diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java index 9fd53fbc9..e568052a7 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java @@ -2,6 +2,8 @@ package com.klp.mapper; import com.klp.domain.WmsCoilContractRel; import com.klp.domain.vo.WmsCoilContractRelVo; +import com.klp.domain.vo.ContractCoilStatisticsVo; +import com.klp.domain.bo.ContractCoilStatisticsBo; import com.klp.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; @@ -34,4 +36,9 @@ public interface WmsCoilContractRelMapper extends BaseMapperPlus selectContractInfoByOrderId(@Param("orderId") Long orderId); + + /** + * 查询合同挂接钢卷统计(按合同分组统计钢卷数量和重量) + */ + List selectContractCoilStatistics(@Param("bo") ContractCoilStatisticsBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java index 95d8eb468..3ec95104f 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilContractRelService.java @@ -2,7 +2,9 @@ package com.klp.service; import com.klp.domain.WmsCoilContractRel; import com.klp.domain.vo.WmsCoilContractRelVo; +import com.klp.domain.vo.ContractCoilStatisticsVo; import com.klp.domain.bo.WmsCoilContractRelBo; +import com.klp.domain.bo.ContractCoilStatisticsBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; @@ -55,4 +57,12 @@ public interface IWmsCoilContractRelService { * @return 实际更新的记录数 */ int batchUpdateContractId(Long contractId, List coilIds); + + /** + * 查询合同挂接钢卷统计 + * + * @param bo 查询参数 + * @return 统计列表 + */ + List queryContractCoilStatistics(ContractCoilStatisticsBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java index c481f7295..d1c336a0d 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java @@ -11,7 +11,9 @@ import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsCoilContractRelBo; +import com.klp.domain.bo.ContractCoilStatisticsBo; import com.klp.domain.vo.WmsCoilContractRelVo; +import com.klp.domain.vo.ContractCoilStatisticsVo; import com.klp.domain.WmsCoilContractRel; import com.klp.domain.WmsMaterialCoil; import com.klp.mapper.WmsCoilContractRelMapper; @@ -195,4 +197,12 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService } return updated; } + + /** + * 查询合同挂接钢卷统计 + */ + @Override + public List queryContractCoilStatistics(ContractCoilStatisticsBo bo) { + return baseMapper.selectContractCoilStatistics(bo); + } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml index 630331bc8..64df9823a 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml @@ -154,4 +154,49 @@ LIMIT 1 + + +