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)) {