From df8a4a44350462eca9ae84e425000a586a8ab33d Mon Sep 17 00:00:00 2001
From: caoyizhong <1270296080@qq.com>
Date: Fri, 10 Nov 2023 00:36:42 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B4=E4=BD=93=E5=A4=87?=
 =?UTF-8?q?=E8=B4=A7=EF=BC=8C=E5=8C=85=E4=BB=B6=E8=BD=AC=E5=BA=93=E5=AD=98?=
 =?UTF-8?q?=E5=93=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../service/IDistributionAsyncService.java    |  4 +-
 .../impl/DistributionAsyncServiceImpl.java    |  8 ++--
 .../impl/DistributionStockupServiceImpl.java  | 48 ++++++++++++++-----
 3 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
index a6d58ebf7..7346e1077 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
@@ -133,13 +133,13 @@ public interface IDistributionAsyncService {
 	 * 商 市的扫描修改 部分状态
 	 * @param stockupDTO
 	 */
-    void stockupUpdateState(StockupDTO stockupDTO);
+    void stockupUpdateState(StockupDTO stockupDTO,int num);
 
 	/**
 	 * 自提的扫描修改 部分状态
 	 * @param stockupDTO
 	 */
-	void stockupSelfUpdateState(StockupDTO stockupDTO);
+	void stockupSelfUpdateState(StockupDTO stockupDTO,int num);
 
 
 	/**
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
index ddd591c61..6f4c6b695 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
@@ -1418,7 +1418,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void stockupUpdateState(StockupDTO stockupDTO) {
+	public void stockupUpdateState(StockupDTO stockupDTO,int num) {
 		BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
 
 		if(stockupDTO.getScanType().equals(1)){
@@ -1492,7 +1492,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
 		});
 
 		//判断数量
-		int i = (nu.get() + ku.get()) - (nuy.get() + 1);
+		int i = (nu.get() + ku.get()) - (nuy.get() + num);
 		//查询备货状态
 		DistributionStockupEntity distributionStockupEntity = distributionStockupService.selectById(stockupDTO.getStockupId());
 		DistributionStockupEntity distributionStockup = new DistributionStockupEntity();
@@ -1544,7 +1544,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
 	 * @param stockupDTO
 	 */
 	@Override
-	public void stockupSelfUpdateState(StockupDTO stockupDTO) {
+	public void stockupSelfUpdateState(StockupDTO stockupDTO,int num) {
 
 		//查询全部订单数据
 		List<DistrilbutionBillStockEntity> distrilbutionBillStockEntities = distrilbutionBillStockMapper.selectList(Wrappers.<DistrilbutionBillStockEntity>query().lambda()
@@ -1612,7 +1612,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
 			.apply("inventory_status in (1,2)")
 		);
 		int sum = detailsEntities.stream().mapToInt(DistributionDeliveryDetailsEntity::getQuantity).sum(); //库存品数据
-		int i = (sum + nu.get()) - (sum1 + 1);
+		int i = (sum + nu.get()) - (sum1 + num);
 	/*	detailsEntities.forEach( r -> {
 			if(r.getConditions().equals("1") && Objects.equals(r.getQuantity(), r.getRealityQuantity())){
 				//修改当前备货状态已完成
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java
index 09911c2c4..803eaf2b4 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java
@@ -37,6 +37,7 @@ import com.logpm.distribution.excel.DistributionCityExcel;
 import com.logpm.distribution.excel.DistributionMarketExcel;
 import com.logpm.distribution.excel.DistributionSelfExcel;
 import com.logpm.distribution.mapper.DistributionStockupMapper;
+import com.logpm.distribution.mapper.DistrilbutionBillLadingMapper;
 import com.logpm.distribution.service.*;
 import com.logpm.distribution.vo.*;
 import com.logpm.distribution.vo.app.StockupZeroVO;
@@ -109,6 +110,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 	@Autowired
 	private IDistributionReservationStocklistService distributionReservationStocklistService;
 
+
 	@Autowired
 	private IWarehouseTrayGoodsClient warehouseTrayGoodsClient;
 	@Autowired
@@ -137,6 +139,9 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 	@Autowired
 	private IDistrilbutionBillStockService distrilbutionBillStockService;
 
+	@Autowired
+	private DistrilbutionBillLadingMapper distrilbutionBillLadingMapper;
+
 	@Autowired
 	private IBasicdataCodeClient basicDataCodeClient;
 
@@ -1753,6 +1758,23 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 			return Resp.scanFail("备货失败", "备货失败!");
 		} else {
 			List<DistributionStockEntity> list1 = new ArrayList<>();
+			String collect = voList.stream().map(DistributionStockPackageVO::getPacketBarCode).collect(Collectors.joining(","));
+			Long warehouseId ;
+			if(one.getStockUpType().equals("3")){
+				DistrilbutionBillLadingEntity distrilbutionBillLadingEntity = distrilbutionBillLadingMapper.selectById(stockupDTO.getReservationId());
+				warehouseId = distrilbutionBillLadingEntity.getWarehouseId();
+			}else{
+				DistributionReservationEntity byId1 = distributionReservationService.getById(stockupDTO.getReservationId());
+				warehouseId = byId1.getWarehouseId();
+			}
+			if(ObjectUtils.isNull(warehouseId)){
+				throw new ServiceException("预约信息不存在,无法备货!");
+			}
+			//货位下架
+			R r = warehouseUpdownTypeClient.downPackage(collect,warehouseId );
+			if(r.getCode() != 200){
+				throw new ServiceException("下架失败!!");
+			}
 			voList.forEach(i -> {
 				//查询是否已备货
 				DistributionParcelListEntity byId = distributionParcelListService.getById(i.getParcelListId());
@@ -1763,18 +1785,14 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 					parcelList.setId(i.getParcelListId());
 					parcelList.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
 					distributionParcelListService.updateById(parcelList);
-					//货位下架
-					R r = warehouseUpdownTypeClient.downPackage(i.getPacketBarCode(), parcelList.getWarehouseId());
-					if(!r.isSuccess()){
-						throw new ServiceException("下架失败!!");
-					}
+
 					//判断备货任务是否完成
 					if(one.getStockUpType().equals("3")){
-						distributionAsyncService.stockupSelfUpdateState(stockupDTO);
+//						distributionAsyncService.stockupSelfUpdateState(stockupDTO);
 						distributionStock.setBillLadingId(i.getReservationId());
 						distributionStock.setConditions("2");
 					}else{
-						distributionAsyncService.stockupUpdateState(stockupDTO);
+//						distributionAsyncService.stockupUpdateState(stockupDTO);
 						distributionStock.setReservationId(i.getReservationId());
 						distributionStock.setReservationCode(i.getReservationCode());
 						distributionStock.setConditions("1");
@@ -1811,6 +1829,14 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 			//添加扫描记录
 
 			if(!list1.isEmpty()){
+
+				//判断备货任务是否完成
+				if(one.getStockUpType().equals("3")){
+					distributionAsyncService.stockupSelfUpdateState(stockupDTO,list1.size());
+				}else{
+					distributionAsyncService.stockupUpdateState(stockupDTO,list1.size());
+				}
+
 				distributionStockService.saveBatch(list1);
 			}
 			int i = list1.isEmpty() ? 0 : list1.size();
@@ -1888,7 +1914,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 									return 2;
 								} else {
 									//扫描操作
-									distributionAsyncService.stockupSelfUpdateState(stockupDTO);
+									distributionAsyncService.stockupSelfUpdateState(stockupDTO,1);
 									return 1;
 								}
 							} else {
@@ -1932,7 +1958,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 									deliveryDetails.setRealityQuantity(one.getRealityQuantity() + 1);
 									distributionDeliveryDetailsService.updateById(deliveryDetails);
 									//修改状态
-									distributionAsyncService.stockupSelfUpdateState(stockupDTO);
+									distributionAsyncService.stockupSelfUpdateState(stockupDTO,1);
 //									distributionAsyncService.stockupStockSelfUpdateState(stockupDTO);
 									return 1;
 								} else {
@@ -1977,7 +2003,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 //								distributionStockup.setId(distributionStockupEntity.getId());
 //								distributionStockup.setStockupStatus(StockupStatusConstant.beihuozhong.getValue());
 //								distributionStockupService.updateById(distributionStockup);
-								distributionAsyncService.stockupUpdateState(stockupDTO);
+								distributionAsyncService.stockupUpdateState(stockupDTO,1);
 								return 1;
 
 
@@ -2055,7 +2081,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
 								//扫码成功
 								distributionReservationStocklistService.updateById(distributionReservationStocklistEntity);
 								//修改状态
-								distributionAsyncService.stockupUpdateState(stockupDTO);
+								distributionAsyncService.stockupUpdateState(stockupDTO,1);
 //								distributionAsyncService.stockupStockUpdateState(stockupDTO);
 
 								return 1;