diff --git a/ant-design-vue-jeecg/src/utils/request.js b/ant-design-vue-jeecg/src/utils/request.js
index d94c1db..0121aeb 100644
--- a/ant-design-vue-jeecg/src/utils/request.js
+++ b/ant-design-vue-jeecg/src/utils/request.js
@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
 const service = axios.create({
   //baseURL: '/jeecg-boot',
   baseURL: apiBaseUrl, // api base_url
-  timeout: 10 * 1000 // 请求超时时间
+  timeout: 120 * 1000 // 请求超时时间
 })
 
 const err = (error) => {
diff --git a/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue b/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
index 3a8be8e..12a1472 100644
--- a/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
@@ -31,7 +31,7 @@
                 <a-input placeholder="请输入库位号" v-model="queryParam.locationCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue b/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
index b7453f0..6af6173 100644
--- a/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
+++ b/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
@@ -71,7 +71,7 @@
                 <a-input placeholder="请输入创建人" v-model="queryParam.createBy"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue b/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
index 0e4971f..6336ecc 100644
--- a/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
+++ b/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
@@ -45,7 +45,7 @@
                 <a-input placeholder="请输入业务响应码" v-model="queryParam.retCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue b/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
index 8b172e7..1c821d8 100644
--- a/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
+++ b/ant-design-vue-jeecg/src/views/system/monitor/OperationLog.vue
@@ -24,7 +24,7 @@
               <j-input placeholder="请输入操作内容" v-model="queryParam.operationMsg"></j-input>
             </a-form-item>
           </a-col>
-          <a-col :xl="12" :lg="7" :md="8" :sm="24">
+          <a-col :xl="12" :lg="14" :md="16" :sm="24">
             <a-form-item label="创建日期">
               <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                       class="query-group-cust" v-model="queryParam.operationTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
index 0d634ee..23ffaa9 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
@@ -20,6 +20,7 @@
             </a-form-item>
           </a-col>
           <template v-if="toggleSearchStatus">
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
               <a-form-item label="起始库位">
                 <a-input placeholder="请输入起始库位" v-model="queryParam.fromLocationCode"></a-input>
               </a-form-item>
@@ -34,7 +35,7 @@
                 <a-input placeholder="请输入目标出入口" v-model="queryParam.toPort"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue
index d54156a..43ed053 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderHistoryList.vue
@@ -75,8 +75,7 @@
                 </a-select>
               </a-form-item>
             </a-col>
-
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
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 37f65eb..50062be 100644
--- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -71,8 +71,7 @@
                 </a-select>
               </a-form-item>
             </a-col>
-
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
index 898ef6c..01dc165 100644
--- a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
@@ -41,7 +41,7 @@
                 <a-input placeholder="请输入创建人" v-model="queryParam.createBy"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
index 765ba28..672951e 100644
--- a/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
@@ -80,7 +80,7 @@
                 <a-input placeholder="请输入创建人" v-model="queryParam.createBy"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
index 4a2d802..85e73c6 100644
--- a/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
@@ -71,7 +71,7 @@
                 <a-input placeholder="请输入重入库位号" v-model="queryParam.originLocationCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
index decd79f..1584a3a 100644
--- a/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
@@ -71,7 +71,7 @@
                 <a-input placeholder="请输入重入库位号" v-model="queryParam.originLocationCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
index 9bdaef1..81495aa 100644
--- a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
@@ -71,7 +71,7 @@
                 <a-input placeholder="请输入目标出入口" v-model="queryParam.toPortCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
index 4dbf9e7..4cd2add 100644
--- a/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
@@ -71,7 +71,7 @@
                 <a-input placeholder="请输入重入库位号" v-model="queryParam.originLocationCode"></a-input>
               </a-form-item>
             </a-col>
-            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+            <a-col :xl="12" :lg="14" :md="16" :sm="24">
               <a-form-item label="创建日期">
                 <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间"
                         class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
index 9dca6a3..c54a8b6 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.api.wcs.service;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -46,6 +47,9 @@ import com.aliyun.oss.ServiceException;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 
+import cn.monitor4all.logRecord.annotation.OperationLog;
+import cn.monitor4all.logRecord.context.LogRecordContext;
+
 /**
  * @author 游杰
  */
@@ -86,6 +90,8 @@ public class WcsServiceImpl implements WcsService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
+    @OperationLog(bizId = "''", bizType = "'入库单追踪'", tag = "'详情分配库位'", extra = "#extraJsonString", msg = "'分配库位:' + #locationCode",
+        condition = "#receiptContainerDetailList.size() > 0", recordReturnValue = true)
     public Result warecellAllocation(WarecellDomain warecellDomain) {
         String warehouseCode = warecellDomain.getWarehouseCode();
         String zoneCode = warecellDomain.getZoneCode();
@@ -170,8 +176,8 @@ public class WcsServiceImpl implements WcsService {
             }
         }
 
+        List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
         if (taskType == QuantityConstant.TASK_TYPE_WHOLERECEIPT || taskType == QuantityConstant.TASK_TYPE_EMPTYRECEIPT) {
-            List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
             for (TaskDetail taskDetail : taskDetailList) {
                 ReceiptContainerDetail receiptContainerDetail = receiptContainerDetailService.getById(taskDetail.getReceiptContainerDetailId());
                 if (receiptContainerDetail != null) {
@@ -233,6 +239,9 @@ public class WcsServiceImpl implements WcsService {
         WcsTask wcsTask = new WcsTask();
         wcsTask.setToLocationCode(locationCode);
         wcsTask.setPreTaskNo(String.valueOf(preTaskNo));
+        LogRecordContext.putVariable("locationCode", locationCode);// 操作日志收集
+        LogRecordContext.putVariable("receiptContainerDetailList", receiptContainerDetailList);// 操作日志收集
+        LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(receiptContainerDetailList));// 操作日志收集
         return Result.OK(wcsTask);
     }
 
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
index c5543d5..8168021 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
@@ -1,7 +1,11 @@
 package org.jeecg.modules.wms.framework.controller;
 
+import java.math.BigDecimal;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -9,6 +13,7 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.system.service.ISysDataLogService;
+import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader;
 import org.jeecg.utils.HuahengJwtUtil;
 import org.jeecg.utils.HuahengRedisUtil;
@@ -52,28 +57,42 @@ public class TestController extends HuahengBaseController {
 //    @AutoLog(value = "TestController-testRedis")
     @ResponseBody
     @PostMapping(value = "/test/testRedis")
-    @OperationLog(bizType = "'物料追踪'", tag = "'分配库位'", bizId = "#paramMap.get('bizId')",extra = "#jsonString", msg = "'测试操作日志'", recordReturnValue = true)
+    @OperationLog(bizId = "''", bizType = "'入库单追踪'", tag = "'详情分配库位'", extra = "#extraJsonString", msg = "'库位编码:' + #locationCode",
+    condition = "#receiptContainerDetailList.size() > 0", recordReturnValue = true)
     public Result<?> testRedis(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws InterruptedException {
         Result result = new Result<>();
-        String testString = "我是testString1";
-        LogRecordContext.putVariable("testString1", testString);
-        testString = "我是testString2";
-        LogRecordContext.putVariable("testString2", testString);
-        result.setMessage(testString);
-        log.info("testRedis in paramMap:{}", JSON.toJSONString(paramMap));
-        String key = "testKey";
-        Map<String, ReceiptHeader> receiptHeaderMap = new ConcurrentHashMap<String, ReceiptHeader>();
-        ReceiptHeader receiptHeader = new ReceiptHeader();
-        receiptHeader.setCode(paramMap.get("bizId"));
-        receiptHeaderMap.put("receiptHeaderKey", receiptHeader);
-        LogRecordContext.putVariable("jsonString", JSON.toJSONString(receiptHeaderMap));
-        Map<String, ReceiptHeader> value = redisUtil.getAndSet(key, receiptHeaderMap, new TypeReference<Map<String, ReceiptHeader>>() {}, 10);
-        Long rxpireTime = redisUtil.getExpire(key);
-        log.info("redisUtil.getAndSet {} -> {} rxpireTime -> {}", key, JSON.toJSONString(value), rxpireTime);
+        List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
+        ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
+        receiptContainerDetail.setReceiptCode("SDH10101");
+        receiptContainerDetail.setContainerCode("M00061");
+        receiptContainerDetail.setMaterialCode("EH812736");
+        receiptContainerDetail.setQty(BigDecimal.valueOf(10));
+        receiptContainerDetailList.add(receiptContainerDetail);
+        LogRecordContext.putVariable("locationCode", "100001");// 操作日志收集
+        LogRecordContext.putVariable("receiptContainerDetailList", receiptContainerDetailList);// 操作日志收集
+        LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(receiptContainerDetailList));// 操作日志收集
+        
+        
+        
+//        String testString = "我是testString1";
+//        LogRecordContext.putVariable("testString1", testString);
+//        testString = "我是testString2";
+//        LogRecordContext.putVariable("testString2", testString);
+//        result.setMessage(testString);
+//        log.info("testRedis in paramMap:{}", JSON.toJSONString(paramMap));
+//        String key = "testKey";
+//        Map<String, ReceiptHeader> receiptHeaderMap = new ConcurrentHashMap<String, ReceiptHeader>();
+//        ReceiptHeader receiptHeader = new ReceiptHeader();
+//        receiptHeader.setCode(paramMap.get("bizId"));
+//        receiptHeaderMap.put("receiptHeaderKey", receiptHeader);
+//        LogRecordContext.putVariable("jsonString", JSON.toJSONString(receiptHeaderMap));
+//        Map<String, ReceiptHeader> value = redisUtil.getAndSet(key, receiptHeaderMap, new TypeReference<Map<String, ReceiptHeader>>() {}, 10);
+//        Long rxpireTime = redisUtil.getExpire(key);
+//        log.info("redisUtil.getAndSet {} -> {} rxpireTime -> {}", key, JSON.toJSONString(value), rxpireTime);
 //        result.setSuccess(false);
 //        LogRecordContext.putVariable("isSuccess", result.isSuccess());
 
-        Thread.sleep(2000l);
+//        Thread.sleep(2000l);
 //        throw new RuntimeException("自定义失败");
         return result;
 //        receiptHeaderMap = redisUtil.get(key, new TypeReference<Map<String, ReceiptHeader>>() {});
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java
index 31f063f..30046f1 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.monitor.operation.service.impl;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.jeecg.modules.wms.monitor.operation.entity.OperationLog;
@@ -8,6 +9,7 @@ import org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper;
 import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService;
 import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail;
 import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail;
+import org.jeecg.modules.wms.task.taskHeader.entity.TaskDetail;
 import org.jeecg.utils.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -15,6 +17,7 @@ import org.springframework.util.CollectionUtils;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import cn.hutool.core.util.ReflectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.monitor4all.logRecord.bean.LogDTO;
 import cn.monitor4all.logRecord.service.IOperationLogGetService;
@@ -36,70 +39,35 @@ public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, Ope
             log.debug(">>>>>> create OperationLog:{} <<<<<<", JSON.toJSONString(logDTO));
             List<OperationLog> operationLogList = new ArrayList<OperationLog>();
             if (!StringUtils.isEmpty(logDTO.getExtra())) {
-                if (logDTO.getBizType().equals("物料追踪") && logDTO.getTag().equals("入库组盘")) {
-                    List<ReceiptContainerDetail> receiptContainerDetailList = JSON.parseArray(logDTO.getExtra(), ReceiptContainerDetail.class);
-                    if (CollectionUtils.isEmpty(receiptContainerDetailList)) {
-                        return true;
-                    }
-                    for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
-                        if (receiptContainerDetail == null || receiptContainerDetail.getUniqueCode() == null) {
-                            continue;
-                        }
-                        String operationMsg = null;
-                        String msg = StrUtil.format("上游单号:{},入库单据号:{},仓库编码:{},容器编码:{},物料编码:{},数量:{}", receiptContainerDetail.getReferCode(),
-                            receiptContainerDetail.getReceiptCode(), receiptContainerDetail.getWarehouseCode(), receiptContainerDetail.getContainerCode(),
-                            receiptContainerDetail.getMaterialCode(), receiptContainerDetail.getQty());
-                        if (!StringUtils.isEmpty(logDTO.getMsg())) {
-                            operationMsg = logDTO.getMsg() + "," + msg;
-                        } else {
-                            operationMsg = msg;
-                        }
-                        OperationLog operationLog = new OperationLog();
-                        operationLog.setBizId(receiptContainerDetail.getUniqueCode());
-                        operationLog.setOperationMsg(StringUtils.substring(operationMsg, 0, 1000));
-                        operationLog.setBizType(logDTO.getBizType());
-                        operationLog.setBizTag(logDTO.getTag());
-                        operationLog.setContentException(StringUtils.substring(logDTO.getException(), 0, 1000));
-                        operationLog.setContentReturn(StringUtils.substring(logDTO.getReturnStr(), 0, 1000));
-                        operationLog.setOperationCostTime(logDTO.getExecutionTime());
-                        operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0);
-                        operationLog.setOperationTime(logDTO.getOperateDate());
-                        operationLog.setOperatorName(logDTO.getOperatorId());
-                        operationLogList.add(operationLog);
+                if (logDTO.getBizType().equals("物料追踪")) {
+                    if (logDTO.getTag().equals("入库组盘")) {
+                        String message = "容器编码:{},物料编码:{},数量:{}";
+                        operationLogList.addAll(createOperationLogs(logDTO, ReceiptContainerDetail.class, "getUniqueCode", message, "getReferCode", "getReceiptCode",
+                            "getWarehouseCode", "getContainerCode", "getMaterialCode", "getQty"));
                     }
                 } else if (logDTO.getBizType().equals("入库单追踪")) {
-                    List<ReceiptDetail> receiptDetailList = JSON.parseArray(logDTO.getExtra(), ReceiptDetail.class);
-                    if (CollectionUtils.isEmpty(receiptDetailList)) {
-                        return true;
-                    }
-                    for (ReceiptDetail receiptDetail : receiptDetailList) {
-                        if (receiptDetail == null || receiptDetail.getReceiptCode() == null) {
-                            continue;
-                        }
-                        String operationMsg = null;
-                        String msg = StrUtil.format("物料编码:{},数量:{},已收数量:{}", receiptDetail.getMaterialCode(), receiptDetail.getQty(),
-                            receiptDetail.getTaskQty() == null ? 0 : receiptDetail.getTaskQty());
-                        if (!StringUtils.isEmpty(logDTO.getMsg())) {
-                            operationMsg = logDTO.getMsg() + "," + msg;
-                        } else {
-                            operationMsg = msg;
-                        }
-                        OperationLog operationLog = new OperationLog();
-                        operationLog.setBizId(receiptDetail.getReceiptCode());
-                        operationLog.setOperationMsg(StringUtils.substring(operationMsg, 0, 1000));
-                        operationLog.setBizType(logDTO.getBizType());
-                        operationLog.setBizTag(logDTO.getTag());
-                        operationLog.setContentException(StringUtils.substring(logDTO.getException(), 0, 1000));
-                        operationLog.setContentReturn(StringUtils.substring(logDTO.getReturnStr(), 0, 1000));
-                        operationLog.setOperationCostTime(logDTO.getExecutionTime());
-                        operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0);
-                        operationLog.setOperationTime(logDTO.getOperateDate());
-                        operationLog.setOperatorName(logDTO.getOperatorId());
-                        operationLogList.add(operationLog);
+                    if (logDTO.getTag().equals("详情添加")) {
+                        String message = "物料编码:{},数量:{}";
+                        operationLogList.addAll(createOperationLogs(logDTO, ReceiptDetail.class, "getReceiptCode", message, "getMaterialCode", "getQty"));
+                    } else if (logDTO.getTag().equals("详情分配库位")) {
+                        String message = "容器编码:{},物料编码:{},收货数量:{}";
+                        operationLogList.addAll(
+                            createOperationLogs(logDTO, ReceiptContainerDetail.class, "getReceiptCode", message, "getContainerCode", "getMaterialCode", "getQty"));
+                    } else if (logDTO.getTag().equals("详情入库")) {
+                        String message = "物料编码:{},收货数量:{}";
+                        operationLogList
+                            .addAll(createOperationLogs(logDTO, ReceiptDetail.class, "getReceiptCode", message, "getMaterialCode", "getTaskQty"));
+                    } else if (logDTO.getTag().equals("详情组盘")) {
+                        String message = "物料编码:{},数量:{},收货数量:{}";
+                        operationLogList
+                            .addAll(createOperationLogs(logDTO, ReceiptDetail.class, "getReceiptCode", message, "getMaterialCode", "getQty", "getTaskQty"));
+                    } else {
+                        String message = "物料编码:{},数量:{}";
+                        operationLogList
+                            .addAll(createOperationLogs(logDTO, ReceiptDetail.class, "getReceiptCode", message, "getMaterialCode", "getQty"));
                     }
                 }
-            }
-            if (!StringUtils.isEmpty(logDTO.getBizId())) {
+            } else {
                 OperationLog operationLog = new OperationLog();
                 operationLog.setBizId(logDTO.getBizId());
                 operationLog.setOperationMsg(StringUtils.substring(logDTO.getMsg(), 0, 1000));
@@ -120,4 +88,43 @@ public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, Ope
             return false;
         }
     }
+
+    private List<OperationLog> createOperationLogs(LogDTO logDTO, Class<?> clazz, String bizIdMethodName, String text, String... msgMethodNames) {
+        List<OperationLog> operationLogList = new ArrayList<OperationLog>();
+        List<?> detailList = JSON.parseArray(logDTO.getExtra(), clazz);
+        if (CollectionUtils.isEmpty(detailList)) {
+            return operationLogList;
+        }
+        for (Object detail : detailList) {
+            String bizId = ReflectUtil.invoke(detail, bizIdMethodName).toString();
+            if (detail == null || bizId == null) {
+                continue;
+            }
+            List<String> msgValueList = new ArrayList<String>();
+            for (String messageMethodName : msgMethodNames) {
+                Object value = ReflectUtil.invoke(detail, messageMethodName);
+                msgValueList.add(value == null ? "" : value.toString());
+            }
+            String operationMsg = null;
+            String msg = StrUtil.format(text, msgValueList.toArray());
+            if (!StringUtils.isEmpty(logDTO.getMsg())) {
+                operationMsg = logDTO.getMsg() + "," + msg;
+            } else {
+                operationMsg = msg;
+            }
+            OperationLog operationLog = new OperationLog();
+            operationLog.setBizId(bizId);
+            operationLog.setOperationMsg(StringUtils.substring(operationMsg, 0, 1000));
+            operationLog.setBizType(logDTO.getBizType());
+            operationLog.setBizTag(logDTO.getTag());
+            operationLog.setContentException(StringUtils.substring(logDTO.getException(), 0, 1000));
+            operationLog.setContentReturn(StringUtils.substring(logDTO.getReturnStr(), 0, 1000));
+            operationLog.setOperationCostTime(logDTO.getExecutionTime());
+            operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0);
+            operationLog.setOperationTime(logDTO.getOperateDate());
+            operationLog.setOperatorName(logDTO.getOperatorId());
+            operationLogList.add(operationLog);
+        }
+        return operationLogList;
+    }
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptDetail.java
index 47dda70..bd3d7f7 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptDetail.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/entity/ReceiptDetail.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.receipt.receiptHeader.entity;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 import org.jeecg.common.aspect.annotation.Dict;
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/utils/Swagger3Config.java b/huaheng-wms-core/src/main/java/org/jeecg/utils/Swagger3Config.java
index d54b753..e0e9634 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/utils/Swagger3Config.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/utils/Swagger3Config.java
@@ -75,8 +75,7 @@ public class Swagger3Config implements WebMvcConfigurer {
      * 新增 securityContexts 保持登录状态
      */
     private List<SecurityContext> securityContexts() {
-        return new ArrayList(
-            Collections.singleton(SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build()));
+        return Collections.singletonList(SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build());
     }
 
     /**
@@ -98,7 +97,7 @@ public class Swagger3Config implements WebMvcConfigurer {
         AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
         AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
         authorizationScopes[0] = authorizationScope;
-        return new ArrayList(Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
+        return Collections.singletonList(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes));
     }
 
 }