diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
index b64278d..7fda5f7 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
@@ -45,10 +45,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.text.MessageFormat;
+import java.util.*;
 
 /**
  * 入库任务创建和完成
@@ -219,6 +217,32 @@ public class ReceiptTaskService {
         return AjaxResult.success("生成上架任务成功").setData(taskIds);
     }
 
+
+    /**
+     * 自动生成容器编码
+     * @return 容器编码
+     */
+    @Transactional
+    public String createContainer(){
+        String code = MessageFormat.format("{0}{1}",
+                "LS",
+                String.format("%d", Calendar.getInstance().getTimeInMillis()));
+        Container container = new Container();
+        container.setCode(code);
+        container.setWarehouseCode(ShiroUtils.getWarehouseCode());
+        container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));
+        container.setContainerType("LS");
+        container.setCreatedBy(ShiroUtils.getLoginName());
+        container.setLastUpdated(new Date());
+        container.setLastUpdatedBy(ShiroUtils.getLoginName());
+        container.setEnable(true);
+        container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
+        if (!containerService.save(container)){
+            throw new ServiceException("新增容器失败");
+        }
+        return code;
+    }
+
     /**
      * 完成入库任务
      * @param task 任务
@@ -234,11 +258,16 @@ public class ReceiptTaskService {
         if (StringUtils.isEmpty(task.getToLocation())) {
             throw new ServiceException("任务" + task.getId() + "没有目的库位,执行中止");
         }
+
         BigDecimal totalQty = BigDecimal.ZERO;
         List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(task.getId());
         if (taskDetailList.isEmpty()) {
             throw new ServiceException("任务明细为空");
         }
+        String containerCode = null;
+        if(task.getZoneCode().equals("C")) {
+            containerCode = createContainer();
+        }
         InventoryHeader inventoryHeader = null;
         if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)) {
             LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
@@ -282,7 +311,12 @@ public class ReceiptTaskService {
             Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode());
             inventoryHeader.setZoneCode(location.getZoneCode());
             inventoryHeader.setTotalWeight(task.getWeight());
-            inventoryHeader.setContainerCode(task.getContainerCode());
+            if(task.getZoneCode().equals("C")) {
+                inventoryHeader.setContainerCode(containerCode);
+                inventoryHeader.setUserDef2(task.getContainerCode());
+            } else {
+                inventoryHeader.setContainerCode(task.getContainerCode());
+            }
             inventoryHeader.setContainerStatus(QuantityConstant.STATUS_CONTAINER_SOME);
             inventoryHeader.setTotalQty(new BigDecimal(0));
             inventoryHeader.setTotalLines(0);
@@ -305,7 +339,6 @@ public class ReceiptTaskService {
                 /*查询入库单明细*/
                 ReceiptDetail receiptDetail = receiptDetailService.getById(taskDetail.getBillDetailId());
                 if (StringUtils.isNotNull(receiptDetail)) {
-
                     totalQty = this.addInventoryDetail(taskDetail, receiptDetail, inventoryHeader);
                     //修改组盘表状态为完成
                     ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
@@ -323,6 +356,8 @@ public class ReceiptTaskService {
                 receiptDetailService.updateById(receiptDetail);
                 receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
                 materialWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getCompanyCode());
+                taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
+                taskDetailService.updateById(taskDetail);
             }
         }
         if (StringUtils.isNull(inventoryHeader)) {
@@ -338,7 +373,13 @@ public class ReceiptTaskService {
 
         //修改库位状态和对应的容器
         Location location = new Location();
-        location.setContainerCode(task.getContainerCode());
+        if(task.getZoneCode().equals("C")) {
+            location.setContainerCode(containerCode);
+            location.setUserDef2(task.getContainerCode());
+            containerService.updateLocationCodeAndStatus(containerCode, task.getToLocation(), QuantityConstant.STATUS_CONTAINER_EMPTY);
+        } else {
+            location.setContainerCode(task.getContainerCode());
+        }
         location.setWarehouseCode(ShiroUtils.getWarehouseCode());
         location.setStatus(QuantityConstant.STATUS_LOCATION_EMPTY);
         LambdaUpdateWrapper<Location> locationLambdaUpdateWrapper = Wrappers.lambdaUpdate();
@@ -349,7 +390,9 @@ public class ReceiptTaskService {
         }
         //修改容器状态和对应的库位
         Container container = new Container();
-        container.setLocationCode(task.getToLocation());
+        if(!task.getZoneCode().equals("C")) {
+            container.setLocationCode(task.getToLocation());
+        }
         container.setStatus(QuantityConstant.STATUS_CONTAINER_SOME);
         LambdaUpdateWrapper<Container> containerLambdaUpdateWrapper = Wrappers.lambdaUpdate();
         containerLambdaUpdateWrapper.eq(Container::getCode, task.getContainerCode());