From 9e99bbd124089fc265fa748905bc7f05c294f0f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?=
Date: Wed, 4 Mar 2026 15:45:06 +0800
Subject: [PATCH] =?UTF-8?q?refactor(check):=20=E4=BC=98=E5=8C=96RFID?=
=?UTF-8?q?=E7=9B=98=E7=82=B9=E5=A4=B4=E8=A1=A8=E5=A4=84=E7=90=86=E9=80=BB?=
=?UTF-8?q?=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修改labelCount字段注释,明确表示该次盘点的标签数量
- 更新isUsed字段含义,从"是否已使用"改为"是否已处理"
- 调整定时任务查询条件,移除label_count为null的限制
- 将数据源从mes_unit改为handling_unit查询标签详细信息
- 完善业务逻辑描述,添加处理完成后可生成正式盘点单的说明
- 优化代码实现,每次处理完记录后同时更新labelCount和isUsed字段
- 修复快照表更新逻辑,使用LambdaUpdateWrapper处理联合主键场景
---
.../modules/check/entity/RfidCountHeader.java | 13 ++--
.../check/service/RfidCountHeaderService.java | 7 ++-
.../impl/RfidCountHeaderServiceImpl.java | 61 +++++++++++--------
3 files changed, 47 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/gaotao/modules/check/entity/RfidCountHeader.java b/src/main/java/com/gaotao/modules/check/entity/RfidCountHeader.java
index b61204b..7931b76 100644
--- a/src/main/java/com/gaotao/modules/check/entity/RfidCountHeader.java
+++ b/src/main/java/com/gaotao/modules/check/entity/RfidCountHeader.java
@@ -83,18 +83,23 @@ public class RfidCountHeader {
private Date countTime;
/**
- * 标签数量(定时任务填充后更新)
+ * 标签数量(定时任务填充后更新,表示该次盘点的标签数量)
*/
@TableField("label_count")
private Integer labelCount;
/**
- * 是否已使用(是否已生成盘点单)
+ * 是否已使用(是否已处理)
* 枚举值说明:
*
- * - N = 未使用,可以生成盘点单
- * - Y = 已使用,已生成盘点单
+ * - N = 未处理,定时任务会填充明细和快照表
+ * - Y = 已处理,定时任务不再处理此记录
*
+ * ⚠️ 重要说明:
+ *
+ * is_used='Y'表示定时任务已处理完成(填充了子表和快照表)
+ * 后续人工可以基于此数据生成正式盘点单(count_result)
+ *
*/
@TableField("is_used")
private String isUsed;
diff --git a/src/main/java/com/gaotao/modules/check/service/RfidCountHeaderService.java b/src/main/java/com/gaotao/modules/check/service/RfidCountHeaderService.java
index ab8b9f7..4578996 100644
--- a/src/main/java/com/gaotao/modules/check/service/RfidCountHeaderService.java
+++ b/src/main/java/com/gaotao/modules/check/service/RfidCountHeaderService.java
@@ -25,14 +25,15 @@ public interface RfidCountHeaderService extends IService {
*
* 业务逻辑:
*
- * 1. 查询rfid_count_header(is_used='N'且label_count=null的记录)
+ * 1. 查询rfid_count_header(is_used='N'的记录)
* 2. 遍历每条记录:
* - 从pallet_detail查询标签列表(site+pallet_id)
- * - 从mes_unit查询标签详细信息
+ * - 从handling_unit查询标签详细信息
* - 批量保存到rfid_count_detail
* - 更新或新增到rfid_count_snapshot
- * - 更新rfid_count_header的label_count
+ * - 更新rfid_count_header:label_count=标签数量,is_used='Y'
* 3. 事务处理:每条主表记录独立事务
+ * 4. label_count仅记录标签数量,is_used='Y'表示已处理
*
*
* @author rqrq
diff --git a/src/main/java/com/gaotao/modules/check/service/impl/RfidCountHeaderServiceImpl.java b/src/main/java/com/gaotao/modules/check/service/impl/RfidCountHeaderServiceImpl.java
index 9e4d502..df53358 100644
--- a/src/main/java/com/gaotao/modules/check/service/impl/RfidCountHeaderServiceImpl.java
+++ b/src/main/java/com/gaotao/modules/check/service/impl/RfidCountHeaderServiceImpl.java
@@ -104,13 +104,13 @@ public class RfidCountHeaderServiceImpl extends ServiceImpl业务逻辑:
*
- * 1. 查询未填充的主表记录(is_used='N' AND label_count IS NULL)
+ * 1. 查询未处理的主表记录(is_used='N')
* 2. 遍历每条记录:
* - 从pallet_detail查询标签列表
* - 从handling_unit查询标签详细信息
* - 批量保存到rfid_count_detail
* - 更新或新增到rfid_count_snapshot
- * - 更新rfid_count_header的label_count
+ * - 更新rfid_count_header:label_count=标签数量,is_used='Y'
* 3. 每条主表记录独立事务处理
*
*
@@ -122,24 +122,23 @@ public class RfidCountHeaderServiceImpl extends ServiceImpl unfilledHeaders = this.lambdaQuery()
+ // 1. 查询未处理的主表记录(只查is_used='N')- rqrq
+ List unprocessedHeaders = this.lambdaQuery()
.eq(RfidCountHeader::getIsUsed, "N")
- .isNull(RfidCountHeader::getLabelCount)
.list();
- if (unfilledHeaders.isEmpty()) {
- log.info("没有待填充的盘点记录 - rqrq");
+ if (unprocessedHeaders.isEmpty()) {
+ log.info("没有待处理的盘点记录 - rqrq");
return;
}
- log.info("查询到{}条待填充的盘点记录 - rqrq", unfilledHeaders.size());
+ log.info("查询到{}条待处理的盘点记录 - rqrq", unprocessedHeaders.size());
int successCount = 0;
int failCount = 0;
// 2. 遍历处理每条记录 - rqrq
- for (RfidCountHeader header : unfilledHeaders) {
+ for (RfidCountHeader header : unprocessedHeaders) {
try {
processOneHeader(header);
successCount++;
@@ -152,7 +151,7 @@ public class RfidCountHeaderServiceImpl extends ServiceImpl()
+ .eq(RfidCountSnapshot::getSite, snapshot.getSite())
+ .eq(RfidCountSnapshot::getUnitId, snapshot.getUnitId())
+ .set(RfidCountSnapshot::getPartNo, snapshot.getPartNo())
+ .set(RfidCountSnapshot::getQty, snapshot.getQty())
+ .set(RfidCountSnapshot::getBatchNo, snapshot.getBatchNo())
+ .set(RfidCountSnapshot::getLocationId, snapshot.getLocationId())
+ .set(RfidCountSnapshot::getWarehouseId, snapshot.getWarehouseId())
+ .set(RfidCountSnapshot::getWdr, snapshot.getWdr())
+ .set(RfidCountSnapshot::getLastCountDate, snapshot.getLastCountDate())
+ .set(RfidCountSnapshot::getPalletId, snapshot.getPalletId())
+ .set(RfidCountSnapshot::getCountResult, snapshot.getCountResult())
+ .set(RfidCountSnapshot::getCountTimes, countTimes)
+ .set(RfidCountSnapshot::getUpdatedDate, new Date())
+ );
} else {
// 不存在则新增 - rqrq
snapshot.setCountTimes(1);
@@ -280,11 +286,12 @@ public class RfidCountHeaderServiceImpl extends ServiceImpl