diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
index 25178c3..900ced0 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
@@ -9,11 +9,13 @@ import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.modules.wms.api.mes.entity.*;
 import org.jeecg.modules.wms.api.mes.servuce.IMesService;
 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.framework.service.IHuahengMultiHandlerService;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
@@ -42,7 +44,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSON;
-import org.jeecg.common.exception.JeecgBootException;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 
 /**
@@ -77,6 +78,8 @@ public class MesServiceImpl implements IMesService {
     private ITaskHeaderService taskHeaderService;
     @Resource
     private IContainerService containerService;
+    @Resource
+    private IHuahengMultiHandlerService huahengMultiHandlerService;
 
     /**
      * 要求入库单详情 必须是不重样的
@@ -147,7 +150,7 @@ public class MesServiceImpl implements IMesService {
         if (!success) {
             throw new JeecgBootException("MES下发入库信息,更新入库组盘头失败");
         }
-        return receiptContainerHeaderService.createReceiptTask(receiptContainerHeader, warehouseCode);
+        return huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode);
     }
 
     @Override
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
index 973771e..d607aeb 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -160,10 +160,7 @@ public class WcsServiceImpl implements WcsService {
         int allocationRule = Integer.parseInt(value);
         String materialAreaCode = null;
         // 查询任务明细
-        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
-        taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskHeaderId, taskNo);
-        List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
-
+        List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(Integer.parseInt(taskNo));
         if (taskDetailList.size() > 0) {
             String materialCode = taskDetailList.get(0).getMaterialCode();
             if (StringUtils.isNotEmpty(materialCode)) {
@@ -199,12 +196,12 @@ public class WcsServiceImpl implements WcsService {
             }
             // 去重
             receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList());
-
             if (receiptContainerDetailList.size() > 0) {
                 // 更新库位编码到组盘头表
                 ReceiptContainerDetail receiptContainerDetail = receiptContainerDetailList.get(0);
                 if (receiptContainerDetail != null) {
-                    ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
+                    ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
+                    receiptContainerHeader.setId(receiptContainerDetail.getReceiptContainerId());
                     receiptContainerHeader.setToLocationCode(locationCode);
                     if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) {
                         throw new JeecgBootException("分配库位时,更新入库组盘的库位号失败");
@@ -241,6 +238,8 @@ public class WcsServiceImpl implements WcsService {
             }
         }
 
+        taskHeader = new TaskHeader();
+        taskHeader.setId(Integer.parseInt(taskNo));
         taskHeader.setZoneCode(location.getZoneCode());
         taskHeader.setPreTaskNo(preTaskNo);
         taskHeader.setWeight(Integer.parseInt(warecellDomain.getWeight()));
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/HuahengBaseController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/HuahengBaseController.java
index e3cba94..d34b506 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/HuahengBaseController.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/HuahengBaseController.java
@@ -3,10 +3,10 @@ package org.jeecg.modules.wms.framework.controller;
 import java.util.concurrent.TimeUnit;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Resource;
 
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.utils.support.RedissonDistributedLocker;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import cn.hutool.core.date.SystemClock;
 import cn.hutool.core.util.StrUtil;
@@ -18,7 +18,7 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class HuahengBaseController {
 
-    @Autowired
+    @Resource
     private RedissonDistributedLocker redissonDistributedLocker;
 
     public interface MultiProcessListener {
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java
index b6efdc9..fe52e27 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/IHuahengMultiHandlerService.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.framework.service;
 
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
 import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
 
 /**
@@ -9,4 +10,6 @@ import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
 public interface IHuahengMultiHandlerService {
 
     Result sendTaskToWcs(TaskHeader taskHeader);
+
+    Result<TaskHeader> createReceiptTask(ReceiptContainerHeader receiptContainerHeader, String warehouseCode);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java
index d3a91a1..e72f5b6 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/service/impl/HuahengMultiHandlerServiceImpl.java
@@ -5,6 +5,8 @@ import javax.annotation.Resource;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
 import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService;
+import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
+import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService;
 import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader;
 import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService;
 import org.springframework.stereotype.Service;
@@ -17,6 +19,8 @@ public class HuahengMultiHandlerServiceImpl extends HuahengBaseController implem
 
     @Resource
     private ITaskHeaderService taskHeaderService;
+    @Resource
+    private IReceiptContainerHeaderService receiptContainerHeaderService;
 
     @Override
     public Result sendTaskToWcs(TaskHeader taskHeader) {
@@ -33,4 +37,17 @@ public class HuahengMultiHandlerServiceImpl extends HuahengBaseController implem
         });
         return result;
     }
+
+    @Override
+    public Result<TaskHeader> createReceiptTask(ReceiptContainerHeader receiptContainerHeader, String warehouseCode) {
+        String lockKey = warehouseCode;
+        Result result = handleMultiProcess("createReceiptTask", lockKey, new MultiProcessListener() {
+            @Override
+            public Result<?> doProcess() {
+                Result result = receiptContainerHeaderService.createReceiptTask(receiptContainerHeader, warehouseCode);
+                return result;
+            }
+        });
+        return result;
+    }
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
index 0d5e80d..59f6d5f 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
@@ -3,8 +3,6 @@ package org.jeecg.modules.wms.inventory.inventoryHeader.service;
 import java.math.BigDecimal;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -34,11 +32,12 @@ public interface IInventoryDetailService extends IService<InventoryDetail> {
 
     /**
      * 分页查询库存明细,组装容器填充度
-     * @author     TanYibin
-     * @createDate 2023年4月7日
-     * @param page
-     * @param queryWrapper
+     * @author                  TanYibin
+     * @createDate              2023年4月7日
+     * @param      page
+     * @param      queryWrapper
      * @return
      */
     IPage<InventoryDetail> queryPage(Page<InventoryDetail> page, QueryWrapper<InventoryDetail> queryWrapper);
