From 704265308b1227dbada5a36b2027b588c062ded2 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 12 十月 2026 09:14:37 +0800
Subject: [PATCH] feat(mes): 新增业务码支持并优化追溯查询功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java | 32 +++++++++++++++++++++++++-------
1 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
index 8853cca..045b669 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
@@ -24,14 +24,21 @@
return selectOne(MesProPalletDO::getCode, code);
}
+ default MesProPalletDO selectByScanCode(String code) {
+ return selectOne(new LambdaQueryWrapperX<MesProPalletDO>().and(q ->
+ q.eq(MesProPalletDO::getBusinessCode, code).or().eq(MesProPalletDO::getCode, code)
+ .or().eq(MesProPalletDO::getTempCode, code)));
+ }
+
+ default MesProPalletDO selectByScanCodeForUpdate(String code) {
+ return selectOne(new LambdaQueryWrapperX<MesProPalletDO>().and(q ->
+ q.eq(MesProPalletDO::getBusinessCode, code).or().eq(MesProPalletDO::getCode, code)
+ .or().eq(MesProPalletDO::getTempCode, code)).last("FOR UPDATE"));
+ }
+
default MesProPalletDO selectByTempCode(String tempCode) {
return selectOne(MesProPalletDO::getTempCode, tempCode);
}
-
- /** 鐢熸垚涓存椂鎵樼洏鐮佺敤鐨勫叏灞�搴忓彿锛氳В鏋� temp_code 鐨勬暟瀛楀悗缂�锛屼笉瀛樺湪鍒欒繑鍥� 0銆�
- * 涓嶈兘杩囨护 deleted锛屽敮涓�绱㈠紩 uk_temp_code 瀵归�昏緫鍒犻櫎琛屼粛鐢熸晥锛屽拷鐣ヨ蒋鍒犱細瀵艰嚧搴忓彿鍥為��銆佺爜鍊奸噸澶� */
- @Select("SELECT IFNULL(MAX(CAST(SUBSTRING(temp_code, 4) AS UNSIGNED)), 0) FROM mes_pro_pallet")
- Integer selectMaxTempCodeSeq();
@Select("SELECT * FROM mes_pro_pallet WHERE id = #{id} AND deleted = 0 FOR UPDATE")
MesProPalletDO selectByIdForUpdate(@Param("id") Long id);
@@ -51,13 +58,17 @@
default PageResult<MesProPalletDO> selectPage(MesProPalletPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MesProPalletDO>()
- .likeIfPresent(MesProPalletDO::getCode, reqVO.getCode())
+ .likeIfPresent(MesProPalletDO::getBusinessCode, reqVO.getBusinessCode())
.likeIfPresent(MesProPalletDO::getTempCode, reqVO.getTempCode())
.eqIfPresent(MesProPalletDO::getBatchId, reqVO.getBatchId())
.likeIfPresent(MesProPalletDO::getBatchCode, reqVO.getBatchCode())
.eqIfPresent(MesProPalletDO::getStatus, reqVO.getStatus())
.betweenIfPresent(MesProPalletDO::getCreateTime, reqVO.getCreateTime())
- .orderByDesc(MesProPalletDO::getId));
+ .orderByDesc(MesProPalletDO::getId)
+ .and(cn.hutool.core.util.StrUtil.isNotBlank(reqVO.getCode()), q ->
+ q.like(MesProPalletDO::getCode, reqVO.getCode()).or()
+ .like(MesProPalletDO::getBusinessCode, reqVO.getCode()).or()
+ .like(MesProPalletDO::getTempCode, reqVO.getCode())));
}
/**
@@ -79,6 +90,13 @@
+ "WHERE id = #{id} AND deleted = 0 AND inbound_event_id IS NULL")
int markInbound(@Param("id") Long id, @Param("eventId") Long eventId);
+ /** 鍗曡銆佹暣鎵樸�佹暣鎵瑰叆搴撳悗锛屽彧鏈夋湁鏁堣鐮佸叏閮ㄥ叆搴撶殑鎵樼洏鎵嶅悓姝ユ爣璁板凡鍏ュ簱銆� */
+ @org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet p SET inbound_event_id = #{eventId}, inbound_time = NOW(), update_time = NOW() "
+ + "WHERE p.batch_id = #{batchId} AND p.deleted = 0 AND p.status <> 20 AND p.inbound_event_id IS NULL "
+ + "AND EXISTS (SELECT 1 FROM mes_pro_bag_code b WHERE b.pallet_id = p.id AND b.deleted = 0 AND b.status <> 30) "
+ + "AND NOT EXISTS (SELECT 1 FROM mes_pro_bag_code b WHERE b.pallet_id = p.id AND b.deleted = 0 AND b.status <> 30 AND b.inbound_event_id IS NULL)")
+ int markCompletedInboundByBatchId(@Param("batchId") Long batchId, @Param("eventId") Long eventId);
+
@org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet SET sales_id = NULL, outbound_time = NULL, update_time = NOW() "
+ "WHERE id = #{id} AND deleted = 0")
void clearOutbound(@Param("id") Long id);
--
Gitblit v1.9.3