From 364ecb3ab0599807f7c89946c5de722b7dd05b6b Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 15 Jan 2026 15:14:41 +0800 Subject: [PATCH 01/39] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E9=87=8D=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=88=86=E7=BB=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsMaterialCoilService 中新增 getDuplicateCoilGroups 方法定义 - 在 WmsMaterialCoilController 中添加 /duplicateGroups 接口 - 在 WmsMaterialCoilServiceImpl 中实现重复钢卷分组逻辑 - 支持按入场钢卷号和当前钢卷号分别进行重复分组 - 返回结构包含 enterGroups 和 currentGroups 两个分组数组 - 自动过滤 data_type=1 且未删除的数据记录 - 批量填充关联对象信息以提高查询效率 --- .../controller/WmsMaterialCoilController.java | 11 ++++ .../klp/service/IWmsMaterialCoilService.java | 11 ++++ .../impl/WmsMaterialCoilServiceImpl.java | 66 +++++++++++++++++++ 3 files changed, 88 insertions(+) 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 c918b80d..6cc72830 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -288,5 +288,16 @@ public class WmsMaterialCoilController extends BaseController { return R.ok(result); } + /** + * 查询data_type=1的重复钢卷分组 + * - 入场钢卷号重复分组 + * - 当前钢卷号重复分组 + */ + @GetMapping("/duplicateGroups") + public R> getDuplicateCoilGroups() { + Map result = iWmsMaterialCoilService.getDuplicateCoilGroups(); + return R.ok(result); + } + } 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 eef0c0c4..289c60da 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -137,5 +137,16 @@ public interface IWmsMaterialCoilService { * - prefix: 前缀值 */ Map getMaxEnterCoilNoByPrefix(String enterCoilNoPrefix); + + /** + * 查询data_type=1时的重复钢卷分组 + * 将入场钢卷号重复的分为一组,将当前钢卷号重复的分为一组 + * 返回结构: + * { + * enterGroups: [ { enterCoilNo: "xxx", coils: [WmsMaterialCoilVo...] }, ...], + * currentGroups: [ { currentCoilNo: "yyy", coils: [WmsMaterialCoilVo...] }, ...] + * } + */ + Map getDuplicateCoilGroups(); } 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 825a19ac..dde057d3 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 @@ -540,6 +540,72 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return qw; } + @Override + public Map getDuplicateCoilGroups() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(WmsMaterialCoil::getDataType, 1); + lqw.eq(WmsMaterialCoil::getDelFlag, 0); + List all = baseMapper.selectList(lqw); + + Map> enterGrouped = all.stream() + .filter(e -> StringUtils.isNotBlank(e.getEnterCoilNo())) + .collect(Collectors.groupingBy(WmsMaterialCoil::getEnterCoilNo)); + Map> currentGrouped = all.stream() + .filter(e -> StringUtils.isNotBlank(e.getCurrentCoilNo())) + .collect(Collectors.groupingBy(WmsMaterialCoil::getCurrentCoilNo)); + + List> enterGroups = enterGrouped.entrySet().stream() + .filter(en -> en.getValue() != null && en.getValue().size() > 1) + .map(en -> { + List vos = en.getValue().stream().map(this::toVoBasic).collect(Collectors.toList()); + Map m = new HashMap<>(); + m.put("enterCoilNo", en.getKey()); + m.put("coils", vos); + return m; + }) + .collect(Collectors.toList()); + + List> currentGroups = currentGrouped.entrySet().stream() + .filter(en -> en.getValue() != null && en.getValue().size() > 1) + .map(en -> { + List vos = en.getValue().stream().map(this::toVoBasic).collect(Collectors.toList()); + Map m = new HashMap<>(); + m.put("currentCoilNo", en.getKey()); + m.put("coils", vos); + return m; + }) + .collect(Collectors.toList()); + + // 可选:批量填充关联对象信息 + List allVos = new ArrayList<>(); + for (Map g : enterGroups) { + Object list = g.get("coils"); + if (list instanceof List) { + allVos.addAll((List) list); + } + } + for (Map g : currentGroups) { + Object list = g.get("coils"); + if (list instanceof List) { + allVos.addAll((List) list); + } + } + if (!allVos.isEmpty()) { + fillRelatedObjectsBatch(allVos); + } + + Map result = new HashMap<>(); + result.put("enterGroups", enterGroups); + result.put("currentGroups", currentGroups); + return result; + } + + private WmsMaterialCoilVo toVoBasic(WmsMaterialCoil e) { + WmsMaterialCoilVo vo = new WmsMaterialCoilVo(); + BeanUtils.copyProperties(e, vo); + return vo; + } + /** * 构建 OR 连接的 LIKE 子句,使用 MyBatis-Plus apply 的 {index} 占位符并将参数加入 args。 * 例如:column = "p.product_name", values = "A,B" -> 返回 "(p.product_name LIKE {0} OR p.product_name LIKE {1})" From 0200900f1387aaf92b778f309108d487c55c03f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Thu, 15 Jan 2026 16:24:01 +0800 Subject: [PATCH 02/39] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E9=87=8D=E5=8F=B7=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增钢卷重号查询页面,包含当前卷号和入厂卷号两个标签页 添加API接口获取重号钢卷数据 实现搜索过滤和刷新功能 --- klp-ui/src/api/wms/coil.js | 10 + klp-ui/src/views/wms/coil/repeated.vue | 297 +++++++++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 klp-ui/src/views/wms/coil/repeated.vue diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index e9317e58..1dc86698 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -214,4 +214,14 @@ export function getMaxCoilNo(enterCoilNoPrefix) { enterCoilNoPrefix } }) +} + +/** + * 查询存在重号的钢卷 + */ +export function getDuplicateGroups() { + return request({ + url: '/wms/materialCoil/duplicateGroups', + method: 'get' + }) } \ No newline at end of file diff --git a/klp-ui/src/views/wms/coil/repeated.vue b/klp-ui/src/views/wms/coil/repeated.vue new file mode 100644 index 00000000..9e0367d4 --- /dev/null +++ b/klp-ui/src/views/wms/coil/repeated.vue @@ -0,0 +1,297 @@ + + + + + \ No newline at end of file From 79324c7fd06f4e37951e9b5a085ddd8a1189f980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Thu, 15 Jan 2026 16:24:12 +0800 Subject: [PATCH 03/39] =?UTF-8?q?feat(=E9=87=8D=E5=8F=B7=E7=BB=84=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2):=20=E4=BF=AE=E6=94=B9=E5=85=A5=E5=8E=82=E5=8D=B7?= =?UTF-8?q?=E5=8F=B7=E9=87=8D=E5=8F=B7=E7=BB=84=E6=9F=A5=E8=AF=A2=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=92=8C=E4=BA=A4=E4=BA=92=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将查询条件中的仓库改为厂家,并添加查询按钮 将输入框的@input事件改为@change事件,提升搜索体验 --- klp-ui/src/views/wms/coil/repeated.vue | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/klp-ui/src/views/wms/coil/repeated.vue b/klp-ui/src/views/wms/coil/repeated.vue index 9e0367d4..1aa55295 100644 --- a/klp-ui/src/views/wms/coil/repeated.vue +++ b/klp-ui/src/views/wms/coil/repeated.vue @@ -53,8 +53,10 @@ @@ -229,9 +231,10 @@ export default { const currentNo = (item.currentCoilNo || '').toLowerCase() const spec = (item.productSpecification || '').toLowerCase() const material = (item.productMaterial || '').toLowerCase() - const warehouse = (item.warehouseName || '').toLowerCase() + const manufacturer = (item.manufacturer || '').toLowerCase() + // const warehouse = (item.warehouseName || '').toLowerCase() const matType = (item.materialType || '').toLowerCase() - return enterNo.includes(key) || currentNo.includes(key) || spec.includes(key) || material.includes(key) || warehouse.includes(key) || matType.includes(key) + return enterNo.includes(key) || currentNo.includes(key) || spec.includes(key) || material.includes(key) || manufacturer.includes(key) || matType.includes(key) }) return groupNo.includes(key) || hasMatchCoil }) From bad618deace40f7d3312dca6dbd983be3aef3efb Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 15 Jan 2026 17:05:47 +0800 Subject: [PATCH 04/39] =?UTF-8?q?feat(WmsMaterialCoil):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=BA=93=E5=8C=BAID=E5=88=97=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsMaterialCoilBo中新增warehouseIds字段用于存储多个库区ID - 修改查询逻辑以同时支持单个warehouseId和多个warehouseIds的查询条件 - 实现字符串分割和数字转换功能处理逗号分隔的库区ID列表 - 使用IN查询替代EQ查询以支持多库区条件匹配 - 添加数据去重处理避免重复的库区ID影响查询结果 --- .../com/klp/domain/bo/WmsMaterialCoilBo.java | 5 +++++ .../impl/WmsMaterialCoilServiceImpl.java | 21 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java index 3f0cb3d8..c8575ccd 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java @@ -56,6 +56,11 @@ public class WmsMaterialCoilBo extends BaseEntity { */ private Long warehouseId; + /** + * 所在库区IDs(逗号分隔) + */ + private String warehouseIds; + /** * 下一库区ID */ 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 dde057d3..6094e6fe 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 @@ -341,12 +341,31 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { qw.like(StringUtils.isNotBlank(bo.getSupplierCoilNo()), "mc.supplier_coil_no", bo.getSupplierCoilNo()); qw.eq(bo.getDataType() != null, "mc.data_type", bo.getDataType()); qw.eq(bo.getMaterialType() != null, "mc.material_type", bo.getMaterialType()); - qw.eq(bo.getWarehouseId() != null, "mc.warehouse_id", bo.getWarehouseId()); qw.eq(bo.getHasMergeSplit() != null, "mc.has_merge_split", bo.getHasMergeSplit()); qw.eq(bo.getStatus() != null, "mc.status", bo.getStatus()); qw.eq(StringUtils.isNotBlank(bo.getItemType()), "mc.item_type", bo.getItemType()); qw.eq(StringUtils.isNotBlank(bo.getCreateBy()), "mc.create_by", bo.getCreateBy()); qw.eq(StringUtils.isNotBlank(bo.getUpdateBy()), "mc.update_by", bo.getUpdateBy()); + // 统一处理 warehouseId 与 warehouseIds: + List warehouseIdList = new ArrayList<>(); + if (bo.getWarehouseId() != null) { + warehouseIdList.add(bo.getWarehouseId()); + } + if (StringUtils.isNotBlank(bo.getWarehouseIds())) { + String[] warehouseIdArray = bo.getWarehouseIds().split(","); + for (String warehouseIdStr : warehouseIdArray) { + if (StringUtils.isNotBlank(warehouseIdStr)) { + try { + warehouseIdList.add(Long.parseLong(warehouseIdStr.trim())); + } catch (NumberFormatException ignore) { + } + } + } + } + if (!warehouseIdList.isEmpty()) { + qw.in("mc.warehouse_id", warehouseIdList.stream().distinct().collect(Collectors.toList())); + } + // 新增长度 qw.eq(bo.getLength() != null, "mc.length", bo.getLength()); // 如果actualWarehouseId不为空,则根据实际库区ID进行查询 如果为-1,则查询无库区的数据 From 45d09812cf00a9937b5b3719e2ea8377096e9c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Thu, 15 Jan 2026 17:13:07 +0800 Subject: [PATCH 05/39] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E5=9C=A8?= =?UTF-8?q?=E5=88=86=E6=9D=A1=E5=BA=93=E7=9A=84=E9=92=A2=E5=8D=B7=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加onlySplit.vue文件,实现线圈分切页面的基础框架和配置,包括仓库ID、标签类型等参数设置 --- klp-ui/src/views/wms/coil/onlySplit.vue | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 klp-ui/src/views/wms/coil/onlySplit.vue diff --git a/klp-ui/src/views/wms/coil/onlySplit.vue b/klp-ui/src/views/wms/coil/onlySplit.vue new file mode 100644 index 00000000..c6a9a8a0 --- /dev/null +++ b/klp-ui/src/views/wms/coil/onlySplit.vue @@ -0,0 +1,26 @@ + + + \ No newline at end of file From 1b5efc00f6d4ab6915773a8aa277f61aa8c7d4d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Thu, 15 Jan 2026 17:33:54 +0800 Subject: [PATCH 06/39] =?UTF-8?q?fix(wms):=20=E4=BF=AE=E6=AD=A3=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E9=80=89=E6=8B=A9=E5=99=A8=E7=AD=9B=E9=80=89=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=8F=8A=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一钢卷选择器的selectType为'product'并添加status过滤 - 修复materialType与selectType的映射关系 - 移除分页组件的rangeMode条件限制 - 更新部分字段显示名称 --- klp-ui/src/components/CoilSelector/index.vue | 3 ++- klp-ui/src/views/wms/coil/do/ship.vue | 4 +++- klp-ui/src/views/wms/coil/panels/base.vue | 2 +- klp-ui/src/views/wms/delivery/mycoil/index.vue | 9 +++++---- klp-ui/src/views/wms/delivery/permi/index.vue | 4 ++++ 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue index eb6ad4fa..5acd7105 100644 --- a/klp-ui/src/components/CoilSelector/index.vue +++ b/klp-ui/src/components/CoilSelector/index.vue @@ -161,7 +161,8 @@ export default { pageSize: 10, currentCoilNo: null, grade: null, - selectType: 'raw_material', + selectType: 'product', + status: 0, // 不包含已发货的钢卷 dataType: 1 // 只查询当前数据,不查询历史数据 }, columns: defaultColumns, diff --git a/klp-ui/src/views/wms/coil/do/ship.vue b/klp-ui/src/views/wms/coil/do/ship.vue index b9149517..0ba03768 100644 --- a/klp-ui/src/views/wms/coil/do/ship.vue +++ b/klp-ui/src/views/wms/coil/do/ship.vue @@ -220,7 +220,9 @@ export default { // 钢卷选择器筛选参数 coilFilters: { dataType: 1, - materialType: '成品' + materialType: '成品', + selectType: 'product', + status: 0, }, coilSelectorVisible: false, loading: false, diff --git a/klp-ui/src/views/wms/coil/panels/base.vue b/klp-ui/src/views/wms/coil/panels/base.vue index 60d980be..870aead8 100644 --- a/klp-ui/src/views/wms/coil/panels/base.vue +++ b/klp-ui/src/views/wms/coil/panels/base.vue @@ -633,7 +633,7 @@ export default { endTime: this.queryParams.updateTime?.[1], } // 如果没有设置itemType,则设置为raw_material - query.selectType = this.querys.materialType === '成品' ? 'product' : 'raw_material'; + query.selectType = this.querys.materialType === '原料' ? 'raw_material' : 'product'; listMaterialCoil(query).then(response => { if (this.querys.warehouseId != 111) { // 排除掉111仓库的 diff --git a/klp-ui/src/views/wms/delivery/mycoil/index.vue b/klp-ui/src/views/wms/delivery/mycoil/index.vue index 8eaf8c3e..1dd45857 100644 --- a/klp-ui/src/views/wms/delivery/mycoil/index.vue +++ b/klp-ui/src/views/wms/delivery/mycoil/index.vue @@ -36,7 +36,7 @@ - @@ -68,8 +68,9 @@ export default { currentCoilNo: null, grade: null, materialType: '成品', - selectType: 'raw_material', - dataType: 1 // 只查询当前数据,不查询历史数据 + selectType: 'product', + dataType: 1, // 只查询当前数据,不查询历史数据 + // status: 0 // 只查询未发货的数据 }, columns: [ { @@ -122,7 +123,7 @@ export default { width: '100' }, { - label: '库区', + label: '逻辑库区', align: 'center', prop: 'warehouseName', width: '120', diff --git a/klp-ui/src/views/wms/delivery/permi/index.vue b/klp-ui/src/views/wms/delivery/permi/index.vue index 76a52652..b2ff2470 100644 --- a/klp-ui/src/views/wms/delivery/permi/index.vue +++ b/klp-ui/src/views/wms/delivery/permi/index.vue @@ -223,6 +223,8 @@ export default { queryParamsWithSalesId: { selectType: 'product', materialType: '成品', + dataType: 1, + status: 0, saleId: undefined, pageNum: 1, pageSize: 10 @@ -231,6 +233,8 @@ export default { queryParamsWithUnAssignedId: { selectType: 'product', materialType: '成品', + dataType: 1, + status: 0, saleId: -1, pageNum: 1, pageSize: 10 From 0dfe7c233c65e97fd5004978df4f2669b62e7965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Fri, 16 Jan 2026 07:25:08 +0800 Subject: [PATCH 07/39] =?UTF-8?q?fix(wms):=20=E5=B0=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E6=94=B6=E9=A1=B5=E9=9D=A2=E7=9A=84selectType?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BC=E6=94=B9=E4=B8=BAraw=5Fmaterial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- klp-ui/src/views/wms/report/receive.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/klp-ui/src/views/wms/report/receive.vue b/klp-ui/src/views/wms/report/receive.vue index f3fb98d4..cec49e78 100644 --- a/klp-ui/src/views/wms/report/receive.vue +++ b/klp-ui/src/views/wms/report/receive.vue @@ -148,7 +148,7 @@ export default { // status: 1, byCreateTimeStart: startTime, byCreateTimeEnd: endTime, - selectType: 'product', + selectType: 'raw_material', enterCoilNo: '', currentCoilNo: '', warehouseId: '', From fe4f191293d61951f96486011639a29ab1718e26 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 16 Jan 2026 09:13:19 +0800 Subject: [PATCH 08/39] =?UTF-8?q?fix(wms):=20=E4=BF=AE=E5=A4=8D=E6=9D=90?= =?UTF-8?q?=E6=96=99=E5=8D=B7=E5=8F=B7=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在查询条件中添加数据类型过滤器 (dataType=1) - 确保只对特定类型的数据进行重复检查 - 修正了进入卷号和当前卷号的重复验证逻辑 --- .../com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 6094e6fe..314038be 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 @@ -2600,7 +2600,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (StringUtils.isNotBlank(enterCoilNo)) { LambdaQueryWrapper enterWrapper = Wrappers.lambdaQuery(); enterWrapper.eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo) - .eq(WmsMaterialCoil::getDelFlag, 0); + .eq(WmsMaterialCoil::getDelFlag, 0) + .eq(WmsMaterialCoil::getDataType, 1); long enterCount = baseMapper.selectCount(enterWrapper); enterCoilNoDuplicate = enterCount > 0; } @@ -2609,7 +2610,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (StringUtils.isNotBlank(currentCoilNo)) { LambdaQueryWrapper currentWrapper = Wrappers.lambdaQuery(); currentWrapper.eq(WmsMaterialCoil::getCurrentCoilNo, currentCoilNo) - .eq(WmsMaterialCoil::getDelFlag, 0); + .eq(WmsMaterialCoil::getDelFlag, 0) + .eq(WmsMaterialCoil::getDataType, 1); + long currentCount = baseMapper.selectCount(currentWrapper); currentCoilNoDuplicate = currentCount > 0; } From f85cea4dca8aa0828c4d8bf32dfd138a298f6c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Fri, 16 Jan 2026 09:18:19 +0800 Subject: [PATCH 09/39] =?UTF-8?q?fix(wms):=20=E5=9C=A8=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8F=82=E6=95=B0=E4=B8=AD=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?selectType=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为三个仓库的报表查询参数统一添加selectType字段,确保查询条件一致 --- klp-ui/src/views/wms/report/zha.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/klp-ui/src/views/wms/report/zha.vue b/klp-ui/src/views/wms/report/zha.vue index 64ef6096..e9f77d29 100644 --- a/klp-ui/src/views/wms/report/zha.vue +++ b/klp-ui/src/views/wms/report/zha.vue @@ -185,6 +185,7 @@ export default { pageSize: 9999, pageNum: 1, dataType: 1, + selectType: 'raw_material', createBy: 'suanzhakuguan', warehouseId: '1988150263284953089' }), @@ -194,6 +195,7 @@ export default { pageSize: 9999, pageNum: 1, dataType: 1, + selectType: 'raw_material', createBy: 'suanzhakuguan', warehouseId: '1988150545175736322' }), @@ -203,6 +205,7 @@ export default { pageSize: 9999, pageNum: 1, dataType: 1, + selectType: 'raw_material', createBy: 'suanzhakuguan', warehouseId: '1988150150521090049' }), From 57889781bbed7958b1c6c3f8de82e8b48115a675 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 16 Jan 2026 10:12:10 +0800 Subject: [PATCH 10/39] =?UTF-8?q?feat(wms):=20=E6=9B=B4=E6=96=B0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E5=8F=B7=E9=87=8D=E5=A4=8D=E6=A3=80=E6=9F=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 checkCoilNoDuplicate 方法中添加 coilId 参数以支持修改操作 - 修改控制器层接口,增加可选的 coilId 请求参数 - 实现修改操作时排除自身的重复检查逻辑 - 添加历史数据类型验证,防止对已更新钢卷进行操作 - 在钢卷修改和删除方法中增加 dataType 为 0 的历史数据检查 --- .../controller/WmsMaterialCoilController.java | 3 ++- .../klp/service/IWmsMaterialCoilService.java | 2 +- .../impl/WmsMaterialCoilServiceImpl.java | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 3 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 6cc72830..bcb7254e 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -266,9 +266,10 @@ public class WmsMaterialCoilController extends BaseController { */ @GetMapping("/checkCoilNoDuplicate") public R> checkCoilNoDuplicate( + @RequestParam(required = false) Long coilId, @RequestParam(required = false) String enterCoilNo, @RequestParam(required = false) String currentCoilNo) { - Map result = iWmsMaterialCoilService.checkCoilNoDuplicate(enterCoilNo, currentCoilNo); + Map result = iWmsMaterialCoilService.checkCoilNoDuplicate(coilId,enterCoilNo, currentCoilNo); return R.ok(result); } 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 289c60da..3b3f4f91 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -125,7 +125,7 @@ public interface IWmsMaterialCoilService { * - enterCoilNoDuplicate: 入场钢卷号是否重复 (true/false) * - currentCoilNoDuplicate: 当前钢卷号是否重复 (true/false) */ - Map checkCoilNoDuplicate(String enterCoilNo, String currentCoilNo); + Map checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo); /** * 根据入场钢卷号前缀查询最大的入场钢卷号 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 314038be..ecb2bf92 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 @@ -984,6 +984,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (oldCoil == null) { throw new RuntimeException("钢卷不存在"); } + // 判断数据类型 0=历史数据 1=正常数据 + if (oldCoil.getDataType() == 0) { + throw new RuntimeException("原钢卷已被更新"); + } // 若修改实际库位,先进行校验 if (bo.getActualWarehouseId() != null) { @@ -1033,6 +1037,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { throw new RuntimeException("原钢卷不存在"); } + // oldCoil 如果是历史卷也就是date_type=0 的时候就是历史钢卷 + if (oldCoil.getDataType() == 0) { + throw new RuntimeException("原钢卷已被更新"); + } + // 若修改实际库位,先进行校验 if (bo.getActualWarehouseId() != null) { Long ignoreOccupiedId = Objects.equals(bo.getActualWarehouseId(), oldCoil.getActualWarehouseId()) @@ -2590,7 +2599,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { * 根据入场钢卷号和当前钢卷号查询数据库,判断哪个钢卷号重复 */ @Override - public Map checkCoilNoDuplicate(String enterCoilNo, String currentCoilNo) { + public Map checkCoilNoDuplicate(Long coilId, String enterCoilNo, String currentCoilNo) { Map result = new HashMap<>(); boolean enterCoilNoDuplicate = false; @@ -2602,6 +2611,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { enterWrapper.eq(WmsMaterialCoil::getEnterCoilNo, enterCoilNo) .eq(WmsMaterialCoil::getDelFlag, 0) .eq(WmsMaterialCoil::getDataType, 1); + // 如果是修改操作,排除自身 + if (coilId != null) { + enterWrapper.ne(WmsMaterialCoil::getCoilId, coilId); + } long enterCount = baseMapper.selectCount(enterWrapper); enterCoilNoDuplicate = enterCount > 0; } @@ -2612,6 +2625,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { currentWrapper.eq(WmsMaterialCoil::getCurrentCoilNo, currentCoilNo) .eq(WmsMaterialCoil::getDelFlag, 0) .eq(WmsMaterialCoil::getDataType, 1); + // 如果是修改操作,排除自身 + if (coilId != null) { + currentWrapper.ne(WmsMaterialCoil::getCoilId, coilId); + } long currentCount = baseMapper.selectCount(currentWrapper); currentCoilNoDuplicate = currentCount > 0; From 20d2ab1725550e465db4c73499e1b864ccf3179d Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 16 Jan 2026 11:17:00 +0800 Subject: [PATCH 11/39] =?UTF-8?q?fix(wms):=20=E8=A7=A3=E5=86=B3=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E6=95=B0=E6=8D=AE=E9=92=A2=E5=8D=B7=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ServiceException 导入用于异常处理 - 增加历史数据校验逻辑,防止历史数据钢卷被发货 - 当检测到历史数据时抛出运行时异常并提示相应信息 --- .../com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) 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 ecb2bf92..5673312d 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 @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.exception.ServiceException; import com.klp.common.helper.LoginHelper; import com.klp.common.utils.StringUtils; import com.klp.common.utils.spring.SpringUtils; @@ -2225,6 +2226,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { WmsMaterialCoilVo wmsMaterialCoilVo = queryById(coilId); Long oldActualWarehouseId = wmsMaterialCoilVo != null ? wmsMaterialCoilVo.getActualWarehouseId() : null; + // 如果当前钢卷为历史数据应该抛异常 + if (wmsMaterialCoilVo != null && wmsMaterialCoilVo.getDataType() == 0) { + throw new RuntimeException("当前数据为历史数据,请勿发货!"); + } // 1. 更新钢卷为已发货,并记录发货时间,同时清空实际库区占用(改用Wrapper实现) int rows = 0; //获取当前调用接口的这个人的username From a643b25f9f0584e2c4aedf0479f14bce53acce24 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 16 Jan 2026 11:30:41 +0800 Subject: [PATCH 12/39] =?UTF-8?q?fix(wms):=20=E4=BF=AE=E5=A4=8D=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=8D=B7=E6=9D=90=E6=9F=A5=E8=AF=A2=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复了当 hasSelectType 为 true 但 hasAnyItemFilter 为 false 时的条件判断问题 - 调整了筛选逻辑的位置,确保只在满足双重条件时执行相关筛选 - 移除了多余的右大括号,优化了代码结构 --- .../com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 5673312d..ecd10735 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 @@ -432,9 +432,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } // 使用 EXISTS 针对 selectType 的细粒度筛选(使用参数占位符防注入) - if (hasSelectType) { - qw.eq("mc.item_type", bo.getSelectType()); - if (hasAnyItemFilter) { + if (hasSelectType && hasAnyItemFilter) { + // 执行筛选逻辑(和上面完全一样) + qw.eq("mc.item_type", bo.getSelectType()); StringBuilder existsSql = new StringBuilder(); List existsArgs = new ArrayList<>(); if ("product".equals(bo.getSelectType())) { @@ -474,7 +474,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { qw.apply(existsSql.toString(), existsArgs.toArray()); } } - } // 显式 itemId 条件:与 EXISTS 共存时,语义为交集 if (CollectionUtils.isNotEmpty(explicitItemIds)) { From a3a04efd1aea5b79465c450b41a868b307cd3317 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 16 Jan 2026 11:53:21 +0800 Subject: [PATCH 13/39] =?UTF-8?q?refactor(wms):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E9=92=A2=E5=8D=B7=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除了对历史数据类型的验证逻辑 - 简化了钢卷更新时的数据校验流程 - 移除了 dataType 等于 0 时的异常抛出机制 --- .../java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) 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 ecd10735..eb946d68 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 @@ -984,10 +984,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (oldCoil == null) { throw new RuntimeException("钢卷不存在"); } - // 判断数据类型 0=历史数据 1=正常数据 - if (oldCoil.getDataType() == 0) { - throw new RuntimeException("原钢卷已被更新"); - } // 若修改实际库位,先进行校验 if (bo.getActualWarehouseId() != null) { From ea9f7fce34c8dbe8a21bc5b394857b9970d89592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Fri, 16 Jan 2026 13:07:30 +0800 Subject: [PATCH 14/39] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=92=8C=E4=BC=98=E5=8C=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复钢卷历史页面控制显示问题 - 在交货报表中添加dataType参数 - 修改checkCoilNo接口支持coilId参数 - 优化镀锌报表查询逻辑,使用Promise.all并行请求 - 修复轧硬报表仓库ID错误问题 - 移除钢卷入库页面的只读限制 - 修复钢卷删除功能,支持删除带coilId的记录 --- klp-ui/src/api/wms/coil.js | 5 +- klp-ui/src/views/wms/coil/do/warehousing.vue | 54 +++++++++++--------- klp-ui/src/views/wms/coil/history.vue | 2 +- klp-ui/src/views/wms/report/delivery.vue | 1 + klp-ui/src/views/wms/report/zha.vue | 13 ++--- klp-ui/src/views/wms/report/zinc.vue | 33 ++++++++---- 6 files changed, 64 insertions(+), 44 deletions(-) diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index 1dc86698..d6cd5583 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -194,13 +194,14 @@ export function cancelExportCoil(coilId) { } // 检查入场钢卷号或当前钢卷号是否合法(是否存在) -export function checkCoilNo({ currentCoilNo, enterCoilNo }) { +export function checkCoilNo({ currentCoilNo, enterCoilNo, coilId }) { return request({ url: '/wms/materialCoil/checkCoilNoDuplicate', method: 'get', params: { currentCoilNo, - enterCoilNo + enterCoilNo, + coilId } }) } diff --git a/klp-ui/src/views/wms/coil/do/warehousing.vue b/klp-ui/src/views/wms/coil/do/warehousing.vue index 6ac42449..471c3e78 100644 --- a/klp-ui/src/views/wms/coil/do/warehousing.vue +++ b/klp-ui/src/views/wms/coil/do/warehousing.vue @@ -61,8 +61,7 @@ - + diff --git a/klp-ui/src/views/wms/coil/panels/base.vue b/klp-ui/src/views/wms/coil/panels/base.vue index a438499b..a8ca0940 100644 --- a/klp-ui/src/views/wms/coil/panels/base.vue +++ b/klp-ui/src/views/wms/coil/panels/base.vue @@ -202,7 +202,7 @@ - + From 6050abd89b842813d7e78f02ec04595f21d022ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Fri, 16 Jan 2026 15:09:45 +0800 Subject: [PATCH 16/39] =?UTF-8?q?feat(=E9=92=A2=E5=8D=B7=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?):=20=E6=B7=BB=E5=8A=A0=E9=92=A2=E5=8D=B7=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=92=8C=E8=BE=B9=E6=A1=86=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在标题下方添加状态说明文本 - 根据dataType动态设置钢卷卡片边框颜色 - 显示materialType字段并移除注释 - 调整footer按钮显示条件 - 合并重复的dicts配置 --- klp-ui/src/views/wms/coil/do/correct.vue | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/klp-ui/src/views/wms/coil/do/correct.vue b/klp-ui/src/views/wms/coil/do/correct.vue index afc2b47f..62eebfb2 100644 --- a/klp-ui/src/views/wms/coil/do/correct.vue +++ b/klp-ui/src/views/wms/coil/do/correct.vue @@ -5,7 +5,11 @@
-

查找钢卷并修正

+

+ 查找钢卷并修正 + 绿色边框表示当前钢卷,灰色边框表示历史钢卷 +

+ 刷新
@@ -31,13 +35,13 @@

暂无待领物料

- +
+ :style="item.dataType === 0 ? 'border: 1.5px solid #e4e7ed' : item.dataType === 1 ? 'border: 1.5px solid green' : 'border: 1.5px solid yellow'">
{{ item.currentCoilNo }} - + {{ item.materialType || '原料' }}
@@ -178,7 +182,7 @@
-