From de6b6b4b12028f462d5979bca2a157103a200c44 Mon Sep 17 00:00:00 2001
From: zhenghaoyu <zhenghaoyu@superbgrace.com>
Date: Wed, 10 Jan 2024 20:48:18 +0800
Subject: [PATCH 1/3] =?UTF-8?q?1.=E5=B9=B2=E7=BA=BF=E9=80=BB=E8=BE=91?=
 =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0=202.=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?=E8=80=81=E7=B3=BB=E7=BB=9F=E6=8E=A8=E9=80=81=E6=89=93=E6=89=98?=
 =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A5=E6=89=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/logpm/trunkline/dto/LoadCarsDTO.java  |  5 +
 .../trunkline/vo/HasNotFinalNodeIdDataVO.java | 29 ++++++
 .../trunkline/vo/LoadScanFinalNodeIdVO.java   | 13 +++
 .../trunkline/vo/TrunklineCarsLoadVO.java     |  4 +
 .../entity/SyncOldTrayTypeLogEntity.java      | 54 ++++++++++
 .../feign/ISyncOldTrayTypeClient.java         | 21 ++++
 .../patch/jobhandle/SyncOldTrayTypeData.java  | 60 ++++++++++++
 .../logpm/patch/mapper/OldTrayTypeMapper.java | 16 +++
 .../logpm/patch/mapper/OldTrayTypeMapper.xml  | 24 +++++
 .../patch/service/IOldTrayTypeService.java    | 13 +++
 .../service/impl/OldTrayTypeServiceImpl.java  | 34 +++++++
 .../controller/CarsLoadController.java        | 67 +++++++++++++
 .../mapper/TrunklineCarsLoadScanMapper.java   | 11 ++-
 .../mapper/TrunklineCarsLoadScanMapper.xml    | 46 +++++++++
 .../ITrunklineCarsLoadScanService.java        | 10 +-
 .../service/ITrunklineCarsLoadService.java    |  3 +
 .../TrunklineCarsLoadScanServiceImpl.java     | 20 +++-
 .../impl/TrunklineCarsLoadServiceImpl.java    | 98 +++++++++++++++++--
 .../controller/OldSystemPushController.java   | 15 +++
 .../feign/SyncOldTrayTypeClient.java          | 33 +++++++
 .../mapper/SyncOldTrayTypeLogMapper.java      |  9 ++
 .../service/ISyncOldTrayTypeLogService.java   |  7 ++
 .../impl/SyncOldTrayTypeLogServiceImpl.java   | 15 +++
 23 files changed, 588 insertions(+), 19 deletions(-)
 create mode 100644 blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/HasNotFinalNodeIdDataVO.java
 create mode 100644 blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadScanFinalNodeIdVO.java
 create mode 100644 blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java
 create mode 100644 blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/ISyncOldTrayTypeClient.java
 create mode 100644 blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java
 create mode 100644 blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java
 create mode 100644 blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml
 create mode 100644 blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java
 create mode 100644 blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java
 create mode 100644 blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/SyncOldTrayTypeClient.java
 create mode 100644 blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/SyncOldTrayTypeLogMapper.java
 create mode 100644 blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/ISyncOldTrayTypeLogService.java
 create mode 100644 blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/SyncOldTrayTypeLogServiceImpl.java

diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java
index 1f0e63bee..07b9663f3 100644
--- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java
+++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java
@@ -1,5 +1,6 @@
 package com.logpm.trunkline.dto;
 
+import com.logpm.trunkline.vo.LoadScanFinalNodeIdVO;
 import com.logpm.trunkline.vo.ZeroOrderVO;
 import com.logpm.trunkline.vo.ZeroSuppleVO;
 import lombok.Data;
@@ -72,4 +73,8 @@ public class LoadCarsDTO implements Serializable {
 
 	private List<ZeroSuppleVO> zeroSuppleList = new ArrayList<>();
 
+	private List<LoadScanFinalNodeIdVO> loadScanFinalNodeIdList = new ArrayList<>();
+
+	private String fullLoadRate;
+
 }
diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/HasNotFinalNodeIdDataVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/HasNotFinalNodeIdDataVO.java
new file mode 100644
index 000000000..e562598d6
--- /dev/null
+++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/HasNotFinalNodeIdDataVO.java
@@ -0,0 +1,29 @@
+package com.logpm.trunkline.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class HasNotFinalNodeIdDataVO implements Serializable {
+
+	private Long id;
+	private String waybillNo;
+	private String orderCode;
+	private String orderPackageCode;
+	private Integer isData;
+	private String fromWarehouseName;
+	private String loadingWarehouseName;
+	private String remark;
+	private String mallName;
+	private String mallPerson;
+	private String mallPersonMobile;
+	private String mallAddress;
+	private String customerName;
+	private String customerMobile;
+	private String customerAddress;
+	private String firsts;
+	private String second;
+	private String third;
+
+}
diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadScanFinalNodeIdVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadScanFinalNodeIdVO.java
new file mode 100644
index 000000000..4a7eaf083
--- /dev/null
+++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadScanFinalNodeIdVO.java
@@ -0,0 +1,13 @@
+package com.logpm.trunkline.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class LoadScanFinalNodeIdVO implements Serializable {
+
+	private Long loadScanId;
+	private Long finalNodeId;
+
+}
diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java
index fe42db162..3589577ad 100644
--- a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java
+++ b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/TrunklineCarsLoadVO.java
@@ -46,4 +46,8 @@ public class TrunklineCarsLoadVO extends TrunklineCarsLoadEntity {
 
 	private List<CarsLoadWaybillInfoVO> carsLoadWaybillInfoList = new ArrayList<>();
 
+
+	private Integer lastStartCarStatus;
+	private Integer planUnloadNum;
+
 }
diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java
new file mode 100644
index 000000000..822f50b07
--- /dev/null
+++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java
@@ -0,0 +1,54 @@
+package com.logpm.warehouse.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+@Data
+@TableName("sync_old_tray_type_log")
+@ApiModel(value = "SyncOldTrayTypeLog对象", description = "同步老系统打托数据表")
+@EqualsAndHashCode(callSuper = true)
+public class SyncOldTrayTypeLogEntity extends TenantEntity {
+
+	/**
+	 * 预留1
+	 */
+	@ApiModelProperty(value = "预留1")
+	private String reserve1;
+	/**
+	 * 预留2
+	 */
+	@ApiModelProperty(value = "预留2")
+	private String reserve2;
+	/**
+	 * 预留3
+	 */
+	@ApiModelProperty(value = "预留3")
+	private String reserve3;
+	/**
+	 * 预留4
+	 */
+	@ApiModelProperty(value = "预留4")
+	private String reserve4;
+	/**
+	 * 预留5
+	 */
+	@ApiModelProperty(value = "预留5")
+	private String reserve5;
+
+	/**
+	 * 请求参数
+	 */
+	@ApiModelProperty(value = "请求参数")
+	private String args;
+
+	@ApiModelProperty(value = "同步状态 0未同步 1已同步")
+	private Integer syncStatus;
+
+	@ApiModelProperty(value = "同步次数")
+	private Integer syncNum;
+
+}
diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/ISyncOldTrayTypeClient.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/ISyncOldTrayTypeClient.java
new file mode 100644
index 000000000..2866ec697
--- /dev/null
+++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/feign/ISyncOldTrayTypeClient.java
@@ -0,0 +1,21 @@
+package com.logpm.warehouse.feign;
+
+import org.springblade.common.constant.ModuleNameConstant;
+import org.springblade.core.tool.api.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(
+	value = ModuleNameConstant.APPLICATION_WAREHOUSE_NAME
+)
+public interface ISyncOldTrayTypeClient {
+
+	String API_PREFIX = "warehouseSyncOldTrayType/client";
+	String TOP = API_PREFIX + "/top5";
+
+
+	@GetMapping(TOP + "/budaOldTrayTypeData")
+	R budaOldTrayTypeData(@RequestParam String orderPackageCode, @RequestParam Integer trayId, @RequestParam Integer type, @RequestParam Integer oldWarehouseId);
+
+}
diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java
new file mode 100644
index 000000000..67077eee9
--- /dev/null
+++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java
@@ -0,0 +1,60 @@
+package com.logpm.patch.jobhandle;
+
+import com.alibaba.fastjson.JSONObject;
+import com.logpm.patch.service.IOldTrayTypeService;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+import com.logpm.warehouse.feign.ISyncOldTrayTypeClient;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.api.R;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Objects;
+
+@Slf4j
+@AllArgsConstructor
+@Component
+public class SyncOldTrayTypeData {
+
+	private final IOldTrayTypeService oldTrayTypeService;
+	private final ISyncOldTrayTypeClient syncOldTrayTypeClient;
+
+
+	@XxlJob("syncOldTrayTypeInfo")
+	public ReturnT<String> syncOldTrayTypeInfo(String param) {
+		log.info("####################syncOldTrayTypeInfo: 同步库位老系统打托信息开始");
+		List<SyncOldTrayTypeLogEntity> ls = oldTrayTypeService.findAllListBySyncStatusAndSyncNum(0,3);
+
+		for (SyncOldTrayTypeLogEntity syncOldTrayTypeLogEntity : ls) {
+			String args = syncOldTrayTypeLogEntity.getArgs();
+			Long id = syncOldTrayTypeLogEntity.getId();
+			Integer syncNum = syncOldTrayTypeLogEntity.getSyncNum();
+			log.info("##############syncOldTrayTypeInfo: 当前同步的数据为 {}",args);
+			JSONObject jsonObject = JSONObject.parseObject(args);
+			if(Objects.isNull(jsonObject)){
+				log.error("############syncOldTrayTypeInfo: 打托数据异常");
+				continue;
+			}
+			String orderPackageCode = jsonObject.getString("orderPackageCode");
+			Integer type = jsonObject.getInteger("type");
+			Integer trayId = jsonObject.getInteger("trayId");
+			Integer oldWarehouseId = jsonObject.getInteger("warehouseId");
+
+			R r = syncOldTrayTypeClient.budaOldTrayTypeData(orderPackageCode, trayId, type, oldWarehouseId);
+			int code = r.getCode();
+			if(200 == code){
+				oldTrayTypeService.updateSyncStatus(id,1);
+			}else{
+				oldTrayTypeService.updateSyncNum(id,syncNum+1);
+			}
+		}
+
+		return ReturnT.SUCCESS;
+	}
+
+
+
+}
diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java
new file mode 100644
index 000000000..604b5954b
--- /dev/null
+++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java
@@ -0,0 +1,16 @@
+package com.logpm.patch.mapper;
+
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface OldTrayTypeMapper {
+	List<SyncOldTrayTypeLogEntity> findAllListBySyncStatusAndSyncNum(@Param("syncStatus") int syncStatus, @Param("syncNum") int syncNum);
+
+	void updateSyncStatus(@Param("id") Long id, @Param("syncStatus") int syncStatus);
+
+	void updateSyncNum(@Param("id") Long id, @Param("syncNum") int syncNum);
+}
diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml
new file mode 100644
index 000000000..25c58c4f2
--- /dev/null
+++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.logpm.patch.mapper.OldTrayTypeMapper">
+
+    <select id="findAllListBySyncStatusAndSyncNum" resultType="com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity">
+        select *
+        from sync_old_tray_type_log
+        where sync_status = #{syncStatus}
+        and sync_num &lt; #{syncNum}
+    </select>
+
+    <update id="updateSyncStatus">
+        update sync_old_tray_type_log
+        set sync_status = #{syncStatus}
+        where id = #{id}
+    </update>
+
+    <update id="updateSyncNum">
+        update sync_old_tray_type_log
+        set sync_num = #{syncNum}
+        where id = #{id}
+    </update>
+
+</mapper>
diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java
new file mode 100644
index 000000000..e7c35f4a2
--- /dev/null
+++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java
@@ -0,0 +1,13 @@
+package com.logpm.patch.service;
+
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+
+import java.util.List;
+
+public interface IOldTrayTypeService {
+	List<SyncOldTrayTypeLogEntity> findAllListBySyncStatusAndSyncNum(int syncStatus, int syncNum);
+
+	void updateSyncStatus(Long id, int syncStatus);
+
+	void updateSyncNum(Long id, int syncNum);
+}
diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java
new file mode 100644
index 000000000..d57d885fa
--- /dev/null
+++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java
@@ -0,0 +1,34 @@
+package com.logpm.patch.service.impl;
+
+import com.logpm.patch.mapper.OldTrayTypeMapper;
+import com.logpm.patch.service.IOldTrayTypeService;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@AllArgsConstructor
+public class OldTrayTypeServiceImpl implements IOldTrayTypeService {
+
+	private final OldTrayTypeMapper oldTrayTypeMapper;
+
+
+	@Override
+	public List<SyncOldTrayTypeLogEntity> findAllListBySyncStatusAndSyncNum(int syncStatus, int syncNum) {
+		return oldTrayTypeMapper.findAllListBySyncStatusAndSyncNum(syncStatus,syncNum);
+	}
+
+	@Override
+	public void updateSyncStatus(Long id, int syncStatus) {
+		oldTrayTypeMapper.updateSyncStatus(id,syncStatus);
+	}
+
+	@Override
+	public void updateSyncNum(Long id, int syncNum) {
+		oldTrayTypeMapper.updateSyncNum(id,syncNum);
+	}
+}
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java
index 8b87e659e..d16ead2b1 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java
@@ -1471,5 +1471,72 @@ public class CarsLoadController {
 	}
 
 
