diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
index af3f280..4d473f8 100644
--- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
+++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/LocationAllocationServiceImpl.java
@@ -239,7 +239,6 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
     public String doubleRk(String roadWay, int high, Integer frequencyLocation, Integer emptyContainerTask, boolean isFlammable, String taskNo, boolean bypass) {
         //boolean isSecondFactory = isSecondFactory();//是否是二厂项目
         int reserveNumber = 0;
-        //二厂,分拣任务回库的时候,也要判断预留库位
         if (!bypass) {
             reserveNumber = getReserveNumber(roadWay);
         }
@@ -264,8 +263,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                 .eq(Location::getContainerCode, "")
                 .eq(Location::getSelfCreated, NO_TSELFCREATED)
                 .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION)
-                .eq(Location::getHigh, high)
-                .last(" limit 20");
+                .eq(Location::getHigh, high);
         //if (isSecondFactory) {
         //    wrapper.ge(Location::getHigh, high);
         //} else {
@@ -287,8 +285,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                 .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION)
                 .orderByAsc(Location::getHigh)
                 .orderByAsc(Location::getILayer)
-                .orderByAsc(Location::getId)
-                .last(" limit 20");
+                .orderByAsc(Location::getId);
         //if (isSecondFactory) {
         //    locationLambda.ge(Location::getHigh, high);
         //} else {
@@ -321,8 +318,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                     .eq(Location::getHigh, high)
                     .orderByAsc(Location::getHigh)
                     .orderByAsc(Location::getILayer)
-                    .orderByAsc(Location::getId)
-                    .last(" limit 20");
+                    .orderByAsc(Location::getId);
             //if (isSecondFactory) {
             //    locationLambda2.ge(Location::getHigh, high);
             //} else {
@@ -367,8 +363,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                 .eq(Location::getContainerCode, "")
                 .eq(Location::getSelfCreated, SELFCREATED)
                 .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION)
-                .eq(Location::getHigh, high)
-                .last(" limit 20");
+                .eq(Location::getHigh, high);
         //if (isSecondFactory) {
         //    wrapper.ge(Location::getHigh, high);
         //} else {
@@ -391,8 +386,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                 .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION)
                 .orderByAsc(Location::getHigh)
                 .orderByAsc(Location::getILayer)
-                .orderByAsc(Location::getId)
-                .last(" limit 20");
+                .orderByAsc(Location::getId);
 
         //if (isSecondFactory) {
         //    locationLambda.ge(Location::getHigh, high);
@@ -426,8 +420,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                     .eq(Location::getHigh, high)
                     .orderByAsc(Location::getHigh)
                     .orderByAsc(Location::getILayer)
-                    .orderByAsc(Location::getId)
-                    .last(" limit 20");
+                    .orderByAsc(Location::getId);
             //if (isSecondFactory) {
             //    locationLambda2.ge(Location::getHigh, high);
             //} else {
@@ -479,8 +472,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
                 .eq(Location::getContainerCode, "")
                 .eq(Location::getSelfCreated, NO_TSELFCREATED)
                 .eq(Location::getHigh, high)
-                .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION)
-                .last(" limit 20");
+                .eq(Location::getOnlyEmptyContainer, NO_EMPTY_CONTAINER_LOCATION);
 
         //if (isSecondFactory) {
         //    wrapper.ge(Location::getHigh, high);
diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
index e2ca94c..577985e 100644
--- a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
+++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java
@@ -349,8 +349,7 @@ public class RyTask extends BaseController {
                     .eq(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)
                     .lt(TaskHeader::getPushErrorCount, 2)
                     .in(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT, QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)
-                    .eq(TaskHeader::getBackMoM, 0)
-                    .last("LIMIT 5");
+                    .eq(TaskHeader::getBackMoM, 0);
             List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
             for (TaskHeader taskHeader : taskHeaderList) {
                 try {
@@ -708,56 +707,37 @@ public class RyTask extends BaseController {
     }
 
 
-    public void saveWcsTaskRecord() {
-        String date = DateUtils.getDate();
-        LambdaQueryWrapper<TaskTime> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(TaskTime::getCreatedTime, date);
-        lambdaQueryWrapper.last("limit 1");
-        TaskTime OneTaskTime = taskTimeMapper.selectOne(lambdaQueryWrapper);
-        if (!Objects.isNull(OneTaskTime)) {
-            return;
-        }
-        String startTime = StringUtils.join(date, " 00:00:00");
-        String endTime = StringUtils.join(date, " 23:59:59");
-        Map<String, Object> map = srmTaskInfoService.getData(startTime, endTime);
-        List<TaskTime> taskTimeMapListResult = (List<TaskTime>) map.get("taskTimeMapListResult");
-        List<TaskNum> taskNumMapListResult = (List<TaskNum>) map.get("taskNumMapListResult");
-        List<SrmStatusTime> srmStatusMapList = (List<SrmStatusTime>) map.get("srmStatusMapList");
-        List<TaskTime> taskTimes = BeanUtil.copyToList(taskTimeMapListResult, TaskTime.class);
-        List<TaskNum> taskNums = BeanUtil.copyToList(taskNumMapListResult, TaskNum.class);
-        List<SrmStatusTime> statusTimes = BeanUtil.copyToList(srmStatusMapList, SrmStatusTime.class);
-        taskTimes.forEach(taskTime -> taskTimeMapper.insert(taskTime));
-        taskNums.forEach(taskNum -> taskNumMapper.insert(taskNum));
-        statusTimes.forEach(srmStatusTime -> srmStatusTimeMapper.insert(srmStatusTime));
-    }
-
-
     //修复错误的单据状态 建议十分钟一次
     public void fixErroneousBillStatus() {
-        //List<ReceiptHeader> receiptHeaderList = receiptHeaderService.list(new LambdaQueryWrapper<ReceiptHeader>()
-        //        .eq(ReceiptHeader::getFirstStatus, QuantityConstant.RECEIPT_HEADER_POSTING)
-        //        .ne(ReceiptHeader::getLastStatus, QuantityConstant.RECEIPT_HEADER_POSTING)
-        //        .eq(ReceiptHeader::getDeleted, 1));
-        //
-        //List<ReceiptHeader> newReceiptHeaderList = receiptHeaderList.stream()
-        //        .filter(receiptHeader -> {
-        //            List<ReceiptDetail> receiptDetails = receiptDetailService.list(new LambdaQueryWrapper<ReceiptDetail>().eq(ReceiptDetail::getReceiptId, receiptHeader.getId()));
-        //            return receiptDetails.stream().allMatch(detail -> detail.getQty().equals(detail.getTaskQty()));
-        //        })
-        //        .collect(Collectors.toList());
-        //
-        //for (ReceiptHeader receiptHeader : newReceiptHeaderList) {
-        //
-        //    int taskCount = taskDetailService.count(new LambdaQueryWrapper<TaskDetail>()
-        //            .eq(TaskDetail::getBillCode, receiptHeader.getCode())
-        //            .eq(TaskDetail::getInternalTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT)
-        //            .ne(TaskDetail::getStatus, QuantityConstant.TASK_STATUS_COMPLETED));
-        //    if (taskCount == 0) {
-        //        receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POSTING);
-        //        receiptHeader.setErrorMsg("单据尾状态异常");
-        //        receiptHeaderService.updateById(receiptHeader);
-        //    }
-        //}
+        List<ReceiptHeader> receiptHeaderList = receiptHeaderService.list(new LambdaQueryWrapper<ReceiptHeader>()
+                .eq(ReceiptHeader::getFirstStatus, QuantityConstant.RECEIPT_HEADER_RETURN)
+                .eq(ReceiptHeader::getLastStatus, QuantityConstant.RECEIPT_HEADER_POSTING)
+                .eq(ReceiptHeader::getDeleted, 1));
+        // ReceiptDetail 的数量 (qty) 和任务数量 (taskQty) 相等时,该 ReceiptHeader 才会被保留在新的列表中。
+        List<ReceiptHeader> newReceiptHeaderList = receiptHeaderList.stream()
+                .filter(receiptHeader -> {
+                    List<ReceiptDetail> receiptDetails = receiptDetailService.list(new LambdaQueryWrapper<ReceiptDetail>().eq(ReceiptDetail::getReceiptId, receiptHeader.getId()));
+                    return receiptDetails.stream().allMatch(detail -> detail.getQty().equals(detail.getTaskQty()));
+                })
+                .collect(Collectors.toList());
+
+        //查询任务是否都已回传,已回传就完成单据,让它进入历史
+        for (ReceiptHeader receiptHeader : newReceiptHeaderList) {
+            List<TaskDetail> detailList = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>()
+                    .eq(TaskDetail::getBillCode, receiptHeader.getCode())
+                    .eq(TaskDetail::getInternalTaskType, QuantityConstant.TASK_TYPE_WHOLERECEIPT));
+
+            Integer[] taskIds = detailList.stream().map(TaskDetail::getTaskId).distinct().toArray(Integer[]::new);
+
+            List<TaskHeader> taskHeaderList = taskHeaderService.getTasksByIds(taskIds);
+            boolean flag = taskHeaderList.stream().allMatch(taskHeader -> taskHeader.getBackMoM() == 1);
+            if (flag) {
+                receiptHeader.setPushSuccessStatus(1);
+                receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
+                receiptHeader.setErrorMsg("单据尾状态异常");
+                receiptHeaderService.updateById(receiptHeader);
+            }
+        }
 
 
         //出库单-----------------------------------------
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 9580360..b4e680b 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
@@ -126,6 +126,7 @@ public class TaskHeaderController extends BaseController {
                 .gt(StringUtils.isNotEmpty(createdBegin), TaskHeader::getCreated, createdBegin)
                 .lt(StringUtils.isNotEmpty(createdEnd), TaskHeader::getCreated, createdEnd)
                 .gt(StringUtils.isNotEmpty(completeTimeBegin), TaskHeader::getCompleteTime, completeTimeBegin)
+                .in(StringUtils.isNotEmpty(taskHeader.getBillCode()), TaskHeader::getId, taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getBillCode, taskHeader.getBillCode())).stream().map(TaskDetail::getTaskId).collect(Collectors.toList()))
                 .lt(StringUtils.isNotEmpty(completeTimeEnd), TaskHeader::getCompleteTime, completeTimeEnd)
                 .orderByAsc(TaskHeader::getStatus)
                 .orderByDesc(TaskHeader::getId);
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 e7ef716..992cf20 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
@@ -431,5 +431,13 @@ public class TaskHeader implements Serializable {
 
     @TableField(exist = false)
     private String zoneName;
+    
+    @TableField(exist = false)
+    private String billCode;
+
+    @TableField(exist = false)
+    private String receiptCode;
 
+    @TableField(exist = false)
+    private String shipmentCode;
 }
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 7d2c4fd..e73f10a 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
@@ -486,6 +486,25 @@ public class ReceiptTaskService {
                 throw new ServiceException("更新入库组盘头表状态失败");
             }
         }
+        //任务明细为空,任务类型为补充入库
+        if (taskDetailList.isEmpty() && task.getTaskType().equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)) {
+            List<ReceiptContainerHeader> list = receiptContainerHeaderService.list(new LambdaQueryWrapper<ReceiptContainerHeader>()
+                    .eq(ReceiptContainerHeader::getFromLocation, task.getFromLocation())
+                    .eq(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_HEADER_BUILD)
+                    .eq(ReceiptContainerHeader::getContainerCode, task.getContainerCode()));
+            if (!list.isEmpty()) {
+                //取消组盘
+                if (list.size() > 1) {
+                    throw new ServiceException("完成空明细补充入库任务时,获取的组盘输了大于1,请根据来源库位和容器排查为什么会有两条");
+                }
+                Integer id = list.get(0).getId();
+                if (!receiptContainerHeaderService.cancelByIds(Collections.singletonList(id))) {
+                    throw new ServiceException("完成空明细补充入库任务时,取消组盘失败");
+                }
+            }
+        }
+
+
         return AjaxResult.success();
     }
 
