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 9ddae5b..144a368 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
@@ -146,55 +146,76 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService 
         //去重
         receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList());
 
-        /* 循环入库组盘明细,重新分配库位*/
-        for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
-            ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
-
-            String locatingRule = this.taskPositioning(receiptContainerDetail);
-
-            LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
-            filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule)
-                    .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
-            FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
-            String[] locatingRules = filterConfigDetail.getStatement().split("cut");
-
-            //根据定位规则查询库位编码
-            LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
-            locationLambda.last(locatingRules[0]);
-            locationLambda.eq(Location::getRoadway, wcsTask.getDestination());
-            List<Location> locationList = locationService.list(locationLambda);
-            if(locationList == null || locationList.size() == 0) {
-                locationLambda.last(locatingRules[1]);
-                locationList = locationService.list(locationLambda);
-            };
-            locationCode = filter(locationList, locationTypeList, wcsTask.getDestination());
-            if (StringUtils.isEmpty(locationCode)){
-                throw new ServiceException("没有库位可分配");
-            }
-
-            if (StringUtils.isNotEmpty(locationCode)){
-                locationService.updateStatus(locationCode, "lock");
-                if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && !locationCode.equals(taskHeader.getToLocation())){
-                    locationService.updateStatus(taskHeader.getToLocation(), "empty");
+        if(receiptContainerDetailList != null && receiptContainerDetailList.size() > 0) {
+            /* 循环入库组盘明细,重新分配库位*/
+            for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
+                String locatingRule = null;
+                ReceiptContainerHeader receiptContainerHeader= null;
+                if(receiptContainerDetail != null) {
+                    receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId());
+                    locatingRule  = this.taskPositioning(receiptContainerDetail);
+                }
+                if (StringUtils.isEmpty(locatingRule)){
+                    //物料类别中定位规则为空时,查询入库首选项
+                    LambdaQueryWrapper<ConfigValue> configValueLambda = Wrappers.lambdaQuery();
+                    configValueLambda.eq(ConfigValue::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                            .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, ShiroUtils.getWarehouseCode());
+                    ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda);
+                    locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule();
+                }
+                LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
+                filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule)
+                        .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
+                FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
+                String[] locatingRules = filterConfigDetail.getStatement().split("cut");
+
+                //根据定位规则查询库位编码
+                LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
+                locationLambda.last(locatingRules[0]);
+                locationLambda.eq(Location::getRoadway, wcsTask.getDestination());
+                List<Location> locationList = locationService.list(locationLambda);
+                if (locationList == null || locationList.size() == 0) {
+                    locationLambda.last(locatingRules[1]);
+                    locationList = locationService.list(locationLambda);
+                }
+                ;
+                locationCode = filter(locationList, locationTypeList, wcsTask.getDestination());
+                if (StringUtils.isEmpty(locationCode)) {
+                    throw new ServiceException("没有库位可分配");
                 }
-            } else {
-                throw new ServiceException("定位失败,请检查定位规则是否正确");
-            }
 
-            //更新库位编码到组盘头表
-            receiptContainerHeader.setToLocation(locationCode);
-            if (!receiptContainerHeaderService.updateById(receiptContainerHeader)){
-                throw new ServiceException("更新库位失败");
-            }
+                if (StringUtils.isNotEmpty(locationCode)) {
+                    locationService.updateStatus(locationCode, "lock");
+                    if (StringUtils.isNotEmpty(taskHeader.getToLocation()) && !locationCode.equals(taskHeader.getToLocation())) {
+                        locationService.updateStatus(taskHeader.getToLocation(), "empty");
+                    }
+                } else {
+                    throw new ServiceException("定位失败,请检查定位规则是否正确");
+                }
+                if(receiptContainerDetail != null) {
+                    //更新库位编码到组盘头表
+                    receiptContainerHeader.setToLocation(locationCode);
+                    if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) {
+                        throw new ServiceException("更新库位失败");
+                    }
 
-            //把库位编码赋到该入库组盘头表下的所有明细
-            LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery();
-            lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId())
-                    .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
-            List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda);
-            for (ReceiptContainerDetail receiptContainerDetail2: receiptContainerDetails) {
-                receiptContainerDetail2.setLocationCode(locationCode);
-                if (!receiptContainerDetailService.updateById(receiptContainerDetail2)){throw new ServiceException("更新库位编码到入库组盘明细");}
+                    //把库位编码赋到该入库组盘头表下的所有明细
+                    LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery();
+                    lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId())
+                            .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
+                    List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda);
+                    for (ReceiptContainerDetail receiptContainerDetail2 : receiptContainerDetails) {
+                        receiptContainerDetail2.setLocationCode(locationCode);
+                        if (!receiptContainerDetailService.updateById(receiptContainerDetail2)) {
+                            throw new ServiceException("更新库位编码到入库组盘明细");
+                        }
+                    }
+                }
             }
         }
 
diff --git a/src/main/java/com/huaheng/pc/config/locationType/controller/LocationTypeController.java b/src/main/java/com/huaheng/pc/config/locationType/controller/LocationTypeController.java
index d3e5d89..e725543 100644
--- a/src/main/java/com/huaheng/pc/config/locationType/controller/LocationTypeController.java
+++ b/src/main/java/com/huaheng/pc/config/locationType/controller/LocationTypeController.java
@@ -104,15 +104,15 @@ public class LocationTypeController extends BaseController
 		if(StringUtils.isEmpty(locationType.getCode())){
 			return AjaxResult.error("库位类型为空");
 		}
