diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 2cb971b7..8fe905a2 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -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 = new ArrayList<>(); List 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 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 batchNumbers = codes.stream() + .collect(Collectors.groupingBy(SrmMaterialReceiptScanCodes::getKey, + Collectors.mapping(SrmMaterialReceiptScanCodes::getCodeNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); + for (Map.Entry 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()); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java index faf511a4..77b2eb0e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/document/SrmMaterialReceiptScanCodes.java @@ -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; + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java index 700d2b6f..9d8a194c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/repository/SrmMaterialReceiptScanCodesRepository.java @@ -9,4 +9,6 @@ import java.util.List; @Repository public interface SrmMaterialReceiptScanCodesRepository extends MongoRepository { List findByOrderItemId(String orderItemId); + + List findByCodeIdIn(List attr0); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java index 8ff626fa..f041119a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java @@ -183,7 +183,10 @@ public class NormalPGIControllerService { ).throwMessage("此物料[" + item.getItemCode() + "]必须填写序列号,订单号:" + item.getPoNum()); } List srmMaterialReceiptScanCodes = new ArrayList<>(); + List 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 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(); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java index 76ebe130..c63ae9e8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java @@ -404,7 +404,7 @@ public class UserControllerService { public IPage searchSupplier(@Valid UserSupplierSearchQO request) { IPage 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; } diff --git a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DataTest.java b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DataTest.java new file mode 100644 index 00000000..3eee1ff7 --- /dev/null +++ b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DataTest.java @@ -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(); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserAddQO.java index 34dee8eb..bffd5c3b 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserAddQO.java @@ -62,7 +62,7 @@ public class UserAddQO { /** * 初始化密码后是否强制要求登录后重设密码 */ - private Boolean enableMustResetPwd; + private Boolean enableMustResetPwd=false; /** * 默认语言 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserUpdateQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserUpdateQO.java index 148b5d0c..d31ad3a4 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserUpdateQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/UserUpdateQO.java @@ -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; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserSupplierVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserSupplierVO.java index 94b64013..c7cc9aa2 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserSupplierVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserSupplierVO.java @@ -116,5 +116,5 @@ public class UserSupplierVO { private Boolean enableMustResetPwd; //所属角色 - private Collection roles; + private Collection roleIds; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserVO.java index a1ffd650..3419c53b 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/UserVO.java @@ -57,4 +57,6 @@ public class UserVO { //最后更新时间 private LocalDateTime updateTime; + + private String remark; }