diff --git a/src/main/java/com/huaheng/HuaHengApplication.java b/src/main/java/com/huaheng/HuaHengApplication.java
index da3bb15..4b624d9 100644
--- a/src/main/java/com/huaheng/HuaHengApplication.java
+++ b/src/main/java/com/huaheng/HuaHengApplication.java
@@ -31,41 +31,20 @@ public class HuaHengApplication
         SpringApplication.run(HuaHengApplication.class, args);
         System.out.println("***************  华恒WMS启动成功JAR  ***************\n" +
                 " >>>     WMS启动成功JAR!     <<<  \n"+
-                        "                                      ▀▄▄ ▀▄▄\n" +
-                "                              ▄▄▄▄▄▄▓▌ ▐██▄ ▓█▄ ▀▄\n" +
-                "                          ░▓▓███████▀ ▄████▌▐██▌ ▐▓\n" +
-                "                ▄▄▄▄▄▄ ▄  █▀██████▓░▄▓█████▄███▓ ░█▌▄▄▄ ▄ ▄▄▄▄▄▄\n" +
-                "                █      ▐▌▐▌▐██████▌▐████████████▌ █▌   ▐▌      █\n" +
-                "                █       ▓  ▓███████▄████████████▌▐██   ▓       █\n" +
-                "                █   ▄  ▐▌  ▐▓███████████████████▄███   ▐▌  ▄   █\n" +
-                "                █   ▐▌▐█     ▀▀▀▀▀▓▓█████████▀▀▀  ▓▓░   █▌▐▌   █\n" +
-                "                █   █░▓▌  ▄▓▄        █████░       ░█▌   ▐▓░█   █\n" +
-                "                ▌▄ ▐▌ ▐█   ▀   ▓▓▄▄▄▄▓▓  █▄▄██████▌ ▀   █▌ ▐▌ ▄▐\n" +
-                "                ▐▌  ▓▄ ▀▓▄     ███████    ███████▓▓   ▄▓▀ ▄▓  ▐▌\n" +
-                "                ▌▀▄  ▀▀▄▄░▀▄   ▀▀▓▓███▌  ▐█░▄▄▄▄ ▀▀ ▄▀░▄▄▀▀  ▄▀▐\n" +
-                "         ▄      █  ▀▀▄▄  ▀▀▄▀▄    ███▀▀▀▀▀▀ ▓███░ ▄▀▄▀▀  ▄▄▀▀  █\n" +
-                "         ▐▌     █     ▀▓▓▄ ▐▌▐▌   ▄▄▄ ▐███▌ ▐██▓▌▐▌▐▌ ▄▓▀      █  ▄      ▄\n" +
-                "        ▄▀      █   ▄  ▐██▌░█▓   ▐█▓▌ ░▓██▓       ▓█░▐█▄       █  ▐▌     ▐▌\n" +
-                "      ▄▀▄▄▀     █   ▐▌ ██▐▓▄▀           ▄▄▀▀▀██▄▄  ▀▄▓▌▐▌      ▀▄▄█░    ▄▀\n" +
-                "     ▐▌▓█▌      ▀ ▄▄█░▐█▓▀           ▄███     ██▓▓    ▓▀     ▄▓██▀    ▄▀▄▄▀\n" +
-                "     ▓███▓     ▄▓██▀  ██▌           ▓▓██▌    ▐████▌ ▄▀▄▄▀   ▐███▌    ▐▌▓█▌\n" +
-                "     ▐████▌   ▐███▌  ▐▓▓           ▐████     █████ ▐▌▓█▌    ░▓███    ▓███▓\n" +
-                "      █████   ░▓███ ░██▌    ▄▄▄▄████████    ▐████▌ ▓███▓    ▄▄███▓░  ▐████▌\n" +
-                "      ░█████  ▄▄███▓▐██▌ ░███▓▓▀   ▀████▌   █████  ▐████▌░██████▀ ▐███████▓\n" +
-                "  ▓▓█▌ ▐████▌▓▓███▀ ███  ▓▓███     ▄████████████▓▓██████▓▐█████▌  ▐███░█████\n" +
-                "  ████  █████████▌ ░███ ▐████▌    ▓▓████▌  ▐████████░██████████   ▐█▓▓ ▐████▓\n" +
-                "  ████  ▐████████  ▐███░▐████▌   ▐███████   ▓███████ ▐█████████▌  ███▌  █████▌\n" +
-                "  ████▌▄█████████▌ ▐███▌▓▓███    ██████▓▓    ▀▀▓▓██▌  ██████████▄▄███▌  ▐████▓\n" +
-                "  ▐███████▓▓▀▓████▄▓▓████████    █████▌        ░███▌  ▐████▓ ▀▀▀▓▓███▌ ▄█████▌\n" +
-                "  ▐███▓▓███▄▄▄░░▀▀▀██████████▄▄▄███▓▓▀         ▐███▌ ▄█████▌   █ ▐████████▓▓▀\n" +
-                "   ████    ▀▀▀████▄▄▄▄▄░░   ▀▀▀▀▀              ▐████████▓▓▀    █ ▐▓▓████▀▀▀\n" +
-                "   ▀▀▀▀         ▄▀▀▀██████                     ▐▓▓████▀▀▀      █\n" +
-                "                █     ▓▓██                                     █\n" +
-                "                █                                              █\n" +
-                "                █    ▄▀▀█ ▄▀▀  ▓   ▄▀▀▄ ▄▀▀▄ ▄▀▄  ▄▀▀  ▄▀▄     █\n" +
-                "                █▄▄▄ █▀▓  ▓▀ ▄ █   █  ▓ █▀▀▓ ▓  █ ▓▀ ▄ █  ▓ ▄▄▄█\n" +
-                "                       █  ▀▀▀▀ ▀▀▀  ▀▀  ▀    ▀▀▀  ▀▀▀▀ ▀▀▀\n"
+                "     へ     /|▓\n"+
+                "    /\7   ∠_/\n"+
+                "    / │   / /\n"+
+                "    │ Z _,< /  〈ヽ\n"+
+                "    │  `   ヽ    / 〉\n"+
+                "    Y     `/  / 〉\n"+
+                "   ( ●  ヽ  ● /. 〈 /\n"+
+                "  () (  | \  〈 \\n"+
+                "    >_ ' _ . '│  //\n"+
+                "   /へ    / )<| \\\n"+
+                "   ヽ_)  (_/  │//\n"+
+                "   7       | /\n"+
+                "   >―r` ̄ ̄` `―_' \n"
 
         );
     }
-}
+}
\ No newline at end of file
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 2014db2..da72eac 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
@@ -73,22 +73,22 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
     @Override
     @Transactional
     public AjaxResult OverrideHandle(TaskFinishDomain taskFinishDomain) {
-        Boolean flag = true;
+
+        String taskNo = taskFinishDomain.getTaskNo();
 
         //1、判断非空字段
-        if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){
+        if(StringUtils.isEmpty(taskNo)){
             return AjaxResult.error("任务号为空");
         }
-        
-
-
 
         //2、根据任务号查找任务
-        TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskFinishDomain.getTaskNo()));
+        TaskHeader taskHeader = taskHeaderService.getById(taskNo);
         if(taskHeader == null){
             return AjaxResult.error("任务号错误,没有找到该任务");
         }
