修改质检物料收货的条码逻辑,更改了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.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.dto.*;
import com.nflg.wms.common.pojo.qo.PoReceiveTaskConfirmQO; import com.nflg.wms.common.pojo.qo.*;
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.vo.*; import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.DateTimeUtil;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
@ -38,10 +35,7 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -173,8 +167,8 @@ public class NormalPGIController extends BaseController {
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>(); List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>(); List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
for (SrmMaterialReceiptQO item : request) { for (SrmMaterialReceiptQO item : request) {
if (item.getReceiptNum().equals(BigDecimal.ZERO)) if (item.getReceiptNum().equals(BigDecimal.ZERO))
continue; continue;
@ -200,6 +194,22 @@ public class NormalPGIController extends BaseController {
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder); 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()); normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
return ApiResult.success(); return ApiResult.success();
} }
@ -448,23 +458,29 @@ public class NormalPGIController extends BaseController {
SrmMaterialReceiptQO item, SrmMaterialReceiptQO item,
SAPSyncParamsDTO materialInfoInOrder SAPSyncParamsDTO materialInfoInOrder
) { ) {
if (CollectionUtil.isNotEmpty(codes)) { 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(); SRMLineVOListItem srmItem = new SRMLineVOListItem();
srmItem.setItemCode(item.getItemCode()); srmItem.setItemCode(item.getItemCode());
srmItem.setItemName(materialInfoInOrder.getMaktx()); srmItem.setItemName(materialInfoInOrder.getMaktx());
srmItem.setUnit(materialInfoInOrder.getMeins()); srmItem.setUnit(materialInfoInOrder.getMeins());
srmItem.setFactory(materialInfoInOrder.getWerks()); srmItem.setFactory(materialInfoInOrder.getWerks());
srmItem.setReceivedWarehouse(materialInfoInOrder.getWarehouseNo()); srmItem.setReceivedWarehouse(materialInfoInOrder.getWarehouseNo());
srmItem.setReceiveBatchNum(code.getBatchNumber()); srmItem.setReceiveBatchNum(keys[0]);
srmItem.setReceivedQty(code.getCodeNum()); srmItem.setReceivedQty(entry.getValue());
srmItem.setSerialNum(code.getSerialNumbers()); srmItem.setSerialNum(keys[1]);
srmItem.setLineNumber(Integer.valueOf(item.getLineNumber())); srmItem.setLineNumber(Integer.valueOf(item.getLineNumber()));
srmItem.setNoteNum(item.getNoteNum()); srmItem.setNoteNum(item.getNoteNum());
srmItem.setReceivedDate(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); srmItem.setReceivedDate(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"));
srmItem.setInspectionFlag("Y"); srmItem.setInspectionFlag("Y");
pushDto.getContent().getLineVOList().add(srmItem); pushDto.getContent().getLineVOList().add(srmItem);
}); }
} else { } else {
SRMLineVOListItem srmItem = new SRMLineVOListItem(); SRMLineVOListItem srmItem = new SRMLineVOListItem();
srmItem.setItemCode(item.getItemCode()); srmItem.setItemCode(item.getItemCode());

View File

@ -1,5 +1,6 @@
package com.nflg.wms.admin.pojo.document; package com.nflg.wms.admin.pojo.document;
import com.nflg.wms.common.pojo.dto.SRMTokenInputDTO;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -11,7 +12,7 @@ import java.math.BigDecimal;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Document(collection = "SrmMaterialReceiptScanCodes") @Document(collection = "SrmMaterialReceiptScanCodes")
public class SrmMaterialReceiptScanCodes{ public class SrmMaterialReceiptScanCodes {
@Id @Id
private String id; private String id;
@ -50,4 +51,10 @@ public class SrmMaterialReceiptScanCodes{
* 二维码内容 * 二维码内容
*/ */
private String codeContent; 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 @Repository
public interface SrmMaterialReceiptScanCodesRepository extends MongoRepository<SrmMaterialReceiptScanCodes, String> { public interface SrmMaterialReceiptScanCodesRepository extends MongoRepository<SrmMaterialReceiptScanCodes, String> {
List<SrmMaterialReceiptScanCodes> findByOrderItemId(String orderItemId); 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()); ).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum());
} }
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>(); List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
List<String> codeIds = new ArrayList<>();
for (PDAScanCodeQO scanCode : item.getScanCodes()) { for (PDAScanCodeQO scanCode : item.getScanCodes()) {
VUtil.trueThrowBusinessError(codeIds.contains(scanCode.getCodeId())).throwMessage("此物料[" + item.getItemCode() + "]中存在重复的条码" + scanCode.getCodeId());
codeIds.add(scanCode.getCodeId());
srmMaterialReceiptScanCodes.add( srmMaterialReceiptScanCodes.add(
new SrmMaterialReceiptScanCodes() new SrmMaterialReceiptScanCodes()
.setOrderItemId(item.getId()) .setOrderItemId(item.getId())
@ -194,6 +197,11 @@ public class NormalPGIControllerService {
.setSerialNumbers(scanCode.getSerialNumbers()) .setSerialNumbers(scanCode.getSerialNumbers())
.setCodeContent(scanCode.getCodeContent())); .setCodeContent(scanCode.getCodeContent()));
} }
//查看是否有重复的条码
List<SrmMaterialReceiptScanCodes> existingCodes = srmMaterialReceiptCanCodesRepository.findByCodeIdIn(codeIds);
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(existingCodes)).throwMessage("存在已使用的条码,不能重复使用");
return srmMaterialReceiptScanCodes; return srmMaterialReceiptScanCodes;
} }
@ -253,8 +261,8 @@ public class NormalPGIControllerService {
//修改收货单的物料凭证和年度物料凭证 //修改收货单的物料凭证和年度物料凭证
if (CollectionUtil.isNotEmpty(ids)) { if (CollectionUtil.isNotEmpty(ids)) {
wmsQcReceiveItemService.lambdaUpdate() wmsQcReceiveItemService.lambdaUpdate()
.set(WmsQcReceiveItem::getMaterialDoc, zwm3A17ReturnDTO.getKey().getKey()) .set(WmsQcReceiveItem::getMaterialDoc, zwm3A17ReturnDTO.getValue().getKey())
.set(WmsQcReceiveItem::getMaterialDocYear, zwm3A17ReturnDTO.getKey().getValue()) .set(WmsQcReceiveItem::getMaterialDocYear, zwm3A17ReturnDTO.getValue().getValue())
.in(WmsQcReceiveItem::getId, ids) .in(WmsQcReceiveItem::getId, ids)
.update(); .update();
} }

View File

@ -404,7 +404,7 @@ public class UserControllerService {
public IPage<UserSupplierVO> searchSupplier(@Valid UserSupplierSearchQO request) { public IPage<UserSupplierVO> searchSupplier(@Valid UserSupplierSearchQO request) {
IPage<UserSupplierVO> pu = userSupplierService.search(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; 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 * 部门id
*/ */
@NotBlank @NotNull
private Long deptId; private Long deptId;
/** /**
@ -57,12 +57,10 @@ public class UserUpdateQO {
/** /**
* 初始化密码后是否强制要求登录后重设密码 * 初始化密码后是否强制要求登录后重设密码
*/ */
@NotNull private Boolean enableMustResetPwd = false;
private Boolean enableMustResetPwd;
/** /**
* 默认语言 * 默认语言
*/ */
@NotBlank
private String languageCode; private String languageCode;
} }

View File

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

View File

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