+	@ResponseBody
+	@PostMapping("/determineHasNoFinalNode")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "判断有没有没有目的仓的装车数据", notes = "传入loadCarsDTO")
+	public R determineHasNoFinalNode(@RequestBody LoadCarsDTO loadCarsDTO) {
+		String method = "############determineHasNoFinalNode: ";
+		log.info(method + "请求参数{}", loadCarsDTO);
+		Long loadId = loadCarsDTO.getLoadId();
+
+		try{
+
+			//当前登录人选择的仓库
+			BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
+			if(Objects.isNull(myCurrentWarehouse)){
+				log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse);
+				return R.fail(400,"仓库信息为空");
+			}
+			loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId());
+
+			if(Objects.isNull(loadId)){
+				log.warn(method+"配载id为空 loadId={}",loadId);
+				return R.fail(405,"配载id为空");
+			}
+
+			return carsLoadService.determineHasNoFinalNode(loadId,myCurrentWarehouse.getId());
+		}catch (CustomerException e){
+			log.error(e.message,e);
+			return R.fail(e.code,e.message);
+		}catch (Exception e){
+			log.error(method+"系统异常",e);
+			return R.fail(500,"系统异常");
+		}
+	}
+
+	@ResponseBody
+	@PostMapping("/updateLoadScanFinalNodeIdById")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "更新最终节点数据", notes = "传入loadCarsDTO")
+	public R updateLoadScanFinalNodeIdById(@RequestBody LoadCarsDTO loadCarsDTO) {
+		String method = "############updateLoadScanFinalNodeIdById: ";
+		log.info(method + "请求参数{}", loadCarsDTO);
+		Long loadId = loadCarsDTO.getLoadId();
+
+		try{
+
+			//当前登录人选择的仓库
+			BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
+			if(Objects.isNull(myCurrentWarehouse)){
+				log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse);
+				return R.fail(400,"仓库信息为空");
+			}
+			loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId());
+
+			if(Objects.isNull(loadId)){
+				log.warn(method+"配载id为空 loadId={}",loadId);
+				return R.fail(405,"配载id为空");
+			}
+
+			return carsLoadService.updateLoadScanFinalNodeIdById(loadCarsDTO);
+		}catch (CustomerException e){
+			log.error(e.message,e);
+			return R.fail(e.code,e.message);
+		}catch (Exception e){
+			log.error(method+"系统异常",e);
+			return R.fail(500,"系统异常");
+		}
+	}
 
 }
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
index 86fcf2482..f43781838 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.logpm.trunkline.dto.LoadCarsDTO;
 import com.logpm.trunkline.dto.ProductInfoDTO;
 import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity;