-        if(taskHeader.getStatus() == 100){
+
+        int status = taskHeader.getStatus();
+        if(status == QuantityConstant.TASK_STATUS_COMPLETED){
             return AjaxResult.error("任务已完成");
         }
 
@@ -98,12 +98,12 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
         locationLam.eq(Location::getCode,taskHeader.getToLocation())
                 .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
         Location location = locationService.getOne(locationLam);
-        if(location == null){
+        if(location == null) {
             return AjaxResult.error("此任务的原目的库位在系统中不存在");
         }
         location.setStatus(QuantityConstant.STATUS_EMPTY);
         location.setContainerCode("");
-        flag = locationService.updateById(location);
+        Boolean flag = locationService.updateById(location);
         if(flag == false){
             return AjaxResult.error("修改此任务的原目的库位错误");
         }
@@ -117,11 +117,11 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
 
         Location newlocation = new Location();
         String newLocationCode = null;
-        String code=ShiroUtils.getWarehouseCode();
+        String redirectionLocation = taskFinishDomain.getRedirectionLocationCode();
         //重入的库位由wcs提供
-        if(!"0".equals(taskFinishDomain.getRedirectionLocationCode())) {
+        if(!"0".equals(redirectionLocation)) {
             LambdaQueryWrapper<Location> locationLa = Wrappers.lambdaQuery();
-            locationLa.eq(Location::getCode, taskFinishDomain.getRedirectionLocationCode())
+            locationLa.eq(Location::getCode, redirectionLocation)
                     .eq(Location::getStatus,QuantityConstant.STATUS_EMPTY)
                     .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
             newlocation = locationService.getOne(locationLa);
@@ -175,7 +175,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService {
             Container container = containerService.findAllByCode(taskHeader.getContainerCode());
             String locationCode = receivingService.filter(locationList, locationTypeList, container);
             newLocationCode = locationCode;
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)) {
+            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_RECEIPT)) {
                 //查询入库组盘明细
                 List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
                 for (TaskDetail taskDetail : taskDetailList) {
diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java
index 6aa15d5..2f3f432 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationService.java
@@ -6,7 +6,7 @@ import java.util.List;
 
 public interface LocationAllocationService {
 
-   String allocation(String locationRule, String roadWay, String warehouseCode, String containerCode);
+   String allocation(String locationRule, String roadWay, String warehouseCode, String containerCode, Integer materialAreas);
 
 
 }
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 5425e7e..2f5664e 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
@@ -37,7 +37,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     private TaskHeaderService taskHeaderService;
 
     @Override
-    public String allocation(String locationRule, String area, String warehouseCode, String containerCode) {
+    public String allocation(String locationRule, String area, String warehouseCode, String containerCode, Integer materialAreas) {
         if (StringUtils.isEmpty(locationRule)) {
             return null;
         }
@@ -70,9 +70,9 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         }
         switch (locationRule) {
             case Constants.DOUBLE_RK:
-                return doubleRk(area, warehouseCode, locationTypeList);
+                return doubleRk(area, warehouseCode, locationTypeList, materialAreas);
             case Constants.SINGER_RK:
-                return singleRk(area, warehouseCode, locationTypeList);
+                return singleRk(area, warehouseCode, locationTypeList, materialAreas);
         }
         return null;
     }
@@ -80,7 +80,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     /*
      * 双伸位库位入库分配库位
      */
-    private String doubleRk(String area, String warehouseCode, List<LocationType> locationTypeList) {
+    private String doubleRk(String area, String warehouseCode, List<LocationType> locationTypeList, Integer materialAreas) {
         LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
         locationLambda.eq(Location::getArea, area).
                 eq(Location::getWarehouseCode, warehouseCode)
@@ -92,8 +92,10 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
         for (Location location1 : locationList) {
             if (taskHeaderService.getUncompleteTaskInNear(location1) > 0) {
                 removeLocaationList.add(location1);
-            } else {
-                break;
+            }
+            Integer areas = location1.getMaterialAreas();
+            if(areas.intValue() != materialAreas.intValue()) {
+                removeLocaationList.add(location1);
             }
         }
         locationList.removeAll(removeLocaationList);
@@ -109,8 +111,6 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
             for (Location location1 : locationList) {
                 if (taskHeaderService.getUncompleteTaskInNear(location1) > 0) {
                     removeLocaationList.add(location1);
-                } else {
-                    break;
                 }
             }
             locationList.removeAll(removeLocaationList);
@@ -122,13 +122,21 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     /*
      * 单伸位库位入库分配库位
      */
-    private String singleRk(String area, String warehouseCode, List<LocationType> locationTypeList) {
+    private String singleRk(String area, String warehouseCode, List<LocationType> locationTypeList, Integer materialAreas) {
         LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
         locationLambda.eq(Location::getArea, area).
                 eq(Location::getWarehouseCode, warehouseCode)
                 .eq(Location::getStatus, QuantityConstant.STATUS_EMPTY)
                 .eq(Location::getContainerCode, "");
         List<Location> locationList = locationService.list(locationLambda);
+        List<Location> removeLocaationList = new ArrayList<>();
+        for (Location location1 : locationList) {
+            Integer areas = location1.getMaterialAreas();
+            if(areas.intValue() != materialAreas.intValue()) {
+                removeLocaationList.add(location1);
+            }
+        }
+        locationList.removeAll(removeLocaationList);
         String locationCode =  filter(locationList, locationTypeList, area);
         return locationCode;
     }
diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java
index d2fcf47..5e5bcc7 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java
@@ -10,7 +10,7 @@ public interface WarecellAllocationService {
     AjaxResult warecellAllocation(WcsTask wcsTask);
 
     String taskPositioning();
-
     //去向分配
     AjaxResult destinationAllocation(WcsTask wcsTask);
+
 }
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 03ab5ed..9d700d9 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
@@ -120,13 +120,14 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
     }
 
     public AjaxResult verticalWarehouseAllocation(WcsTask wcsTask) {
+        String warehouseCode = wcsTask.getWarehouseCode();
         //查询满足条件的库位类型
         LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.gt(LocationType::getLength, wcsTask.getLength())
                 .gt(LocationType::getWidth, wcsTask.getWidth())
                 .gt(LocationType::getHeight, wcsTask.getHeight())
                 .gt(LocationType::getMaxWeight, wcsTask.getWidth())
-                .eq(LocationType::getWarehouseCode, wcsTask.getWarehouseCode());
+                .eq(LocationType::getWarehouseCode, warehouseCode);
         List<LocationType> locationTypeList = locationTypeService.list(lambdaQueryWrapper);
 
         String locationCode = null;
@@ -144,7 +145,10 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         /* 循环查询入库组盘明细*/
         List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
         for (TaskDetail taskDetail : taskDetailList) {
-            receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId()));
+            ReceiptContainerDetail receiptContainerDetail = receiptContainerDetailService.getById(taskDetail.getAllocationId());
+            if (receiptContainerDetail != null) {
+                receiptContainerDetailList.add(receiptContainerDetail);
+            }
         }
         //去重
         receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList());
@@ -154,13 +158,13 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         if (StringUtils.isEmpty(locatingRule)) {
             //物料类别中定位规则为空时,查询入库首选项
             LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery();
-            configValueLambda.eq(ConfigValue::getWarehouseCode, wcsTask.getWarehouseCode())
+            configValueLambda.eq(ConfigValue::getWarehouseCode, warehouseCode)
                     .eq(ConfigValue::getModuleType, "receipt")
                     .eq(ConfigValue::getRecordType, "入库首选项");
             ConfigValue configValue = configValueService.getOne(configValueLambda);
             LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery();
             receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue())
-                    .eq(ReceiptPreference::getWarehouseCode, wcsTask.getWarehouseCode());
+                    .eq(ReceiptPreference::getWarehouseCode, warehouseCode);
             ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda);
             locatingRule = receiptPreference.getLocationRule();
         }
@@ -168,16 +172,21 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         if (StringUtils.isEmpty(locatingRule)){
             throw new ServiceException("未绑定定位规则");
         }
-
-        locationCode = locationAllocationService.allocation(locatingRule, wcsTask.getDestination(), wcsTask.getWarehouseCode(), containerCode);
+        Integer materialAreas = 0;
+        if(receiptContainerDetailList != null && receiptContainerDetailList.size() > 0) {
+            String materialCode = receiptContainerDetailList.get(0).getMaterialCode();
+            Material material = materialService.findAllByCode(materialCode, warehouseCode);
+            materialAreas = material.getMaterialAreas();
+        }
+        locationCode = locationAllocationService.allocation(locatingRule, wcsTask.getDestination(), warehouseCode, containerCode, materialAreas);
         if (StringUtils.isEmpty(locationCode)) {
             return AjaxResult.error("没有库位可分配");
         }
 
         if (StringUtils.isNotEmpty(locationCode)) {
-            locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK, wcsTask.getWarehouseCode());
+            locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK, warehouseCode);
             if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && !locationCode.equals(taskHeader.getToLocation())) {
-                locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY, wcsTask.getWarehouseCode());
+                locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY, warehouseCode);
             }
         } else {
             throw new ServiceException("定位失败,请检查定位规则是否正确");
@@ -195,7 +204,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
                 //把库位编码赋到该入库组盘头表下的所有明细
                 LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery();
                 lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId())
