From 80b9620794286b61718a84ec1c2447893189646a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 03 九月 2026 17:04:02 +0800
Subject: [PATCH] fix(report): 修复检测报告生成和数据同步问题 - 调整样品发送时间排序为降序显示最新数据 - 完善检验项目同步逻辑支持多层级节点配置管理
---
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java | 91 ++++++++++++++++++++++++---------------------
1 files changed, 48 insertions(+), 43 deletions(-)
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
index bafa2a1..53da251 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
@@ -20,7 +20,6 @@
import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.service.StandardProductListService;
-import com.ruoyi.basic.service.StandardProductListService2;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -44,8 +43,6 @@
private StandardProductListMapper standardProductListMapper;
private StandardTreeMapper standardTreeMapper;
-
- private StandardProductListService2 standardProductListService2;
private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
@@ -260,53 +257,57 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree) {
+ // 灏嗏�滃伐鍘� - 瀹為獙瀹� - 鏍峰搧绫诲埆 - 鏍峰搧 - 鍨嬪彿鈥濊矾寰勬媶鎴愬悇绾ц妭鐐广��
String[] trees = tree.split(" - ");
- // 鍒ゆ柇鏄惁鎷栨嫿
+ // 鍥涚骇鍙婁互涓婅妭鐐归渶瑕佹寜鏁版嵁搴撲腑宸蹭繚瀛樼殑 sort 鎺掑簭杩斿洖銆�
boolean isDrag = false;
+ // 瀛樻斁鏍规嵁缁撴瀯鍙傛暟琛ㄩ噸鏂扮敓鎴愮殑妫�楠岄」鐩��
List<StandardProductList> list = new ArrayList<>();
if (trees.length == 3) {
+ // 涓夌骇鑺傜偣鍙畾浣嶅埌鏍峰搧绫诲埆锛岄渶瑕佺户缁睍寮�璇ョ被鍒笅鐨勬牱鍝佸拰鍨嬪彿銆�
List<StandardTree> treeList = new ArrayList<>();
StandardTree standardTree = new StandardTree();
standardTree.setFactory(trees[0]);
standardTree.setLaboratory(trees[1]);
standardTree.setSampleType(trees[2]);
+ // 鏌ヨ璇ユ牱鍝佺被鍒叧鑱旂殑浜у搧锛堟牱鍝侊級鍚嶇О銆�
List<ProductDto> pList = standardTreeMapper.selectPList(trees[2]);
- if (pList.size() == 0 || pList.get(0) == null) {
+ if (pList.isEmpty() || pList.get(0) == null) {
+ // 娌℃湁浜у搧鏃讹紝鐩存帴浣跨敤璇ュ疄楠屽鍜屾牱鍝佺被鍒凡閰嶇疆鐨勬爣鍑嗘爲鑺傜偣銆�
List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]));
- if (treeList1.size() == 0) {
+ if (treeList1.isEmpty()) {
+ // 鏍囧噯鏍戜篃涓嶅瓨鍦ㄦ椂锛屼繚鐣欎笁绾ц妭鐐逛綔涓哄厹搴曟煡璇㈡潯浠躲��
treeList.add(standardTree);
} else {
treeList.addAll(treeList1);
}
} else {
+ // 鎸変骇鍝侀�愪釜鏌ユ壘宸查厤缃殑鍨嬪彿锛涙湭閰嶇疆鏃跺垱寤轰竴涓彧鏈夋牱鍝佷俊鎭殑鍏滃簳鑺傜偣銆�
for (ProductDto p : pList) {
standardTree.setSample(p.getName());
List<StandardTree> treeList1 = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, p.getName()));
- if (treeList1.size() == 0) {
+ if (treeList1.isEmpty()) {
treeList.add(JSON.parseObject(JSON.toJSONString(standardTree), StandardTree.class));
} else {
treeList.addAll(treeList1);
}
}
}
+ // 涓烘瘡涓睍寮�鍚庣殑鈥滄牱鍝� + 鍨嬪彿鈥濊妭鐐规煡璇㈤�傜敤鐨勬楠岄」鐩��
for (StandardTree standardTree2 : treeList) {
String tree2 = trees[0] + " - " + trees[1] + " - " + trees[2] + " - " + standardTree2.getSample() + " - " + standardTree2.getModel();
+ // 鏌ヨ閫傜敤浜庢牱鍝佺被鍒殑閫氱敤椤圭洰鍙婂綋鍓嶆牱鍝�/鍨嬪彿鐨勯」鐩��
list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1]));
+ // 鏌ヨ鍚屾椂闄愬畾鏍峰搧绫诲埆鍜屾牱鍝佸悕绉扮殑椤圭洰銆�
list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + standardTree2.getSample() + "\"", standardTree2.getSample(), standardTree2.getModel(), tree2, trees[1]));
}
} else if (trees.length == 4) {
- // 鍒ゆ柇绗洓灞傛槸鍚︽湁鍨嬪彿
- Long count = standardProductListMapper.selectCount(Wrappers.<StandardProductList>lambdaQuery()
- .eq(StandardProductList::getStandardMethodListId, id)
- .isNull(StandardProductList::getModel)
- .like(StandardProductList::getTree, tree));
- if (count == 0) {
- isDrag = true;
- }
-
+ // 鍥涚骇鑺傜偣宸插畾浣嶅埌鏍峰搧锛屽悗缁寜宸蹭繚瀛樼殑 sort 鎺掑簭杩斿洖銆�
isDrag = true;
+ // 鏌ヨ璇ユ牱鍝佸凡閰嶇疆鐨勫瀷鍙疯妭鐐广��
List<StandardTree> treeList = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]));
- if (treeList.size() == 0) {
+ if (treeList.isEmpty()) {
+ // 娌℃湁鍨嬪彿閰嶇疆鏃讹紝鍒涘缓涓嶅惈鍨嬪彿鐨勮妭鐐癸紝浠嶅彲鏌ヨ閫氱敤椤圭洰銆�
StandardTree standardTree = new StandardTree();
standardTree.setFactory(trees[0]);
standardTree.setLaboratory(trees[1]);
@@ -314,37 +315,41 @@
standardTree.setSample(trees[3]);
treeList.add(standardTree);
}
+ // 閽堝鏍峰搧鐨勬瘡涓瀷鍙凤紝鍚堝苟閫氱敤椤圭洰鍜屾牱鍝佷笓灞為」鐩��
for (StandardTree standardTree : treeList) {
String str = tree + " - " + standardTree.getModel();
list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1]));
list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", standardTree.getSample(), standardTree.getModel(), str, trees[1]));
}
} else {
+ // 浜旂骇鑺傜偣宸叉槑纭牱鍝佸拰鍨嬪彿锛岀洿鎺ユ煡璇㈣鑺傜偣閫傜敤鐨勯」鐩��
isDrag = true;
list.addAll(standardTreeMapper.selectStandardProductListByTree("\"" + trees[2] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1]));
list.addAll(standardTreeMapper.selectStandardProductListByTree2("\"" + trees[2] + "\",\"" + trees[3] + "\"", trees[3].equals("null") ? null : trees[3], trees[4], tree, trees[1]));
}
+ // 涓烘柊鐢熸垚鐨勯」鐩鍏堝垎閰嶉洩鑺� ID锛涘尮閰嶅埌鏃ч厤缃悗浼氭浛鎹负鏃ц褰� ID銆�
for (StandardProductList productList : list) {
productList.setId(IdWorker.getId());
}
List<StandardProductList> standardProductLists;
if (isDrag) {
+ // 鏌ヨ褰撳墠鑺傜偣鍙婂叾瀛愯妭鐐圭殑鏃ч厤缃紝骞舵寜 sort 璇诲彇浠ヤ繚鐣欐嫋鎷藉悗鐨勯『搴忋��
standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
.eq(StandardProductList::getStandardMethodListId, id)
.like(StandardProductList::getTree, tree)
.orderByAsc(StandardProductList::getSort));
- // 鍒ゆ柇鏄惁鏈夋病鏈夊簭鍙风殑, 娌℃湁搴忓彿閲嶇疆
- boolean b = standardProductLists.stream().anyMatch(standardProductList -> standardProductList.getSort() == null);
} else {
+ // 涓夌骇鑺傜偣娌℃湁鎷栨嫿椤哄簭锛屽彧璇诲彇鐢ㄤ簬瑕嗙洊榛樿鍊肩殑鏃ч厤缃��
standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
.eq(StandardProductList::getStandardMethodListId, id)
.like(StandardProductList::getTree, tree));
}
+ // 灏嗘棫椤圭洰涓汉宸ョ淮鎶ょ殑閰嶇疆瑕嗙洊鍒版湰娆¢噸鏂扮敓鎴愮殑瀵瑰簲椤圭洰銆�
for (StandardProductList sp : standardProductLists) {
for (StandardProductList pl : list) {
- // 鍒ゆ柇鏉′欢鏄惁鍙湁涓�涓�, 鏈変竴涓殑璇濋粯璁ょ涓�涓�
+ // 鍗婂緞鍊欓�夊�煎彧鏈変竴涓椂锛屽皢鍏朵綔涓洪粯璁ゅ崐寰勩��
String radiusList = pl.getRadiusList();
if (StringUtils.isNotBlank(radiusList) && !radiusList.equals("null") && !radiusList.equals("\"\"")) {
JSONArray jsonArray = JSON.parseArray(radiusList);
@@ -353,15 +358,17 @@
pl.setRadius(radius.get(0));
}
}
+ // 浠ユ楠岄」鐩�佸瓙椤广�佸瀷鍙枫�佹牱鍝佸拰缁撴瀯鍙傛暟 ID 鍒ゆ柇鏂版棫椤圭洰鏄惁瀵瑰簲銆�
if (Objects.equals(sp.getInspectionItem(), pl.getInspectionItem())
&& Objects.equals((sp.getInspectionItemSubclass() == null) ? "" : sp.getInspectionItemSubclass(), pl.getInspectionItemSubclass() == null ? "" : pl.getInspectionItemSubclass())
// && Objects.equals(sp.getSample(), pl.getSample())
&& Objects.equals(sp.getModel(), pl.getModel())
&& sp.getTree().indexOf(pl.getSample() == null ? "null" : pl.getSample()) > -1
&& Objects.equals(sp.getStructureItemParameterId(), pl.getStructureItemParameterId())) {
+ // 澶嶇敤鏃� ID 鍜屾帓搴忥紝纭繚鏈鍚屾鍚庡師鏈夐厤缃粛鍏宠仈鍒板悓涓�鏉¢」鐩褰曘��
pl.setId(sp.getId());
- // 娣诲姞鎺掑簭瀛楁
pl.setSort(sp.getSort());
+ // 鏃ц褰曞瓨鍦ㄥ�兼椂浼樺厛淇濈暀锛涚姸鎬佷负绌烘椂鎸夋爣鍑� ID 璁剧疆榛樿鐘舵�併��
if (sp.getState() != null && !sp.getState().equals("")) {
pl.setState(sp.getState());
} else {
@@ -403,44 +410,41 @@
if (sp.getTemplateId() != null && !sp.getTemplateId().equals("")) {
pl.setTemplateId(sp.getTemplateId());
}
- //鍥犱负杩樻湁涓骇鍝佸彨鑰愬紶绾垮す 鎺ョ画閲戝叿 ,杩欎袱涓」鐩殑鏁版嵁瀹屽叏涓�鏍�,鐗规畩澶勭悊
- if (sp.getTree() != null && !sp.getTree().equals("") && !pl.getTree().equals("涓ぉ绉戞妧妫�娴嬩腑蹇� - 鐢靛姏浜у搧瀹為獙瀹� - 閲戝叿 - 鑰愬紶绾垮す - null")) {
- pl.setTree(sp.getTree());
- }
break;
}
}
}
+ // 璁板綍鏈鍚屾鐨勫垱寤轰汉鍜屾洿鏂颁汉銆�
Integer userId = SecurityUtils.getUserId().intValue();
if (trees.length == 5) {
+ // 浜旂骇鑺傜偣鍙噸寤哄綋鍓嶇簿纭矾寰勭殑鏁版嵁銆�
standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
.eq(StandardProductList::getStandardMethodListId, id)
.eq(StandardProductList::getTree, tree));
} else {
+ // 涓夌骇銆佸洓绾ц妭鐐归噸寤哄綋鍓嶈矾寰勫強鍏舵墍鏈夊瓙鑺傜偣鐨勬暟鎹��
standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
.eq(StandardProductList::getStandardMethodListId, id)
.like(StandardProductList::getTree, tree));
}
- try {
- List<StandardProductList> productLists = list.stream().map(a -> {
- a.setFactory(trees[0]);
- a.setLaboratory(trees[1]);
- a.setSampleType(trees[2]);
- a.setCreateUser(userId);
- a.setUpdateUser(userId);
- a.setStandardMethodListId(id);
- return a;
- }).collect(Collectors.toList());
- standardProductListService2.saveBatch(productLists);
- } catch (Exception e) {
- // 澶勭悊閲嶅 ID 鐨勮褰曪紝閲嶆柊鐢熸垚 ID 骞剁户缁皾璇曟彃鍏�
- for (StandardProductList productList : list) {
- productList.setId(IdWorker.getId());
- }
+ // 琛ラ綈鎵归噺淇濆瓨鎵�闇�鐨勬爲鑺傜偣銆佺敤鎴峰拰妫�楠屾爣鍑嗗瓧娈点��
+ List<StandardProductList> productLists = list.stream().map(a -> {
+ a.setFactory(trees[0]);
+ a.setLaboratory(trees[1]);
+ a.setSampleType(trees[2]);
+ a.setCreateUser(userId);
+ a.setUpdateUser(userId);
+ a.setStandardMethodListId(id);
+ return a;
+ }).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(productLists)) {
+ // 鎵归噺鍐欏叆閲嶆柊鐢熸垚鍚庣殑妫�楠岄」鐩��
+ baseMapper.saveBatchProductLists(productLists);
}
+ // 鍏堟寜宸ユ椂鍒嗙粍涓殑鏁板瓧鍗囧簭鎺掑垪锛涚┖鍒嗙粍鎺掑埌鏈�鍚庛��
Collections.sort(list, (o1, o2) -> {
String field1 = o1.getManHourGroup();
String field2 = o2.getManHourGroup();
@@ -460,12 +464,13 @@
return Integer.compare(num1, num2);
}
});
- // 鎸夌収绱㈠紩鎺掑簭
if (isDrag) {
+ // 鍥涚骇銆佷簲绾ц妭鐐规渶缁堟寜宸蹭繚瀛樼殑鎷栨嫿鎺掑簭瑕嗙洊宸ユ椂鍒嗙粍鎺掑簭銆�
list.sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
- (o2.getSort() == null ? 0 : o2.getSort()));
}
+ // 鎸夊墠绔害瀹氳繑鍥為」鐩垪琛ㄥ拰鏁伴噺銆�
Map<String, Object> map = new HashMap<>();
map.put("productList", list);
map.put("total", list.size());
@@ -562,7 +567,7 @@
@Override
public void resetTreeDragBatch(List<StandardProductList> standardProductLists) {
- standardProductListService2.updateBatchById(standardProductLists);
+ this.updateBatchById(standardProductLists);
}
/**
--
Gitblit v1.9.3