+
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java
index 4982320..7ca8af2 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java
@@ -28,4 +28,8 @@ public interface IInventoryHeaderService extends IService<InventoryHeader> {
     InventoryHeader getInventoryHeaderByContainerCode(String containerCode, String warehouseCode);
 
     boolean updateInventoryContainerStatusByContainerCode(String containerCode, String warehouseCode);
+
+    boolean updateInventoryLocationAndZoneById(String locationCode, String zoneCode, Integer id);
+
+    boolean updateContainerStatusById(String containerStatus, Integer id);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
index 210e341..39feb83 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
@@ -4,19 +4,13 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.wms.config.container.entity.Container;
 import org.jeecg.modules.wms.config.container.service.IContainerService;
 import org.jeecg.modules.wms.config.containerCapacity.entity.ContainerCapacity;
 import org.jeecg.modules.wms.config.containerCapacity.service.IContainerCapacityService;
-import org.jeecg.modules.wms.config.location.entity.Location;
-import org.jeecg.modules.wms.config.material.entity.Material;
 import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail;
 import org.jeecg.modules.wms.inventory.inventoryHeader.mapper.InventoryDetailMapper;
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService;
@@ -24,7 +18,6 @@ import org.jeecg.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -120,9 +113,9 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe
 
     /**
      * 计算库存明细托盘填充度
-     * @author     TanYibin
-     * @createDate 2023年4月7日
-     * @param inventoryDetailList
+     * @author                         TanYibin
+     * @createDate                     2023年4月7日
+     * @param      inventoryDetailList
      */
     private void calculateFillDensity(List<InventoryDetail> inventoryDetailList) {
         // 根据仓库编码分组库存明细
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
index d840ad7..348aec7 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.inventory.inventoryHeader.service.impl;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
@@ -74,21 +75,44 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
         }
         InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode);
         if (inventoryHeader != null) {
-            inventoryHeader.setContainerStatus(container.getStatus());
-            boolean success = inventoryHeaderService.updateById(inventoryHeader);
+            boolean success = inventoryHeaderService.updateContainerStatusById(container.getStatus(), inventoryHeader.getId());
             if (!success) {
                 return success;
             }
             List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode);