-import com.logpm.trunkline.vo.OrderScanDetailVO;
-import com.logpm.trunkline.vo.ProductUnloadInfoVO;
-import com.logpm.trunkline.vo.UnloadPackageVO;
-import com.logpm.trunkline.vo.UnloadScanOrderVO;
+import com.logpm.trunkline.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -55,4 +52,10 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper<TrunklineCarsLoa
 	Integer findUnloadNumByLoadIdAndNodeId(@Param("loadId") Long loadId, @Param("nodeId") Long nodeId);
 
 	Integer findUnloadNumByLoadIdAndNodeIdAndOrderCodeAndWaybillNo(@Param("loadId") Long loadId, @Param("nodeId") Long nodeId, @Param("orderCode") String orderCode, @Param("waybillNo") String waybillNo);
+
+    List<HasNotFinalNodeIdDataVO> findNoFinalNodeData(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId);
+
+	void updateFinalNodeIdById(@Param("loadScanId") Long loadScanId, @Param("finalNodeId") Long finalNodeId);
+
+    void updateUnloadCheckByLoadIdAndWarehouseId(@Param("loadId") Long loadId, @Param("warehouseId") Long warehouseId);
 }
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
index 31d12c399..d26a7f808 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
@@ -180,4 +180,50 @@
         and scan_status != '1'
     </select>
 
+    <select id="findNoFinalNodeData" resultType="com.logpm.trunkline.vo.HasNotFinalNodeIdDataVO">
+        select ltcls.id id,
+               ltcls.waybill_no waybillNo,
+               ltcls.order_code orderCode,
+               ltcls.scan_code orderPackageCode,
+               ltcls.is_data isData,
+               flww.name fromWarehouseName,
+               llww.name loadingWarehouseName,
+               ltcls.remark remark,
+               ldsa.mall_name mallName,
+               ldsa.consignee_person mallPerson,
+               ldsa.consignee_mobile mallPersonMobile,
+               ldsa.consignee_address mallAddress,
+               ldsa.customer_name customerName,
+               ldsa.customer_telephone customerMobile,
+               ldsa.customer_address customerAddress,
+               ldpl.firsts firsts,
+               ldpl.second `second`,
+               ldpl.third_product third,
+               ldpl.material_code materialCode,
+               ldpl.material_name materialName
+        from logpm_trunkline_cars_load_scan ltcls
+        left join logpm_distribution_parcel_list ldpl on ldpl.order_package_code = ltcls.scan_code and ldpl.warehouse_id = ltcls.from_warehouse_id
+        left join logpm_distribution_stock_article ldsa on ldsa.id = ldpl.stock_article_id
+        left join logpm_warehouse_waybill lww on lww.waybill_no = ltcls.waybill_no
+        left join logpm_warehouse_warehouse flww on flww.id = ltcls.from_warehouse_id
+        left join logpm_warehouse_warehouse llww on llww.id = ltcls.warehouse_id
+        where ltcls.load_id = #{loadId}
+        and ltcls.warehouse_id = #{warehouseId}
+        and ltcls.final_node_id is null
+    </select>
+
+    <update id="updateFinalNodeIdById">
+        update logpm_trunkline_cars_load_scan
+        set final_node_id = #{finalNodeId}
+        where id = #{loadScanId}
+    </update>
+
+    <update id="updateUnloadCheckByLoadIdAndWarehouseId">
+        update logpm_trunkline_cars_load_scan
+        set unload_check = 1
+        where load_id = #{loadId}
+        and unload_node_id = #{warehouseId}
+        and unload_check = 0
+    </update>
+
 </mapper>
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
index 70a4d128c..e8a740181 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.logpm.trunkline.dto.LoadCarsDTO;
 import com.logpm.trunkline.dto.ProductInfoDTO;
 import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity;
-import com.logpm.trunkline.vo.OrderScanDetailVO;
-import com.logpm.trunkline.vo.ProductUnloadInfoVO;
-import com.logpm.trunkline.vo.UnloadPackageVO;
-import com.logpm.trunkline.vo.UnloadScanOrderVO;
+import com.logpm.trunkline.vo.*;
 import org.springblade.core.mp.base.BaseService;
 
 import java.util.List;
@@ -51,4 +48,9 @@ public interface ITrunklineCarsLoadScanService extends BaseService<TrunklineCars
 
 	Integer findUnloadNumByLoadIdAndNodeIdAndOrderCodeAndWaybillNo(Long loadId, Long nodeId, String orderCode, String waybillNo);
 
+    List<HasNotFinalNodeIdDataVO> findNoFinalNodeData(Long loadId, Long warehouseId);
+
+	void updateFinalNodeIdById(Long loadScanId, Long finalNodeId);
+
+    void updateUnloadCheckByLoadIdAndWarehouseId(Long loadId, Long warehouseId);
 }
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
index 5fe0bf9dc..90101831f 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
@@ -129,4 +129,7 @@ public interface ITrunklineCarsLoadService extends BaseService<TrunklineCarsLoad
 
 	R unloadTrayAllOne(LoadCarsDTO loadCarsDTO);
 