@@ -660,6 +679,7 @@ public class ReceiptTaskService {
             ReceiptDetail receiptDetail = receiptDetailService.getById(taskDetail.getBillDetailId());
 
             if (!"MOM".equals(receiptDetail.getCreatedBy())) {
+                updateTaskHeaderWithSuccess(taskHeader);
                 continue; // 只处理创建者为MOM的明细
             }
 
@@ -673,6 +693,12 @@ public class ReceiptTaskService {
                 continue;
             }
 
+            //快速入平库,也不用回传
+            if (receiptHeader.getIsFastReceipt() == 1) {
+                updateTaskHeaderWithSuccess(taskHeader);
+                continue;
+            }
+
             // 调用接口进行回传操作
             ReturnInfo returnInfo = mesReceiptController.postE_Rd_In(receiptDetail);
             processReturnInfo(returnInfo, taskDetail, taskHeader, receiptHeader);
diff --git a/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html b/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html
index 6ea42a9..6abb4f9 100644
--- a/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html
+++ b/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html
@@ -34,16 +34,15 @@
                                     <li>
                                         库位编号:<input type="text" name="toLocation"/>
                                     </li>
-                                    <li>
-                                        <!--入库类型:<input type="text" name="sourceCode"/>
-                                        -->
-                                        任务类型:<select name="taskType"
-                                                         th:with="type=${@dict.getType('receiptTaskType')}">
-                                        <option value="">所有</option>
-                                        <option th:each="e : ${type}" th:text="${e['dictLabel']}"
-                                                th:value="${e['dictValue']}"></option>
-                                    </select>
-                                    </li>
+<!--                                    <li>-->
+<!--                                        &lt;!&ndash;入库类型:<input type="text" name="sourceCode"/>-->
+<!--                                        &ndash;&gt;-->
+<!--                                        任务类型:<select name="taskType" th:with="type=${@dict.getType('receiptTaskType')}">-->
+<!--                                        <option value="">所有</option>-->
+<!--                                        <option th:each="e : ${type}" th:text="${e['dictLabel']}"-->
+<!--                                                th:value="${e['dictValue']}"></option>-->
+<!--                                    </select>-->
+<!--                                    </li>-->
                                     <li>
                                         <!--头 状 态:<input type="text" name="firstStatus"/>-->
                                         容器任务状态:<select name="Status"
@@ -142,8 +141,12 @@
                     title: '容器编号',
                 },
                 {
+                    field: 'fromLocation',
+                    title: '来源库位编号',
+                },
+                {
                     field: 'toLocation',
-                    title: '库位编号',
+                    title: '目标库位编号',
                 },
                 {
                     field: 'taskType',
diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html
index b589d58..dfc94c2 100644
--- a/src/main/resources/templates/task/taskHeader/taskHeader.html
+++ b/src/main/resources/templates/task/taskHeader/taskHeader.html
@@ -46,6 +46,9 @@
                                         任务id:<input type="text" name="id"/>
                                     </li>
                                     <li>
+                                        单据编码:<input type="billCode" name="billCode"/>
+                                    </li>
+                                    <li>
                                         任务类型:<select id="taskType" name="taskType"
                                                          th:with="type=${@dict.getType('taskType')}">
                                         <option value="">所有</option>