+            List<InventoryDetail> inventoryDetailList1 = new ArrayList<>();
             if (inventoryDetailList.size() > 0) {
                 for (InventoryDetail inventoryDetail : inventoryDetailList) {
                     inventoryDetail.setContainerStatus(container.getStatus());
+                    InventoryDetail inventoryDetail1 = new InventoryDetail();
+                    inventoryDetail1.setId(inventoryDetail.getId());
+                    inventoryDetail1.setContainerStatus(container.getStatus());
+                    inventoryDetailList1.add(inventoryDetail1);
                 }
-                success = inventoryDetailService.updateBatchById(inventoryDetailList);
+                success = inventoryDetailService.updateBatchById(inventoryDetailList1);
             }
             return success;
         }
         return false;
     }
 
+    @Override
+    public boolean updateInventoryLocationAndZoneById(String locationCode, String zoneCode, Integer id) {
+        InventoryHeader inventoryHeader = new InventoryHeader();
+        inventoryHeader.setId(id);
+        inventoryHeader.setLocationCode(locationCode);
+        inventoryHeader.setZoneCode(zoneCode);
+        boolean success = inventoryHeaderService.updateById(inventoryHeader);
+        return success;
+    }
+
+    @Override
+    public boolean updateContainerStatusById(String containerStatus, Integer id) {
+        InventoryHeader inventoryHeader = new InventoryHeader();
+        inventoryHeader.setId(id);
+        inventoryHeader.setContainerStatus(containerStatus);
+        boolean success = inventoryHeaderService.updateById(inventoryHeader);
+        return success;
+    }
+
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
index 846e2ba..2ab373b 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
@@ -24,6 +24,7 @@ import org.jeecg.modules.wms.config.port.entity.Port;
 import org.jeecg.modules.wms.config.port.service.IPortService;
 import org.jeecg.modules.wms.config.zone.entity.Zone;
 import org.jeecg.modules.wms.config.zone.service.IZoneService;
+import org.jeecg.modules.wms.framework.service.IHuahengMultiHandlerService;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerDetailService;
@@ -77,6 +78,9 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
     @Autowired
     private IPortService portService;
 
