diff --git a/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java b/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java
index b968048..74c3b0c 100644
--- a/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java
+++ b/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java
@@ -1,6 +1,7 @@
 package com.huaheng.api.wcs.controller;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huaheng.api.wcs.domain.ManyEmptyDomain;
@@ -14,6 +15,7 @@ import com.huaheng.framework.aspectj.lang.constant.BusinessType;
 import com.huaheng.framework.web.controller.BaseController;
 import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.framework.web.service.ConfigService;
+import com.huaheng.pc.config.address.service.AddressService;
 import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.locationHigh.domain.LocationHigh;
@@ -24,12 +26,17 @@ import com.huaheng.pc.config.zone.domain.Zone;
 import com.huaheng.pc.config.zone.service.ZoneService;
 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
+import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
+import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import com.huaheng.pc.task.taskHeader.service.WorkTaskService;
+import com.sun.javafx.tk.Toolkit;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -52,6 +59,10 @@ public class EmptyContainerController extends BaseController {
     private LocationHighService locationHighService;
     @Resource
     private ContainerService containerService;
+    @Autowired
+    private AddressService addressService;
+    @Resource
+    private TaskHeaderService taskHeaderService;
     /**
      * 生成空托盘入库任务
      * @return
@@ -65,11 +76,15 @@ public class EmptyContainerController extends BaseController {
             throw new ServiceException("空托盘组参数不对!");
         }
         String containerCode = manyEmptyDomain.getContainerCode();
-        String warehouseCode = manyEmptyDomain.getWareohuseCode();
+        String warehouseCode = manyEmptyDomain.getWarehouseCode();
         String area = manyEmptyDomain.getArea();
         String roadWay = manyEmptyDomain.getRoadWay();
-        String[] idArray = Convert.toStrArray(roadWay);
-        List<String> roadWays = Arrays.asList(idArray);
+        JSONArray jsonArray = JSONArray.parseArray(roadWay);
+        List<String> roadWays = new ArrayList<>();
+        for(int i=0; i< jsonArray.size(); i++) {
+            Integer json =  (Integer)jsonArray.get(i);
+            roadWays.add(String.valueOf(json));
+        }
         String value = configService.getKey(QuantityConstant.RULE_ALLOCATION);
         String height = manyEmptyDomain.getHeight();
         if (StringUtils.isEmpty(value)) {
@@ -82,6 +97,14 @@ public class EmptyContainerController extends BaseController {
         if(zone == null) {
             return AjaxResult.error("分配库位时,没有找到库区");
         }
+        LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        taskHeaderLambdaQueryWrapper.eq(TaskHeader::getContainerCode, containerCode)
+                .eq(TaskHeader::getWarehouseCode, warehouseCode)
+                .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED);
+        TaskHeader taskHeader = taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
+        if(taskHeader != null) {
+            return AjaxResult.success("已经生成空托盘组任务");
+        }
         //查询满足条件的库位类型
         LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(LocationType::getZoneCode, zone.getCode())
@@ -92,8 +115,9 @@ public class EmptyContainerController extends BaseController {
         }
         List<String> locationTypeCodeList = locationTypeList.stream().
                 map(t -> t.getCode()).collect(Collectors.toList());
+        int highHeight = Float.valueOf(height).intValue();
         LambdaQueryWrapper<LocationHigh> locationHighLambdaQueryWrapper = Wrappers.lambdaQuery();
-        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, Integer.parseInt(height))
+        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, highHeight)
                 .in(LocationHigh::getLocationTypeCode, locationTypeCodeList);
         LocationHigh locationHigh = locationHighService.getOne(locationHighLambdaQueryWrapper);
         int high = locationHigh.getHigh();
@@ -117,14 +141,17 @@ public class EmptyContainerController extends BaseController {
         if(manyEmptyDomain == null){
             throw new ServiceException("空托盘组参数不对!");
         }
+
         String containerCode = manyEmptyDomain.getContainerCode();
+        String warehouseCode = manyEmptyDomain.getWarehouseCode();
         if(StringUtils.isEmpty(containerCode)){
             throw new ServiceException("托盘号为空“");
         }
-        Container container = containerService.getContainerByCode(containerCode);
+        Container container = containerService.getContainerByCode(containerCode, warehouseCode);
         if(container == null){
             throw new ServiceException("没有找到托盘“");
         }
-        return workTaskService.createManyEmptyOut(containerCode, "P1024");
+        String port = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_MANY_EMPTY_CONTAINER, warehouseCode);
+        return workTaskService.createManyEmptyOut(containerCode,warehouseCode,port);
     }
 }
diff --git a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java
index 3f7fe67..e6e2215 100644
--- a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java
+++ b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java
@@ -36,15 +36,8 @@ public class WarecellAllocation extends BaseController {
     /*
         WCS给的长,宽,高,重在有不同规格库位才有用,destination是区域, locationType库位类型
      */
-    public AjaxResult WarecellAllocation(String taskNo, String length, String width, String height, String weight, String destination, String warehouseCode) {
-        WcsTask wcsTask = new WcsTask();
-        wcsTask.setTaskNo(taskNo);
-        wcsTask.setLength(length);
-        wcsTask.setWidth(width);
-        wcsTask.setHeight(height);
-        wcsTask.setWeight(weight);
-        wcsTask.setWarehouseCode(warehouseCode);
-        wcsTask.setDestination(destination);
+    public AjaxResult WarecellAllocation(@RequestBody WcsTask wcsTask)  {
+
         AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
             @Override
             public AjaxResult doProcess() {
diff --git a/src/main/java/com/huaheng/api/wcs/domain/ManyEmptyDomain.java b/src/main/java/com/huaheng/api/wcs/domain/ManyEmptyDomain.java
index ebe978f..73514c3 100644
--- a/src/main/java/com/huaheng/api/wcs/domain/ManyEmptyDomain.java
+++ b/src/main/java/com/huaheng/api/wcs/domain/ManyEmptyDomain.java
@@ -9,7 +9,7 @@ public class ManyEmptyDomain {
     private String weight;
     private String roadWay;
     private String area;
-    private String wareohuseCode;
+    private String warehouseCode;
 
     public String getContainerCode() {
         return containerCode;
@@ -68,11 +68,11 @@ public class ManyEmptyDomain {
         this.area = area;
     }
 
-    public String getWareohuseCode() {
-        return wareohuseCode;
+    public String getWarehouseCode() {
+        return warehouseCode;
     }
 
-    public void setWareohuseCode(String wareohuseCode) {
-        this.wareohuseCode = wareohuseCode;
+    public void setWarehouseCode(String warehouseCode) {
+        this.warehouseCode = warehouseCode;
     }
 }
diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
index 662bcfb..95dcb57 100644
--- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java
@@ -150,7 +150,6 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
             String roadWay = location.getRoadway();
             List<String> roadWays = new ArrayList<>();
             roadWays.add(roadWay);
-            String roadWay = location.getRoadway();
             String containerCode = taskHeader.getContainerCode();
             List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId());
             String materialAreaCode = null;
diff --git a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java
index 55c4dca..86eead2 100644
--- a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java
@@ -286,10 +286,12 @@ public class TaskAssignServiceImpl implements TaskAssignService {
         switch (taskType) {
             case QuantityConstant.TASK_TYPE_WHOLERECEIPT:
             case QuantityConstant.TASK_TYPE_EMPTYRECEIPT:
+            case QuantityConstant.TASK_TYPE_MANY_EMPTYRECEIPT:
                 wcsTask.setTaskType(100);
                 break;
             case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
             case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT:
+            case QuantityConstant.TASK_TYPE_MANY_EMPTYSHIPMENT:
                 wcsTask.setTaskType(300);
                 break;
             case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
index f2c00b6..9758633 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
@@ -44,7 +44,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
 
     @Override
     public String allocation(int locationRule, List<String> locationTypeCodeList,
-             int high, int high, String area, List<String> raodWays, String warehouseCode, String containerCode, String materialAreaCode) {        LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery();
+             int high, String area, List<String> raodWays, String warehouseCode, String containerCode, String materialAreaCode) {        LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery();
         containerLambdaQueryWrapper.eq(Container::getCode, containerCode)
                 .eq(Container::getWarehouseCode, warehouseCode);
         Container container = containerService.getOne(containerLambdaQueryWrapper);
diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java
index 2c5e1e9..45b3496 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java
@@ -160,9 +160,10 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         }
         List<String> locationTypeCodeList = locationTypeList.stream().
                 map(t -> t.getCode()).collect(Collectors.toList());
+        int highHeight = Float.valueOf(height).intValue();
         LambdaQueryWrapper<LocationHigh> locationHighLambdaQueryWrapper = Wrappers.lambdaQuery();
-        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, Integer.parseInt(height))
-                                    .in(LocationHigh::getLocationTypeCode, locationTypeCodeList);
+        locationHighLambdaQueryWrapper.eq(LocationHigh::getHighLevel, highHeight)
+                .in(LocationHigh::getLocationTypeCode, locationTypeCodeList);
         LocationHigh locationHigh = locationHighService.getOne(locationHighLambdaQueryWrapper);
         int high = locationHigh.getHigh();
         //查询任务明细
@@ -260,10 +261,10 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         if (!taskHeaderService.updateById(taskHeader)) {
             throw new ServiceException("更新任务头表目标库位失败");
         }
-        WCSInfo wcsInfo = new WCSInfo();
-        wcsInfo.setLocationCode(locationCode);
-        wcsInfo.setPreTask(String.valueOf(preTaskNo));
-        return AjaxResult.success().setData(wcsInfo);
+
+        WcsTask wcsTask1 = new WcsTask();
+        wcsTask1.setToLocationCode(locationCode);
+        return AjaxResult.success().setData(wcsTask1);
     }
 
     /**
diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
index 6e6d827..88b877e 100644
--- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java
+++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
@@ -381,6 +381,8 @@ public class QuantityConstant {
     public static final String ADDRESS_WCS_STATION_INFOS = "WCS_STATION_INFOS";
     //WCS获取可用巷道
     public static final String ADDRESS_WCS_AVAILABLE_ROADWAY = "WCS_AVAILABLE_ROADWAY";
+    //拆盘机地址
+    public static final String ADDRESS_WCS_MANY_EMPTY_CONTAINER = "WCS_MANY_EMPTY_CONTAINER";
 
     //ERP
     public static final String ERP = "ERP";
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
index 3c6a57e..8d9f760 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
@@ -200,9 +200,10 @@ public class TransferTaskService {
         List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId());
         /* 库存头表id*/
         List<Integer> inventoryHeadIdList = new ArrayList<>();
+        String warehouseCode = taskHeader.getWarehouseCode();
+        InventoryDetail inventoryDetail = null;
         for (TaskDetail taskDetail : taskDetailList) {
             taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-            InventoryDetail inventoryDetail = inventoryDetailService.getById(taskDetail.getToInventoryId());
             inventoryHeadIdList.add(inventoryDetail.getInventoryHeaderId());
             InventoryTransaction inventoryTransaction = new InventoryTransaction();
             inventoryTransaction.setWarehouseCode(taskDetail.getWarehouseCode());
@@ -239,9 +240,13 @@ public class TransferTaskService {
         if (!taskHeaderService.saveOrUpdate(taskHeader)) {
             throw new ServiceException("任务单据状态更新失败!");
         }
-        locationService.updateContainerCodeAndStatus(taskHeader.getFromLocation(), "", QuantityConstant.STATUS_LOCATION_EMPTY);
-        locationService.updateContainerCodeAndStatus(taskHeader.getToLocation(), taskHeader.getContainerCode(), QuantityConstant.STATUS_LOCATION_EMPTY);
-        containerService.updateLocationCodeAndStatus(taskHeader.getContainerCode(), taskHeader.getToLocation(), QuantityConstant.STATUS_CONTAINER_SOME);
+        if(inventoryDetail != null) {
+            containerService.updateLocationCodeAndStatus(taskHeader.getContainerCode(), taskHeader.getToLocation(), QuantityConstant.STATUS_CONTAINER_SOME, warehouseCode);
+        } else {
+            containerService.updateLocationCodeAndStatus(taskHeader.getContainerCode(), taskHeader.getToLocation(), QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode);
+        }
+        locationService.updateContainerCodeAndStatus(taskHeader.getFromLocation(), "", QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode);
+        locationService.updateContainerCodeAndStatus(taskHeader.getToLocation(), taskHeader.getContainerCode(), QuantityConstant.STATUS_LOCATION_EMPTY, warehouseCode);
         inventoryHeadIdList = inventoryHeadIdList.stream().distinct().collect(Collectors.toList());
         LambdaUpdateWrapper<InventoryHeader> headerUpdateWrapper = Wrappers.lambdaUpdate();
         headerUpdateWrapper.set(InventoryHeader::getLocationCode, taskHeader.getToLocation())
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java
index 816f35c..1142b99 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java
@@ -413,12 +413,12 @@ public class WorkTaskService {
      * @return
      */
     @Transactional
-    public AjaxResult createManyEmptyOut(String containerCode, String port) {
+    public AjaxResult createManyEmptyOut(String containerCode, String warehouseCode, String port) {
         /* 库位编码*/
         String locationCode = null;
         //验证容器
         if (StringUtils.isNotEmpty(containerCode)) {
-            Container container = containerService.getContainerByCode(containerCode);
+            Container container = containerService.getContainerByCode(containerCode, warehouseCode);
             if (StringUtils.isNull(container)) {
                 return AjaxResult.error(containerCode+"容器不存在");
             }
@@ -429,7 +429,8 @@ public class WorkTaskService {
                 return AjaxResult.error("该容器不在库位上");
             }
             LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery();
-            queryWrapper.eq(InventoryDetail::getContainerCode, containerCode);
+            queryWrapper.eq(InventoryDetail::getContainerCode, containerCode)
+                    .eq(InventoryDetail::getWarehouseCode, warehouseCode);
             if (inventoryDetailService.count(queryWrapper) > 0) {
                 return AjaxResult.error("该容器上有库存,无法空托出库!");
             }