From f9114ffadfab1c01198dd980c3afb66d0c44a5ea Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期二, 06 十月 2026 18:22:00 +0800
Subject: [PATCH] fix: limit equipment picker to selected X number
---
HANDOFF.md | 29 ++++++++++++++
requirement/交接文件_2026.10.3.md | 27 +++++++++++++
requirement/改进20261003.txt | 1
emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java | 21 ----------
emergency-repair-web/src/components/ProductTreePicker.vue | 13 ++++++
5 files changed, 68 insertions(+), 23 deletions(-)
diff --git a/HANDOFF.md b/HANDOFF.md
index 7d086e5..57e5666 100644
--- a/HANDOFF.md
+++ b/HANDOFF.md
@@ -853,7 +853,6 @@
**鎺ユ墜娉ㄦ剰**
- 涓嶈鎻愪氦 `.codex-run`銆丱ffice 閿佹枃浠舵垨 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt`銆�
- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
-
## 22. 鏀跺熬蹇収锛�2026-10-06 鍛ㄤ竴锛岄渶姹� 26 鏃ュ織鏃ユ湡鑼冨洿鍒嗛殧绗︼級
**鏈疆瀹屾垚鍐呭**
@@ -878,3 +877,31 @@
**鎺ユ墜娉ㄦ剰**
- 涓嶈鎻愪氦 `.codex-run`銆丱ffice 閿佹枃浠舵垨 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt`銆�
- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
+
+## 23. 鏀跺熬蹇収锛�2026-10-06 鍛ㄤ竴锛岄渶姹� 27 璁惧閫夋嫨鑼冨洿锛�
+
+**鏈疆瀹屾垚鍐呭**
+- 鏂板鏁呴殰閫夋嫨 `rk_X鍙穈锛堜骇鍝佺粨鏋勬爲 `side` 绫诲瀷鑺傜偣锛夊悗锛岃澶囬�夋嫨鍣ㄥ彧浠ユ墍閫夎妭鐐逛负鏍瑰睍绀哄叾涓嬬骇锛屼笉鍐嶅悓鏃惰繑鍥炲瀷鍙锋牴鑺傜偣鍜屾暣妫典骇鍝佺粨鏋勬爲銆�
+- 璁惧閫夋嫨鍣ㄦ墦寮�閿佸畾鑼冨洿鏃惰嚜鍔ㄥ睍寮�杩斿洖鐨� `side` 鏍硅妭鐐癸紝棣栧睆鐩存帴鏄剧ず绗竴灞傜郴缁熻妭鐐癸紝鍚庣画缁х画鎸夊師閫昏緫鎳掑姞杞姐��
+- `xNo` 涓虹┖鏃朵粛杩斿洖瀹屾暣浜у搧缁撴瀯鏍戯紝涓嶅奖鍝嶄骇鍝佺粨鏋勬爲绠$悊鍜屼笉鎸� `rk_X鍙穈 绛涢�夌殑璁惧閫夋嫨鍦烘櫙銆�
+
+**涓昏鏂囦欢**
+- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
+- `emergency-repair-web/src/components/ProductTreePicker.vue`
+- `requirement/鏀硅繘20261003.txt`锛堣ˉ鍏呴渶姹� 27锛�
+
+**楠岃瘉缁撴灉**
+- 鍚庣 `mvn -B -DskipTests compile`銆乣mvn -B -DskipTests package` 閫氳繃锛涘墠绔� `npm run build` 閫氳繃锛屼粎鏈夋棦鏈夊寘浣撶Н鍛婅銆�
+- `GET /api/system/tree/product/side-roots?xNo=203` 淇鍚庡彧杩斿洖 1 涓牴鑺傜偣锛歚id=1280000000000009729`銆乣name=203`銆乣layer=side`銆乣level=2`锛沗201 / 203 / 301 / 娴嬭瘯T` 鍒嗗埆鍙繑鍥炲搴旇妭鐐广��
+- `node .codex-run/verify-req27.js` 閫氳繃锛氭牴鑺傜偣鏂囨湰浠呬负 `203`锛岃嚜鍔ㄥ睍寮� 1 涓牴鑺傜偣锛岄灞忔樉绀哄叾涓嬬骇绯荤粺鑺傜偣锛屾棤缃戠粶寮傚父銆�
+- 璇锋眰閾捐矾纭锛歚/api/system/tree/product/side-roots?xNo=203` 鍚庣户缁姹� `/api/system/tree/product/children?parentId=1280000000000009729`銆傛埅鍥撅細`.codex-run/req27-side-tree.png`銆�
+
+**褰撳墠杩愯鐘舵�侊紙2026-10-06锛�**
+- 鍓嶇 `http://localhost:8082`锛孭ID `138164`锛涘悗绔� `http://127.0.0.1:8091`锛孭ID `148268`锛汥M8 `127.0.0.1:5236`锛汦dge CDP `9222`銆�
+- 鐧诲綍 `admin / admin123`锛涙暟鎹簱 `SYSDBA/SYSDBA`锛屼笟鍔� schema `LX`銆�
+- 鍚庣鏃ュ織锛歚.codex-run/backend-20261006-req27.out.log`銆乣.codex-run/backend-20261006-req27.err.log`銆�
+
+**鎺ユ墜娉ㄦ剰**
+- 闇�姹� 26 宸叉彁浜ゅ苟鎺ㄩ�侊紝鎻愪氦 `f651ad5`锛坄fix: show full date range separator in log filters`锛夈�傞渶姹� 27 涓烘湰杞悗缁彁浜ゃ��
+- 涓嶈鎻愪氦 `.codex-run`銆丱ffice 閿佹枃浠舵垨 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt`銆�
+- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java b/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java
index e06db50..1775f6e 100644
--- a/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java
@@ -414,30 +414,11 @@
if (!StringUtils.hasText(xNo)) {
return productTreeRoots();
}
- List<ProductNode> rootNodes = productNodeMapper.selectList(Wrappers.<ProductNode>lambdaQuery()
- .and(wrapper -> wrapper.isNull(ProductNode::getParentId).or().eq(ProductNode::getParentId, 0L))
- .orderByAsc(ProductNode::getSortNo).orderByAsc(ProductNode::getId));
List<ProductNode> sideNodes = productNodeMapper.selectList(Wrappers.<ProductNode>lambdaQuery()
.in(ProductNode::getLayer, Arrays.asList("side", "SIDE"))
.eq(ProductNode::getName, xNo.trim())
.orderByAsc(ProductNode::getSortNo).orderByAsc(ProductNode::getId));
- Map<Long, ProductNode> roots = uniqueProductNodes(rootNodes);
- Map<Long, ProductNode> sides = uniqueProductNodes(sideNodes);
- Set<Long> branchIds = new HashSet<>();
- branchIds.addAll(roots.keySet());
- branchIds.addAll(sides.keySet());
- Map<Long, Map<String, Object>> rootRows = new LinkedHashMap<>();
- for (ProductNode root : sortProductNodes(roots.values())) {
- rootRows.put(root.getId(), mapProduct(root, branchIds));
- }
- for (ProductNode side : sortProductNodes(sides.values())) {
- ProductNode root = findProductRoot(side);
- Map<String, Object> rootRow = root == null ? null : rootRows.get(root.getId());
- if (rootRow != null) {
- children(rootRow).add(mapProduct(side, branchIds));
- }
- }
- return new ArrayList<>(rootRows.values());
+ return mapProductTreeNodes(sideNodes, Collections.emptySet());
}
public List<String> productXNumbers() {
diff --git a/emergency-repair-web/src/components/ProductTreePicker.vue b/emergency-repair-web/src/components/ProductTreePicker.vue
index e578ed2..021bbea 100644
--- a/emergency-repair-web/src/components/ProductTreePicker.vue
+++ b/emergency-repair-web/src/components/ProductTreePicker.vue
@@ -91,9 +91,20 @@
return map
}, {})
this.keyword = ''
- this.$nextTick(() => { this.restoreChecked(); this.syncSelected() })
+ this.$nextTick(() => {
+ this.expandLockedRoots(lockedXNo)
+ this.restoreChecked()
+ this.syncSelected()
+ })
}).finally(() => { this.loading = false })
},
+ expandLockedRoots(lockedXNo) {
+ if (!lockedXNo || !this.$refs.tree) return
+ this.tree.forEach(node => {
+ const treeNode = this.$refs.tree.getNode(node.id)
+ if (treeNode) treeNode.expand()
+ })
+ },
loadNode(node, resolve) {
if (!node || !node.data || !node.data.id) {
resolve([])
diff --git "a/requirement/\344\272\244\346\216\245\346\226\207\344\273\266_2026.10.3.md" "b/requirement/\344\272\244\346\216\245\346\226\207\344\273\266_2026.10.3.md"
index c81a1e3..0853d66 100644
--- "a/requirement/\344\272\244\346\216\245\346\226\207\344\273\266_2026.10.3.md"
+++ "b/requirement/\344\272\244\346\216\245\346\226\207\344\273\266_2026.10.3.md"
@@ -627,7 +627,6 @@
- 瀹屽伐鏌ラ槄褰撳墠鍙睍绀哄凡鏈� `T_COMPLETION_INFO` 瀹屽伐濉姤璁板綍鐨勬淳宸ュ崟锛屽苟涓旀帴鍙f湭鍒嗛〉銆�
- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
- `.codex-run`銆丱ffice 閿佹枃浠跺強 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt` 浠嶄负鏈湴涓存椂鏂囦欢锛屼笉搴旀彁浜ゃ��
-
## 鍗佷簲銆�2026-10-06 鑱旇皟鏀跺熬锛堥渶姹� 21 鏉冮檺璁剧疆鑼冨洿鍒囨崲锛�
| 搴忓彿 | 闇�姹傝ˉ鍏� | 鐘舵�� | 瀹炵幇涓庨獙璇� |
@@ -676,3 +675,29 @@
- 褰撳墠杩愯锛氬墠绔� `http://localhost:8082`锛涘悗绔� `http://127.0.0.1:8091`锛汥M8 `127.0.0.1:5236`锛汦dge CDP `9222`銆傜櫥褰� `admin / admin123`銆�
- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
- `.codex-run`銆丱ffice 閿佹枃浠跺強 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt` 浠嶄负鏈湴涓存椂鏂囦欢锛屼笉搴旀彁浜ゃ��
+
+## 鍗佷竷銆�2026-10-06 鑱旇皟鏀跺熬锛堥渶姹� 27 璁惧閫夋嫨鑼冨洿锛�
+
+| 搴忓彿 | 闇�姹� | 鐘舵�� | 瀹炵幇涓庨獙璇� |
+| --- | --- | --- | --- |
+| 27 | 鏂板鏁呴殰閫夋嫨 `rk_X鍙穈 鍚庯紝璁惧閫夋嫨鍣ㄥ簲鍙樉绀烘墍閫� `side` 鑺傜偣鐨勪笅绾� | 宸插畬鎴� | 鍚庣鍙繑鍥炴墍閫� `side` 鑺傜偣浣滀负鏍癸紱鍓嶇鑷姩灞曞紑璇ユ牴鑺傜偣骞剁户缁噿鍔犺浇涓嬬骇锛屾帴鍙d笌娴忚鍣ㄩ獙璇侀�氳繃 |
+
+### 17.1 涓昏鍙樻洿鏂囦欢
+
+- `emergency-repair-server/src/main/java/com/emergencyrepair/system/service/SystemService.java`
+- `emergency-repair-web/src/components/ProductTreePicker.vue`
+- `requirement/鏀硅繘20261003.txt`锛堣ˉ鍏呴渶姹� 27锛�
+
+### 17.2 楠岃瘉缁撴灉
+
+- 鍚庣 `mvn -B -DskipTests compile`銆乣mvn -B -DskipTests package` 閫氳繃锛涘墠绔� `npm run build` 閫氳繃锛屼粎鏈夋棦鏈夊寘浣撶Н鍛婅銆�
+- `GET /api/system/tree/product/side-roots?xNo=203` 鍙繑鍥炲搴旂殑 `side` 鏍硅妭鐐癸紱`201 / 203 / 301 / 娴嬭瘯T` 鍧囧垎鍒獙璇侀�氳繃銆�
+- `node .codex-run/verify-req27.js` 閫氳繃锛氭牴鑺傜偣鏂囨湰浠呬负 `203`锛岃嚜鍔ㄥ睍寮� 1 涓牴鑺傜偣锛屾樉绀轰笅绾х郴缁熻妭鐐癸紝鏃犵綉缁滃紓甯搞��
+- 璇锋眰閾捐矾纭锛歚side-roots?xNo=203` 鍚庤姹� `children?parentId=1280000000000009729`銆傛埅鍥撅細`.codex-run/req27-side-tree.png`銆�
+
+### 17.3 鎺ユ墜娉ㄦ剰
+
+- 褰撳墠杩愯锛氬墠绔� `http://localhost:8082`锛孭ID `138164`锛涘悗绔� `http://127.0.0.1:8091`锛孭ID `148268`锛汥M8 `127.0.0.1:5236`锛汦dge CDP `9222`銆傜櫥褰� `admin / admin123`銆�
+- 闇�姹� 26 宸叉彁浜ゅ苟鎺ㄩ�侊紝鎻愪氦 `f651ad5`锛涢渶姹� 27 涓烘湰杞悗缁彁浜ゃ��
+- 鏈疆浠g爜銆侀渶姹傛枃浠跺拰浜ゆ帴璁板綍涓�骞舵彁浜ゅ苟鎺ㄩ�佸叕鍙� Git 浠撳簱 `main` 鍒嗘敮銆�
+- `.codex-run`銆丱ffice 閿佹枃浠跺強 `emergency-repair-web/public/鏂板缓 鏂囨湰鏂囨。.txt` 浠嶄负鏈湴涓存椂鏂囦欢锛屼笉搴旀彁浜ゃ��
diff --git "a/requirement/\346\224\271\350\277\23320261003.txt" "b/requirement/\346\224\271\350\277\23320261003.txt"
index c4e6a1c..ea44d46 100644
--- "a/requirement/\346\224\271\350\277\23320261003.txt"
+++ "b/requirement/\346\224\271\350\277\23320261003.txt"
@@ -38,4 +38,5 @@
25銆佽彍鍗曠鐞嗙紪杈戞椂锛屽簲璇ュ彲浠ヤ慨鏀圭埗鑺傜偣
26銆佹棩蹇楃鐞嗙殑鏃ユ湡缁勪欢2涓棩鏈熶腑闂撮偅涓�滆嚦鈥濇樉绀轰笉瀹屾暣
+27銆佹柊澧炴晠闅滈偅閲岄�変簡rk_X鍙凤紙瀵瑰簲浜у搧缁撴瀯鏍戠殑side绫诲瀷锛夊悗锛屽啀閫夎澶囩殑鏃跺�欒繕鏄樉绀烘暣涓骇鍝佺粨鏋勬爲锛屽簲璇ユ樉绀洪攣閫夎妭鐐圭殑涓嬬骇鑺傜偣
--
Gitblit v1.9.1