From df51abe33fe0690987e40de21c465b5780d144cc Mon Sep 17 00:00:00 2001 From: zhaoqing <3160641494@qq.com> Date: Wed, 12 Aug 2026 17:53:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(wms):total=5Fvolume=EF=BC=8Ctotal=5Farea?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8F=AF=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReceiptMaterialDetailImpl.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java index 5226eb019..ae0bfd10f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java @@ -492,6 +492,8 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl receiptMaterialDetailList) { + if (CollectionUtils.isEmpty(receiptMaterialDetailList)) { + return; + } + // 列名组合 -> materialDetailId 列表(total_volume / total_area / 两者) + Map> columnsToIds = new HashMap<>(); + for (ReceiptMaterialDetail detail : receiptMaterialDetailList) { + if (detail == null || detail.getMaterialDetailId() == null) { + continue; + } + StringBuilder columns = new StringBuilder(); + if (detail.getTotalVolume() == null) { + columns.append("total_volume"); + } + if (detail.getTotalArea() == null) { + if (columns.length() > 0) { + columns.append(","); + } + columns.append("total_area"); + } + if (columns.length() == 0) { + continue; + } + columnsToIds.computeIfAbsent(columns.toString(), k -> new ArrayList<>()) + .add(detail.getMaterialDetailId()); + } + if (columnsToIds.isEmpty()) { + return; + } + for (Map.Entry> entry : columnsToIds.entrySet()) { + UpdateWrapper wrapper = new UpdateWrapper<>(); + for (String column : entry.getKey().split(",")) { + wrapper.set(column, null); + } + wrapper.in("material_detail_id", entry.getValue()); + receiptMaterialDetailMapper.update(null, wrapper); + } + } + private void setMore(ReceiptMaterialDetailDO receiptMaterialDetailDO) { List materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList(); if (!CollectionUtils.isEmpty(materialMoreDetailList)) {