From b9a2d4b9e5a75a6b5b4e18ab74c1a908b28892a1 Mon Sep 17 00:00:00 2001
From: youjie <272855983@qq.com>
Date: Wed, 7 Jun 2023 16:08:25 +0800
Subject: [PATCH] 一个库位 不能有多个容器

---
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java                    | 10 ++++++++++
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java                      | 43 +++++++++++++++++++++----------------------
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java |  2 +-
 3 files changed, 32 insertions(+), 23 deletions(-)

diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
index 1622dad..72bd349 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java
@@ -13,6 +13,7 @@ import org.jeecg.modules.wms.config.container.entity.Container;
 import org.jeecg.modules.wms.config.container.mapper.ContainerMapper;
 import org.jeecg.modules.wms.config.container.service.IContainerService;
 import org.jeecg.modules.wms.config.containerType.service.IContainerTypeService;
+import org.jeecg.utils.StringUtils;
 import org.jeecg.utils.constant.QuantityConstant;
 import org.springframework.stereotype.Service;
 
@@ -77,6 +78,15 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container
 
     @Override
     public boolean updateLocationCodeAndStatus(String containerCode, String locationCode, String status, String warehouseCode) {
+        if (StringUtils.isNotEmpty(locationCode)) {
+            LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery();
+            containerLambdaQueryWrapper.eq(Container::getLocationCode, locationCode).ne(Container::getCode, containerCode).eq(Container::getWarehouseCode,
+                warehouseCode);
+            Container container = getOne(containerLambdaQueryWrapper);
+            if (container != null) {
+                throw new JeecgBootException("容器已经存在于库位上" + container);
+            }
+        }
         LambdaUpdateWrapper<Container> updateWrapper = Wrappers.lambdaUpdate();
         updateWrapper.ne(Container::getStatus, status).eq(Container::getCode, containerCode).eq(Container::getWarehouseCode, warehouseCode)
             .set(Container::getLocationCode, locationCode).set(Container::getStatus, status);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java
index d0cd069..cfec542 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java
@@ -1,15 +1,7 @@
 package org.jeecg.modules.wms.config.location.service.impl;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -21,15 +13,7 @@ import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.wms.config.address.service.IAddressService;
 import org.jeecg.modules.wms.config.container.entity.Container;
 import org.jeecg.modules.wms.config.container.service.IContainerService;
-import org.jeecg.modules.wms.config.location.dto.CompareContainerTaskDto;
-import org.jeecg.modules.wms.config.location.dto.CompareLocationDto;
-import org.jeecg.modules.wms.config.location.dto.CompareLocationTaskDto;
-import org.jeecg.modules.wms.config.location.dto.QueryCompareContainerTaskDto;
-import org.jeecg.modules.wms.config.location.dto.QueryCompareLocationDto;
-import org.jeecg.modules.wms.config.location.dto.QueryCompareLocationTaskDto;
-import org.jeecg.modules.wms.config.location.dto.WcsLocationDto;
-import org.jeecg.modules.wms.config.location.dto.WcsResultDto;
-import org.jeecg.modules.wms.config.location.dto.WcsTaskDto;
+import org.jeecg.modules.wms.config.location.dto.*;
 import org.jeecg.modules.wms.config.location.entity.BatchLocation;
 import org.jeecg.modules.wms.config.location.entity.Location;
 import org.jeecg.modules.wms.config.location.entity.LocationInfo;
@@ -128,11 +112,24 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
         return update(updateWrapper);
     }
 
+    /**
+     * 首先判断容器没有重复写入
+     * 更新库位时,先判断库位状态是不一致的才能更新
+     */
     @Override
     public boolean updateContainerCodeAndStatus(String locationCode, String containerCode, String status, String warehouseCode) {
+        if (StringUtils.isNotEmpty(containerCode)) {
+            LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
+            locationLambdaQueryWrapper.eq(Location::getContainerCode, containerCode).ne(Location::getCode, locationCode).eq(Location::getWarehouseCode,
+                warehouseCode);
+            Location location = getOne(locationLambdaQueryWrapper);
+            if (location != null) {
+                throw new JeecgBootException("容器已经存在于库位上" + location);
+            }
+        }
         LambdaUpdateWrapper<Location> updateWrapper = Wrappers.lambdaUpdate();
-        updateWrapper.ne(Location::getStatus, status).eq(Location::getCode, locationCode)
-            .eq(Location::getWarehouseCode, warehouseCode).set(Location::getContainerCode, containerCode).set(Location::getStatus, status);
+        updateWrapper.ne(Location::getStatus, status).eq(Location::getCode, locationCode).eq(Location::getWarehouseCode, warehouseCode)
+            .set(Location::getContainerCode, containerCode).set(Location::getStatus, status);
         return update(updateWrapper);
     }
 
@@ -551,8 +548,10 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
             .select(TaskHeader::getId, TaskHeader::getWarehouseCode, TaskHeader::getTaskType, TaskHeader::getFromLocationCode, TaskHeader::getToLocationCode,
                 TaskHeader::getContainerCode, TaskHeader::getStatus, TaskHeader::getCreateTime)
             .eq(TaskHeader::getWarehouseCode, queryCompareLocationTaskDto.getWarehouseCode())
-            .gt(StringUtils.isNotEmpty(queryCompareLocationTaskDto.getTaskCreateTimeBegin()), TaskHeader::getCreateTime, queryCompareLocationTaskDto.getTaskCreateTimeBegin())
-            .lt(StringUtils.isNotEmpty(queryCompareLocationTaskDto.getTaskCreateTimeEnd()),TaskHeader::getCreateTime, queryCompareLocationTaskDto.getTaskCreateTimeEnd());
+            .gt(StringUtils.isNotEmpty(queryCompareLocationTaskDto.getTaskCreateTimeBegin()), TaskHeader::getCreateTime,
+                queryCompareLocationTaskDto.getTaskCreateTimeBegin())
+            .lt(StringUtils.isNotEmpty(queryCompareLocationTaskDto.getTaskCreateTimeEnd()), TaskHeader::getCreateTime,
+                queryCompareLocationTaskDto.getTaskCreateTimeEnd());
 //            .ge(TaskHeader::getCreateTime, queryCreateTime)
         if (StringUtils.isNotEmpty(queryCompareLocationTaskDto.getLocationCode())) {
             taskHeaderLambdaQueryWrapper.and(t -> t.eq(TaskHeader::getFromLocationCode, queryCompareLocationTaskDto.getLocationCode()).or()
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java
index 2aedbe1..b700566 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java
@@ -62,7 +62,7 @@ public interface IReceiptContainerHeaderService extends IService<ReceiptContaine
     Result cancelReceiving(List<Integer> ids);
 
     /**
-     * 更新去向port
+     * 更新去向toPort
      */
     boolean updateToPortById(String toPort, int id);
 }
--
libgit2 0.22.2