diff --git a/src/main/java/com/huaheng/framework/config/ShiroConfig.java b/src/main/java/com/huaheng/framework/config/ShiroConfig.java
index f1efb66..ab2a445 100644
--- a/src/main/java/com/huaheng/framework/config/ShiroConfig.java
+++ b/src/main/java/com/huaheng/framework/config/ShiroConfig.java
@@ -255,6 +255,8 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/mobile/download/*", "anon");
         filterChainDefinitionMap.put("/config/zone/*", "anon");
         filterChainDefinitionMap.put("/receipt/receiptHeader/listPda", "anon");
+        filterChainDefinitionMap.put("receipt/receiving/flatSaveBatch", "anon");
+        filterChainDefinitionMap.put("/task/taskHeader/*", "anon");
         filterChainDefinitionMap.put("/admin/login", "anon");
         filterChainDefinitionMap.put("/login", "anon");
         filterChainDefinitionMap.put("/file/**", "anon");
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 fd1e097..53ecf82 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
@@ -150,7 +150,7 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
 
         ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
         //当size大于等于1表示容器已经有组盘了
-        if (list.size() < 1) {
+        if (list.isEmpty()) {
             ReceiptDetail receiptDetail = receiptDetailService.getById(receiptDetailId);
             receiptContainerHeader.setWarehouseCode(ShiroUtils.getWarehouseCode());
             receiptContainerHeader.setCompanyCode(receiptDetail.getCompanyCode());
@@ -232,11 +232,10 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
             throw new ServiceException("平库不能为空");
         }
         //创建临时容器
-        //String containerCode = createFlatContainer(locationType);
+        String containerCode = createFlatContainer(locationType);
+        //String locationCode = createFlatLocation(locationType);
 
         Container container = containerService.getOne(new LambdaQueryWrapper<Container>().eq(Container::getContainerType, locationType));
-        String containerCode = container.getCode();
-
         //检查容器编码合法性
         Integer taskType = checkContainer(containerCode, detail.getMaterialCode());
         if (taskType == 1) {
@@ -726,20 +725,21 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
      * 自动生成平库容器编码
      */
     @Transactional
-    public String createFlatContainer(String locationCode) {
+    public String createFlatContainer(String type) {
         LocalDateTime now = LocalDateTime.now();
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
         String timestamp = now.format(formatter);
-        String code = locationCode + timestamp;
+        String code = type + timestamp;
         Container container = new Container();
         container.setCode(code);
         container.setWarehouseCode(ShiroUtils.getWarehouseCode());
         container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));
-        container.setContainerType("PK");
+        container.setContainerType(type);//平库托盘
         container.setCreatedBy(ShiroUtils.getName());
         container.setLastUpdated(new Date());
         container.setLastUpdatedBy(ShiroUtils.getName());
         container.setEnable(true);
+        container.setFlat(1);
         container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
         if (!containerService.save(container)) {
             throw new ServiceException("新增容器失败");
@@ -747,6 +747,34 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai
         return code;
     }
 
+    /**
+     * 自动生成平库库位编码
+     */
+    @Transactional
+    public String createFlatLocation(String type) {
+        LocalDateTime now = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
+        String timestamp = now.format(formatter);
+        String code = type + timestamp;
+        Location location = new Location();
+        location.setCode(code);
+        location.setIColumn(0);
+        location.setIRow(0);
+        location.setILayer(0);
+        location.setIGrid(0);
+        location.setRowFlag(0);
+        location.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        location.setLocationType(type);
+        location.setCreatedBy(ShiroUtils.getName());
+        location.setLastUpdated(new Date());
+        location.setLastUpdatedBy(ShiroUtils.getName());
+        location.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
+        if (!locationService.save(location)) {
+            throw new ServiceException("新增库位失败");
+        }
+        return code;
+    }
+
     @Override
     @Transactional
     public int insertTodayReceiptContainerHeader(ReceiptBill receiptBill, String receiptCode) {
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 2fc2e0d..9b9a04c 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
@@ -33,6 +33,7 @@ import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
 import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
+import com.huaheng.pc.task.taskHeader.domain.MobileTask;
 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
 import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;
 import com.huaheng.pc.task.taskHeader.service.ReceiptTaskService;
@@ -77,8 +78,8 @@ public class TaskHeaderController extends BaseController {
 
     @Resource
     private ReceiptTaskService receiptTaskService;
-
-
+    @Resource
+    private TaskDetailService taskDetailService;
     private String prefix = "task/taskHeader";
 
     @RequiresPermissions("task:taskHeader:view")
@@ -337,4 +338,50 @@ public class TaskHeaderController extends BaseController {
         taskHeaderService.update(taskHeader1, taskHeaderLambdaQueryWrapper);
         return AjaxResult.success();
     }
+
+    @PostMapping("/getTaskByShipmentCode")
+    @ResponseBody
+    public AjaxResult getTaskByShipmentCode(String shipmentCode) {
+        if (StringUtils.isEmpty(shipmentCode)) {
+            return AjaxResult.error("单据号为空!");
+        }
+        List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getBillCode, shipmentCode));
+        if (list.isEmpty()) {
+            return AjaxResult.error("没有查到对应的任务");
+        }
+        TaskHeader taskHeader = taskHeaderService.getById(list.get(0).getTaskId());
+        if (taskHeader == null) {
+            return AjaxResult.error("任务头表没找到");
+        }
+        if (!taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
+            return AjaxResult.error("任务不是新建状态,可能已完成");
+        }
+        MobileTask mobileTask = new MobileTask();
+        mobileTask.setTaskHeader(taskHeader);
+        mobileTask.setTaskDetail(list);
+        return AjaxResult.success(mobileTask);
+    }
+
+    @PostMapping("/getTaskByTaskId")
+    @ResponseBody
+    public AjaxResult getTaskByTaskId(String taskId) {
+        if (StringUtils.isEmpty(taskId)) {
+            return AjaxResult.error("任务号为空!");
+        }
+        TaskHeader taskHeader = taskHeaderService.getById(taskId);
+        if (taskHeader == null) {
+            return AjaxResult.error("任务没找到ID:" + taskId);
+        }
+        if (!taskHeader.getStatus().equals(QuantityConstant.TASK_STATUS_BUILD)) {
+            return AjaxResult.error("任务不是新建状态,可能已完成");
+        }
+        List<TaskDetail> list = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getTaskId, taskId));
+        if (list.isEmpty()) {
+            return AjaxResult.error("没有查到对应的任务");
+        }
+        MobileTask mobileTask = new MobileTask();
+        mobileTask.setTaskHeader(taskHeader);
+        mobileTask.setTaskDetail(list);
+        return AjaxResult.success(mobileTask);
+    }
 }
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 12ae602..90afab5 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
@@ -61,7 +61,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
 
     @Resource
     private ShipmentContainerHeaderService shipmentContainerHeaderService;
-    @Autowired
+    @Resource
     private AddressService addressService;
     @Resource
     private LocationService locationService;