-                        .eq(ReceiptContainerDetail::getWarehouseCode, wcsTask.getWarehouseCode());
+                        .eq(ReceiptContainerDetail::getWarehouseCode, warehouseCode);
                 List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda);
                 for (ReceiptContainerDetail receiptContainerDetail2 : receiptContainerDetails) {
                     receiptContainerDetail2.setLocationCode(locationCode);
@@ -216,7 +225,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         //修改任务明细目标库位
         LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
         locationLambdaQueryWrapper.eq(Location::getCode, locationCode)
-                                    .eq(Location::getWarehouseCode, wcsTask.getWarehouseCode());
+                                    .eq(Location::getWarehouseCode, warehouseCode);
         Location location = locationService.getOne(locationLambdaQueryWrapper);
         int rowFlag = location.getRowFlag().intValue();
         Integer preTaskNo = 0;
diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
index 0aefc81..160ec16 100644
--- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java
+++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
@@ -327,25 +327,16 @@ public class QuantityConstant {
     //13、任务内部类型
 
     /** 上架任务*/
-    public static final Integer TASK_INTENERTYPE_SHELF = 100;
+    public static final Integer TASK_INTENERTYPE_RECEIPT = 100;
 
     /** 拣货任务*/
-    public static final Integer TASK_INTENERTYPE_PICKING = 200;
-
-    /** 补货任务*/
-    public static final Integer TASK_INTENERTYPE_SUPPLEMENT = 300;
+    public static final Integer TASK_INTENERTYPE_SHIPMENT = 200;
 
     /** 工作任务*/
-    public static final Integer TASK_INTENERTYPE_WORK = 400;
-
-    //质检任务
-    public static final Integer TASK_INTENERTYPE_CHECK = 500;
-
-    /** 移库任务 */
-    public static final Integer TASK_INTENERTYPE_TRANSFER = 600;
+    public static final Integer TASK_INTENERTYPE_WORK = 300;
 
     //盘点任务
-    public static final Integer TASK_INTENERTYPE_CYCLECOUNT = 700;
+    public static final Integer TASK_INTENERTYPE_CYCLECOUNT = 400;
 
 
 
diff --git a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
index 00e5c3a..04251e4 100644
--- a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
+++ b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
@@ -569,11 +569,11 @@ public class MobileBatchReceiptController {
         taskHeader.setWarehouseCode(loc.getWarehouseCode());
         taskHeader.setCompanyCode(companyCode);//货主
         if(type == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) {
-            taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
+            taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
             taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT);
         } else {
-            taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING);
-            taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT);
+            taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
+            taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT);
         }
         taskHeader.setContainerCode(container.getCode());
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
diff --git a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
index b6722ec..ab5b0e1 100644
--- a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
+++ b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
@@ -17,6 +17,8 @@ import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
 import com.huaheng.pc.common.JasperPrint.Print;
+import com.huaheng.pc.config.container.domain.Container;
+import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.location.domain.Location;
 import com.huaheng.pc.config.location.domain.LocationStatus;
 import com.huaheng.pc.config.location.service.LocationService;