+    @Resource
+    private IHuahengMultiHandlerService huahengMultiHandlerService;
+
     /*---------------------------------主表处理-begin-------------------------------------*/
 
     /**
@@ -332,7 +336,8 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
     @ResponseBody
     public Result createReceiptTask(@RequestBody ReceiptContainerHeader receiptContainerHeader, HttpServletRequest req) {
         String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
-        return receiptContainerHeaderService.createReceiptTask(receiptContainerHeader, warehouseCode);
+        Result result = huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode);
+        return result;
     }
 
     /**
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
index e0b51ab..e2d1781 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java
@@ -15,6 +15,7 @@ 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.entity.Location;
 import org.jeecg.modules.wms.config.location.service.ILocationService;
+import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService;
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
@@ -76,6 +77,8 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
     private IReceiptHeaderService receiptHeaderService;
     @Resource
     private IInventoryHeaderService inventoryHeaderService;
+    @Resource
+    private IParameterConfigurationService parameterConfigurationService;
 
     @Override
     @Transactional
@@ -224,6 +227,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         }
         ReceiptContainerHeader receiptContainerHeader1 = new ReceiptContainerHeader();
         receiptContainerHeader1.setId(receiptContainerHeader.getId());
+        receiptContainerHeader1.setToPort(receiptContainerHeader.getToPort());
         receiptContainerHeader1.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
         success = this.updateById(receiptContainerHeader1);
         if (!success) {
@@ -320,7 +324,6 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
     @OperationLog(bizId = "''", bizType = "'入库单追踪'", tag = "'入库任务取消'", extra = "#extraJsonString", msg = "'任务ID:' + #taskHeader.getId()",
         condition = "#receiptContainerDetailList.size() > 0", recordReturnValue = true)
     public boolean cancelReceiptTask(TaskHeader taskHeader) {
-        log.info("开始取消入库任务");
         ReceiptContainerHeader receiptContainerHeader = getById(taskHeader.getReceiptContainerHeaderId());
         if (receiptContainerHeader == null) {
             return false;
@@ -329,11 +332,18 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         if (receiptContainerStatus != QuantityConstant.RECEIPT_CONTAINER_TASK) {
             throw new JeecgBootException("取消入库任务时, 任务状态不为生成任务状态");
         }
+        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
+        if (StringUtils.isEmpty(value)) {
+            throw new JeecgBootException("取消入库任务时, 没有获取到配置属性");
+        }
+        int taskLocationRule = Integer.parseInt(value);
         receiptContainerHeader = new ReceiptContainerHeader();
         receiptContainerHeader.setId(taskHeader.getReceiptContainerHeaderId());
         receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_BUILD);
         // 取消任务后,不指定组盘库位
-        receiptContainerHeader.setToLocationCode(QuantityConstant.EMPTY_STRING);
+        if (taskLocationRule == QuantityConstant.RULE_TASK_NOT_LOCATION) {
+            receiptContainerHeader.setToLocationCode(QuantityConstant.EMPTY_STRING);
+        }
         boolean success = receiptContainerHeaderService.updateById(receiptContainerHeader);
         if (!success) {
             throw new JeecgBootException("取消入库任务时, 更新入库组盘头失败");
@@ -370,7 +380,6 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         }
         LogRecordContext.putVariable("receiptContainerDetailList", receiptContainerDetailList);// 操作日志收集
         LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(receiptContainerDetailList));// 操作日志收集
-        log.info("完成取消入库任务");
         return true;
     }
 
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/controller/ReceiveController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/controller/ReceiveController.java
index 33d462b..aa203f2 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/controller/ReceiveController.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiving/controller/ReceiveController.java
@@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.wms.framework.controller.HuahengBaseController;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
 import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService;
 import org.jeecg.modules.wms.receipt.receiving.domain.Receive;
@@ -31,7 +32,7 @@ import lombok.extern.slf4j.Slf4j;
 @RestController
 @RequestMapping("/receipt/receiveHeader")
 @Slf4j
-public class ReceiveController {
+public class ReceiveController extends HuahengBaseController {
 
     @Resource
     private IReceiptDetailService receiptDetailService;
@@ -80,7 +81,15 @@ public class ReceiveController {
     @ResponseBody
     public Result receiving(@RequestBody List<Receive> receiveList, HttpServletRequest req) {
         String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
-        return receiveService.receiving(receiveList, warehouseCode);
+        String lockKey = warehouseCode;
+        Result result = handleMultiProcess("receiving", lockKey, new MultiProcessListener() {
+            @Override
+            public Result<?> doProcess() {
+                Result result = receiveService.receiving(receiveList, warehouseCode);
+                return result;
+            }
+        });
+        return result;
     }
 
     /**
@@ -93,7 +102,15 @@ public class ReceiveController {
     @ResponseBody
     public Result<TaskHeader> receivingAndCreateTask(@RequestBody List<Receive> receiveList, HttpServletRequest req) {
         String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(req);
-        return receiveService.receivingAndCreateTask(receiveList, warehouseCode);
+        String lockKey = warehouseCode;
+        Result result = handleMultiProcess("receivingAndCreateTask", lockKey, new MultiProcessListener() {
+            @Override
+            public Result<?> doProcess() {
+                Result result = receiveService.receivingAndCreateTask(receiveList, warehouseCode);
+                return result;
+            }
+        });
+        return result;
     }
 
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
index 61f8317..2695f52 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskHeader.java
@@ -9,7 +9,6 @@ import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -116,7 +115,7 @@ public class TaskHeader implements Serializable {
     @ApiModelProperty(value = "目标出入口")
     private String toPortCode;
     @ApiModelProperty(value = "AGV关联任务ID")
-    private int agvTaskId;
+    private Integer agvTaskId;
     @ApiModelProperty(value = "生成agv任务")
     private Integer sendAgv;
     @ApiModelProperty(value = "回传MES信息")
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
index e166788..19c5382 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
@@ -295,4 +295,19 @@ public interface ITaskHeaderService extends IService<TaskHeader> {
      * @return
      */
     Result cancelShipmentTask(TaskHeader taskHeader);
