diff --git a/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java
index 9b645f5..3dc4eb7 100644
--- a/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java
@@ -3,6 +3,7 @@ package com.huaheng.api.wcs.service.stationInfo;
 
 import com.alibaba.fastjson.JSON;
 import com.huaheng.api.wcs.domain.WcsTask;
+import com.huaheng.common.constant.QuantityConstant;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.http.HttpUtils;
@@ -45,8 +46,7 @@ public class StationInfoServiceImpl implements StationInfoService {
         map.put("port",list);
 
         //3、发送数据
-        String param="wcs";
-        String url=addressService.selectAddress(param)+"StationInfo";
+        String url=addressService.selectAddress(QuantityConstant.ADDRESS_WCS_STATION_INFOS);
         String JsonParam = JSON.toJSONString(map);
         String result = HttpUtils.bodypost(url, JsonParam);
         if(StringUtils.isEmpty(result)){
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 193cf71..4126e25 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
@@ -110,7 +110,7 @@ public class TaskAssignServiceImpl implements TaskAssignService {
         wcsTask.setWarehouseCode(ShiroUtils.getWarehouseCode());
         wcsTask.setTaskType(taskType);
         wcsTask.setFromPort("");
-        wcsTask.setToPort(taskHeader.getStationCode());
+        wcsTask.setToPort(taskHeader.getPort());
         wcsTask.setContainerCode(taskHeader.getContainerCode());
         Location location;
         switch(wcsTask.getTaskType().intValue()) {
@@ -264,8 +264,7 @@ public class TaskAssignServiceImpl implements TaskAssignService {
         wcsTask.setTaskDetails(taskDetails);
 
         //4、发送数据
-        String param = "wcs";
-        String url = addressService.selectAddress(param)+"TaskAssign";
+        String url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_ASSIGN);
         wcsTask = switchTaskTypeToWcs(wcsTask);
         String JsonParam = JSON.toJSONString(wcsTask);
         System.out.println(JsonParam);
diff --git a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java
index 87755be..7f054a0 100644
--- a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java
@@ -2,6 +2,7 @@ package com.huaheng.api.wcs.service.taskCancel;
 
 import com.alibaba.fastjson.JSON;
 import com.huaheng.api.wcs.domain.WcsTask;
+import com.huaheng.common.constant.QuantityConstant;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.http.HttpUtils;
@@ -35,14 +36,13 @@ public class TaskCancelServiceImpl implements TaskCancelService {
 
 
         //2、转换实体
-//        WcsTask wcsTask = new WcsTask();
-//        wcsTask.setTaskNo(id.toString());
+        WcsTask wcsTask = new WcsTask();
+        wcsTask.setTaskNo(id.toString());
 
         //3、发送数据
-        String param="wcs";
-        String url=addressService.selectAddress(param)+"TaskCancel";
-        String JsonParam = JSON.toJSONString(id.toString());
-        String result = HttpUtils.bodypost(url, JsonParam);
+        String url = addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_CANCEL);
+        String jsonParam = JSON.toJSONString(wcsTask);
+        String result = HttpUtils.bodypost(url, jsonParam);
         if(StringUtils.isEmpty(result)){
             throw new ServiceException("接口地址错误");
         }
diff --git a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java
index d67e56b..7efddc3 100644
--- a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java
@@ -46,12 +46,14 @@ public class TaskFinishServiceImpl implements TaskFinishService {
 
         }
 
-        if (StringUtils.isEmpty(taskFinishDomain.getWeight())) {
-            return AjaxResult.error("重量为空");
+
+        String[] weight = new String[1];
+        if (StringUtils.isNotEmpty(taskFinishDomain.getWeight())) {
+            weight = Convert.toStrArray(taskFinishDomain.getWeight());
         }
         //任务完成
         try{
-            ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskFinishDomain.getTaskNo()), Convert.toStrArray(taskFinishDomain.getWeight()));
+            ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskFinishDomain.getTaskNo()), weight);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/src/main/java/com/huaheng/api/wcs/service/taskInfo/TaskInfoServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskInfo/TaskInfoServiceImpl.java
index 16977bc..cfdef9e 100644
--- a/src/main/java/com/huaheng/api/wcs/service/taskInfo/TaskInfoServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/taskInfo/TaskInfoServiceImpl.java
@@ -2,6 +2,7 @@ package com.huaheng.api.wcs.service.taskInfo;
 
 import com.alibaba.fastjson.JSON;
 import com.huaheng.api.wcs.domain.WcsTask;
+import com.huaheng.common.constant.QuantityConstant;
 import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.http.HttpUtils;
@@ -39,8 +40,7 @@ public class TaskInfoServiceImpl implements TaskInfoService {
         wcsTask.setTaskNo(id.toString());
 
         //3、发送数据
-        String param="wcs";
-        String url=addressService.selectAddress(param)+"TaskInfo";
+        String url=addressService.selectAddress(QuantityConstant.ADDRESS_WCS_TASK_INFO);
         String JsonParam = JSON.toJSONString(wcsTask);
         String result = HttpUtils.bodypost(url, JsonParam);
         if(StringUtils.isEmpty(result)){
diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
index 1fffa20..f718716 100644
--- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java
+++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java
@@ -361,11 +361,24 @@ public class QuantityConstant {
     public static final Integer POINTS_SOME = 1;
 
     public static final int ROW_OUT = 1;
-
     public static final int ROW_IN = 0;
 
+    //WCS任务下发
+    public static final String ADDRESS_WCS_TASK_ASSIGN = "WCS_TASK_ASSIGN";
+    //WCS任务取消
+    public static final String ADDRESS_WCS_TASK_CANCEL = "WCS_TASK_CANCEL";
+    //WCS任务信息查询
+    public static final String ADDRESS_WCS_TASK_INFO = "WCS_TASK_INFO";
+    //WCS设置任务优先级
+    public static final String ADDRESS_WCS_TASK_PRIORITY_CHANGE = "WCS_TASK_PRIORITY_CHANGE";
+    //WCS站台信息查询
+    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 STATUS_CONTAINER_EMPTY = "empty";
-    public static final String STATUS_CONTAINER_LOCK = "empty";
+    public static final String STATUS_CONTAINER_LOCK = "lock";
     public static final String STATUS_CONTAINER_SOME = "some";
 
     public static final String STATUS_LOCATION_EMPTY = "empty";
@@ -373,7 +386,14 @@ public class QuantityConstant {
 
     public static final String RULE_SHIPMENT_TASK= "shipmentTaskRule";
     public static final String RULE_TASK_LOCATION = "taskLocationRule";
+    public static final String RULE_CONNECT_WCS = "connectWcs";
 
     public static final int RULE_TASK_SET_LOCATION = 1;
     public static final int RULE_TASK_NOT_LOCATION = 0;
+
+    public static final int RULE_TASK_PICK_SHIPMENT = 1;
+    public static final int RULE_TASK_WHOLE_SHIPMENT = 0;
+
+    public static final int RULE_WCS_CONNECT = 1;
+    public static final int RULE_WCS_DISCONNECT = 0;
 }
diff --git a/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java b/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java
index 260f685..a60eca9 100644
--- a/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java
+++ b/src/main/java/com/huaheng/mobile/invenory/MobileInventoryController.java
@@ -104,13 +104,13 @@ public class MobileInventoryController {
     @ResponseBody
     public AjaxResult createCheckOutTask(@RequestBody @ApiParam(value="库存ids") Map<String, String> param){
         String ids = param.get("ids");
-        String stationCode = param.get("stationCode");
+        String port = param.get("port");
         Integer companyId = DataUtils.getInteger(param.get("companyId")) ;
         String companyCode = param.get("companyCode");
         if(StringUtils.isEmpty(ids)){
             return AjaxResult.error("ids不能为空");
         }
-        return workTaskService.createCheckOutTaskByIds(Arrays.asList(Convert.toIntArray(ids)), stationCode);
+        return workTaskService.createCheckOutTaskByIds(Arrays.asList(Convert.toIntArray(ids)), port);
     }
 
     @PostMapping("/transfer")
diff --git a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
index 9dcebfc..44d86c1 100644
--- a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
+++ b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
@@ -252,7 +252,7 @@ public class MobileBatchReceiptController {
             taskQueryWrapper.eq(TaskHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
                     .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT,
                             QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)
-                    .lt(TaskHeader::getStatus, 100)
+                    .lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)
                     .eq(TaskHeader::getContainerCode, containerCode);
             TaskHeader taskHeader = taskHeaderService.getOne(taskQueryWrapper);
             if(taskHeader == null) {
diff --git a/src/main/java/com/huaheng/pc/config/address/controller/AddressController.java b/src/main/java/com/huaheng/pc/config/address/controller/AddressController.java
index 02bb4f3..4e9a46c 100644
--- a/src/main/java/com/huaheng/pc/config/address/controller/AddressController.java
+++ b/src/main/java/com/huaheng/pc/config/address/controller/AddressController.java
@@ -41,11 +41,6 @@ public class AddressController extends BaseController {
     @Resource
     private AddressService addressService;
 
-
-
-
-
-    @RequiresPermissions("config:address:view")
     @GetMapping()
     public String address() {
         return prefix + "/address";
@@ -54,7 +49,6 @@ public class AddressController extends BaseController {
     /**
      * 查询接口地址
      */
-    @RequiresPermissions("config:address:list")
     @Log(title = "配置-接口地址", operating = "查看接口地址", action = BusinessType.GRANT)
     @PostMapping("/list")
     @ResponseBody
@@ -89,7 +83,6 @@ public class AddressController extends BaseController {
     /**
      * 新增保存接口地址
      */
-    @RequiresPermissions("config:address:add")
     @Log(title = "通用-接口地址", operating = "新增接口地址", action = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
@@ -110,7 +103,6 @@ public class AddressController extends BaseController {
     /**
      * 修改保存接口地址
      */
-    @RequiresPermissions("config:address:edit")
     @Log(title = "配置-接口地址", operating = "修改接口地址", action = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
@@ -121,7 +113,6 @@ public class AddressController extends BaseController {
     /**
      * 删除接口地址
      */
-    @RequiresPermissions("config:address:remove")
     @Log(title = "配置-接口地址", operating = "删除接口地址", action = BusinessType.DELETE)
     @PostMapping( "/remove")
     @ResponseBody
diff --git a/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java b/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java
index 19761a8..6c7e2cd 100644
--- a/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java
+++ b/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java
@@ -3,6 +3,7 @@ package com.huaheng.pc.config.configValue.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaheng.framework.web.domain.AjaxResult;
 import com.huaheng.pc.config.configValue.domain.ConfigValue;
 import com.huaheng.pc.config.configValue.mapper.ConfigValueMapper;
 import org.springframework.stereotype.Service;
@@ -44,4 +45,12 @@ public class ConfigValueService extends ServiceImpl<ConfigValueMapper, ConfigVal
             return false;
         }
     }
+
+    public ConfigValue getConfigValueByIdentifer(String identifier , String warehouseCode) {
+        LambdaQueryWrapper<ConfigValue> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(ConfigValue::getWarehouseCode, warehouseCode)
+                          .eq(ConfigValue::getIdentifier, identifier);
+        ConfigValue configValue = getOne(lambdaQueryWrapper);
+        return configValue;
+    }
 }
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 e2407fe..beb262a 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
@@ -222,11 +222,13 @@ public class LocationController extends BaseController {
   @Log(title = "通用-库位管理", operating = "批量修改库位", action = BusinessType.UPDATE)
   @PostMapping("/editBatchSave")
   @ResponseBody
-  public AjaxResult editBatchSave (String ids, String area) {
+  public AjaxResult editBatchSave (String ids, String area, Integer high, String status) {
     String[] idArray = Convert.toStrArray(ids);
     LambdaUpdateWrapper<Location> wrapper = Wrappers.lambdaUpdate();
     wrapper.in(Location::getId, idArray)
-            .set(Location::getArea, area);
+            .set(Location::getArea, area)
+            .set(Location::getHigh, high)
+            .set(Location::getStatus, status);
     return toAjax(locationService.update(wrapper));
   }
 
diff --git a/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java b/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java
index dcc099f..9148ed4 100644
--- a/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java
@@ -86,7 +86,7 @@ public class ShipmentPreferenceServiceImpl extends ServiceImpl<ShipmentPreferenc
         StatusFlowDetail statusFlowDetail = statusFlowDetailService.getOne(statusFlowDetailLamb);
 
         List<ShipmentHeader> shipmentHeaderList = new ArrayList<>();
-        if (statusFlowDetail != null) {
+        if (statusFlowDetail != null  && statusFlowDetail.getNessary().intValue() == 1) {
             if (StringUtils.isNotEmpty(ids)) {
                 for (Integer id : Convert.toIntArray(ids)) {
                     //判断单据是否按出库流程操作
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 c5d1c8b..97a01ee 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
@@ -198,8 +198,8 @@ public class InventoryHeaderController extends BaseController
     @PostMapping("/emptyOut")
     @Log(title = "任务-任务管理", operating = "生成空托盘出库任务", action = BusinessType.INSERT)
     @ResponseBody
-    public AjaxResult emptyOut(String containerCode,String sourceLocation, String stationCode){
-        return inventoryHeaderService.createEmptyOut(containerCode, sourceLocation, stationCode);
+    public AjaxResult emptyOut(String containerCode,String sourceLocation, String port){
+        return inventoryHeaderService.createEmptyOut(containerCode, sourceLocation, port);
     }
 
     /**
@@ -217,17 +217,17 @@ public class InventoryHeaderController extends BaseController
     /**
      * 出库查看任务
      * @param ids
-     * @param stationCode
+     * @param port
      * @return
      */
     @PostMapping("/checkOut")
     @Log(title = "任务-任务管理", operating = "出库查看任务", action = BusinessType.INSERT)
     @ResponseBody
-    public AjaxResult checkOut(String ids,String stationCode){
-        if(StringUtils.isEmpty(ids) || StringUtils.isEmpty(stationCode)){
-            throw new ServiceException("库存头和出库站台不能为空!");
+    public AjaxResult checkOut(String ids,String port){
+        if(StringUtils.isEmpty(ids) || StringUtils.isEmpty(port)){
+            throw new ServiceException("库存头和出库口不能为空!");
         }
-        return inventoryHeaderService.createCheckOutTask(Arrays.asList(Convert.toIntArray(ids)), stationCode);
+        return inventoryHeaderService.createCheckOutTask(Arrays.asList(Convert.toIntArray(ids)), port);
     }
 
     /**
@@ -250,11 +250,11 @@ public class InventoryHeaderController extends BaseController
     @PostMapping("/emptyCheckOut")
     @Log(title = "任务-任务管理", operating = "生成空托盘出库查看任务", action = BusinessType.INSERT)
     @ResponseBody
-    public AjaxResult emptyCheckOut(String containerCode,String sourceLocation){
+    public AjaxResult emptyCheckOut(String containerCode,String sourceLocation, String stationCode){
         if(StringUtils.isEmpty(containerCode) || StringUtils.isEmpty(sourceLocation)){
             throw new ServiceException("容器和库位不能有空值!");
         }
-        return inventoryHeaderService.createEmptyCheckOut(containerCode, sourceLocation);
+        return inventoryHeaderService.createEmptyCheckOut(containerCode, sourceLocation, stationCode);
     }
 
     /**
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
index 4a301b5..fc2e124 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderService.java
@@ -13,7 +13,7 @@ public interface InventoryHeaderService extends IService<InventoryHeader> {
 
 
 
-    AjaxResult createCheckOutTask (List<Integer> ids, String stationCode);
+    AjaxResult createCheckOutTask (List<Integer> ids, String port);
 
     AjaxResult createTransferTask(String sourceLocation, String destinationLocation);
 
@@ -28,10 +28,12 @@ public interface InventoryHeaderService extends IService<InventoryHeader> {
 
     AjaxResult createEmptyOut(String containerCode, String sourceLocation);
 
-    AjaxResult createEmptyOut(String containerCode, String sourceLocation, String stationCode);
+    AjaxResult createEmptyOut(String containerCode, String sourceLocation, String port);
 
     AjaxResult createEmptyCheckOut(String containerCode, String location);
 
+    AjaxResult createEmptyCheckOut(String containerCode, String location, String port);
+
     /**
      * 移动端获取库存详情
      * @param code 物料编码
diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
index 275a495..671511d 100644
--- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
+++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
@@ -69,9 +69,9 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
      * 出库查看
      * */
     @Override
-    public AjaxResult createCheckOutTask(List<Integer> ids, String stationCode) {
+    public AjaxResult createCheckOutTask(List<Integer> ids, String port) {
             //生成出库查看任务
-        return  workTaskService.createCheckOutTaskByIds(ids, stationCode);
+        return  workTaskService.createCheckOutTaskByIds(ids, port);
     }
 
     @Override
@@ -112,8 +112,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
      *空托出库
      * */
     @Override
-    public AjaxResult createEmptyOut(String containerCode, String sourceLocation, String stationCode) {
-        return workTaskService.createEmptyOut(containerCode, sourceLocation, stationCode);
+    public AjaxResult createEmptyOut(String containerCode, String sourceLocation, String port) {
+        return workTaskService.createEmptyOut(containerCode, sourceLocation, port);
     }
 
     /**
@@ -121,7 +121,15 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
      * */
     @Override
     public AjaxResult createEmptyCheckOut(String containerCode, String location) {
-        return workTaskService.createEmptyCheckOut(containerCode, location);
+        return workTaskService.createEmptyCheckOut(containerCode, location, null);
+    }
+
+    /**
+     *空托出库查看
+     * */
+    @Override
+    public AjaxResult createEmptyCheckOut(String containerCode, String location, String port) {
+        return workTaskService.createEmptyCheckOut(containerCode, location, port);
     }
 
     /**
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 aff612b..f2afea7 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
@@ -134,7 +134,7 @@ public class ReceiptContainerHeaderController extends BaseController {
         List<Integer> idList = Arrays.asList(Convert.toIntArray(ids));
         List<Integer> idsList = idList.stream().distinct().collect(Collectors.toList());
         AjaxResult ajaxResult =  receiptTaskService.createReceiptTask(idsList);
-        if(ajaxResult.getCode() != HttpConstant.OK) {
+        if(ajaxResult.hasErr()) {
             return ajaxResult;
         }
         List<String> taskList = (List<String>)ajaxResult.getData();
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 76e21f6..ab35f9b 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
@@ -8,9 +8,11 @@ import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.framework.web.service.ConfigService;
 import com.huaheng.mobile.receipt.ReceiptBill;
 import com.huaheng.pc.config.configValue.domain.ConfigValue;
 import com.huaheng.pc.config.configValue.mapper.ConfigValueMapper;
+import com.huaheng.pc.config.configValue.service.ConfigValueService;
 import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.location.domain.Location;
@@ -64,6 +66,8 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
     private ReceiptPreferenceMapper receiptPreferenceMapper;
     @Resource
     private ConfigValueMapper configValueMapper;
+    @Resource
+    private ConfigService configService;
     /**
      * 保存入库组盘
      * @param receiptCode 入库单编码
@@ -126,12 +130,15 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
             receiptContainerHeader.setTaskType(taskType);
             if (taskType.equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)) {
                 receiptContainerHeader.setFromLocation(container.getLocationCode());
-//                receiptContainerHeader.setToLocation(container.getLocationCode());
+                String value = configService.getKey(QuantityConstant.RULE_TASK_LOCATION);
+                int taskLocationRule = Integer.parseInt(value);
+                if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
+                    receiptContainerHeader.setToLocation(container.getLocationCode());
+                }
             } else {
                 receiptContainerHeader.setToLocation(locationCode);
             }
             receiptContainerHeader.setProjectNo(receiptDetail.getProjectNo());
-//            receiptContainerHeader.setToLocation(locationCode);
             receiptContainerHeader.setCreatedBy(ShiroUtils.getLoginName());
             receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
             receiptContainerHeader.setLocatingRule(locatingRule);
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java
index 510092a..cd33d43 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/domain/ShipmentContainerHeader.java
@@ -57,11 +57,11 @@ public class    ShipmentContainerHeader implements Serializable {
     private Integer status;
 
     /**
-     * 出库站台
+     * 出库口
      */
-    @TableField(value = "stationCode")
-    @ApiModelProperty(value="出库站台")
-    private String stationCode;
+    @TableField(value = "port")
+    @ApiModelProperty(value="出库口")
+    private String port;
 
     /**
      * 父
@@ -450,12 +450,12 @@ public class    ShipmentContainerHeader implements Serializable {
         this.status = status;
     }
 
-    public String getStationCode() {
-        return stationCode;
+    public String getPort() {
+        return port;
     }
 
-    public void setStationCode(String stationCode) {
-        this.stationCode = stationCode;
+    public void setPort(String port) {
+        this.port = port;
     }
 
     /**
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 0bfc8a0..4598de3 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
@@ -211,7 +211,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
                 shipmentContainerHeader.setLocationCode(location.getCode());
                 shipmentContainerHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
                 shipmentContainerHeader.setCompanyCode(shipmentDetail.getCompanyCode());
-                shipmentContainerHeader.setStationCode(shipmentDetail.getStationCode());
+                shipmentContainerHeader.setPort(shipmentDetail.getPort());
                 shipmentContainerHeader.setContainerType(container.getContainerType());
                 shipmentContainerHeader.setStatus(QuantityConstant.SHIPMENT_CONTAINER_BUILD);
                 shipmentContainerHeader.setTaskCreated(0);
diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java
index 38084da..ffe369b 100644
--- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java
+++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java
@@ -188,11 +188,11 @@ public class ShipmentDetail implements Serializable {
     private String projectNo;
 
     /**
-     * 出库站台
+     * 出库口
      */
-    @TableField(value = "stationCode")
-    @ApiModelProperty(value="出库站台")
-    private String stationCode;
+    @TableField(value = "port")
+    @ApiModelProperty(value="出库口")
+    private String port;
 
     /**
      * 生产日期
@@ -1016,12 +1016,12 @@ public class ShipmentDetail implements Serializable {
         return processStamp;
     }
 
-    public String getStationCode() {
-        return stationCode;
+    public String getPort() {
+        return port;
     }
 
-    public void setStationCode(String stationCode) {
-        this.stationCode = stationCode;
+    public void setPort(String port) {
+        this.port = port;
     }
 
     /**
diff --git a/src/main/java/com/huaheng/pc/system/config/controller/ConfigController.java b/src/main/java/com/huaheng/pc/system/config/controller/ConfigController.java
index 56c7d22..dc8c292 100644
--- a/src/main/java/com/huaheng/pc/system/config/controller/ConfigController.java
+++ b/src/main/java/com/huaheng/pc/system/config/controller/ConfigController.java
@@ -130,4 +130,6 @@ public class ConfigController extends BaseController {
         return uniqueFlag;
     }
 
+
+
 }
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 95522c1..92b9027 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
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
+import com.huaheng.common.constant.QuantityConstant;
 import com.huaheng.common.support.Convert;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
@@ -14,6 +16,9 @@ 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.framework.web.service.ConfigService;
+import com.huaheng.pc.config.configValue.domain.ConfigValue;
+import com.huaheng.pc.config.configValue.service.ConfigValueService;
 import com.huaheng.pc.config.material.service.MaterialService;
 import com.huaheng.pc.config.warehouse.domain.Warehouse;
 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
@@ -47,6 +52,10 @@ public class TaskHeaderController extends BaseController {
     private TaskHeaderService taskHeaderService;
     @Resource
     private WorkTaskService workTaskService;
+    @Resource
+    private TaskCancelService taskCancelService;
+    @Resource
+    private ConfigService configService;
 
     private String prefix = "task/taskHeader";
 
@@ -75,8 +84,8 @@ public class TaskHeaderController extends BaseController {
                           .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)
-                          .orderByAsc(TaskHeader::getStatus);
+                          .orderByAsc(TaskHeader::getStatus)
+                          .orderByDesc(TaskHeader::getId);
 
         PageDomain pageDomain = TableSupport.buildPageRequest();
         Integer pageNum = pageDomain.getPageNum();
@@ -137,6 +146,18 @@ public class TaskHeaderController extends BaseController {
         if (StringUtils.isEmpty(ids)) {
             return AjaxResult.error("taskId不能为空");
         }
+        String value = configService.getKey(QuantityConstant.RULE_CONNECT_WCS);
+        int connectWCS = Integer.parseInt(value);
+        if(connectWCS == QuantityConstant.RULE_WCS_CONNECT) {
+            Integer[] idList = Convert.toIntArray(ids);
+            for (int id : idList) {
+                AjaxResult ajaxResult = taskCancelService.TaskCance(id);
+                if (ajaxResult.hasErr()) {
+                    return ajaxResult;
+                }
+            }
+        }
+
         return taskHeaderService.cancelTask(Convert.toIntArray(ids));
     }
 
@@ -172,7 +193,7 @@ public class TaskHeaderController extends BaseController {
     }
 
     /**
-     * 选择出库站台
+     * 选择出库口
      */
     @GetMapping("/chooseStation/{taskId}")
     public String chooseStation(@PathVariable("taskId")String taskId, ModelMap mmap) {
@@ -192,7 +213,7 @@ public class TaskHeaderController extends BaseController {
         LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
         taskHeaderLambdaQueryWrapper.eq(TaskHeader::getId, taskiId);
         TaskHeader taskHeader1 = taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
-        taskHeader1.setStationCode(taskHeader.getStationCode());
+        taskHeader1.setPort(taskHeader.getPort());
         taskHeaderService.update(taskHeader1, taskHeaderLambdaQueryWrapper);
         return execute(String.valueOf(taskiId));
     }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
index 3a6e588..a44131d 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/domain/TaskHeader.java
@@ -135,11 +135,11 @@ public class TaskHeader implements Serializable {
     private Integer preTaskNo;
 
     /**
-     * 出库站台
+     * 出库口
      */
-    @TableField(value = "stationCode")
-    @ApiModelProperty(value="出库站台")
-    private String stationCode;
+    @TableField(value = "port")
+    @ApiModelProperty(value="出库口")
+    private String port;
 
 
     /**
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 81d5ad8..fe8ca90 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
@@ -8,6 +8,9 @@ import com.huaheng.common.exception.service.ServiceException;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.framework.web.service.ConfigService;
+import com.huaheng.pc.config.configValue.domain.ConfigValue;
+import com.huaheng.pc.config.configValue.service.ConfigValueService;
 import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
 import com.huaheng.pc.config.location.domain.Location;
@@ -76,6 +79,8 @@ public class ShipmentTaskService {
     private IMaterialWarningService materialWarningService;
     @Resource
     private ShipmentPreferenceService shipmentPreferenceService;
+    @Resource
+    private ConfigService configService;
     /**
      * 创建出库任务
      * @param shipmentTaskCreateModel
@@ -109,7 +114,7 @@ public class ShipmentTaskService {
         if (StringUtils.isNull(location)) {
             return AjaxResult.error("库位禁用或不存在!");
         }
-        if(location.getRowFlag() == 1) {
+        if(location.getRowFlag() == QuantityConstant.ROW_OUT) {
             Location location1 = locationService.getNear(location);
             if(location1 != null) {
                 String locationCode = location1.getCode();
@@ -121,7 +126,6 @@ public class ShipmentTaskService {
                     preTaskNo = taskHeaderList.get(0).getPreTaskNo();
                 }
             }
-
         }
         LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery();
         containerLambdaQueryWrapper.eq(Container::getCode, shipmentContainerHeader.getContainerCode())
@@ -140,7 +144,6 @@ public class ShipmentTaskService {
         TaskHeader task = new TaskHeader();
         task.setTaskType(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT);
         task.setFromLocation(shipmentContainerHeader.getLocationCode());
-        task.setToLocation(shipmentContainerHeader.getLocationCode());
         //判断是否整出任务,钱柜和AGV不能整出
         //表示整出优先
         //判断当前子货箱所有数量是否等于该托盘对应的所有库存的数量,
@@ -160,14 +163,19 @@ public class ShipmentTaskService {
         for (ShipmentContainerDetail item : shipmentContainerDetails) {
             containerTotal = containerTotal.add(item.getQty());
         }
-        LambdaQueryWrapper<ShipmentPreference> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.eq(ShipmentPreference::getWarehouseCode, ShiroUtils.getWarehouseCode());
-        ShipmentPreference shipmentPreference = shipmentPreferenceService.getOne(lambdaQueryWrapper);
+        String value = configService.getKey(QuantityConstant.RULE_SHIPMENT_TASK);
+        int shipmentTaskRule = Integer.parseInt(value);
         // 当onlyPicking为1,只允许分拣出库
-        if (inventoryTotal.compareTo(containerTotal) == 0 && (shipmentPreference.getOnlyPicking() == 0)) {
+        if (inventoryTotal.compareTo(containerTotal) == 0 &&
+                (shipmentTaskRule == QuantityConstant.RULE_TASK_WHOLE_SHIPMENT)) {
             //整盘出库
             task.setTaskType(QuantityConstant.TASK_TYPE_WHOLESHIPMENT);
-            task.setToLocation("");
+        } else {
+            value = configService.getKey(QuantityConstant.RULE_TASK_LOCATION);
+            int taskLocationRule = Integer.parseInt(value);
+            if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
+                task.setToLocation(shipmentContainerHeader.getLocationCode());
+            }
         }
 
 
@@ -176,7 +184,7 @@ public class ShipmentTaskService {
         task.setWarehouseCode(shipmentContainerHeader.getWarehouseCode());
         task.setAssignedUser(ShiroUtils.getLoginName());
         task.setConfirmedBy(ShiroUtils.getLoginName());
-        task.setStationCode(shipmentContainerHeader.getStationCode());
+        task.setPort(shipmentContainerHeader.getPort());
         task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
         task.setContainerCode(shipmentContainerHeader.getContainerCode());
         task.setCompanyCode(shipmentContainerHeader.getCompanyCode());
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 93368f7..ad4965b 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
@@ -11,6 +11,9 @@ import com.huaheng.common.support.Convert;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.framework.web.service.ConfigService;
+import com.huaheng.pc.config.configValue.domain.ConfigValue;
+import com.huaheng.pc.config.configValue.service.ConfigValueService;
 import com.huaheng.pc.config.configWarning.service.ConfigWarningService;
 import com.huaheng.pc.config.container.domain.Container;
 import com.huaheng.pc.config.container.service.ContainerService;
@@ -95,7 +98,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
     private TransferTaskService transferTaskService;
     @Resource
     private ReceivingService receivingService;
-
+    @Resource
+    private ConfigService configService;
 
 
 
@@ -298,12 +302,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
             }
 
-            // 给wcs传递任务
-             AjaxResult ajaxResult = taskAssignService.wcsTaskAssign(task);
-             if(ajaxResult != null && ajaxResult.hasErr()) {
-                 return AjaxResult.error(ajaxResult.getMsg());
-             }
-
+            String value = configService.getKey(QuantityConstant.RULE_CONNECT_WCS);
+            int connectWCS = Integer.parseInt(value);
+            if(connectWCS == QuantityConstant.RULE_WCS_CONNECT) {
+                // 给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);
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 8bcdc96..8b45ad4 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
@@ -10,6 +10,7 @@ import com.huaheng.common.support.Convert;
 import com.huaheng.common.utils.StringUtils;
 import com.huaheng.common.utils.security.ShiroUtils;
 import com.huaheng.framework.web.domain.AjaxResult;
+import com.huaheng.framework.web.service.ConfigService;
 import com.huaheng.mobile.shipment.Shipment;
 import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
 import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
@@ -54,7 +55,7 @@ public class WorkTaskService {
     @Resource
     private LocationService locationService;
     @Resource
-    private ConfigValueService configValueService;
+    private ConfigService configService;
     @Resource
     private ReceiptPreferenceService preferenceService;
     @Resource
@@ -167,10 +168,11 @@ public class WorkTaskService {
      * 容器编码与源库位只需要填一个
      * @param containerCode 容器编码
      * @param sourceLocation 源库位
+     * @param port 出库口
      * @return
      */
     @Transactional
-    public AjaxResult createEmptyOut(String containerCode, String sourceLocation, String stationCode) {
+    public AjaxResult createEmptyOut(String containerCode, String sourceLocation, String port) {
         /* 容器编码*/
         String conCode = null;
         /* 库位编码*/
@@ -234,7 +236,7 @@ public class WorkTaskService {
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
         taskHeader.setFromLocation(locationCode);
         taskHeader.setToLocation("");
-        taskHeader.setStationCode(stationCode);
+        taskHeader.setPort(port);
         if(taskHeaderService.save(taskHeader)){
             //锁定库位状态
             locationService.updateStatus(locationCode,QuantityConstant.STATUS_LOCATION_LOCK);
@@ -302,9 +304,10 @@ public class WorkTaskService {
     /**
      * 创建出库查看任务
      * @param locationCodeList 库位编码列表
+     * @param port 出库口
      * @return
      */
-    public AjaxResult createCheckOutTask(List<String> locationCodeList, String stationCode) {
+    public AjaxResult createCheckOutTask(List<String> locationCodeList, String port) {
         for (String locationCode : locationCodeList) {
             Location location = locationService.getLocationByCode(locationCode);
             if (StringUtils.isNull(location)) {
@@ -323,15 +326,13 @@ public class WorkTaskService {
             taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK);
             taskHeader.setContainerCode(location.getContainerCode());
             taskHeader.setFromLocation(locationCode);
-            LambdaQueryWrapper<ConfigValue> configLambdaQueryWrapper = Wrappers.lambdaQuery();
-            configLambdaQueryWrapper.eq(ConfigValue::getIdentifier, QuantityConstant.RULE_TASK_LOCATION);
-            ConfigValue configValue = configValueService.getOne(configLambdaQueryWrapper);
-            int taskLocationRule = Integer.parseInt(configValue.getValue());
+            String value = configService.getKey(QuantityConstant.RULE_TASK_LOCATION);
+            int taskLocationRule = Integer.parseInt(value);
             if (taskLocationRule == QuantityConstant.RULE_TASK_SET_LOCATION) {
                 taskHeader.setToLocation(locationCode);
             }
             taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
-            taskHeader.setStationCode(stationCode);
+            taskHeader.setPort(port);
             if (!taskHeaderService.save(taskHeader)) {
                 throw new ServiceException("创建任务失败");
             }
@@ -375,12 +376,13 @@ public class WorkTaskService {
      * 根据库存头表id生成出库查看任务
      * @param ids 库存头id
      */
-    public AjaxResult createCheckOutTaskByIds(List<Integer> ids, String stationCode) {
+    public AjaxResult createCheckOutTaskByIds(List<Integer> ids, String port) {
         LambdaQueryWrapper<InventoryHeader> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.in(InventoryHeader::getId, ids);
         List<InventoryHeader> inventoryHeaderList = inventoryHeaderService.list(queryWrapper);
-        List<String> locationCodeList = inventoryHeaderList.stream().map(InventoryHeader::getLocationCode).distinct().collect(Collectors.toList());
-        return createCheckOutTask(locationCodeList, stationCode);
+        List<String> locationCodeList = inventoryHeaderList.stream().map(
+                InventoryHeader::getLocationCode).distinct().collect(Collectors.toList());
+        return createCheckOutTask(locationCodeList, port);
     }
 
     /**
@@ -411,14 +413,7 @@ public class WorkTaskService {
                 taskHeader.getContainerCode(), QuantityConstant.STATUS_LOCATION_EMPTY);
         Container container = containerService.getContainerByCode(taskHeader.getContainerCode());
         container.setLocationCode(taskHeader.getToLocation());
-        if (StringUtils.isEmpty(container.getLocationCode())) {
-            container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
-        } else {
-            container.setStatus(QuantityConstant.STATUS_CONTAINER_SOME);
-        }
-        if (!containerService.updateById(container)) {
-            throw new ServiceException("更新容器状态失败");
-        }
+        container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
 
         LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
@@ -437,9 +432,14 @@ public class WorkTaskService {
                     inventoryDetail.setLocationCode(taskHeader.getToLocation());
                     inventoryDetailService.updateById(inventoryDetail);
                 }
+                container.setStatus(QuantityConstant.STATUS_CONTAINER_SOME);
             }
         }
 
+        if (!containerService.updateById(container)) {
+            throw new ServiceException("更新容器状态失败");
+        }
+
         if (QuantityConstant.STATUS_CONTAINER_SOME.equals(container.getStatus())) {
             LambdaUpdateWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaUpdate();
             queryWrapper.eq(InventoryDetail::getLocationCode, taskHeader.getToLocation())
@@ -460,7 +460,7 @@ public class WorkTaskService {
      * @return
      */
     @Transactional
-    public AjaxResult createEmptyCheckOut(String containerCode, String sourceLocation) {
+    public AjaxResult createEmptyCheckOut(String containerCode, String sourceLocation, String port) {
         /* 容器编码*/
         String conCode = null;
         /* 库位编码*/
@@ -524,6 +524,7 @@ public class WorkTaskService {
         taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD);
         taskHeader.setFromLocation(locationCode);
         taskHeader.setToLocation(locationCode);
+        taskHeader.setPort(port);
         if(taskHeaderService.save(taskHeader)){
             //锁定库位状态
             locationService.updateStatus(locationCode,QuantityConstant.STATUS_LOCATION_LOCK);
diff --git a/src/main/resources/static/huaheng/index.js b/src/main/resources/static/huaheng/index.js
index 012f642..9c64b05 100644
--- a/src/main/resources/static/huaheng/index.js
+++ b/src/main/resources/static/huaheng/index.js
@@ -319,7 +319,7 @@ $(function () {
         return false;
     }
 
-    $('.menuTabs').on('click', '.menuTab i', refreshTab);
+    $('.menuTabs').on('click', '.menuTab i', closeTab);
 
     //关闭其他选项卡
     function closeOtherTabs() {
diff --git a/src/main/resources/templates/config/address/add.html b/src/main/resources/templates/config/address/add.html
index 399657d..446c14e 100644
--- a/src/main/resources/templates/config/address/add.html
+++ b/src/main/resources/templates/config/address/add.html
@@ -6,7 +6,7 @@
     <div class="wrapper wrapper-content animated fadeInRight ibox-content">
         <form class="form-horizontal m" id="form-address-add">
 			<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="param" name="param" class="form-control" type="text">
 				</div>
diff --git a/src/main/resources/templates/config/address/address.html b/src/main/resources/templates/config/address/address.html
index a615dcf..ddac470 100644
--- a/src/main/resources/templates/config/address/address.html
+++ b/src/main/resources/templates/config/address/address.html
@@ -13,7 +13,7 @@
 								仓库:<input type="text" name="warehouseCode"/>
 							</li>
 							<li>
-								参数方法名:<input type="text" name="param"/>
+								参数名称:<input type="text" name="param"/>
 							</li>
 							<!--<li class="time">
 								<label>创建时间: </label>
@@ -30,7 +30,7 @@
 			</div>
 
 		    <div class="btn-group hidden-xs" id="toolbar" role="group">
-			  <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:address:add">
+			  <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()">
 				<i class="fa fa-plus"></i> 新增
 			  </a>
 		    </div>
@@ -79,8 +79,8 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		            	var actions = [];
-		            	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>');
+		            	actions.push('<a class="btn btn-success btn-xs ' +  '" href="#" onclick="$.operate.edit(\'' + row.id + '\' )"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' +  '" 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/address/edit.html b/src/main/resources/templates/config/address/edit.html
index 7f1e724..09633ae 100644
--- a/src/main/resources/templates/config/address/edit.html
+++ b/src/main/resources/templates/config/address/edit.html
@@ -7,7 +7,7 @@
         <form class="form-horizontal m" id="form-address-edit" th:object="${address}">
             <input id="id" name="id" th:field="*{id}"  type="hidden">
                 <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="param" name="param" th:field="*{param}" class="form-control" type="text">
                 </div>
diff --git a/src/main/resources/templates/config/location/editBatch.html b/src/main/resources/templates/config/location/editBatch.html
index ce71412..84e2755 100644
--- a/src/main/resources/templates/config/location/editBatch.html
+++ b/src/main/resources/templates/config/location/editBatch.html
@@ -7,7 +7,23 @@
   <form class="form-horizontal m" id="form-location-edit">
     <input id="ids" name="ids" th:value="${ids}" type="hidden">
     <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="high" name="high" class="form-control" th:with="high=${@dict.getType('high')}">
+          <option th:each="item : ${high}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
+        </select>
+      </div>
+    </div>
+    <div class="form-group">
+      <label class="col-sm-3 control-label">库位状态:</label>
+      <div class="col-sm-8">
+        <select id="status" name="status" class="form-control" th:with="status=${@dict.getType('locationStatus')}">
+          <option th:each="item : ${status}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
+        </select>
+      </div>
+    </div>
+    <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('material_areas')}">
           <option th:each="item : ${areas}" th:text="${item['dictLabel']}" th:value="${item['dictValue']}"></option>
@@ -33,6 +49,8 @@
         url : prefix + "/editBatchSave",
         data : {
           "ids": $("input[name='ids']").val(),
+          "high" : $("#high option:selected").val(),
+          "status" : $("#status option:selected").val(),
           "area" : $("#area option:selected").val()
         },
         async : false,
diff --git a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
index d0d2329..8c64d71 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/checkOut.html
@@ -27,9 +27,9 @@
             </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="stationCode" name="stationCode" class="form-control"></select>
+                <select id="port" name="port" class="form-control"></select>
             </div>
         </div>
         <div class="form-group">
@@ -62,7 +62,7 @@
         var ids = document.getElementById("ids").value;
         console.log("ids:" + ids);
         var data = { "ids": ids };
-        $('#stationCode').select2({
+        $('#port').select2({
             ajax: {
                 url: ctx+'config/station/getStationFromInventory',
                 dataType: 'json',
diff --git a/src/main/resources/templates/inventory/inventoryHeader/emptyCheckOut.html b/src/main/resources/templates/inventory/inventoryHeader/emptyCheckOut.html
index f7fbe05..85e285d 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/emptyCheckOut.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/emptyCheckOut.html
@@ -8,7 +8,7 @@
         <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">
+                <input id="containerCode" name="containerCode" class="form-control" type="text" oninput="myFunction()" onpropertychange="myFunction()">
             </div>
         </div>
         <div class="form-group">
@@ -18,6 +18,12 @@
             </div>
         </div>
         <div class="form-group">
+            <label class="col-sm-3 control-label">出库口:</label>
+            <div class="col-sm-8">
+                <select id="port" name="port" class="form-control"></select>
+            </div>
+        </div>
+        <div class="form-group">
             <div class="col-sm-offset-9" style="margin-left:62%">
                 <input type="button" class="btn-success btn" onclick="selectEmptyOut()" value="选取空容器" />
                 <button type="submit" class="btn btn-primary">提交</button>
@@ -26,7 +32,8 @@
         </div>
     </form>
 </div>
-<div th:include="include::footer"></div>
+<th:block th:include="include :: footer" />
+<th:block th:include="include :: select2-js" />
 <script type="text/javascript">
     var prefix = ctx + "inventory/inventoryHeader"
     $("#form-task-emptyCheckOut").validate({
@@ -43,9 +50,29 @@
         }
     });
 
+    function myFunction() {
+        container = document.getElementById("containerCode").value;
+        console.log("container:" + container);
+        var data = { "containerCode": container };
+        $('#port').select2({
+            ajax: {
+                url: ctx+'config/station/getStation',
+                dataType: 'json',
+                type: 'post',
+                data: data,
+                success: function(data) {
+
+                }
+            }
+        });
+    }
+
+    myFunction()
+
     function selectEmptyOut() {
         $.modal.open("空托盘选取",prefix+"/listEmpty",780);
     }
+
 </script>
 </body>
 </html>
diff --git a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
index a17f485..6aead5a 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/emptyOut.html
@@ -21,9 +21,9 @@
             </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="stationCode" name="stationCode" class="form-control"></select>
+                <select id="port" name="port" class="form-control"></select>
             </div>
         </div>
         <div class="form-group">
@@ -60,7 +60,7 @@
         container = document.getElementById("containerCode").value;
         console.log("container:" + container);
         var data = { "containerCode": container };
-        $('#stationCode').select2({
+        $('#port').select2({
             ajax: {
                 url: ctx+'config/station/getStation',
                 dataType: 'json',
diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
index 8dde2c3..31a6560 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
@@ -25,6 +25,9 @@
                             <div class="select-list">
                                 <ul>
                                     <li>
+                                        库区:<input type="text" name="zoneCode"/>
+                                    </li>
+                                    <li>
                                         库位编号:<input type="text" name="locationCode"/>
                                     </li>
                                     <li>
@@ -70,6 +73,10 @@
                            shiro:hasPermission="inventory:inventoryHeader:emptyOut">
                             <i class="fa fa-level-up"></i> 空托出库
                         </a>
+                        <a class="btn btn-outline btn-info btn-rounded" onclick="emptyCheckOut()"
+                           shiro:hasPermission="inventory:inventoryHeader:seeOut">
+                            <i class="fa fa-eye"></i> 空托出库查看
+                        </a>
                     </div>
                     <div class="col-sm-12 select-info">
                         <table id="bootstrap-table" data-mobile-responsive="true"
@@ -117,6 +124,11 @@
                     visible: false
                 },
                 {
+                    field: 'zoneCode',
+                    title: ' 库区',
+                    visible: false
+                },
+                {
                     field: 'locationCode',
                     title: '库位 '
                 },
diff --git a/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html b/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html
index a2612b6..e194b18 100644
--- a/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html
+++ b/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html
@@ -147,8 +147,8 @@
                 //     },sortable:true
                 // },
 				{
-					field : 'stationCode',
-					title : '出库站台'
+					field : 'port',
+					title : '出库口'
 				},
 				{
 					field : 'status', 
diff --git a/src/main/resources/templates/shipment/shipmentDetail/add.html b/src/main/resources/templates/shipment/shipmentDetail/add.html
index 5fc50e5..04fa287 100644
--- a/src/main/resources/templates/shipment/shipmentDetail/add.html
+++ b/src/main/resources/templates/shipment/shipmentDetail/add.html
@@ -46,9 +46,9 @@
 			</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="stationCode" name="stationCode" class="form-control"></select>
+				<select id="port" name="port" class="form-control"></select>
 			</div>
 		</div>
 		<div class="form-group">
@@ -204,7 +204,7 @@
 					}
 				}
 			});
-            $('#stationCode').select2({
+            $('#port').select2({
                 ajax: {
                     url: ctx+'config/station/getData',
                     dataType: 'json',
diff --git a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
index 411c573..80958e6 100644
--- a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
+++ b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
@@ -523,8 +523,8 @@
                     },
                 },
                 {
-                    field: 'stationCode',
-                    title: '出库站台',
+                    field: 'port',
+                    title: '出库口',
                 },
                 {
                     field: 'shipQty',
diff --git a/src/main/resources/templates/system/config/config.html b/src/main/resources/templates/system/config/config.html
index 0c2cfa6..2c5719b 100644
--- a/src/main/resources/templates/system/config/config.html
+++ b/src/main/resources/templates/system/config/config.html
@@ -89,6 +89,10 @@
                     field: 'configValue',
                     title: '参数键值'
                 },
+				{
+					field: 'remark',
+					title: '描述'
+				},
                 {
                     field: 'configType',
                     title: '系统内置',
diff --git a/src/main/resources/templates/task/task/emptyOut.html b/src/main/resources/templates/task/task/emptyOut.html
index 4ee9098..3b620c1 100644
--- a/src/main/resources/templates/task/task/emptyOut.html
+++ b/src/main/resources/templates/task/task/emptyOut.html
@@ -18,9 +18,9 @@
             </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="stationCode" name="stationCode" class="form-control"></select>
+                <select id="port" name="port" class="form-control"></select>
             </div>
         </div>
         <div class="form-group">
@@ -49,7 +49,7 @@
         }
     });
 
-    $('#stationCode').select2({
+    $('#port').select2({
         ajax: {
             url: ctx+'config/station/getData',
             dataType: 'json',
diff --git a/src/main/resources/templates/task/taskHeader/chooseStation.html b/src/main/resources/templates/task/taskHeader/chooseStation.html
index f1933e6..0b41c38 100644
--- a/src/main/resources/templates/task/taskHeader/chooseStation.html
+++ b/src/main/resources/templates/task/taskHeader/chooseStation.html
@@ -28,9 +28,9 @@
         </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="stationCode" name="stationCode" class="form-control"></select>
+                <select id="port" name="port" class="form-control"></select>
             </div>
         </div>
         <div class="form-group">
@@ -60,7 +60,7 @@
         var containerCode = document.getElementById("containerCode").value;
         var type = document.getElementById("type").value;
         var data = { "containerCode": containerCode, "type":type };
-        $('#stationCode').select2({
+        $('#port').select2({
             ajax: {
                 url: ctx+'config/station/getStationFromType',
                 dataType: 'json',
diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html
index e0d8341..b6be89d 100644
--- a/src/main/resources/templates/task/taskHeader/taskHeader.html
+++ b/src/main/resources/templates/task/taskHeader/taskHeader.html
@@ -220,8 +220,8 @@
 						title : '重量'
 					},
                     {
-                        field : 'stationCode',
-                        title : '站台' ,
+                        field : 'port',
+                        title : '出库口' ,
                         align: 'center',
                         visible:true,
                         formatter: function(value, row, index) {