@@ -47,6 +49,8 @@ public class LocationController extends BaseController {
   private String prefix = "config/location";
 
   @Resource
+  private ContainerService containerService;
+  @Resource
   private LocationService locationService;
   @Resource
   private InventoryDetailService inventoryDetailService;
@@ -155,17 +159,6 @@ public class LocationController extends BaseController {
     return prefix + "/addBatch";
   }
 
-  //    /**
-  //     * 批量新增保存库位
-  //     */
-  //    @RequiresPermissions("config:location:addBatch")
-  //    @ApiOperation(value="新增库位", notes="批量新增库位", httpMethod = "POST")
-  //    @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT)
-  //    @PostMapping("/addBatchSave")
-  //    @ResponseBody
-  //    public AjaxResult addBatchSave(Location lastLocation)  {
-  //        return toAjax(locationService.insertLocation(lastLocation));
-  //    }
 
   /**
    * 批量新增保存库位
@@ -210,9 +203,12 @@ public class LocationController extends BaseController {
   @PostMapping("/edit")
   @ResponseBody
   public AjaxResult editSave (Location location) {
-    Location locationCurrent = locationService.getById(location.getId());
-    if (!locationCurrent.getStatus().equals(QuantityConstant.STATUS_EMPTY)&&!locationCurrent.getStatus().equals("disable")){
-      return AjaxResult.success("只有在空闲或禁用状态下才能更改库位");
+    String containerCode = location.getContainerCode();
+    if (StringUtils.isNotEmpty(containerCode)) {
+      Container container =  containerService.findAllByCode(containerCode);
+      if (container == null) {
+        return AjaxResult.error("容器编码输入错误");
+      }
     }
     location.setLastUpdatedBy(ShiroUtils.getLoginName());
     return toAjax(locationService.updateById(location));
diff --git a/src/main/java/com/huaheng/pc/config/location/domain/Location.java b/src/main/java/com/huaheng/pc/config/location/domain/Location.java
index 09760fc..b73eacd 100644
--- a/src/main/java/com/huaheng/pc/config/location/domain/Location.java
+++ b/src/main/java/com/huaheng/pc/config/location/domain/Location.java
@@ -97,6 +97,12 @@ public class Location implements Serializable {
     private String area;
 
     /**
+     * 物料分区
+     */
+    @TableField(value = "materialAreas")
+    private Integer materialAreas;
+
+    /**
      * 名称
      */
     @TableField(value = "name")
diff --git a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java
index 645ae98..6a74190 100644
--- a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java
+++ b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java
@@ -164,7 +164,7 @@ public class  MaterialController extends BaseController {
     String[] idArray = Convert.toStrArray(ids);
     LambdaUpdateWrapper<Material> wrapper = Wrappers.lambdaUpdate();
     wrapper.in(Material::getId, idArray)
-            .set(Material::getArea, area);
+            .set(Material::getMaterialAreas, Integer.parseInt(area));
     return toAjax(materialService.update(wrapper));
   }
 
diff --git a/src/main/java/com/huaheng/pc/config/material/domain/Material.java b/src/main/java/com/huaheng/pc/config/material/domain/Material.java
index 3efe6b0..651f663 100644
--- a/src/main/java/com/huaheng/pc/config/material/domain/Material.java
+++ b/src/main/java/com/huaheng/pc/config/material/domain/Material.java
@@ -312,7 +312,10 @@ public class Material implements Serializable {
     /** 打印机名称 */
     //    private static final  String printName = "Gprinter GP-1424D";
 
-    @TableField(value = "area")
-    @ApiModelProperty(value = "物料分区")
-    private String area;
+    /**
+     * 物料分区
+     */
+    @TableField(value = "materialAreas")
+    private Integer materialAreas;
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java b/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java
index 17b18ce..92b778a 100644
--- a/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java
+++ b/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java
@@ -34,6 +34,8 @@ public interface MaterialService extends IService<Material>{
 
     Material findAllByCode(String code);
 
+    Material findAllByCode(String code, String warehouseCode);
+
     List<Material> findLatest();
 
     /**
diff --git a/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java b/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java
index 9a02fc6..bc8336d 100644
--- a/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java
@@ -62,13 +62,11 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
         int count = 0;
         for (Integer id : Convert.toIntArray(ids)) {
             Material material = this.getById(id);
-
             LambdaQueryWrapper<ReceiptDetail> lambda = Wrappers.lambdaQuery();
             lambda.eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
-                  .eq(ReceiptDetail::getMaterialCode, material.getCode())
-                  .eq(ReceiptDetail::getDeleted, false)
-                .last("LIMIT 1");
-
+                    .eq(ReceiptDetail::getMaterialCode, material.getCode())
+                    .eq(ReceiptDetail::getDeleted, false)
+                    .last("LIMIT 1");
             Map<String, Object> map = receiptDetailService.getMap(lambda);
             if (map != null) {
                 return AjaxResult.error("物料编码(" + material.getCode() +")存在入库单,不能删除!");
@@ -177,10 +175,21 @@ public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> i
 
     @Override
     public Material findAllByCode(String code) {
+        String warehouseCode = ShiroUtils.getWarehouseCode();
+        LambdaQueryWrapper<Material> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Material::getCode, code);
+        queryWrapper.eq(Material::getWarehouseCode, warehouseCode);
+        Material material = getOne(queryWrapper);
+        return material;
+    }
+
+    @Override
+    public Material findAllByCode(String code, String warehouseCode) {
         LambdaQueryWrapper<Material> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(Material::getCode, code);
-        queryWrapper.eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode());
-        return getOne(queryWrapper);
+        queryWrapper.eq(Material::getWarehouseCode, warehouseCode);
+        Material material = getOne(queryWrapper);
+        return material;
     }
 
 
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java
index 27b322c..3234aa0 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/service/InventoryDetailServiceImpl.java
@@ -93,7 +93,7 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe
         TaskHeader taskHeader = new TaskHeader();
         taskHeader.setWarehouseCode(inventoryDetail.getWarehouseCode());
         taskHeader.setCompanyCode(inventoryDetail.getCompanyCode());
-        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING);
+        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
         taskHeader.setTaskType(QuantityConstant.TASK_TYPE_VIEW);
         taskHeader.setContainerCode(inventoryDetail.getContainerCode());
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
index 318bc05..c5d1c8b 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
@@ -24,6 +24,7 @@ import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
 import com.huaheng.pc.task.taskHeader.service.TaskHeaderServiceImpl;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -204,8 +205,12 @@ public class InventoryHeaderController extends BaseController
     /**
      * 出库查看页面
      */
-    @GetMapping("/checkOut")
-    public String checkOut(){
+    @GetMapping("/checkOut/{id}")
+    public String checkOut(@PathVariable("id") String id, ModelMap modelMap){
+        InventoryHeader inventoryHeader = inventoryHeaderService.getById(id);
+        modelMap.put("id", id);
+        modelMap.put("locationCode", inventoryHeader.getLocationCode());
+        modelMap.put("containerCode", inventoryHeader.getContainerCode());
         return prefix+"/checkOut";
     }
 
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
index 605e4d4..aff612b 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
@@ -79,7 +79,7 @@ public class ReceiptContainerHeaderController extends BaseController {
         Integer pageNum = pageDomain.getPageNum();
         Integer pageSize = pageDomain.getPageSize();
         String sql = null;
-        if (StringUtils.isNotEmpty(receiptCode)){
+        if (StringUtils.isNotEmpty(receiptCode)) {
             sql = "select receiptContainerId from receipt_container_detail where receiptCode = \'"+receiptCode+"\'";
         }
         lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), ReceiptContainerHeader::getCreated, createdBegin)
@@ -91,12 +91,10 @@ public class ReceiptContainerHeaderController extends BaseController {
                 .eq(StringUtils.isNotNull(receiptContainerHeader.getStatus()),ReceiptContainerHeader::getStatus, receiptContainerHeader.getStatus())
                 .eq(StringUtils.isNotEmpty(receiptContainerHeader.getCreatedBy()),ReceiptContainerHeader::getCreatedBy, receiptContainerHeader.getCreatedBy())
                 .inSql(StringUtils.isNotEmpty(receiptCode), ReceiptContainerHeader::getId, sql)
+                .orderByAsc(ReceiptContainerHeader::getStatus)
                 .orderByDesc(ReceiptContainerHeader::getId);
 
         if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
-            /**
-             * 使用分页查询
-             */
             Page<ReceiptContainerHeader> page = new Page<>(pageNum, pageSize);
             IPage<ReceiptContainerHeader> iPage = receiptContainerHeaderService.page(page, lambdaQueryWrapper);
             return getMpDataTable(iPage.getRecords(),iPage.getTotal());
diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
index 13969e0..1749126 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java
@@ -420,7 +420,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         }
         if (QuantityConstant.TASK_TYPE_WHOLERECEIPT == taskType.intValue()) {
             if (com.huaheng.common.utils.StringUtils.isNotEmpty(location.getContainerCode())) {
-                throw new ServiceException("库位(" + containerCode + ")有容器(" + location.getContainerCode() + "),不能整盘入库!");
+                throw new ServiceException("库位(" + locationCode + ")有容器(" + location.getContainerCode() + "),不能整盘入库!");
             }
         }
         if(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT== taskType.intValue())  {
diff --git a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java
index 7828add..20b1e44 100644
--- a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java
+++ b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java
@@ -155,11 +155,9 @@ public class ReceivingService {
         if (StringUtils.isEmpty(locatingRule)){
             throw new ServiceException("未绑定定位规则");
         }
-        if (StringUtils.isEmpty(area)) {
-            Material material = materialService.findAllByCode(receiptContainerDetail.getMaterialCode());
-            area = material.getArea();
-        }
-        String locationCode = locationAllocationService.allocation(locatingRule, area, ShiroUtils.getWarehouseCode(),container.getCode() );
+        Material material = materialService.findAllByCode(receiptContainerDetail.getMaterialCode());
+        Integer materialAreas = material.getMaterialAreas();
+        String locationCode = locationAllocationService.allocation(locatingRule, area, ShiroUtils.getWarehouseCode(),container.getCode(), materialAreas);
 
         if (StringUtils.isNotEmpty(locationCode)){
             locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCK);
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
index 8a33667..7c465a0 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
@@ -14,6 +14,7 @@ import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.framework.web.page.PageDomain;
 import com.huaheng.framework.web.page.TableDataInfo;
 import com.huaheng.framework.web.page.TableSupport;
+import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
 import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
@@ -71,12 +72,10 @@ public class ShipmentContainerHeaderController extends BaseController
 				.eq(StringUtils.isNotEmpty(shipmentContainerHeader.getContainerCode()), ShipmentContainerHeader::getContainerCode, shipmentContainerHeader.getContainerCode())
 				.eq(StringUtils.isNotEmpty(shipmentContainerHeader.getLocationCode()), ShipmentContainerHeader::getLocationCode, shipmentContainerHeader.getLocationCode())
 				.eq(StringUtils.isNotEmpty(shipmentContainerHeader.getCreatedBy()), ShipmentContainerHeader::getCreatedBy, shipmentContainerHeader.getCreatedBy())
-				.le(shipmentContainerHeader.getStatus()==null,ShipmentContainerHeader::getStatus,20)
-				.eq(shipmentContainerHeader.getStatus()!=null,ShipmentContainerHeader::getStatus,shipmentContainerHeader.getStatus());
+				.eq(shipmentContainerHeader.getStatus()!=null, ShipmentContainerHeader::getStatus,shipmentContainerHeader.getStatus())
+				.orderByAsc(ShipmentContainerHeader::getStatus)
+				.orderByDesc(ShipmentContainerHeader::getId);
 		if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
-			/**
-			 * 使用分页查询
-			 */
 			Page<ShipmentContainerHeader> page = new Page<>(pageNum, pageSize);
 			IPage<ShipmentContainerHeader> iPage = shipmentContainerHeaderService.page(page, lambdaQueryWrapper);
 			return getMpDataTable(iPage.getRecords(),iPage.getTotal());
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
index 576f6e1..f71c4e8 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
@@ -303,7 +303,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
         if(shipmentContainerHeader.getStatus()>=QuantityConstant.SHIPMENT_CONTAINER_TASK && shipmentContainerHeader.getStatus()<QuantityConstant.SHIPMENT_CONTAINER_REVIEWSUCCESS){
             LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper=Wrappers.lambdaQuery();
             taskHeaderLambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,shipmentContainerHeader.getWarehouseCode())
-                    .eq(TaskHeader::getInternalTaskType,QuantityConstant.TASK_INTENERTYPE_PICKING)
+                    .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_SORTINGSHIPMENT, QuantityConstant.TASK_TYPE_WHOLESHIPMENT)
                     .eq(TaskHeader::getAllocationHeadId,shipmentContainerHeader.getId());
             TaskHeader taskHeader=taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
             if(taskHeader==null){
@@ -317,7 +317,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
                 taskDetailLam.eq(TaskDetail::getWarehouseCode,shipmentContainerDetail.getWarehouseCode())
                         .eq(TaskDetail::getAllocationId,shipmentContainerDetail.getId())
                         .eq(TaskDetail::getTaskId,taskHeader.getId())
-                        .eq(TaskDetail::getInternalTaskType,QuantityConstant.TASK_INTENERTYPE_PICKING);
+                        .in(TaskDetail::getTaskType, QuantityConstant.TASK_TYPE_SORTINGSHIPMENT, QuantityConstant.TASK_TYPE_WHOLESHIPMENT);
                 TaskDetail taskDetail = taskDetailService.getOne(taskDetailLam);
                 if(taskDetail == null){
                     throw new ServiceException("找不到对应的任务明细");
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
index 44f6394..d9cd8dc 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/controller/TaskHeaderController.java
@@ -69,14 +69,14 @@ public class TaskHeaderController extends BaseController {
                           @ApiParam(name="createdBegin",value="类型") String createdBegin,@ApiParam(name="createdEnd",value="类型") String createdEnd) {
         LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(TaskHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())
-                
                           .eq(StringUtils.isNotNull(InternalTaskType),TaskHeader::getInternalTaskType,InternalTaskType)
                           .eq(StringUtils.isNotNull(taskHeader.getId()),TaskHeader::getId,taskHeader.getId())
                           .eq(StringUtils.isNotEmpty(taskHeader.getContainerCode()),TaskHeader::getContainerCode,taskHeader.getContainerCode())
                           .eq(StringUtils.isNotEmpty(taskHeader.getToLocation()),TaskHeader::getToLocation,taskHeader.getToLocation())
                           .gt(StringUtils.isNotEmpty(createdBegin),TaskHeader::getCreated,createdBegin)
                           .lt(StringUtils.isNotEmpty(createdEnd),TaskHeader::getCreated,createdEnd)
-                        .orderByDesc(TaskHeader::getId);
+                          .orderByDesc(TaskHeader::getId)
+                          .orderByAsc(TaskHeader::getStatus);
 
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
@@ -88,15 +88,9 @@ public class TaskHeaderController extends BaseController {
             Page<TaskHeader> page = new Page<>(pageNum, pageSize);
             IPage<TaskHeader> iPage = taskHeaderService.page(page, lambdaQueryWrapper);
             List<TaskHeader> iPages = iPage.getRecords();
-//            if(InternalTaskType == 700){
-//                iPages = taskHeaderService.preferenceRealize(iPages) ;
-//            }
             return getMpDataTable(iPages, iPage.getTotal());
         } else {
             List<TaskHeader> list = taskHeaderService.list(lambdaQueryWrapper);
-            if(InternalTaskType == 700){
-                list = taskHeaderService.preferenceRealize(list);
-            }
             return getDataTable(list);
         }
     }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java
index b6e75bd..39dc5a7 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/CycleCountTaskService.java
@@ -117,25 +117,23 @@ public class CycleCountTaskService {
                 }
 
             }
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) || taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) {
-                if (taskHeader.getToLocation() != null) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-                inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
-                InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
-                Container container = new Container();
-                container.setStatus(QuantityConstant.STATUS_EMPTY);
-                if(inventoryHeader != null) {
-                    if(inventoryHeader.getContainerStatus().equals(QuantityConstant.STATUS_SOME)) {
-                        container.setStatus(QuantityConstant.STATUS_SOME);
-                    }
+            if (taskHeader.getToLocation() != null) {
+                //更新托盘、库位状态
+                locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
+            }
+            LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+            inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
+            InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
+            Container container = new Container();
+            container.setStatus(QuantityConstant.STATUS_EMPTY);
+            if(inventoryHeader != null) {
+                if(inventoryHeader.getContainerStatus().equals(QuantityConstant.STATUS_SOME)) {
+                    container.setStatus(QuantityConstant.STATUS_SOME);
                 }
-                LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
-                containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
-                containerService.update(container, containerUpdateWrapper);
             }
+            LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
+            containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
+            containerService.update(container, containerUpdateWrapper);
 
         }
         return AjaxResult.success("取消任务成功!");
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
index f907db3..0f0e5df 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
@@ -146,7 +146,7 @@ public class ReceiptTaskService {
                 //添加任务主表
                 TaskHeader task = new TaskHeader();
                 task.setAllocationHeadId(receiptContainerHeader.getId());
-                task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
+                task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
                 task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
                 task.setCompanyCode(receiptContainerHeader.getCompanyCode());
                 task.setTaskType(receiptContainerHeader.getTaskType());
@@ -162,7 +162,7 @@ public class ReceiptTaskService {
                         TaskDetail taskDetail = new TaskDetail();
                         taskDetail.setTaskId(task.getId());
                         taskDetail.setTaskType(task.getTaskType());
-                        taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);
+                        taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
                         taskDetail.setWarehouseCode(task.getWarehouseCode());
                         taskDetail.setAllocationId(item.getId());
                         taskDetail.setCompanyCode(task.getCompanyCode());
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java
index 3d790cf..19a2c46 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java
@@ -171,7 +171,7 @@ public class ShipmentTaskService {
         }
 
 
-        task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING);
+        task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT);
         task.setAllocationHeadId(shipmentContainerHeader.getId());
         task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode());
         task.setAssignedUser(ShiroUtils.getLoginName());
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
index 534970d..0ce2f94 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
@@ -194,91 +194,22 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             //删除主任务
             taskHeaderService.removeById(taskHeader.getId());
             // 更改库位状态(整盘入库任务除外)
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)) {
+            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_RECEIPT)) {
                 receiptContainerHeaderService.cancelReceipt(taskHeader.getAllocationHeadId());
             }
             //根据任务类型来更新货箱状态
             //修改关联的货箱状态
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) {
+            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHIPMENT)) {
                 ShipmentContainerHeader shipmentContainerHeader = new ShipmentContainerHeader();
                 shipmentContainerHeader.setId(taskHeader.getAllocationHeadId());
                 shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD);
                 shipmentContainerHeaderService.updateById(shipmentContainerHeader);
             }
             //盘点取消任务,恢复明细状态为1
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_CYCLECOUNT)) {
-
-                CycleCountDetail cycleCountDetail = new CycleCountDetail();
-                cycleCountDetail.setCompanyCode(taskDetail.getCompanyCode());
-                cycleCountDetail.setWarehouseCode(taskDetail.getWarehouseCode());
-                cycleCountDetail.setLocationCode(taskDetail.getFromLocation());
-                cycleCountDetail.setContainerCode(taskDetail.getContainerCode());
-                cycleCountDetail.setCycleCountHeadCode(taskDetail.getBillCode());//盘点单Code
-                cycleCountDetail.setId(taskDetail.getBillDetailId());//盘点细单ID
-                LambdaQueryWrapper<CycleCountDetail> lam = Wrappers.lambdaQuery(cycleCountDetail);
-                List<CycleCountDetail> cycleCountDetailList = cycleCountDetailService.list(lam);//
-                for (CycleCountDetail item : cycleCountDetailList) {
-                    item.setTaskHeaderId(null);
-                    item.setTaskHeaderId(null);
-                    item.setLastUpdated(new Date());
-                    item.setLastUpdatedBy(ShiroUtils.getLoginName());
-                    item.setEnableStatus(1);
-                    cycleCountDetailService.saveOrUpdate(item);
-                }
-
-            }
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_TRANSFER)) {
-                if (taskHeader.getFromLocation() != null) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                if (taskHeader.getToLocation() != null) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-                inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
-                InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
-                Container container = new Container();
-                container.setStatus(QuantityConstant.STATUS_EMPTY);
-                if(inventoryHeader != null) {
-                    if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) {
-                        container.setStatus(QuantityConstant.STATUS_SOME);
-                    }
-                }
-                container.setLocationCode(taskHeader.getFromLocation());
-                LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
-                containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
-                containerService.update(container, containerUpdateWrapper);
-            }
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_WORK)) {
-                if (taskHeader.getFromLocation() != null) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                if (taskHeader.getToLocation() != null) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-                inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
-                InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
-                Container container = new Container();
-                container.setStatus(QuantityConstant.STATUS_EMPTY);
-                if(inventoryHeader != null) {
-                    if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) {
-                        container.setStatus(QuantityConstant.STATUS_SOME);
-                    }
-                }
-                container.setLocationCode(taskHeader.getFromLocation());
-                LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
-                containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
-                containerService.update(container, containerUpdateWrapper);
-            }
-            if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) || taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING)) {
-                if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
+            int taskType = taskHeader.getTaskType().intValue();
+            switch (taskType) {
+                case QuantityConstant.TASK_TYPE_WHOLERECEIPT:
+                case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
                     LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
                     lambda.eq(ReceiptContainerHeader::getContainerCode, taskHeader.getContainerCode())
                             .ne(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED)
@@ -295,33 +226,63 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                         receiptContainerDetail.setLocationCode("");
                         receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaQueryWrapper1);
                     }