+
+    /**
+     * 更新状态
+     * @param  status
+     * @param  id
+     * @return
+     */
+    boolean updateStatusById(int status, int id);
+
+    /**
+     * 合并库存
+     * @param  taskHeader
+     * @return
+     */
+    boolean combineInventoryDetail(TaskHeader taskHeader);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
index dbd3914..21cc2be 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -33,7 +33,6 @@ import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailS
 import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService;
 import org.jeecg.modules.wms.inventory.inventoryTransaction.entity.InventoryTransaction;
 import org.jeecg.modules.wms.inventory.inventoryTransaction.service.IInventoryTransactionService;
-import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
@@ -73,6 +72,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import cn.monitor4all.logRecord.annotation.OperationLog;
 import cn.monitor4all.logRecord.context.LogRecordContext;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @Description: 任务表
@@ -80,6 +80,7 @@ import cn.monitor4all.logRecord.context.LogRecordContext;
  * @Date:        2022-11-10
  * @Version:     V1.0
  */
+@Slf4j
 @Service
 public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHeader> implements ITaskHeaderService {
 
@@ -1092,8 +1093,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         recordReturnValue = true)
     public Result completeReceiptTask(TaskHeader taskHeader) {
         if (taskHeader == null) {
-            return Result.error("任务未找到,执行中止");
+            return Result.error("入库任务未找到,执行中止");
         }
+        log.info("开始完成入库任务, 任务号" + taskHeader.getId());
         String warehouseCode = taskHeader.getWarehouseCode();
         String fromLocationCode = taskHeader.getFromLocationCode();
         String toLocationCode = taskHeader.getToLocationCode();
@@ -1103,27 +1105,33 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskHeader.getId());
         boolean success = false;
         if (taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
-            return Result.ok("任务(" + taskHeader.getId() + ")任务已经是完成的!");
+            return Result.ok("入库任务(" + taskHeader.getId() + ")已经是完成的!");
         }
         if (taskDetailList.isEmpty()) {
-            throw new JeecgBootException("任务明细为空");
+            throw new JeecgBootException("入库任务明细为空");
         }
         Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode);
         if (toLocation == null) {
-            throw new JeecgBootException("完成任务时,没有找到目的库位");
+            throw new JeecgBootException("完成入库任务时,没有找到目的库位");
         }
         InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode);
         if (inventoryHeader != null) {
             if (taskType == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) {
-                inventoryHeader.setLocationCode(toLocationCode);
-                inventoryHeader.setZoneCode(zoneCode);
-                inventoryHeaderService.updateById(inventoryHeader);
+                if (!inventoryHeaderService.updateInventoryLocationAndZoneById(toLocationCode, zoneCode, inventoryHeader.getId())) {
+                    throw new JeecgBootException("完成入库任务时,没有找到目的库位");
+                }
                 List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByInventoryHeaderId(inventoryHeader.getId());
-                for (InventoryDetail inventoryDetail : inventoryDetailList) {
-                    inventoryDetail.setLocationCode(toLocationCode);
-                    inventoryDetail.setZoneCode(zoneCode);
-                    if (!inventoryDetailService.updateById(inventoryDetail)) {
-                        throw new ServiceException("更新库存详情失败");
+                if (inventoryDetailList.size() > 0) {
+                    List<InventoryDetail> inventoryDetailList1 = new ArrayList<>();
+                    for (InventoryDetail inventoryDetail : inventoryDetailList) {
+                        InventoryDetail inventoryDetail1 = new InventoryDetail();
+                        inventoryDetail1.setId(inventoryDetail.getId());
+                        inventoryDetail1.setLocationCode(toLocationCode);
+                        inventoryDetail1.setZoneCode(zoneCode);
+                        inventoryDetailList1.add(inventoryDetail1);
+                    }
+                    if (!inventoryDetailService.updateBatchById(inventoryDetailList1)) {
+                        throw new ServiceException("完成入库任务时,更新库存详情失败");
                     }
                 }
             }
@@ -1155,12 +1163,16 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             taskDetail.setReceiptCode(receiptDetail.getReceiptCode());
             BigDecimal taskQty = receiptDetail.getTaskQty();
             BigDecimal qty = receiptDetail.getQty();
+            int receiptId = receiptDetail.getReceiptId();
+            ReceiptDetail receiptDetail1 = new ReceiptDetail();
+            receiptDetail1.setId(receiptDetail.getId());
+            receiptDetail1.setReceiptId(receiptId);
             if (taskQty.compareTo(qty) >= 0) {
-                receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_COMPLETED);
+                receiptDetail1.setStatus(QuantityConstant.RECEIPT_HEADER_COMPLETED);
             } else {
-                receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_SHELF);
+                receiptDetail1.setStatus(QuantityConstant.RECEIPT_HEADER_SHELF);
             }
-            receiptDetaiList.add(receiptDetail);
+            receiptDetaiList.add(receiptDetail1);
 
             BigDecimal receiptQty = taskDetail.getQty();
             InventoryDetail inventoryDetail = new InventoryDetail();
@@ -1229,8 +1241,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             throw new JeecgBootException("完成入库任务时,更新库位失败");
         }
 
