From 484f63f9cc5a6a335757070ed28eb65b5866a1bf Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 29 May 2026 16:09:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(wms/coil):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=92=A2=E5=8D=B7=E7=89=A9=E6=96=99=E4=B8=AA=E6=80=A7=E5=8C=96?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端新增导出列元数据接口 `/exportColumns`,返回字段名与中文列名的映射。 2. 后端新增个性化导出接口 `/exportCustom`,支持通过 `columns` 参数指定导出的字段集合,利用增强的 `ExcelUtil.exportExcel` 方法实现按需导出。 3. 前端钢卷接收报表页面新增自定义导出弹窗,支持按列分组展示、搜索、全选/反选/清空列,并调用新接口实现仅导出选中列的数据。 4. 在导出VO中补充“班组”字段的Excel映射注解。 --- .../com/klp/common/utils/poi/ExcelUtil.java | 28 ++++ klp-ui/src/api/wms/coil.js | 8 + klp-ui/src/views/wms/report/receive.vue | 144 +++++++++++++++++- .../controller/WmsMaterialCoilController.java | 68 +++++++++ .../domain/vo/WmsMaterialCoilAllExportVo.java | 1 + 5 files changed, 247 insertions(+), 2 deletions(-) diff --git a/klp-common/src/main/java/com/klp/common/utils/poi/ExcelUtil.java b/klp-common/src/main/java/com/klp/common/utils/poi/ExcelUtil.java index 06fc93c0..773abe33 100644 --- a/klp-common/src/main/java/com/klp/common/utils/poi/ExcelUtil.java +++ b/klp-common/src/main/java/com/klp/common/utils/poi/ExcelUtil.java @@ -29,6 +29,7 @@ import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; /** * Excel相关处理 @@ -149,6 +150,33 @@ public class ExcelUtil { builder.doWrite(list); } + /** + * 导出excel(仅导出指定列) + * + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @param clazz 实体类 + * @param includeColumnFieldNames 需要导出的字段名集合(Java字段名,非Excel列名) + * @param response 响应体 + */ + public static void exportExcel(List list, String sheetName, Class clazz, + Set includeColumnFieldNames, + HttpServletResponse response) { + try { + resetResponse(sheetName, response); + ServletOutputStream os = response.getOutputStream(); + EasyExcel.write(os, clazz) + .autoCloseStream(false) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerConverter(new ExcelBigNumberConvert()) + .includeColumnFieldNames(includeColumnFieldNames) + .sheet(sheetName) + .doWrite(list); + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + /** * 单表多数据模板导出 模板格式为 {.属性} * diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index 1731c628..0d71a0e4 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -488,4 +488,12 @@ export function listLightCoil(data) { timeout: 600000, data: data }) +} + +// 获取可导出的列元数据 +export function getExportColumns() { + return request({ + url: '/wms/materialCoil/exportColumns', + method: 'get', + }) } \ No newline at end of file diff --git a/klp-ui/src/views/wms/report/receive.vue b/klp-ui/src/views/wms/report/receive.vue index 4d48bf4b..21bd8ca3 100644 --- a/klp-ui/src/views/wms/report/receive.vue +++ b/klp-ui/src/views/wms/report/receive.vue @@ -56,6 +56,7 @@ 查询 导出 + 自定义导出 列设置 保存报表 @@ -84,11 +85,45 @@ + + + +
+ +
+ 全选 + 反选 + 清空 +
+
+
+ +
+
{{ gName }}
+
+ {{ field.label }} +
+
+
+
+ +
- + 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 4ff45e3f..d6054043 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -5,6 +5,9 @@ import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Arrays; +import java.util.Set; +import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.stream.Collectors; import java.util.HashMap; @@ -30,6 +33,7 @@ import com.klp.common.core.validate.AddGroup; import com.klp.common.core.validate.EditGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; +import com.klp.common.utils.StringUtils; import com.klp.domain.bo.WmsMaterialCoilBo; import com.klp.domain.bo.WmsMaterialCoilReportSummaryBo; import com.klp.domain.vo.dashboard.CoilTrimStatisticsVo; @@ -130,6 +134,70 @@ public class WmsMaterialCoilController extends BaseController { List list = iWmsMaterialCoilService.queryExportList(bo); ExcelUtil.exportExcel(list, "钢卷物料表", WmsMaterialCoilExportVo.class, response); } + + /** + * 个性化导出:前端传入要导出的字段名,仅导出选中列 + * columns 参数为逗号分隔的 Java 字段名,如 "itemTypeDesc,enterCoilNo,netWeight" + * 不传 columns 时等同于 /exportAll 导出全部字段 + */ + @Log(title = "钢卷物料表", businessType = BusinessType.EXPORT) + @PostMapping("/exportCustom") + public void exportCustom(WmsMaterialCoilBo bo, + @RequestParam(required = false) String columns, + HttpServletResponse response) { + List list = iWmsMaterialCoilService.queryExportListAll(bo); + if (StringUtils.isNotBlank(columns)) { + Set includeFields = new HashSet<>(Arrays.asList(columns.split(","))); + ExcelUtil.exportExcel(list, "钢卷物料表", WmsMaterialCoilAllExportVo.class, includeFields, response); + } else { + ExcelUtil.exportExcel(list, "钢卷物料表", WmsMaterialCoilAllExportVo.class, response); + } + } + + /** + * 获取可导出的列元数据(供前端列选择器使用) + * 返回 { "fieldName": "中文列名" } 的映射,基于完整导出字段 + */ + @GetMapping("/exportColumns") + public R> getExportColumns() { + Map columns = new LinkedHashMap<>(); + columns.put("itemTypeDesc", "类型"); + columns.put("warehouseName", "逻辑库区"); + columns.put("actualWarehouseName", "实际库区"); + columns.put("enterCoilNo", "入场卷号"); + columns.put("supplierCoilNo", "厂家卷号"); + columns.put("currentCoilNo", "成品卷号"); + columns.put("createTime", "日期"); + columns.put("exportTime", "发货时间"); + columns.put("exportBy", "发货人"); + columns.put("netWeight", "重量"); + columns.put("purpose", "用途"); + columns.put("trimmingRequirement", "切边要求"); + columns.put("packagingRequirement", "包装种类"); + columns.put("qualityStatus", "产品质量"); + columns.put("packingStatus", "原料材质"); + columns.put("statusDesc", "库存状态"); + columns.put("remark", "备注"); + columns.put("itemName", "名称"); + columns.put("length", "长度"); + columns.put("specification", "规格"); + columns.put("material", "材质"); + columns.put("manufacturer", "厂家"); + columns.put("surfaceTreatmentDesc", "表面处理"); + columns.put("zincLayer", "锌层"); + columns.put("itemId", "物品ID"); + columns.put("dataTypeText", "数据类型"); + columns.put("temperGrade", "调制度"); + columns.put("coatingType", "镀层种类"); + columns.put("businessPurpose", "业务用途"); + columns.put("isRelatedToOrderText", "是否与订单相关"); + columns.put("saleName", "销售人员"); + columns.put("actualThickness", "实测厚度"); + columns.put("transferType", "调拨类型"); + columns.put("team", "班组"); + return R.ok(columns); + } + /** * 导出钢卷物料表列表(完整字段版本) * 导出全部字段 diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java index 550405fb..dc2ff6cf 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java @@ -78,6 +78,7 @@ public class WmsMaterialCoilAllExportVo { private BigDecimal netWeight; // 班组 + @ExcelProperty(value = "班组") private String team; /** From 37ea2b7d78ca1a0cd0ecea5a5f9968f2464d1e6c Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 29 May 2026 16:19:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(qc):=20=E4=B8=BA=E8=B4=A8=E6=A3=80?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=96=B0=E5=A2=9E=E5=8E=82=E5=AE=B6=E5=8D=B7?= =?UTF-8?q?=E5=8F=B7=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在质检任务实体、业务对象、值对象及映射文件中新增supplierCoilNos字段,用于记录厂家卷号集合(多个使用英文逗号分隔)。同时,在服务实现类中为查询条件添加对该字段的模糊匹配支持,实现按厂家卷号过滤质检任务的功能。 --- .../main/java/com/klp/mes/qc/domain/QcInspectionTask.java | 4 ++++ .../java/com/klp/mes/qc/domain/bo/QcInspectionTaskBo.java | 5 +++++ .../java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java | 5 +++++ .../klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java | 1 + .../src/main/resources/mapper/qc/QcInspectionTaskMapper.xml | 1 + 5 files changed, 16 insertions(+) diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/QcInspectionTask.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/QcInspectionTask.java index 27899a6d..7f7630b5 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/domain/QcInspectionTask.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/QcInspectionTask.java @@ -94,6 +94,10 @@ public class QcInspectionTask extends BaseEntity { * 附件路径(多个用英文逗号分隔) */ private String attachmentFiles; + /** + * 厂家卷号集合,多个使用英文逗号分隔 + */ + private String supplierCoilNos; /** * 删除标志(0=正常,1=已删除) diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/QcInspectionTaskBo.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/QcInspectionTaskBo.java index c734383c..4af28c70 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/QcInspectionTaskBo.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/bo/QcInspectionTaskBo.java @@ -108,4 +108,9 @@ public class QcInspectionTaskBo extends BaseEntity { * 附件路径(多个用英文逗号分隔) */ private String attachmentFiles; + + /** + * 厂家卷号集合,多个使用英文逗号分隔 + */ + private String supplierCoilNos; } diff --git a/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java index 1d6e2a14..425c4835 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/domain/vo/QcInspectionTaskVo.java @@ -134,6 +134,11 @@ public class QcInspectionTaskVo { */ private String attachmentFiles; + /** + * 厂家卷号集合,多个使用英文逗号分隔 + */ + private String supplierCoilNos; + private List coilList; diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java index 71e0b94c..e003f47a 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcInspectionTaskServiceImpl.java @@ -136,6 +136,7 @@ public class QcInspectionTaskServiceImpl implements IQcInspectionTaskService { lqw.eq(StringUtils.isNotBlank(bo.getResult()), QcInspectionTask::getResult, bo.getResult()); lqw.like(StringUtils.isNotBlank(bo.getCoilIds()), QcInspectionTask::getCoilIds, bo.getCoilIds()); lqw.like(StringUtils.isNotBlank(bo.getEnterCoilNos()), QcInspectionTask::getEnterCoilNos, bo.getEnterCoilNos()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierCoilNos()), QcInspectionTask::getSupplierCoilNos, bo.getSupplierCoilNos()); return lqw; } diff --git a/klp-mes/src/main/resources/mapper/qc/QcInspectionTaskMapper.xml b/klp-mes/src/main/resources/mapper/qc/QcInspectionTaskMapper.xml index 059ce91b..97e24714 100644 --- a/klp-mes/src/main/resources/mapper/qc/QcInspectionTaskMapper.xml +++ b/klp-mes/src/main/resources/mapper/qc/QcInspectionTaskMapper.xml @@ -23,6 +23,7 @@ +