From 84a2ccc9a307b03aa7b2cc083b4c72157fb833f1 Mon Sep 17 00:00:00 2001
From: kilo <wan.ren@foxmail.com>
Date: Mon, 6 Nov 2023 20:13:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=BB=9E=E7=95=99=E5=88=97=E8=A1=A8=E4=BF=9D?=
 =?UTF-8?q?=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../mapper/DistributionDeliveryListMapper.xml |  5 +-
 .../DistributionDeliveryListServiceImpl.java  | 21 +----
 .../api/WarehouseRetentionApiController.java  | 11 ++-
 .../dto/WarehouseRetentionRecordDTO.java      | 15 ++++
 .../IWarehouseRetentionRecordService.java     |  7 +-
 .../IWarehouseRetentionScanService.java       |  5 ++
 .../WarehouseRetentionRecordServiceImpl.java  | 85 +------------------
 .../WarehouseRetentionScanServiceImpl.java    | 34 ++++++++
 8 files changed, 71 insertions(+), 112 deletions(-)

diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
index e7d213a5a..b2a1e5d05 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml
@@ -1634,7 +1634,7 @@
 			LEFT JOIN logpm_distribution_reservation_package AS ldrp ON ldrp.stock_article_id = ldrs.stock_article_id and  ldrp.reservation_id = ldr.id
 			LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldpl.id = ldrp.parce_list_id and ldpl.stock_article_id = ldsa.id
 		WHERE
-			lddl.id=#{deliveryId} AND ldrp.packet_bar_status in ('1','3') AND ldrs.is_zero = 0  AND ldpl.order_package_code = #{barCode}
+			lddl.id=#{deliveryId} AND ldrp.packet_bar_status in ('1','3') AND ldrs.is_zero = 0  AND ldpl.order_package_code = #{orderPackageCode}
     </select>
     <select id="selectRetentionZeroPackage" resultType="com.logpm.distribution.vo.DistributionRetentionScanVo">
 
@@ -1647,7 +1647,8 @@
 			ldsa.order_code AS orderCode,
 			ldrs.reservation_num AS maxRetention,
 			ldrzp.parcel_list_id AS orderPackageId,
-			ldpl.firsts AS materialName
+			ldpl.firsts AS materialName,
+            2 AS conditions
 	 FROM
 			logpm_distribution_delivery_list AS lddl
 			LEFT JOIN logpm_distribution_signfor AS lds ON lds.delivery_id = lddl.id
diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
index 660fd7087..bb7fd3a13 100644
--- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
+++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
@@ -5167,7 +5167,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
 				List<DistributionParcelListEntity> parcelListEntities = baseMapper.selectPackageListByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId());
 //				List<DisStockListDetailEntity> detailEntities = baseMapper.selectInventoryListByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId());
 				if (Func.isNotEmpty(parcelListEntities)){
-					List<DistributionParcelListEntity> packageInfo = parcelListEntities.stream().filter(p -> Func.isNotEmpty(p.getOrderPackageCode()) && p.getOrderPackageCode().equals(distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList());
+					List<DistributionParcelListEntity> packageInfo = parcelListEntities.stream().filter(p -> Func.equals(p.getOrderPackageCode(),distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList());
 					if (packageInfo.size()>1){
 						log.error("################包条码重复:{}",distrilbutionloadingscanDTO.getBarcode());
 						return Resp.scanFail("操作失败","操作失败");
@@ -5177,19 +5177,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
 						//此时才是满足条件的包件,能够进行滞留
 						//通过配送任务和包件确定预约信息
 						DistributionParcelListEntity parcelListEntity = packageInfo.get(0);
-						DistributionRetentionScanVo retentionPackage = baseMapper.selectRetentionPackage(parcelListEntity.getOrderPackageCode(), distrilbutionloadingscanDTO.getDeliveryId());
-
-//						distributionRetentionScanVo.setConditions(1);
-//						distributionRetentionScanVo.setOrderCode(parcelListEntity.getOrderPackageCode());
-//						distributionRetentionScanVo.setOrderId(parcelListEntity.getStockArticleId());
-//						distributionRetentionScanVo.setOrderPackageId(parcelListEntity.getId());
-//						distributionRetentionScanVo.setOrderPackageCode(parcelListEntity.getOrderPackageCode());
-//						distributionRetentionScanVo.setReservationCode(reservationEntity.getReservationCode());
-//						distributionRetentionScanVo.setReservationId(reservationEntity.getId());
-//						distributionRetentionScanVo.setRetentionQuantity(parcelListEntity.getQuantity());
-//						retentionScanVos.add(distributionRetentionScanVo);
+						DistributionRetentionScanVo retentionScanVo = baseMapper.selectRetentionPackage(parcelListEntity.getOrderPackageCode(), distrilbutionloadingscanDTO.getDeliveryId());
+						retentionScanVos.add(retentionScanVo);
 					}
-					//
 				} else {
 					List<DisStockListDetailEntity> detailEntities = baseMapper.selectInventoryListByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId());
 					if (Func.isNotEmpty(detailEntities)){
@@ -5198,11 +5188,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
 							log.error("################库存品条码重复:{}",distrilbutionloadingscanDTO.getBarcode());
 							return Resp.scanFail("操作失败","操作失败");
 						}
-
 						if (stockListDetailEntities.size() == 1){
-//							DistributionRetentionScanVo distributionRetentionScanVo = new DistributionRetentionScanVo();
-							//此时才是满足条件的包件,能够进行滞留
-							//通过配送任务和包件确定预约信息
 							DisStockListDetailEntity disStockListDetailEntity = stockListDetailEntities.get(0);
 							DistributionRetentionScanVo inventoryPackage = baseMapper.selectRetentionInventoryPackage(disStockListDetailEntity.getStockPackageCode(), distrilbutionloadingscanDTO.getDeliveryId());
 							retentionScanVos.add(inventoryPackage);
@@ -5211,7 +5197,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
 						log.error("################查询包件和库存品为空:{}",distrilbutionloadingscanDTO.getDeliveryId());
 						return Resp.scanFail("操作失败","不属于该配送任务!!!");
 					}
-
 				}
 				List<DistributionRetentionScanVo> distributionRetentionScanVos = baseMapper.selectRetentionZeroPackage(distrilbutionloadingscanDTO.getDeliveryId(),distrilbutionloadingscanDTO.getBarcode());
 				if (Func.isNotEmpty(distributionRetentionScanVos)){
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseRetentionApiController.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseRetentionApiController.java
index 44ac0c11b..e917464d8 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseRetentionApiController.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/api/WarehouseRetentionApiController.java
@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.logpm.warehouse.dto.RetentionDTO;
+import com.logpm.warehouse.dto.WarehouseRetentionRecordDTO;
+import com.logpm.warehouse.dto.WarehouseRetentionScanDTO;
 import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import com.logpm.warehouse.service.IWarehouseRetentionRecordService;
+import com.logpm.warehouse.service.IWarehouseRetentionScanService;
 import com.logpm.warehouse.vo.WarehouseRetentionRecordVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -17,6 +20,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Objects;
 
 @Log4j2
@@ -28,6 +32,8 @@ public class WarehouseRetentionApiController {
 
 	private final IWarehouseRetentionRecordService warehouseRetentionRecordService;
 
+	private final IWarehouseRetentionScanService warehouseRetentionScanService;
+
 
 	@ResponseBody
 	@PostMapping("/retentionPackageList")
@@ -72,8 +78,9 @@ public class WarehouseRetentionApiController {
 	@PostMapping("/saveRetentionList")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "保存滞留扫描列表", notes = "传入trayTypeDTO")
-	public R saveRetentionList(@RequestBody RetentionDTO retentionDTO) {
-		R r = warehouseRetentionRecordService.saveRetentionList(retentionDTO);
+	public R saveRetentionList(@RequestBody WarehouseRetentionRecordDTO warehouseRetentionScanDTOS) {
+//		R r = warehouseRetentionRecordService.saveRetentionList(warehouseRetentionScanDTOS);
+		R r = warehouseRetentionScanService.saveRetentionList(warehouseRetentionScanDTOS);
 		return r;
 	}
 
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseRetentionRecordDTO.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseRetentionRecordDTO.java
index 764faada2..49b398b15 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseRetentionRecordDTO.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseRetentionRecordDTO.java
@@ -20,6 +20,8 @@ import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 滞留记录 数据传输对象实体类
  *
@@ -31,4 +33,17 @@ import lombok.EqualsAndHashCode;
 public class WarehouseRetentionRecordDTO extends WarehouseRetentionRecordEntity {
 	private static final long serialVersionUID = 1L;
 
+
+	private Long deliveryId;
+
+	private String remarks;
+
+	private String trainNumber;
+
+	private Long loadingId;
+
+
+
+	private  List<WarehouseRetentionScanDTO> warehouseRetentionScanDTOS;
+
 }
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionRecordService.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionRecordService.java
index 7c1ff8c94..9e2b006ce 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionRecordService.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionRecordService.java
@@ -19,6 +19,7 @@ package com.logpm.warehouse.service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.logpm.warehouse.dto.RetentionDTO;
+import com.logpm.warehouse.dto.WarehouseRetentionScanDTO;
 import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import com.logpm.warehouse.excel.WarehouseRetentionRecordExcel;
 import com.logpm.warehouse.vo.WarehouseRetentionRecordVO;
@@ -70,10 +71,4 @@ public interface IWarehouseRetentionRecordService extends BaseService<WarehouseR
 	 */
     WarehouseRetentionRecordVO initRetentionList(Long deliveryId);
 
-	/**
-	 * 保存扫描记录
-	 * @param retentionDTO
-	 * @return
-	 */
-	R saveRetentionList(RetentionDTO retentionDTO);
 }
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionScanService.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionScanService.java
index 5c43e2950..dae41a843 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionScanService.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseRetentionScanService.java
@@ -17,6 +17,8 @@
 package com.logpm.warehouse.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.logpm.warehouse.dto.WarehouseRetentionRecordDTO;
+import com.logpm.warehouse.dto.WarehouseRetentionScanDTO;
 import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import com.logpm.warehouse.entity.WarehouseRetentionScanEntity;
 import com.logpm.warehouse.excel.WarehouseRetentionScanExcel;
@@ -24,6 +26,7 @@ import com.logpm.warehouse.vo.WarehouseRetentionRecordVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.logpm.warehouse.vo.WarehouseRetentionScanVO;
+import org.springblade.core.tool.api.R;
 
 import java.util.List;
 
@@ -52,4 +55,6 @@ public interface IWarehouseRetentionScanService extends IService<WarehouseRetent
 	 */
 	List<WarehouseRetentionScanExcel> exportWarehouseRetentionRecord(Wrapper<WarehouseRetentionScanEntity> queryWrapper);
 
+    R saveRetentionList(WarehouseRetentionRecordDTO warehouseRetentionRecordEntity);
+
 }
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java
index 5b81c9cdc..2fa38976e 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionRecordServiceImpl.java
@@ -33,10 +33,7 @@ import com.logpm.distribution.vo.DistributionDeliveryListVO;
 import com.logpm.distribution.vo.DistributionDeliverySelfVO;
 import com.logpm.oldproject.feign.IWarehouseClient;
 import com.logpm.warehouse.bean.Resp;
-import com.logpm.warehouse.dto.RetentionDTO;
-import com.logpm.warehouse.dto.RetentionDistributionListDetailDTO;
-import com.logpm.warehouse.dto.RetentionParcelListDTO;
-import com.logpm.warehouse.dto.RetentionZeroParcelDTO;
+import com.logpm.warehouse.dto.*;
 import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import com.logpm.warehouse.entity.WarehouseRetentionScanEntity;
 import com.logpm.warehouse.excel.WarehouseRetentionRecordExcel;
@@ -162,84 +159,4 @@ public class WarehouseRetentionRecordServiceImpl extends BaseServiceImpl<Warehou
 		return warehouseRetentionRecordVO;
 	}
 
-	@Override
-	public R saveRetentionList(RetentionDTO retentionDTO) {
-		DistributionDeliveryListVO deliveryDriverInfo = deliveryListClient.getDeliveryDriverInfo(retentionDTO.getDeliveryId());
-		if (Func.isEmpty(deliveryDriverInfo)){
-			//查询配送任务
-			log.error("##############查询配送任务失败,deliveryId:{}",retentionDTO.getDeliveryId());
-		}
-		BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
-		if (Objects.isNull(myCurrentWarehouse)) {
-			throw new CustomerException(403, "仓库信息不能为空");
-		}
-		if (Func.isEmpty(deliveryDriverInfo.getDeliverySelfVO())){
-			log.error("##############查询配送任务司机失败");
-		}
-		List<DistributionDeliverySelfVO> deliverySelfVO = deliveryDriverInfo.getDeliverySelfVO();
-		DistributionDeliverySelfVO distributionDeliverySelfVO = null;
-		if (deliveryDriverInfo.getKind().equals("1")){
-			 distributionDeliverySelfVO = deliverySelfVO.stream().filter(d -> d.getIsMaster() == 2).collect(Collectors.toList()).get(0);
-		}else if (deliveryDriverInfo.getKind().equals("2")){
-			 distributionDeliverySelfVO = deliverySelfVO.get(0);
-
-		}
-		WarehouseRetentionRecordEntity warehouseRetentionRecordEntity = new WarehouseRetentionRecordEntity();
-		warehouseRetentionRecordEntity.setRetentionType(RetentionTypeConstant.peisongzhiliu.getValue());
-		warehouseRetentionRecordEntity.setRetentionWarehouseId(myCurrentWarehouse.getId());
-		warehouseRetentionRecordEntity.setRetentionWarehouseName(myCurrentWarehouse.getName());
-		warehouseRetentionRecordEntity.setRemark(retentionDTO.getRemarks());
-		warehouseRetentionRecordEntity.setTaskId(retentionDTO.getDeliveryId());
-		warehouseRetentionRecordEntity.setRetentionCarId(distributionDeliverySelfVO.getId());
-		warehouseRetentionRecordEntity.setRetentionCarNo(deliveryDriverInfo.getTrainNumber());
-		warehouseRetentionRecordEntity.setAssembleCarPersonId(distributionDeliverySelfVO.getDeliveryId());
-		warehouseRetentionRecordEntity.setAssembleCarPersonName(distributionDeliverySelfVO.getDriverName());
-		//统计数量
-		AtomicInteger retentionQuantity = new AtomicInteger();
-		List<RetentionParcelListDTO> parcelListEntityList = retentionDTO.getParcelListEntityList();
-		if (Func.isNotEmpty(parcelListEntityList)){
-			parcelListEntityList.forEach(p->{
-				WarehouseRetentionScanEntity warehouseRetentionScanEntity = new WarehouseRetentionScanEntity();
-				warehouseRetentionScanEntity.setConditions(1);
-				warehouseRetentionScanEntity.setDeliveryId(deliveryDriverInfo.getId());
-				warehouseRetentionScanEntity.setOrderCode(p.getOrderCode());
-				warehouseRetentionScanEntity.setOrderPackageCode(p.getOrderPackageCode());
-				warehouseRetentionScanEntity.setOrderId(p.getStockArticleId());
-				warehouseRetentionScanEntity.setOrderPackageId(p.getId());
-				warehouseRetentionScanService.save(warehouseRetentionScanEntity);
-				retentionQuantity.getAndAdd(p.getQuantity());
-				//缺少一个进行解绑的远程
-			});
-		}
-		List<RetentionZeroParcelDTO> parcelNumberEntityList = retentionDTO.getParcelNumberEntityList();
-		if (Func.isNotEmpty(parcelNumberEntityList)){
-			parcelNumberEntityList.forEach(pn->{
-				WarehouseRetentionScanEntity warehouseRetentionScanEntity = new WarehouseRetentionScanEntity();
-				warehouseRetentionScanEntity.setConditions(2);
-				warehouseRetentionScanEntity.setDeliveryId(deliveryDriverInfo.getId());
-				warehouseRetentionScanEntity.setOrderId(pn.getStockArticleId());
-				warehouseRetentionScanEntity.setOrderPackageId(pn.getParcelListId());
-				warehouseRetentionScanService.save(warehouseRetentionScanEntity);
-				retentionQuantity.getAndAdd(pn.getQuantity());
-			});
-		}
-		List<RetentionDistributionListDetailDTO> detailEntityList = retentionDTO.getDetailEntityList();
-		if (Func.isNotEmpty(detailEntityList)){
-			detailEntityList.forEach(d->{
-				WarehouseRetentionScanEntity warehouseRetentionScanEntity = new WarehouseRetentionScanEntity();
-				warehouseRetentionScanEntity.setConditions(3);
-				warehouseRetentionScanEntity.setDeliveryId(deliveryDriverInfo.getId());
-				warehouseRetentionScanEntity.setInventoryId(d.getStockListId());
-				warehouseRetentionScanEntity.setMaterialName(d.getMaterialName());
-				warehouseRetentionScanEntity.setMaterialNumber(d.getMaterialNumber());
-				warehouseRetentionScanEntity.setOrderPackageCode(d.getStockPackageCode());
-				warehouseRetentionScanEntity.setOrderPackageId(d.getId());
-				warehouseRetentionScanService.save(warehouseRetentionScanEntity);
-				retentionQuantity.getAndAdd(d.getNum());
-			});
-		}
-
-		this.save(warehouseRetentionRecordEntity);
-		return Resp.scanSuccess("操作成功","操作成功");
-	}
 }
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionScanServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionScanServiceImpl.java
index 5b1e2265d..25ca4f822 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionScanServiceImpl.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseRetentionScanServiceImpl.java
@@ -16,6 +16,11 @@
  */
 package com.logpm.warehouse.service.impl;
 