-                }
-                if (StringUtils.isNotEmpty(taskHeader.getFromLocation())) {
-                    //更新托盘、库位状态
-                    locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY);
-                }
-                LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
-                inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
-                InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
-                Container container = new Container();
-                container.setStatus(QuantityConstant.STATUS_EMPTY);
-                if(inventoryHeader != null) {
-                    if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) {
-                        container.setStatus(QuantityConstant.STATUS_SOME);
+                    break;
+                case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
+                case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
+
+                    break;
+                case QuantityConstant.TASK_TYPE_CYCLECOUNT:
+                    CycleCountDetail cycleCountDetail = new CycleCountDetail();
+                    cycleCountDetail.setCompanyCode(taskDetail.getCompanyCode());
+                    cycleCountDetail.setWarehouseCode(taskDetail.getWarehouseCode());
+                    cycleCountDetail.setLocationCode(taskDetail.getFromLocation());
+                    cycleCountDetail.setContainerCode(taskDetail.getContainerCode());
+                    cycleCountDetail.setCycleCountHeadCode(taskDetail.getBillCode());//盘点单Code
+                    cycleCountDetail.setId(taskDetail.getBillDetailId());//盘点细单ID
+                    LambdaQueryWrapper<CycleCountDetail> lam = Wrappers.lambdaQuery(cycleCountDetail);
+                    List<CycleCountDetail> cycleCountDetailList = cycleCountDetailService.list(lam);//
+                    for (CycleCountDetail item : cycleCountDetailList) {
+                        item.setTaskHeaderId(null);
+                        item.setTaskHeaderId(null);
+                        item.setLastUpdated(new Date());
+                        item.setLastUpdatedBy(ShiroUtils.getLoginName());
+                        item.setEnableStatus(1);
+                        cycleCountDetailService.saveOrUpdate(item);
                     }
-                }
-                LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
-                containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
-                containerService.update(container, containerUpdateWrapper);
+                    break;
+                default:
+                    break;
             }