+	R determineHasNoFinalNode(Long loadId, Long warehouseId);
+
+	R updateLoadScanFinalNodeIdById(LoadCarsDTO loadCarsDTO);
 }
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
index dabdf8f4e..f9fa8b8fb 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
@@ -6,10 +6,7 @@ import com.logpm.trunkline.dto.ProductInfoDTO;
 import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity;
 import com.logpm.trunkline.mapper.TrunklineCarsLoadScanMapper;
 import com.logpm.trunkline.service.ITrunklineCarsLoadScanService;
-import com.logpm.trunkline.vo.OrderScanDetailVO;
-import com.logpm.trunkline.vo.ProductUnloadInfoVO;
-import com.logpm.trunkline.vo.UnloadPackageVO;
-import com.logpm.trunkline.vo.UnloadScanOrderVO;
+import com.logpm.trunkline.vo.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -112,4 +109,19 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl<TrunklineC
 		return baseMapper.findUnloadNumByLoadIdAndNodeIdAndOrderCodeAndWaybillNo(loadId,nodeId,orderCode,waybillNo);
 	}
 
+	@Override
+	public List<HasNotFinalNodeIdDataVO> findNoFinalNodeData(Long loadId, Long warehouseId) {
+		return baseMapper.findNoFinalNodeData(loadId,warehouseId);
+	}
+
+	@Override
+	public void updateFinalNodeIdById(Long loadScanId, Long finalNodeId) {
+		baseMapper.updateFinalNodeIdById(loadScanId,finalNodeId);
+	}
+
+	@Override
+	public void updateUnloadCheckByLoadIdAndWarehouseId(Long loadId, Long warehouseId) {
+		baseMapper.updateUnloadCheckByLoadIdAndWarehouseId(loadId,warehouseId);
+	}
+
 }
diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
index aa2a7de96..cfd4c0b90 100644
--- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
+++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
@@ -118,6 +118,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		Long loadId = loadCarsDTO.getLoadId();
 		Integer startCarType = loadCarsDTO.getStartCarType();
 		Long warehouseId = loadCarsDTO.getWarehouseId();
+		String fullLoadRate = loadCarsDTO.getFullLoadRate();
 
 		//先查询车辆配载计划
 		TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId);
@@ -136,6 +137,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 			throw new CustomerException(400,"未有权限进行该操作");
 		}
 
+		if(StringUtil.isNotBlank(fullLoadRate)){
+			carsLoadEntity.setFullLoadRate(new BigDecimal(fullLoadRate));
+		}
+
 		if(startCarType == 1){
 			//车辆配载发车
 			//查询发站仓节点信息
@@ -616,8 +621,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		Long nowWarehouseId = carsLoadEntity.getNowWarehouseId();//当前节点id
 
 		if(!warehouseId.equals(nowWarehouseId)){
-			log.warn("#############cancelArriveCarByLoadId: 未有权限进行该操作 loadId={} nowWarehouseId={}",loadId,nowWarehouseId);
-			throw new CustomerException(400,"未有权限进行该操作");
+			log.warn("#############cancelArriveCarByLoadId: 配载未到达当前仓 loadId={} nowWarehouseId={}",loadId,nowWarehouseId);
+			throw new CustomerException(400,"配载未到达当前仓");
 		}
 
 		String loadStatus = carsLoadEntity.getLoadStatus();
@@ -634,6 +639,15 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		String nodeStatus = currentCarsLoadLineEntity.getNodeStatus();
 		Integer sort = currentCarsLoadLineEntity.getSort();
 
+		String unloadStatus = currentCarsLoadLineEntity.getUnloadStatus();
+		if(!"0".equals(unloadStatus)){
+			log.warn("#############unloadByLoadId: 已经确认过卸车 loadId={} nowWarehouseId={} unloadStatus={}",loadId,nowWarehouseId,unloadStatus);
+			throw new CustomerException(400,"已经确认过卸车");
+		}
+
+		//修改已卸车数据为确认状态
+		trunklineCarsLoadScanService.updateUnloadCheckByLoadIdAndWarehouseId(loadId,warehouseId);
+
 		if(unloadType == 1){
 			//网点卸车确认
 			if("40".equals(loadStatus)){
@@ -1465,7 +1479,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		Long waybillId = null;
 		String waybillNo = null;
 		String orderCode = null;
-		Integer isData = null;
+		Integer isData = 1;
 		Integer isAbnormal = null;
 		Long trayId = null;
 		String trayName = null;
@@ -1496,6 +1510,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		carsLoadScanEntity.setNum(1);
 		carsLoadScanEntity.setType(1);
 		carsLoadScanEntity.setIsSupple(0);
+		carsLoadScanEntity.setUnloadCheck(0);
 		if(Objects.isNull(parcelListEntity)){
 			carsLoadScanEntity.setLoadingAbnormal(1);
 			isAbnormal = 1;
@@ -1552,16 +1567,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 			Long packageId = parcelListEntity.getId();
 			waybillNo = parcelListEntity.getWaybillNumber();
 			orderCode = parcelListEntity.getOrderCode();
+			fromWarehouseId = parcelListEntity.getWarehouseId();
 			WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo);
 			if(Objects.isNull(waybillEntity)){
 				log.warn("##################loadingScan: 运单信息不存在 waybillNo={}",waybillNo);
 				return R.fail(405,"运单信息不存在");
 			}
 			waybillId = waybillEntity.getId();
+
 			carsLoadScanEntity.setWaybillId(waybillId);
 			carsLoadScanEntity.setWaybillNo(waybillNo);
 			carsLoadScanEntity.setOrderCode(orderCode);
-			carsLoadScanEntity.setFromWarehouseId(warehouseId);
+			carsLoadScanEntity.setFromWarehouseId(fromWarehouseId);
 
 			DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId);
 			if(Objects.isNull(stockArticleEntity)){
@@ -1594,7 +1611,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 					isAbnormal = 0;
 					remark = "正常装车";
 				}
-				carsLoadScanEntity.setFinalNodeId(carsOrderEntity.getFinalNodeId());
+				carsLoadScanEntity.setFinalNodeId(fromWarehouseId);
 			}
 			distributionParcelListClient.updateOrderPackageCodeById(packageId,"60");
 			distributionStockArticleClient.submitHandleNumByOrderId(1,articleId);
@@ -2050,6 +2067,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 
 			distributionStockArticleClient.saveOrUpdate(zeroStockArticleEntity);
 		}
