修改质检物料收货的条码逻辑,更改了user的vo

This commit is contained in:
zhangke 2025-09-03 17:01:54 +08:00
parent df144e410c
commit 1080638f20
10 changed files with 69 additions and 24 deletions

View File

@ -18,10 +18,7 @@ import com.nflg.wms.admin.service.SAPCommonService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.*;
import com.nflg.wms.common.pojo.qo.PoReceiveTaskConfirmQO;
import com.nflg.wms.common.pojo.qo.PoReceiveTaskItemConfirmQO;
import com.nflg.wms.common.pojo.qo.SRMOrderSearchQO;
import com.nflg.wms.common.pojo.qo.SrmMaterialReceiptQO;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.DateTimeUtil;
import com.nflg.wms.common.util.UserUtil;
@ -38,10 +35,7 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -173,8 +167,8 @@ public class NormalPGIController extends BaseController {
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
for (SrmMaterialReceiptQO item : request) {
if (item.getReceiptNum().equals(BigDecimal.ZERO))
continue;
@ -200,6 +194,22 @@ public class NormalPGIController extends BaseController {
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
}
}
// 盘点条码是否重复
Map<String, Long> duplicateCodes = srmMaterialReceiptScanCodes.stream()
.collect(Collectors.groupingBy(
SrmMaterialReceiptScanCodes::getCodeId,
Collectors.counting()
))
.entrySet()
.stream()
.filter(entry -> entry.getValue() > 1)
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue
));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
return ApiResult.success();
}
@ -448,23 +458,29 @@ public class NormalPGIController extends BaseController {
SrmMaterialReceiptQO item,
SAPSyncParamsDTO materialInfoInOrder
) {
if (CollectionUtil.isNotEmpty(codes)) {
codes.forEach(code -> {
// 根据 BatchNumber SerialNumbers 分组并汇总 CodeNum
Map<String, BigDecimal> batchNumbers = codes.stream()
.collect(Collectors.groupingBy(SrmMaterialReceiptScanCodes::getKey,
Collectors.mapping(SrmMaterialReceiptScanCodes::getCodeNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
for (Map.Entry<String, BigDecimal> entry : batchNumbers.entrySet()) {
String[] keys = entry.getKey().split(";", -1);
SRMLineVOListItem srmItem = new SRMLineVOListItem();
srmItem.setItemCode(item.getItemCode());
srmItem.setItemName(materialInfoInOrder.getMaktx());
srmItem.setUnit(materialInfoInOrder.getMeins());
srmItem.setFactory(materialInfoInOrder.getWerks());
srmItem.setReceivedWarehouse(materialInfoInOrder.getWarehouseNo());
srmItem.setReceiveBatchNum(code.getBatchNumber());
srmItem.setReceivedQty(code.getCodeNum());
srmItem.setSerialNum(code.getSerialNumbers());
srmItem.setReceiveBatchNum(keys[0]);
srmItem.setReceivedQty(entry.getValue());
srmItem.setSerialNum(keys[1]);
srmItem.setLineNumber(Integer.valueOf(item.getLineNumber()));
srmItem.setNoteNum(item.getNoteNum());
srmItem.setReceivedDate(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"));
srmItem.setInspectionFlag("Y");
pushDto.getContent().getLineVOList().add(srmItem);
});
}
} else {
SRMLineVOListItem srmItem = new SRMLineVOListItem();
srmItem.setItemCode(item.getItemCode());

View File

@ -1,5 +1,6 @@
package com.nflg.wms.admin.pojo.document;
import com.nflg.wms.common.pojo.dto.SRMTokenInputDTO;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
@ -11,7 +12,7 @@ import java.math.BigDecimal;
@Data
@Accessors(chain = true)
@Document(collection = "SrmMaterialReceiptScanCodes")
public class SrmMaterialReceiptScanCodes{
public class SrmMaterialReceiptScanCodes {
@Id
private String id;
@ -50,4 +51,10 @@ public class SrmMaterialReceiptScanCodes{
* 二维码内容
*/
private String codeContent;
private String key;
public String getKey() {
return this.batchNumber + ";" + this.serialNumbers;
}
}

View File

@ -9,4 +9,6 @@ import java.util.List;
@Repository
public interface SrmMaterialReceiptScanCodesRepository extends MongoRepository<SrmMaterialReceiptScanCodes, String> {
List<SrmMaterialReceiptScanCodes> findByOrderItemId(String orderItemId);
List<SrmMaterialReceiptScanCodes> findByCodeIdIn(List<String> attr0);
}

View File

@ -183,7 +183,10 @@ public class NormalPGIControllerService {
).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum());
}
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
List<String> codeIds = new ArrayList<>();
for (PDAScanCodeQO scanCode : item.getScanCodes()) {
VUtil.trueThrowBusinessError(codeIds.contains(scanCode.getCodeId())).throwMessage("此物料[" + item.getItemCode() + "]中存在重复的条码" + scanCode.getCodeId());
codeIds.add(scanCode.getCodeId());
srmMaterialReceiptScanCodes.add(
new SrmMaterialReceiptScanCodes()
.setOrderItemId(item.getId())
@ -194,6 +197,11 @@ public class NormalPGIControllerService {
.setSerialNumbers(scanCode.getSerialNumbers())
.setCodeContent(scanCode.getCodeContent()));
}
//查看是否有重复的条码
List<SrmMaterialReceiptScanCodes> existingCodes = srmMaterialReceiptCanCodesRepository.findByCodeIdIn(codeIds);
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(existingCodes)).throwMessage("存在已使用的条码,不能重复使用");
return srmMaterialReceiptScanCodes;
}
@ -253,8 +261,8 @@ public class NormalPGIControllerService {
//修改收货单的物料凭证和年度物料凭证
if (CollectionUtil.isNotEmpty(ids)) {
wmsQcReceiveItemService.lambdaUpdate()
.set(WmsQcReceiveItem::getMaterialDoc, zwm3A17ReturnDTO.getKey().getKey())
.set(WmsQcReceiveItem::getMaterialDocYear, zwm3A17ReturnDTO.getKey().getValue())
.set(WmsQcReceiveItem::getMaterialDoc, zwm3A17ReturnDTO.getValue().getKey())
.set(WmsQcReceiveItem::getMaterialDocYear, zwm3A17ReturnDTO.getValue().getValue())
.in(WmsQcReceiveItem::getId, ids)
.update();
}

View File

@ -404,7 +404,7 @@ public class UserControllerService {
public IPage<UserSupplierVO> searchSupplier(@Valid UserSupplierSearchQO request) {
IPage<UserSupplierVO> pu = userSupplierService.search(request);
pu.getRecords().forEach(userVO -> userVO.setRoles(userRoleMapService.getAuthorizeRole(userVO.getId())));
pu.getRecords().forEach(userVO -> userVO.setRoleIds(userRoleMapService.getAuthorizeRole(userVO.getId())));
return pu;
}

View File

@ -0,0 +1,12 @@
package com.nflg.wms.admin;
import org.junit.jupiter.api.Test;
public class DataTest {
@Test
public void test() {
// SapMetaPrintTest sapMetaPrintTest = new SapMetaPrintTest();
// sapMetaPrintTest.ZIM_001();
}
}

View File

@ -62,7 +62,7 @@ public class UserAddQO {
/**
* 初始化密码后是否强制要求登录后重设密码
*/
private Boolean enableMustResetPwd;
private Boolean enableMustResetPwd=false;
/**
* 默认语言

View File

@ -40,7 +40,7 @@ public class UserUpdateQO {
/**
* 部门id
*/
@NotBlank
@NotNull
private Long deptId;
/**
@ -57,12 +57,10 @@ public class UserUpdateQO {
/**
* 初始化密码后是否强制要求登录后重设密码
*/
@NotNull
private Boolean enableMustResetPwd;
private Boolean enableMustResetPwd = false;
/**
* 默认语言
*/
@NotBlank
private String languageCode;
}

View File

@ -116,5 +116,5 @@ public class UserSupplierVO {
private Boolean enableMustResetPwd;
//所属角色
private Collection<RoleSimpleVO> roles;
private Collection<RoleSimpleVO> roleIds;
}

View File

@ -57,4 +57,6 @@ public class UserVO {
//最后更新时间
private LocalDateTime updateTime;
private String remark;
}