-        taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        success = taskHeaderService.updateById(taskHeader);
+        success = taskHeaderService.updateStatusById(QuantityConstant.TASK_STATUS_COMPLETED, taskHeader.getId());
         if (!success) {
             throw new JeecgBootException("完成入库任务时,更新任务失败");
         }
@@ -1239,7 +1250,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         if (!success) {
             throw new JeecgBootException("完成入库任务时,更新容器失败");
         }
-        if (!combineInventoryDetail(taskHeader)) {
+        if (!taskHeaderService.combineInventoryDetail(taskHeader)) {
             throw new JeecgBootException("合并入库库存失败");
         }
         if (!receiptDetailService.updateBatchById(receiptDetaiList)) {
@@ -1261,6 +1272,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         LogRecordContext.putVariable("extraJsonString1", JSON.toJSONString(taskDetailList));
         LogRecordContext.putVariable("receiptDetaiList", receiptDetaiList);
         LogRecordContext.putVariable("extraJsonString2", JSON.toJSONString(receiptDetaiList));
+        log.info("完成入库任务, 任务号" + taskHeader.getId());
         return Result.ok("完成入库任务");
     }
 
@@ -1287,7 +1299,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         String fromLocationCode = taskHeader.getFromLocationCode();
         String toLocationCode = taskHeader.getToLocationCode();
         String containerCode = taskHeader.getContainerCode();
-//        String zoneCode = taskHeader.getZoneCode();
+        String zoneCode = taskHeader.getZoneCode();
         int taskType = taskHeader.getTaskType();
         List<TaskDetail> taskDetailList = taskDetailService.getTaskDetailListByTaskId(taskHeader.getId());
         boolean success = false;
@@ -1468,6 +1480,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         return Result.ok("完成出库任务");
     }
 
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean combineInventoryDetail(TaskHeader taskHeader) {
         boolean success = false;
@@ -1488,9 +1501,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 InventoryDetail inventoryDetail2 = inventoryDetailList.get(j);
                 if (inventoryDetail1.getMaterialCode().equals(inventoryDetail2.getMaterialCode()) && inventoryDetail1.getBatch().equals(inventoryDetail2.getBatch())
                     && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject())) {
+                    // 属性一样的库存,相加合并。
                     BigDecimal totalQty = inventoryDetail1.getQty().add(inventoryDetail2.getQty());
-                    inventoryDetail1.setQty(totalQty);
-                    success = inventoryDetailService.updateById(inventoryDetail1);
+                    InventoryDetail inventoryDetail = new InventoryDetail();
+                    inventoryDetail.setId(inventoryDetail1.getId());
+                    inventoryDetail.setQty(totalQty);
+                    success = inventoryDetailService.updateById(inventoryDetail);
                     if (!success) {
                         throw new JeecgBootException("合并库存时, 更新库存详情失败:" + inventoryDetail1.getId());
                     }
@@ -1512,6 +1528,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         if (container == null) {
             throw new JeecgBootException("合并库存时, 没有找到容器, 容器编码为" + containerCode);
         }
+        int inventoryId = inventoryHeader.getId();
+        inventoryHeader = new InventoryHeader();
+        inventoryHeader.setId(inventoryId);
         inventoryHeader.setTotalQty(totalQty);
         inventoryHeader.setTotalLines(totalLines);
         inventoryHeader.setContainerStatus(container.getStatus());
@@ -2206,25 +2225,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Result cancelReceiptTask(TaskHeader taskHeader) {
+        log.info("开始取消入库任务");
         boolean success = receiptContainerHeaderService.cancelReceiptTask(taskHeader);
         if (!success) {
             throw new JeecgBootException("取消入库任务时, 更新组盘头状态失败");
         }
-        String containerCode = taskHeader.getContainerCode();
-        String warehouseCode = taskHeader.getWarehouseCode();
-        ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getUnCompleteReceiptContainerByCode(containerCode, warehouseCode);
-        String value = parameterConfigurationService.getValueByCode(QuantityConstant.RULE_TASK_LOCATION);
-        if (StringUtils.isEmpty(value)) {
-            throw new JeecgBootException("取消入库任务时, 没有获取到配置属性");
-        }
-        int taskLocationRule = Integer.parseInt(value);
-        if (taskLocationRule == QuantityConstant.RULE_TASK_NOT_LOCATION) {
-            receiptContainerHeader.setToLocationCode(QuantityConstant.EMPTY_STRING);
-            success = receiptContainerHeaderService.updateById(receiptContainerHeader);
-            if (!success) {
-                throw new JeecgBootException("取消入库任务时, 更新组盘头状态失败!!");
-            }
-        }
+        log.info("完成取消入库任务");
         return Result.ok("取消入库任务成功");
     }
 
@@ -2243,6 +2249,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
         return Result.ok("取消出库任务成功");
     }
 
+    @Override
+    public boolean updateStatusById(int status, int id) {
+        TaskHeader taskHeader = new TaskHeader();
+        taskHeader.setId(id);
+        taskHeader.setStatus(status);
+        boolean success = taskHeaderService.updateById(taskHeader);
+        return success;
+    }
+
     /**
      * 取消任务,恢复容器和库位状态
      * @param  taskHeader
@@ -2277,6 +2292,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             throw new JeecgBootException("取消任务时, 没有找到容器");
         }
         if (inventoryHeader != null) {
+            Integer inventoryHeaderId = inventoryHeader.getId();
+            inventoryHeader = new InventoryHeader();
+            inventoryHeader.setId(inventoryHeaderId);
             inventoryHeader.setContainerStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
             success = inventoryHeaderService.updateById(inventoryHeader);
             if (!success) {