+		//更新数量
+		updateNumByLoadId(loadId);
 
 		return R.success("添加成功");
 	}
@@ -2190,6 +2209,45 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		return R.success("打托成功");
 	}
 
+	@Override
+	public R determineHasNoFinalNode(Long loadId, Long warehouseId) {
+
+		TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId);
+		if(Objects.isNull(carsLoadEntity)){
+			log.error("###########determineHasNoFinalNode: 配载计划不存在 loadId={}",loadId);
+			return R.fail(405,"配载计划不存在");
+		}
+
+		List<HasNotFinalNodeIdDataVO> list = trunklineCarsLoadScanService.findNoFinalNodeData(loadId,warehouseId);
+		if(Objects.isNull(list) || list.size() == 0){
+			return R.success("未有需要添加目的仓的数据");
+		}else{
+			return R.data(list);
+		}
+	}
+
+	@Override
+	public R updateLoadScanFinalNodeIdById(LoadCarsDTO loadCarsDTO) {
+		Long loadId = loadCarsDTO.getLoadId();
+		Long warehouseId = loadCarsDTO.getWarehouseId();
+		List<LoadScanFinalNodeIdVO> loadScanFinalNodeIdList = loadCarsDTO.getLoadScanFinalNodeIdList();
+
+		TrunklineCarsLoadEntity carsLoadEntity = baseMapper.selectById(loadId);
+		if(Objects.isNull(carsLoadEntity)){
+			log.error("###########determineHasNoFinalNode: 配载计划不存在 loadId={}",loadId);
+			return R.fail(405,"配载计划不存在");
+		}
+
+		for (LoadScanFinalNodeIdVO loadScanFinalNodeIdVO : loadScanFinalNodeIdList) {
+			Long loadScanId = loadScanFinalNodeIdVO.getLoadScanId();
+			Long finalNodeId = loadScanFinalNodeIdVO.getFinalNodeId();
+			trunklineCarsLoadScanService.updateFinalNodeIdById(loadScanId,finalNodeId);
+		}
+
+
+		return R.success("更新成功");
+	}
+
 	@Override
 	public R loadingTrayInfo(LoadCarsDTO loadCarsDTO) {
 		log.info("##############loadingTrayInfo: 查询托盘的货物信息");
@@ -2414,6 +2472,9 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 
 	@Override
 	public R arriveUnloadPageList(LoadCarsDTO loadCarsDTO) {
+
+		Long warehouseId = loadCarsDTO.getWarehouseId();
+
 		IPage<Object> page = new Page<>();
 		page.setCurrent(loadCarsDTO.getPageNum());
 		page.setSize(loadCarsDTO.getPageSize());
@@ -2425,6 +2486,20 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 
 		IPage<TrunklineCarsLoadVO> pageList = baseMapper.arriveUnloadPageList(page,loadCarsDTO);
 
+		List<TrunklineCarsLoadVO> records = pageList.getRecords();
+		for (TrunklineCarsLoadVO trunklineCarsLoadVO : records) {
+			Long loadId = trunklineCarsLoadVO.getId();
+			TrunklineCarsLoadLineEntity carsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId);
+			Integer sort = carsLoadLineEntity.getSort();
+			TrunklineCarsLoadLineEntity upCarsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndSort(loadId, sort - 1);
+			String nodeStatus = upCarsLoadLineEntity.getNodeStatus();
+			if("20".equals(nodeStatus)){
+				trunklineCarsLoadVO.setLastStartCarStatus(1);
+			}else{
+				trunklineCarsLoadVO.setLastStartCarStatus(0);
+			}
+		}
+		pageList.setRecords(records);
 		return R.data(pageList);
 	}
 
@@ -2592,13 +2667,15 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 					distributionParcelListEntity = new DistributionParcelListEntity();
 					BeanUtil.copy(parcelListEntity,distributionParcelListEntity);
 					distributionParcelListEntity.setId(null);
-					distributionParcelListEntity.setOrderPackageStatus("30");
+					distributionParcelListEntity.setIsTransfer(1);
 					if(!Objects.isNull(warehouseWaybillEntity)){
 						Long destinationWarehouseId = warehouseWaybillEntity.getDestinationWarehouseId();//目的仓
 						if(destinationWarehouseId.equals(warehouseId)){
-							distributionParcelListEntity.setOrderPackageStatus("20");
+							distributionParcelListEntity.setIsTransfer(0);
 						}
 					}