-//            if(task.getType()==900){
-//                //出库查看任务没有关联的货箱,不做处理
-//            }
+            cancelLocationAndContainerStatus(taskHeader);
         }
-
         return AjaxResult.success("取消任务成功!");
     }
 
+    private void cancelLocationAndContainerStatus(TaskHeader taskHeader) {
+        if (taskHeader.getFromLocation() != null) {
+            //更新托盘、库位状态
+            locationService.updateStatus(taskHeader.getFromLocation(), QuantityConstant.STATUS_EMPTY);
+        }
+        if (taskHeader.getToLocation() != null) {
+            //更新托盘、库位状态
+            locationService.updateStatus(taskHeader.getToLocation(), QuantityConstant.STATUS_EMPTY);
+        }
+        LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+        inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
+        InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
+        Container container = new Container();
+        container.setStatus(QuantityConstant.STATUS_EMPTY);
+        if(inventoryHeader != null) {
+            if(QuantityConstant.STATUS_SOME.equals(inventoryHeader.getContainerStatus())) {
+                container.setStatus(QuantityConstant.STATUS_SOME);
+            }
+        }
+        container.setLocationCode(taskHeader.getFromLocation());
+        LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
+        containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
+        containerService.update(container, containerUpdateWrapper);
+    }
+
     /**
      * 下发WCS执行任务
      * 执行任务
@@ -338,13 +299,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             }
 
             // 给wcs传递任务
-
              AjaxResult ajaxResult = taskAssignService.wcsTaskAssign(task);
              if(ajaxResult != null && ajaxResult.hasErr()) {
                  return AjaxResult.error(ajaxResult.getMsg());
              }
 
-
             //修改任务头表
             task.setId(taskId);
             task.setStatus(QuantityConstant.TASK_STATUS_RELEASE);
@@ -425,36 +384,39 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
      * @param task
      */
     public void completeTask(TaskHeader task) {
+        int taskType = task.getTaskType().intValue();
         //区分任务类型
-        if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) {
-            //入库任务
-            receiptTaskService.completeReceiptTask(task);
-            combineInventory(task);
-        }
-        if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) &&
-                (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) {
-            //出库任务
-            shipmentTaskService.completeShipmentTask(task);
-        }
-        // 900 出库查看,空托出库查看
-        if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_VIEW)) {
-            workTaskService.completeCheckOutTask(task);
-        }
-        // 700 盘点
-        if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)) {
-            cycleCountTaskService.completeCycleCountTask(task);
-        }
-        if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_TRANSFER)) {
-//          //移库
-            transferTaskService.completeTransferTask(task);
-        }
-        if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_EMPTYRECEIPT)) {
-            //空托盘入库
-            workTaskService.completeEmptyIn(task);
-        }
-        if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT) ) {
-            //空托盘出库
-            workTaskService.completeEmptyOut(task);
+        switch(taskType) {
+            //整盘入库、补充入库
+            case QuantityConstant.TASK_TYPE_WHOLERECEIPT:
+            case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
+                receiptTaskService.completeReceiptTask(task);
+                combineInventory(task);
+                break;
+            //整盘出库、分拣出库
+            case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
+            case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
+                shipmentTaskService.completeShipmentTask(task);
+                break;
+            //空托入库
+            case QuantityConstant.TASK_TYPE_EMPTYRECEIPT:
+                workTaskService.completeEmptyIn(task);
+                break;
+            //空托出库
+            case QuantityConstant.TASK_TYPE_EMPTYSHIPMENT:
+                workTaskService.completeEmptyOut(task);
+                break;
+            case QuantityConstant.TASK_TYPE_CYCLECOUNT:
+                cycleCountTaskService.completeCycleCountTask(task);
+                break;
+            case QuantityConstant.TASK_TYPE_TRANSFER:
+                transferTaskService.completeTransferTask(task);
+                break;
+            case QuantityConstant.TASK_TYPE_VIEW:
+                workTaskService.completeCheckOutTask(task);
+                break;
+            default:
+                throw new ServiceException("不支持的任务类型");
         }
     }
 
@@ -469,7 +431,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult completeTask(String locationCode) {
         LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
-        taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode);
+        taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode)
+                .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED);
         List<TaskHeader> list = this.list(taskQueryWrapper);
         if (list.isEmpty()) {
             throw new ServiceException("库位(" + locationCode + ")没有任务!");
@@ -477,9 +440,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             //如果已完成则不管
             throw new ServiceException("库位(" + locationCode + ")任务已经完成!");
         }