-		if(StringUtils.isEmpty(locationType.getZoneCode())){
-			return AjaxResult.error("库位类型对应的区域为空");
-		}
-		//查找location,是否存在
-
-		if(!zoneService.exists(locationType.getZoneCode(),ShiroUtils.getWarehouseCode()))
-		{
-			return  AjaxResult.error("库位类型对应的区域:"+locationType.getZoneCode()+" 不在系统管制范围,请核对");
-		}
+//		if(StringUtils.isEmpty(locationType.getZoneCode())){
+//			return AjaxResult.error("库位类型对应的区域为空");
+//		}
+//		//查找location,是否存在
+//
+//		if(!zoneService.exists(locationType.getZoneCode(),ShiroUtils.getWarehouseCode()))
+//		{
+//			return  AjaxResult.error("库位类型对应的区域:"+locationType.getZoneCode()+" 不在系统管制范围,请核对");
+//		}
 
 		locationType.setWarehouseCode(ShiroUtils.getWarehouseCode());
 		locationType.setCreatedBy(ShiroUtils.getLoginName());
diff --git a/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java b/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java
index 6eb5f2d..e60f314 100644
--- a/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java
+++ b/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java
@@ -30,11 +30,6 @@ public class LocationType implements Serializable {
     @TableField(value = "warehouseCode")
     private String warehouseCode;
     /**
-     * 区域编码
-     */
-    @TableField(value = "zoneCode")
-    private String zoneCode;
-    /**
      * 描述
      */
     @TableField(value = "name")
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 bc53ce2..e444a29 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
@@ -110,6 +110,14 @@ public class TaskHeader implements Serializable {
     private Integer status;
 
     /**
+     * 出库站台
+     */
+    @TableField(value = "stationCode")
+    @ApiModelProperty(value="出库站台")
+    private String stationCode;
+
+
+    /**
      * 波次号
      */
     @TableField(value = "waveId")
@@ -309,4 +317,6 @@ public class TaskHeader implements Serializable {
     @TableField(value = "weight")
     private String weight;
     private static final long serialVersionUID = 1L;
+
+
 }
\ No newline at end of file
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 6161264..538d699 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
@@ -444,8 +444,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT)){
                 if(StringUtils.isEmpty(task.getToLocation())){
                     //自动分配库位
-                   AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );
-                   task.setToLocation((String)ajaxResult.getData());
+                 //  AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );
+                //   task.setToLocation((String)ajaxResult.getData());
                 }
             }
             //如果没有库位不能完成
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 f6fd9df..d051c75 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
@@ -91,24 +91,22 @@ public class WorkTaskService {
             if (receiptPreferences.isEmpty()) {
                 return AjaxResult.error("入库首选项不存在");
             }
-            if (StringUtils.isEmpty(receiptPreferences.get(0).getEmptyLocRule())) {
-                return AjaxResult.error("入库首选项为绑定空库位规则,目标库位不允许为空");
-            }
-
-            LambdaQueryWrapper<FilterConfigDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            lambdaQueryWrapper.eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
-                .eq(FilterConfigDetail::getCode, receiptPreferences.get(0).getEmptyLocRule());
-            FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(lambdaQueryWrapper);
-            if (StringUtils.isNull(filterConfigDetail)) {
-                return AjaxResult.error("首选项绑定的空库位规则不存在");
-            }
-            QueryWrapper<Location> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("1",1).last(filterConfigDetail.getStatement());
-            Location location = locationService.getOne(queryWrapper);
-            if (StringUtils.isNull(location)) {
-                return AjaxResult.error("没有库位可分配");
+            if (StringUtils.isNotEmpty(receiptPreferences.get(0).getEmptyLocRule())) {
+                LambdaQueryWrapper<FilterConfigDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
+                lambdaQueryWrapper.eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                        .eq(FilterConfigDetail::getCode, receiptPreferences.get(0).getEmptyLocRule());
+                FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(lambdaQueryWrapper);
+                if (StringUtils.isNull(filterConfigDetail)) {
+                    return AjaxResult.error("首选项绑定的空库位规则不存在");
+                }
+                QueryWrapper<Location> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("1",1).last(filterConfigDetail.getStatement());
+                Location location = locationService.getOne(queryWrapper);
+                if (StringUtils.isNull(location)) {
+                    return AjaxResult.error("没有库位可分配");
+                }
+                destinationLocation = location.getCode();
             }
-            destinationLocation = location.getCode();
         }
 
         //判断托盘是否已经存在任务
@@ -430,7 +428,7 @@ public class WorkTaskService {
      * @param sourceLocation 库位
      * @return
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
     public AjaxResult createEmptyCheckOut(String containerCode, String sourceLocation) {
         /* 容器编码*/
         String conCode = null;
diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
index 86c7b1c..08779fd 100644
--- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
+++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html
@@ -66,10 +66,6 @@
                            shiro:hasPermission="inventory:inventoryHeader:emptyIn">
                             <i class="fa fa-level-down"></i> 空托入库
                         </a>
-                        <a class="btn btn-outline btn-default btn-rounded" onclick="emptyCheckOut()"
-                           shiro:hasPermission="inventory:inventoryHeader:emptyCheckOut">
-                            <i class="fa fa fa-eye"></i> 空托出库查看
-                        </a>
                         <a class="btn btn-outline btn-info btn-rounded" onclick="emptyOut()"
                            shiro:hasPermission="inventory:inventoryHeader:emptyOut">
                             <i class="fa fa-level-up"></i> 空托出库