+					distributionParcelListEntity.setAdvanceId(parcelListEntity.getAdvanceId());
+					distributionParcelListEntity.setOrderPackageStatus("20");
 					distributionParcelListEntity.setWarehouseId(warehouseId);
 					distributionParcelListEntity.setWarehouse(warehouseName);
 					distributionParcelListEntity.setTrainNumber(loadCode);
@@ -2923,9 +3000,13 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 			return R.fail(405,"配载计划信息不存在");
 		}
 
+		Integer planUnloadNum = 0;
+
 		//查询已扫描卸车的包件
 		List<UnloadScanOrderVO> unloadScanOrderList = trunklineCarsLoadScanService.findPackageWithOrderList(loadId,warehouseId);
 		for (UnloadScanOrderVO unloadScanOrderVO : unloadScanOrderList) {
+			Integer loadingNum = unloadScanOrderVO.getLoadingNum();
+			planUnloadNum = planUnloadNum +loadingNum;
 			String waybillNo = unloadScanOrderVO.getWaybillNo();
 			String orderCode = unloadScanOrderVO.getOrderCode();
 			List<UnloadPackageVO> unloadPackageList = trunklineCarsLoadScanService.findUnloadPackageList(loadId,warehouseId,waybillNo,orderCode);
@@ -2935,6 +3016,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		//查询已装车的零担
 		List<UnloadZeroVO> zeroList = trunklineCarsOrderService.findUnloadZeroList(loadId,warehouseId);
 		for (UnloadZeroVO unloadZeroVO : zeroList) {
+			Integer loadingNum = unloadZeroVO.getLoadingNum();
+			planUnloadNum = planUnloadNum +loadingNum;
 			String waybillNo = unloadZeroVO.getWaybillNo();
 			String orderCode = unloadZeroVO.getOrderCode();
 			List<UnloadPackageVO> unloadPackageList = trunklineCarsLoadScanService.findUnloadPackageList(loadId,warehouseId,waybillNo,orderCode);
@@ -2955,6 +3038,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
 		trunklineCarsLoadVO.setUnloadScanOrderList(unloadScanOrderList);
 		trunklineCarsLoadVO.setUnloadZeroList(zeroList);
 		trunklineCarsLoadVO.setExceptionList(exceptionList);
+		trunklineCarsLoadVO.setPlanUnloadNum(planUnloadNum);
 
 		return R.data(trunklineCarsLoadVO);
 	}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/OldSystemPushController.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/OldSystemPushController.java
index 2c42c283e..fb67abdda 100644
--- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/OldSystemPushController.java
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/OldSystemPushController.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.logpm.warehouse.dto.TrayInfoDTO;
 import com.logpm.warehouse.dto.WaybillDTO;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
 import com.logpm.warehouse.entity.WarehouseLog;
 import com.logpm.warehouse.entity.WarehouseTrayTypeEntity;
 import com.logpm.warehouse.service.*;
@@ -41,6 +42,8 @@ public class OldSystemPushController {
 	private final IWarehouseLogService warehouseLogService;
 	private final RabbitTemplate rabbitTemplate;
 	private final IAsyncDataService asyncDataService;
+	private final ISyncOldTrayTypeLogService syncOldTrayTypeLogService;
+
 //	private final IWarehouseWaybillService warehouseWaybillService;
 //
 //	private final IDistributionStockArticleClient distributionStockArticleClient;
@@ -185,9 +188,21 @@ public class OldSystemPushController {
 			warehouseLogService.updateById(warehouseLog);
 			return R.success("操作成功");
 		}catch (CustomerException e){
+			//存入打托信息
+			SyncOldTrayTypeLogEntity syncOldTrayTypeLogEntity = new SyncOldTrayTypeLogEntity();
+			syncOldTrayTypeLogEntity.setArgs(JSONObject.toJSONString(trayInfoDTO));
+			syncOldTrayTypeLogEntity.setSyncStatus(0);
+			syncOldTrayTypeLogEntity.setSyncNum(0);
+			syncOldTrayTypeLogService.save(syncOldTrayTypeLogEntity);
 			log.error(e.message,e);
 			return R.fail(e.code,e.message);
 		}catch (Exception e){
+			//存入打托信息
+			SyncOldTrayTypeLogEntity syncOldTrayTypeLogEntity = new SyncOldTrayTypeLogEntity();
+			syncOldTrayTypeLogEntity.setArgs(JSONObject.toJSONString(trayInfoDTO));
+			syncOldTrayTypeLogEntity.setSyncStatus(0);
+			syncOldTrayTypeLogEntity.setSyncNum(0);
+			syncOldTrayTypeLogService.save(syncOldTrayTypeLogEntity);
 			log.error("############sendOrders: 系统异常",e);
 			return R.fail(500,"############sendOrders: 系统异常");
 		}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/SyncOldTrayTypeClient.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/SyncOldTrayTypeClient.java
new file mode 100644
index 000000000..f03f145e3
--- /dev/null
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/feign/SyncOldTrayTypeClient.java
@@ -0,0 +1,33 @@
+package com.logpm.warehouse.feign;
+
+import com.logpm.warehouse.dto.TrayInfoDTO;
+import com.logpm.warehouse.service.IAsyncDataService;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+@ApiIgnore()
+@RestController
+@AllArgsConstructor
+public class SyncOldTrayTypeClient implements ISyncOldTrayTypeClient{
+
+	private final IAsyncDataService asyncDataService;
+
+	@Override
+	public R budaOldTrayTypeData(String orderPackageCode, Integer trayId, Integer type, Integer oldWarehouseId) {
+
+		TrayInfoDTO trayInfoDTO = new TrayInfoDTO();
+		trayInfoDTO.setOrderPackageCode(orderPackageCode);
+		trayInfoDTO.setTrayId(trayId);
+		trayInfoDTO.setType(type);
+		trayInfoDTO.setWarehouseId(oldWarehouseId);
+
+		try{
+			asyncDataService.sendTrayInfoByOrderPackageCode(trayInfoDTO);
+		}catch (Exception e){
+			return R.fail(405,"打托失败");
+		}
+		return R.success("打托成功");
+	}
+}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/SyncOldTrayTypeLogMapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/SyncOldTrayTypeLogMapper.java
new file mode 100644
index 000000000..59f0160ec
--- /dev/null
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/SyncOldTrayTypeLogMapper.java
@@ -0,0 +1,9 @@
+package com.logpm.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SyncOldTrayTypeLogMapper extends BaseMapper<SyncOldTrayTypeLogEntity> {
+}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/ISyncOldTrayTypeLogService.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/ISyncOldTrayTypeLogService.java
new file mode 100644
index 000000000..c399b77e4
--- /dev/null
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/ISyncOldTrayTypeLogService.java
@@ -0,0 +1,7 @@
+package com.logpm.warehouse.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+
+public interface ISyncOldTrayTypeLogService extends IService<SyncOldTrayTypeLogEntity> {
+}
diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/SyncOldTrayTypeLogServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/SyncOldTrayTypeLogServiceImpl.java
new file mode 100644
index 000000000..87263b226
--- /dev/null
+++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/SyncOldTrayTypeLogServiceImpl.java
@@ -0,0 +1,15 @@
+package com.logpm.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.logpm.warehouse.entity.SyncOldTrayTypeLogEntity;
+import com.logpm.warehouse.mapper.SyncOldTrayTypeLogMapper;
+import com.logpm.warehouse.service.ISyncOldTrayTypeLogService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@AllArgsConstructor
+@Service
+public class SyncOldTrayTypeLogServiceImpl extends ServiceImpl<SyncOldTrayTypeLogMapper, SyncOldTrayTypeLogEntity> implements ISyncOldTrayTypeLogService {
+}

From b83f86810f05719a9c95a6c0da31021e419d13ff Mon Sep 17 00:00:00 2001
From: zhenghaoyu <zhenghaoyu@superbgrace.com>
Date: Wed, 10 Jan 2024 20:59:20 +0800
Subject: [PATCH 2/3] =?UTF-8?q?1.=E6=B5=8B=E8=AF=95=E7=BD=91=E4=BB=A3?=
 =?UTF-8?q?=E7=A0=81=E8=BF=98=E5=8E=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../springblade/common/launch/LauncherServiceImpl.java    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
index 2749bc113..7d5c44bb6 100644
--- a/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
+++ b/blade-biz-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
@@ -41,10 +41,10 @@ public class LauncherServiceImpl implements LauncherService {
 		PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
 
 
-//		PropsUtil.setProperty(props,  "spring.cloud.nacos.discovery.username","nacos");
-//		PropsUtil.setProperty(props,  "spring.cloud.nacos.discovery.password","Nacos123123");
-//		PropsUtil.setProperty(props,  "spring.cloud.nacos.config.username","nacos");
-//		PropsUtil.setProperty(props,  "spring.cloud.nacos.config.password","Nacos123123");
+		PropsUtil.setProperty(props,  "spring.cloud.nacos.discovery.username","nacos");
+		PropsUtil.setProperty(props,  "spring.cloud.nacos.discovery.password","Nacos123123");
+		PropsUtil.setProperty(props,  "spring.cloud.nacos.config.username","nacos");
+		PropsUtil.setProperty(props,  "spring.cloud.nacos.config.password","Nacos123123");
 
 		PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
 

From c2734db256a4a30e120bfa9c62b3ae9e7cd42b76 Mon Sep 17 00:00:00 2001
From: zhenghaoyu <zhenghaoyu@superbgrace.com>
Date: Wed, 10 Jan 2024 21:11:17 +0800
Subject: [PATCH 3/3] =?UTF-8?q?1.=E6=B5=8B=E8=AF=95=E7=BD=91=E4=BB=A3?=
 =?UTF-8?q?=E7=A0=81=E8=BF=98=E5=8E=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 blade-service/logpm-patch/src/main/resources/application.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/blade-service/logpm-patch/src/main/resources/application.yml b/blade-service/logpm-patch/src/main/resources/application.yml
index ddad5233f..f422326ed 100644
--- a/blade-service/logpm-patch/src/main/resources/application.yml
+++ b/blade-service/logpm-patch/src/main/resources/application.yml
@@ -31,10 +31,10 @@ xxl:
   job:
     accessToken: ''
     admin:
-      addresses: http://127.0.0.1:7009/xxl-job-admin
+      addresses: http://192.168.10.106:7009/xxl-job-admin
     executor:
       appname: logpm-patch-xxljob
-      ip: 127.0.0.1
+      ip: 192.168.10.106
       logpath: ../data/applogs/logpm-patch-xxljob/jobhandler
       logretentiondays: -1
       port: 7118