Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401

This commit is contained in:
秦鸿展
2026-04-16 13:58:46 +08:00
3 changed files with 37 additions and 4 deletions
@@ -2,6 +2,7 @@ package com.mhd.wms.domain.outMaterialDetail.repository.persistence;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.common.core.constant.SnowFlakeConstants;
@@ -50,10 +51,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -711,6 +709,15 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
throw new ServiceException("物料信息不存在");
}
OutMaterialDetail outMaterialDetail = new OutMaterialDetail();
if (!CollectionUtils.isEmpty(outMaterialDetailDO.getCopyCodeReferenceIdsCancel())){
//数据库中的抄码信息
String copyCodeReferenceIds = outMaterialDetailDb.getCopyCodeReferenceIds();
List<Integer> copyCodeReferenceIdsCancel = outMaterialDetailDO.getCopyCodeReferenceIdsCancel();
List<Integer> idsList = Arrays.stream(copyCodeReferenceIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
List<Integer> collect = idsList.stream().filter(id -> !copyCodeReferenceIdsCancel.contains(id)).collect(Collectors.toList());
String resultStr = collect.stream().map(String::valueOf).collect(Collectors.joining(","));
outMaterialDetail.setCopyCodeReferenceIds(resultStr);
}
outMaterialDetail.setBarCode(outMaterialDetailDb.getBarCode());
outMaterialDetail.setMaterialNo(outMaterialDetailDb.getMaterialNo());
outMaterialDetail.setMaterialName(outMaterialDetailDb.getMaterialName());
@@ -737,6 +744,16 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
throw new ServiceException("物料信息不存在");
}
OutMaterialDetail outMaterialDetailChild = new OutMaterialDetail();
//数据库中的抄码信息
if (!CollectionUtils.isEmpty(outMaterialDetailDOChild.getCopyCodeReferenceIdsCancel())){
String copyCodeReferenceIdsChild = outMaterialDetailChildDb.getCopyCodeReferenceIds();
List<Integer> copyCodeReferenceIdsCancelChild = outMaterialDetailDOChild.getCopyCodeReferenceIdsCancel();
List<Integer> idsListChild = Arrays.stream(copyCodeReferenceIdsChild.split(",")).map(Integer::parseInt).collect(Collectors.toList());
List<Integer> collectChild = idsListChild.stream().filter(id -> !copyCodeReferenceIdsCancelChild.contains(id)).collect(Collectors.toList());
String resultStrChild = collectChild.stream().map(String::valueOf).collect(Collectors.joining(","));
outMaterialDetail.setCopyCodeReferenceIds(resultStrChild);
}
outMaterialDetailChild.setMaterialDetailId(outMaterialDetailDOChild.getMaterialDetailId());
// 子项同样视为全部取消分配:分配数量/已分配数量扣减取消数量,并清空库位/批次等信息
@@ -832,6 +849,14 @@ public class OutMaterialDetailImpl extends ServiceImpl<OutMaterialDetailMapper,
//记录收货单收货总数
totalAllocationQuantity = totalAllocationQuantity.add(allocationQuantity);
totalAlreadyAllocationQuantity = totalAlreadyAllocationQuantity.add(alreadyAllocationQuantity);
//抄码商品取消分配
if (!CollectionUtils.isEmpty(outMaterialDetailDO.getCopyCodeReferenceIdsCancel())){
copyCodeReferenceService.lambdaUpdate()
.set(CopyCodeReference::getMaterialStatusCode, 1)
.set(CopyCodeReference::getMaterialStatusName, "可用")
.in(CopyCodeReference::getId, outMaterialDetailDO.getCopyCodeReferenceIdsCancel());
}
}
stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity);
stockOutOrderPO.setAlreadyAllocationQuantity(totalAlreadyAllocationQuantity);
@@ -481,4 +481,8 @@ public class OutMaterialDetailDO extends BaseVOEntity {
@ApiModelProperty("抄码总重量")
@Excel(name = "抄码总重量")
private BigDecimal copyTotalWeight;
@ApiModelProperty("取消分配抄码id数组")
@Excel(name = "取消分配抄码id数组")
private List<Integer> copyCodeReferenceIdsCancel;
}
@@ -471,4 +471,8 @@ public class OutMaterialDetailDTO extends BaseVOEntity {
@Excel(name = "抄码总重量")
private BigDecimal copyTotalWeight;
@ApiModelProperty("取消分配抄码id数组")
@Excel(name = "取消分配抄码id数组")
private List<Integer> copyCodeReferenceIdsCancel;
}