-        if(list.get(0).getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)){
+        TaskHeader taskHeader = list.get(0);
+        int taskType = taskHeader.getTaskType().intValue();
+        if(taskType == QuantityConstant.TASK_TYPE_WHOLERECEIPT
+                || taskType == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT){
             //入库任务
-            return receiptTaskService.completeReceiptTask((list.get(0)));
+            return receiptTaskService.completeReceiptTask(taskHeader);
         } else {
             throw new ServiceException("库位(" + locationCode + ")的任务不是上架,不能完成!");
         }
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 6bf6b54..87b3f77 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
@@ -98,6 +98,10 @@ public class TransferTaskService {
             return AjaxResult.error("目标库位和源库位不在同一个巷道");
         }
 
+        if(!sourceLocation.getArea().equals(desLocation.getArea())) {
+            return AjaxResult.error("目标库位和源库位不在同一个区域");
+        }
+
         if(sourceLocation.getRowFlag() == 1) {
             Location location1 = locationService.getNear(sourceLocation);  //内侧库位
             String locationCode = location1.getCode();
@@ -125,7 +129,7 @@ public class TransferTaskService {
         TaskHeader taskHeader = new TaskHeader();
         taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
         taskHeader.setTaskType(QuantityConstant.TASK_TYPE_TRANSFER);
-        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_TRANSFER);
+        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
         taskHeader.setContainerCode(sourceLocation.getContainerCode());
         taskHeader.setFromLocation(sourceLocationCode);
         taskHeader.setToLocation(desLocationCode);
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 0e203f3..2b0ec77 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
@@ -133,8 +133,7 @@ public class WorkTaskService {
         TaskHeader taskHeader = new TaskHeader();
         taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
         taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYRECEIPT);
-
-        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
+        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
         taskHeader.setContainerCode(containerCode);
         taskHeader.setToLocation(destinationLocation);
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
@@ -146,20 +145,7 @@ public class WorkTaskService {
         } else {
             throw new ServiceException("空托入库主表生成失败!");
         }
-        //写入任务细表
-        TaskDetail taskDetail = new TaskDetail();
-        taskDetail.setTaskId(taskHeader.getId());
-        taskDetail.setTaskType(taskHeader.getTaskType());
-        taskDetail.setInternalTaskType(taskHeader.getInternalTaskType());
-        taskDetail.setWarehouseCode(taskHeader.getWarehouseCode());
-        taskDetail.setCompanyCode(container.getCompanyCode());
-        taskDetail.setFromLocation(taskHeader.getFromLocation());
-        taskDetail.setToLocation(taskHeader.getToLocation());
-        taskDetail.setContainerCode(taskHeader.getContainerCode());
 
-        if(!taskDetailService.save(taskDetail)){
-            throw new ServiceException("空托入库任务明细生成失败!");
-        }
         //锁库位
         if (StringUtils.isNotEmpty(destinationLocation)) {
             locationService.updateStatus(destinationLocation, QuantityConstant.STATUS_LOCK);
@@ -231,15 +217,14 @@ public class WorkTaskService {
             if (inventoryDetailService.count(queryWrapper) > 0) {
                 return AjaxResult.error("该库位上有库存,无法空托出库!");
             }
-
             locationCode = location.getCode();
             conCode = location.getContainerCode();
         }
 
         TaskHeader taskHeader = new TaskHeader();
         taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
-        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
         taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT);
+        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHIPMENT);
         taskHeader.setContainerCode(conCode);
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
         taskHeader.setFromLocation(locationCode);
@@ -279,12 +264,7 @@ public class WorkTaskService {
      */
     public AjaxResult completeEmptyIn(TaskHeader taskHeader) {
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId());
-        for (TaskDetail item : taskDetailList) {
-            item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        }
-        if (!taskDetailService.updateBatchById(taskDetailList) ||
-                !taskHeaderService.updateById(taskHeader)) {
+        if (!taskHeaderService.updateById(taskHeader)) {
             throw new ServiceException("任务单据状态更新失败!");
         }
 
@@ -302,12 +282,7 @@ public class WorkTaskService {
      */
     public AjaxResult completeEmptyOut(TaskHeader taskHeader) {
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId());
-        for (TaskDetail item : taskDetailList) {
-            item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
-        }
-        if (!taskDetailService.updateBatchById(taskDetailList) ||
-                !taskHeaderService.updateById(taskHeader)) {
+        if (!taskHeaderService.updateById(taskHeader)) {
             throw new ServiceException("任务单据状态更新失败!");
         }
         //解锁容器,更新库位
@@ -525,8 +500,8 @@ public class WorkTaskService {
         }
         TaskHeader taskHeader = new TaskHeader();
         taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
-        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
         taskHeader.setTaskType(QuantityConstant.TASK_TYPE_VIEW);
+        taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
         taskHeader.setContainerCode(conCode);
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
         taskHeader.setFromLocation(locationCode);
diff --git a/src/main/resources/templates/admin/adminLogin.html b/src/main/resources/templates/admin/adminLogin.html
index 9602642..657c09e 100644
--- a/src/main/resources/templates/admin/adminLogin.html
+++ b/src/main/resources/templates/admin/adminLogin.html
@@ -78,7 +78,7 @@
     </div>
     <div class="signup-footer">
         <div class="pull-left">
-            &copy; 2018 All Rights Reserved. 长沙华恒机器人系统有限公司
+            &copy; 2021 All Rights Reserved. 长沙华恒机器人系统有限公司
         </div>
     </div>
 </div>
diff --git a/src/main/resources/templates/config/container/container.html b/src/main/resources/templates/config/container/container.html
index f16bf88..11d06ee 100644
--- a/src/main/resources/templates/config/container/container.html
+++ b/src/main/resources/templates/config/container/container.html
@@ -190,7 +190,7 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		            	var actions = [];
-		            	//actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.checklook(\'' + row.id + '\')"><i class="fa fa-search"></i>查看</a> ');
+		            	actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>');
 						return actions.join('');
 		            }
diff --git a/src/main/resources/templates/config/container/edit.html b/src/main/resources/templates/config/container/edit.html
index 66c88bc..856bd9a 100644
--- a/src/main/resources/templates/config/container/edit.html
+++ b/src/main/resources/templates/config/container/edit.html
@@ -12,14 +12,6 @@
                     <input id="code" name="code" th:field="*{code}" class="form-control" type="text" readonly="true">
                 </div>
             </div>
-             <div class="form-group">
-                <label class="col-sm-3 control-label">容器类型:</label>
-                <div class="col-sm-8">
-                    <select id="type" class="form-control m-b" th:with="containerType=${@containerType.getPrefix()}" readonly="true" disabled="disabled">
-                        <option th:each="item : ${containerType}" th:text="${item['name']}" th:value="${item['prefix']}" th:field="*{type}"></option>
-                    </select>
-                </div>
-            </div>
             <!--<div class="form-group">	-->
                 <!--<label class="col-sm-3 control-label">库位id:</label>-->
                 <!--<div class="col-sm-8">-->
@@ -29,30 +21,18 @@
             <div class="form-group">	
                 <label class="col-sm-3 control-label">库位编码:</label>
                 <div class="col-sm-8">
-                    <input id="locationCode" name="locationCode" th:field="*{locationCode}" class="form-control" type="text" readonly="true">
+                    <input id="locationCode" name="locationCode" th:field="*{locationCode}" class="form-control" type="text">
                 </div>
             </div>
             <div class="form-group">	
                 <label class="col-sm-3 control-label">状态:</label>
                 <div class="col-sm-8">
-                    <select name="type" id="status" class="form-control m-b"  th:with="dictLabel=${@dict.getType('containerStatus')}" disabled="disabled">
+                    <select name="type" id="status" class="form-control m-b"  th:with="dictLabel=${@dict.getType('containerStatus')}">
                         <option th:each="dict : ${dictLabel}" th:text="${dict['dictLabel']}"
                                 th:value="${dict['dictValue']}" th:field="*{status}"></option>
                     </select>
                 </div>
             </div>
-            <div class="form-group">
-                <label class="col-sm-3 control-label">AGV货架:</label>
-                <div class="col-sm-8">
-                    <input id="goodsShlfNo" name="goodsShlfNo" th:field="*{goodsShlfNo}" class="form-control" type="text" >
-                </div>
-            </div>
-            <div class="form-group">	
-                <label class="col-sm-3 control-label">打印次数:</label>
-                <div class="col-sm-8">
-                    <input id="printCount" name="printCount" th:field="*{printCount}" class="form-control" type="text" readonly="true">
-                </div>
-            </div>
             <!--<div class="form-group">	-->
                 <!--<label class="col-sm-3 control-label">创建时间:</label>-->
                 <!--<div class="col-sm-8">-->
@@ -121,7 +101,7 @@
             <!--</div>-->
 			<div class="form-group">
 				<div class="form-control-static col-sm-offset-9">
-					<!--<button type="submit" class="btn btn-primary">提交</button>-->
+					<button type="submit" class="btn btn-primary">提交</button>
 					<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
 				</div>
 			</div>
diff --git a/src/main/resources/templates/config/location/edit.html b/src/main/resources/templates/config/location/edit.html
index 3c5c3f8..08f4f0d 100644
--- a/src/main/resources/templates/config/location/edit.html
+++ b/src/main/resources/templates/config/location/edit.html
@@ -57,24 +57,17 @@
                 </div>
             </div>
             <div class="form-group">
-                <label class="col-sm-3 control-label">容器编码:</label>
+                <label class="col-sm-3 control-label">容器编号:</label>
                 <div class="col-sm-8">
-                    <input id="containerCode" name="containerCode" th:field="*{containerCode}" class="form-control" type="text" readonly="true">
+                    <input id="containerCode" name="containerCode" th:field="*{containerCode}" class="form-control" type="text">
                 </div>
             </div>
-<!--            <div class="form-group">-->
-<!--                <label class="col-sm-3 control-label">库区编码:</label>-->
-<!--                <div class="col-sm-8">-->
-<!--                    <select id="zoneCode" class="form-control" th:with="zone=${@zone.getZoneCodeList()}" readonly="true" disabled="disabled">-->
-<!--                        <option th:each="item : ${zone}" th:text="${item['name']}" th:value="${item['code']}" th:field="*{zoneCode}" ></option>-->
-<!--                    </select>-->
-<!--                </div>-->
-<!--            </div>-->
             <div class="form-group">
-                <label class="col-sm-3 control-label">状态:</label>
+                <label class="col-sm-3 control-label">库位状态:</label>
                 <div class="col-sm-8">
-                    <select id="status" class="form-control m-b" th:with="type=${@dict.getType('locationStatus')}" readonly="true" disabled="disabled">
+                    <select id="status" name="status" class="form-control">
                         <option value="empty">空闲</option>
+                        <option value="lock">占用</option>
                         <option value="disable">禁用</option>
                     </select>
                 </div>
@@ -98,7 +91,8 @@
                     url : prefix + "/edit",
                     data : {
                         "id": $("input[name='id']").val(),
-                        "enable" : $("input[name='enable']").is(':checked')
+                        "containerCode" : $("input[name='containerCode']").val(),
+                        "status" : $("#status option:selected").val(),
                     },
                     async : false,
                     error : function(request) {
diff --git a/src/main/resources/templates/config/location/editBatch.html b/src/main/resources/templates/config/location/editBatch.html
index aafa924..ce71412 100644
--- a/src/main/resources/templates/config/location/editBatch.html
+++ b/src/main/resources/templates/config/location/editBatch.html
@@ -9,7 +9,7 @@
     <div class="form-group">
       <label class="col-sm-3 control-label">区域:</label>
       <div class="col-sm-8">
-        <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('areas')}">
+        <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('material_areas')}">
           <option th:each="item : ${areas}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
         </select>
       </div>
diff --git a/src/main/resources/templates/config/material/editBatch.html b/src/main/resources/templates/config/material/editBatch.html
index e2652f4..f3c7f82 100644
--- a/src/main/resources/templates/config/material/editBatch.html
+++ b/src/main/resources/templates/config/material/editBatch.html
@@ -9,7 +9,7 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">物料分区</label>
             <div class="col-sm-8">
-                <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('areas')}">
+                <select id="area" name="area" class="form-control" th:with="areas=${@dict.getType('material_areas')}">
                     <option th:each="item : ${areas}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
                 </select>
             </div>
diff --git a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
index 560c150..d0d2329 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
@@ -11,10 +11,21 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">库存ID:</label>
             <div class="col-sm-8">
-                <input id="ids" name="ids" class="form-control" type="text" oninput="myFunction()">
+                <input id="ids" name="ids" class="form-control" type="text" oninput="myFunction()" th:value="${id}" readonly>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">容器编码:</label>
+            <div class="col-sm-8">
+                <input id="containerCode" name="containerCode" class="form-control" type="text" th:value="${locationCode}" readonly>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="col-sm-3 control-label">库位编码:</label>
+            <div class="col-sm-8">
+                <input id="sourceLocation" name="sourceLocation" class="form-control" type="text" th:value="${containerCode}" readonly>
             </div>
         </div>
-
         <div class="form-group">
             <label class="col-sm-3 control-label">出库站台:</label>
             <div class="col-sm-8">
diff --git a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
index a291603..a17f485 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
@@ -73,9 +73,8 @@
         });
     }
 