+import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
+import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
+import com.logpm.warehouse.bean.Resp;
+import com.logpm.warehouse.dto.WarehouseRetentionRecordDTO;
+import com.logpm.warehouse.dto.WarehouseRetentionScanDTO;
 import com.logpm.warehouse.entity.WarehouseRetentionRecordEntity;
 import com.logpm.warehouse.entity.WarehouseRetentionScanEntity;
 import com.logpm.warehouse.excel.WarehouseRetentionScanExcel;
@@ -25,6 +30,8 @@ import com.logpm.warehouse.vo.WarehouseRetentionRecordVO;
 import com.logpm.warehouse.excel.WarehouseRetentionRecordExcel;
 import com.logpm.warehouse.vo.WarehouseRetentionScanVO;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -39,6 +46,9 @@ import java.util.List;
 @Service
 public class WarehouseRetentionScanServiceImpl extends BaseServiceImpl<WarehouseRetentionScanMapper, WarehouseRetentionScanEntity> implements IWarehouseRetentionScanService {
 
+
+	private IBasicdataWarehouseClient warehouseClient;
+
 	@Override
 	public IPage<WarehouseRetentionScanVO> selectWarehouseRetentionRecordPage(IPage<WarehouseRetentionScanVO> page, WarehouseRetentionScanVO warehouseRetentionScanVO) {
 		return page.setRecords(baseMapper.selectWarehouseRetentionRecordPage(page, warehouseRetentionScanVO));
@@ -54,4 +64,28 @@ public class WarehouseRetentionScanServiceImpl extends BaseServiceImpl<Warehouse
 		return warehouseRetentionRecordList;
 	}
 
+	@Override
+	public R saveRetentionList(WarehouseRetentionRecordDTO warehouseRetentionRecordDTO) {
+		BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
+		if (Func.isEmpty(myCurrentWarehouse)){
+			return null;
+		}
+		List<WarehouseRetentionScanDTO> warehouseRetentionScanDTOS = warehouseRetentionRecordDTO.getWarehouseRetentionScanDTOS();
+		if (Func.isEmpty(warehouseRetentionScanDTOS)){
+			log.error("############用户提交空滞留列表");
+			return Resp.scanFail("操作失败","无滞留包件信息");
+		}
+		//TODO 保存车次数据还需要处理
+		WarehouseRetentionRecordEntity warehouseRetentionRecordEntity = new WarehouseRetentionRecordEntity();
+		warehouseRetentionRecordEntity.setTaskId(warehouseRetentionRecordDTO.getDeliveryId());
+		warehouseRetentionRecordEntity.setRemark(warehouseRetentionRecordDTO.getRemark());
+		warehouseRetentionRecordEntity.setRetentionCarNo(warehouseRetentionRecordDTO.getTrainNumber());
+		warehouseRetentionRecordEntity.setRetentionCarId(warehouseRetentionRecordDTO.getLoadingId());
+		warehouseRetentionRecordEntity.setRetentionWarehouseId(myCurrentWarehouse.getId());
+		warehouseRetentionRecordEntity.setRetentionWarehouseName(myCurrentWarehouse.getName());
+		warehouseRetentionScanDTOS.forEach(r->{
+			this.save(Func.copy(r,WarehouseRetentionScanEntity.class));
+		});
+		return Resp.scanSuccess("操作成功","操作成功");
+	}
 }