Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401
This commit is contained in:
+2
-2
@@ -15,8 +15,8 @@ public class CopyCodeReferencePO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@ApiModelProperty("id")
|
||||
private Integer id;
|
||||
@ApiModelProperty("抄码对照主键 id(PDA 提交 pickedCopyCodeReferenceIds 用)")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("序号")
|
||||
private Integer serialNumber;
|
||||
|
||||
+32
@@ -1,11 +1,13 @@
|
||||
package com.mhd.wms.domain.pickingMaterialDetail.repository.persistence;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import com.mhd.wms.domain.copyCodeReference.service.CopyCodeReferenceDomainService;
|
||||
import com.mhd.wms.domain.copyCodeReference.entity.CopyCodeReference;
|
||||
import com.mhd.wms.domain.copyCodeReference.repository.facade.ICopyCodeReferenceService;
|
||||
import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper;
|
||||
@@ -339,6 +341,36 @@ public class PickingMaterialDetailImpl extends ServiceImpl<PickingMaterialDetail
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate){
|
||||
// 与库中已有 picked_copy_code_reference_ids 再合并一次,避免多次拣货提交时仅带本批 id 覆盖历史已拣 id
|
||||
List<PickingMaterialDetailDO> pmdList = pickingMaterialDetailDOByUpdate.getPickingMaterialDetailList();
|
||||
if (!CollectionUtils.isEmpty(pmdList)) {
|
||||
List<Long> uniqueIds = pmdList.stream()
|
||||
.map(PickingMaterialDetailDO::getUniqueId)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
if (!uniqueIds.isEmpty()) {
|
||||
List<PickingMaterialDetail> rows = list(new LambdaQueryWrapper<PickingMaterialDetail>()
|
||||
.in(PickingMaterialDetail::getUniqueId, uniqueIds)
|
||||
.eq(PickingMaterialDetail::getDelFlag, 1));
|
||||
// HashMap.merge 不允许 value 为 null;picked_copy_code_reference_ids 未拣过时可能为 null
|
||||
Map<Long, String> pickedInDb = rows.stream()
|
||||
.filter(r -> r.getUniqueId() != null)
|
||||
.collect(Collectors.toMap(
|
||||
PickingMaterialDetail::getUniqueId,
|
||||
r -> Objects.toString(r.getPickedCopyCodeReferenceIds(), ""),
|
||||
(a, b) -> a));
|
||||
for (PickingMaterialDetailDO item : pmdList) {
|
||||
if (item.getUniqueId() == null) {
|
||||
continue;
|
||||
}
|
||||
String dbCsv = pickedInDb.get(item.getUniqueId());
|
||||
String merged = CopyCodeReferenceDomainService.mergeCommaSeparatedUniqueIds(
|
||||
dbCsv, item.getPickedCopyCodeReferenceIds());
|
||||
item.setPickedCopyCodeReferenceIds(merged);
|
||||
}
|
||||
}
|
||||
}
|
||||
int count = pickingMaterialDetailMapper.addQuantity(pickingMaterialDetailDOByUpdate);
|
||||
if (count == 0){
|
||||
throw new ServiceException("更新拣货单拣货数量失败");
|
||||
|
||||
Reference in New Issue
Block a user