-    $(function () {
+    myFunction()
 
-    })
 
     function selectEmptyOut() {
         $.modal.open("空托盘选取",prefix+"/listEmpty",780);
diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
index 9cd77dd..8dde2c3 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
@@ -99,7 +99,7 @@
             search: false,
             columns: [
                 {
-                    checkbox: true
+                    radio: true
                 },
                 {
                     field: 'id',
@@ -278,7 +278,12 @@
     }
 
     function checkOut() {
-        $.modal.open("出库查看",prefix+"/checkOut")
+        let rows =  $("#bootstrap-table").bootstrapTable('getSelections')
+        if (rows.length != 1) {
+            $.modal.alertWarning("请选择一条记录");
+            return;
+        }
+        $.modal.open("出库查看", prefix+"/checkOut/"+rows[0].id)
     }
 
     function emptyCheckOut() {
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index 95b63bf..acf6c54 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -85,7 +85,7 @@
     </div>
     <div class="signup-footer">
         <div class="pull-left">
-            &copy; 2021 All Rights Reserved. 长沙华恒机器人系统有限公司
+            © [[${copyrightYear}]] All Rights Reserved. 长沙华恒机器人系统有限公司
         </div>
     </div>
 </div>
diff --git a/src/main/resources/templates/receipt/reservation/view.html b/src/main/resources/templates/receipt/reservation/view.html
index 30a9907..2779d74 100644
--- a/src/main/resources/templates/receipt/reservation/view.html
+++ b/src/main/resources/templates/receipt/reservation/view.html
@@ -31,6 +31,7 @@
 <div th:include="include :: footer"></div>
 <script th:inline="javascript">
     let prefix = ctx+"reservation";
+    let date = $("#tab0-0").text();
     $(function () {
         load();
     })
diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html
index 1ceeff2..e925009 100644
--- a/src/main/resources/templates/task/taskHeader/taskHeader.html
+++ b/src/main/resources/templates/task/taskHeader/taskHeader.html
@@ -164,7 +164,7 @@
 						var actions = [];
 						actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> ');
 						if (row.status < 10)  {
-                            if(row.taskType == 300 || row.taskType == 400 || row.taskType == 900) {
+                            if(row.taskType == 200 || row.taskType == 300 || row.taskType == 400 || row.taskType == 900) {
                                 actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="chooseStation(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
                             } else {
                                 actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> ');
@@ -173,6 +173,7 @@
 							actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
 						}
 						if (row.status >= 10 && row.status < 100)  {
+							actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> ');
 							actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>');
 						}
 						return actions.join('');