diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
index 26324a3..ede4922 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -4,6 +4,13 @@
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
+
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="单据ID">
+              <a-input placeholder="请输入单据ID" v-model="queryParam.id"></a-input>
+            </a-form-item>
+          </a-col>
+
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <a-form-item label="入库单编码">
               <a-input placeholder="请输入入库单编码" v-model="queryParam.code"></a-input>
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
index 77e1453..4ff19f8 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
@@ -139,7 +139,7 @@ public class LocationAllocationServiceImpl implements LocationAllocationService 
             }
         }
         roadWays.removeAll(removeRoadWays);
-        if (roadWays == null || roadWays.size() == 0) {
+        if (CollectionUtils.isEmpty(roadWays)) {
             throw new JeecgBootException("分配库位时, 可用巷道为空");
         }
         Integer roadWay = locationAllocationService.getRoadWay(roadWays, materialCode, zoneCode, warehouseCode);
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/ApiLogMapper.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/ApiLogMapper.java
index 3b415ae..d05e54f 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/ApiLogMapper.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/ApiLogMapper.java
@@ -1,10 +1,8 @@
 package org.jeecg.modules.wms.monitor.apiLog.mapper;
 
-import java.util.List;
+import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
 
-import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
 
 /**
  * @Description: 接口日志
@@ -14,4 +12,6 @@ import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
  */
 public interface ApiLogMapper extends BaseMapper<ApiLog> {
 
+    Integer deleteByCreateTime(String createTime);
+
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/xml/ApiLogMapper.xml b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/xml/ApiLogMapper.xml
index 7466217..321ca00 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/xml/ApiLogMapper.xml
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/mapper/xml/ApiLogMapper.xml
@@ -2,4 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.wms.monitor.apiLog.mapper.ApiLogMapper">
 
+    <delete id="deleteByCreateTime" parameterType="java.lang.String">
+        DELETE
+        FROM api_log
+        WHERE create_time <![CDATA[<=]]> #{createTime})
+        order by id asc limit 1000
+    </delete>
+
 </mapper>
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/IApiLogService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/IApiLogService.java
index d0e3856..e5cf3c2 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/IApiLogService.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/IApiLogService.java
@@ -16,4 +16,5 @@ public interface IApiLogService extends IService<ApiLog> {
 
     public List<String> getApiNameList();
 
+    public Integer deleteByCreateTime(String createTime);
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/impl/ApiLogServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/impl/ApiLogServiceImpl.java
index d4c5760..ad26388 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/impl/ApiLogServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/apiLog/service/impl/ApiLogServiceImpl.java
@@ -4,6 +4,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import javax.annotation.Resource;
+
 import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog;
 import org.jeecg.modules.wms.monitor.apiLog.mapper.ApiLogMapper;
 import org.jeecg.modules.wms.monitor.apiLog.service.IApiLogService;
@@ -26,6 +28,9 @@ import cn.hutool.core.date.DateUtil;
 @Service
 public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper, ApiLog> implements IApiLogService {
 
+    @Resource
+    private ApiLogMapper apiLogMapper;
+
     @Override
     @Scheduled(fixedDelay = 1800 * 1000) // 计划任务:每次方法执行后1800秒执行
 //  @SchedulerLock(name = "getApiNameList", lockAtLeastFor = "PT900S", lockAtMostFor = "PT3600S") // 计划任务锁:最短等待时间1800秒,最长等待时间3600秒
@@ -37,4 +42,10 @@ public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper, ApiLog> impleme
         return apiLogList.stream().map(t -> t.getApiName()).collect(Collectors.toList());
     }
 
+    @Override
+    public Integer deleteByCreateTime(String createTime) {
+        LambdaQueryWrapper<ApiLog> apiLogLambdaQueryWrapper = Wrappers.lambdaQuery();
+        apiLogLambdaQueryWrapper.lt(ApiLog::getCreateTime, createTime).orderByAsc(true, ApiLog::getId).last(" limit 1000");
+        return apiLogMapper.delete(apiLogLambdaQueryWrapper);
+    }
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/TableCleanTask.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/TableCleanTask.java
index d6e5d98..b1a72e1 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/TableCleanTask.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/job/TableCleanTask.java
@@ -1,32 +1,23 @@
 package org.jeecg.modules.wms.monitor.job;
 
-import java.lang.reflect.Field;
 import java.lang.reflect.ParameterizedType;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.ibatis.session.SqlSession;
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.system.mapper.SysLogMapper;
+import org.jeecg.modules.wms.monitor.apiLog.service.IApiLogService;
 import org.jeecg.modules.wms.monitor.job.dto.TableCleanDto;
-import org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper;
 import org.jeecg.utils.LocalDateUtils;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.quartz.PersistJobDataAfterExecution;
+import org.quartz.*;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.google.common.base.CaseFormat;
 
 import cn.hutool.core.util.StrUtil;
-import dm.jdbc.util.ReflectUtil;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -44,56 +35,46 @@ public class TableCleanTask implements Job {
     @Autowired
     private SqlSession sqlSession;
 
+    @Autowired
+    private IApiLogService apiLogService;
+
     public void setParameter(String parameter) {
         this.parameter = parameter;
     }
 
     @Override
+    @SuppressWarnings({"rawtypes", "unchecked"})
     public void execute(JobExecutionContext context) throws JobExecutionException {
         log.info(StrUtil.format("定时任务 TableCleanTask 参数:{},执行时间:{}", this.parameter, DateUtils.getTimestamp()));
         List<TableCleanDto> tableCleanList = JSON.parseArray(this.parameter, TableCleanDto.class);
         if (tableCleanList != null && tableCleanList.size() > 0) {
             for (TableCleanDto tableCleanDto : tableCleanList) {
                 try {
-                    Class mapperClass = Class.forName(tableCleanDto.getMapperName());
-                    ParameterizedType parameterizedType = (ParameterizedType)mapperClass.getGenericInterfaces()[0];
-                    String className = parameterizedType.getActualTypeArguments()[0].getTypeName();
-                    String javaTimefieldName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, tableCleanDto.getTimeFieldName());
-                    Field timeField = ReflectUtil.getField(Class.forName(className), javaTimefieldName);
-                    if (timeField != null) {
-                        QueryWrapper<?> queryWrapper = new QueryWrapper<>();
+                    if (tableCleanDto.getMapperName().equals("org.jeecg.modules.wms.monitor.apiLog.mapper.ApiLogMapper")) {
                         LocalDateTime localDateTimeValue = LocalDateUtils.minus(LocalDateTime.now(), tableCleanDto.getRetentionDays(), ChronoUnit.DAYS);
-//                        queryWrapper.apply("{0} < {1}", tableCleanDto.getTimeFieldName(), LocalDateUtils.getStartTimeOfDayStr(localDateTimeValue));
-                        queryWrapper.lt(tableCleanDto.getTimeFieldName(), LocalDateUtils.getStartTimeOfDayStr(localDateTimeValue));
-                        BaseMapper baseMapper = (BaseMapper)this.sqlSession.getMapper(mapperClass);
-                        Integer deleteCount = baseMapper.delete(queryWrapper);
-                        log.info("定时任务 TableCleanTask 删除 {} {} 天前数据 {} 行", className, tableCleanDto.getRetentionDays(), deleteCount);
+                        Boolean isContinue = true;
+                        while (isContinue) {
+                            Integer deleteCount = apiLogService.deleteByCreateTime(LocalDateUtils.getStartTimeOfDayStr(localDateTimeValue));
+                            if (deleteCount.equals(0)) {
+                                isContinue = false;
+                            }
+                            Thread.sleep(1000);
+                        }
+                        continue;
                     }
-                } catch (ClassNotFoundException e) {
+                    Class<?> mapperClass = Class.forName(tableCleanDto.getMapperName());
+                    ParameterizedType parameterizedType = (ParameterizedType)mapperClass.getGenericInterfaces()[0];
+                    String className = parameterizedType.getActualTypeArguments()[0].getTypeName();
+                    QueryWrapper<?> queryWrapper = new QueryWrapper<>();
+                    LocalDateTime localDateTimeValue = LocalDateUtils.minus(LocalDateTime.now(), tableCleanDto.getRetentionDays(), ChronoUnit.DAYS);
+                    queryWrapper.lt(tableCleanDto.getTimeFieldName(), LocalDateUtils.getStartTimeOfDayStr(localDateTimeValue));
+                    BaseMapper baseMapper = (BaseMapper<Object>)this.sqlSession.getMapper(mapperClass);
+                    Integer deleteCount = baseMapper.delete(queryWrapper);
+                    log.info("定时任务 TableCleanTask 删除 {} {} 天前数据 {} 行", className, tableCleanDto.getRetentionDays(), deleteCount);
+                } catch (ClassNotFoundException | InterruptedException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
-
-    /**
-     * 参数范例
-     * @author     TanYibin
-     * @createDate 2023年3月16日
-     * @param args
-     */
-    public static void main(String[] args) {
-        List<TableCleanDto> tableCleanList = new ArrayList<TableCleanDto>();
-        TableCleanDto tableCleanDto1 = new TableCleanDto();
-        tableCleanDto1.setMapperName(SysLogMapper.class.getName());
-        tableCleanDto1.setTimeFieldName("create_time");
-        tableCleanDto1.setRetentionDays(90);
-        TableCleanDto tableCleanDto2 = new TableCleanDto();
-        tableCleanDto2.setMapperName(OperationLogMapper.class.getName());
-        tableCleanDto2.setTimeFieldName("operation_time");
-        tableCleanDto2.setRetentionDays(90);
-        tableCleanList.add(tableCleanDto1);
-        tableCleanList.add(tableCleanDto2);
-        System.out.println(JSON.toJSONString(tableCleanList));
-    }
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
index dc8aa0e..1ac5620 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
@@ -435,6 +435,9 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper,
             if (shipmentContainerHeader == null) {
                 throw new JeecgBootException("自动出库, 没有找到出库表头:" + shipmentContainerId);
             }
+            if (shipmentContainerHeader.getStatus().intValue() == QuantityConstant.SHIPMENT_CONTAINER_FINISHED) {
+                continue;
+            }
             int taskType = shipmentContainerHeader.getTaskType();
             int type = QuantityConstant.PORT_TYPE_PICK;
             if (taskType == QuantityConstant.TASK_TYPE_WHOLESHIPMENT) {