From 082bddee7df8a05ca95f473ec2643701d41a5213 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 08 十月 2026 11:09:01 +0800
Subject: [PATCH] 更新代码

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
index be1c6f1..31878d0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
@@ -26,7 +26,10 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -74,7 +77,7 @@
     @Override
     public PageInfo<TPedigreeChartDetailVO> pageListDetail(TPedigreeChartDetailQuery query) {
         PageInfo<TPedigreeChartDetailVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
-        List<TPedigreeChartDetailVO> list = this.baseMapper.pageListDetail(query,pageInfo);
+        List<TPedigreeChartDetailVO> list = distinctById(this.baseMapper.pageListDetail(query,pageInfo));
         List<SysUser> sysUsers = sysUserMapper.selectAllList();
         for (TPedigreeChartDetailVO tPedigreeChartDetailVO : list) {
             SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
@@ -96,24 +99,50 @@
     public PageInfo<TPedigreeChartDetailVO> pageListCountDetail(TPedigreeChartDetailQuery query) {
         TPedigreeChart tPedigreeChart = this.baseMapper.selectById(query.getId());
         PageInfo<TPedigreeChartDetailVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
-        List<TPedigreeChartDetailVO> list = this.baseMapper.pageListCountDetail(query,pageInfo);
+        List<TPedigreeChartDetailVO> list = distinctById(this.baseMapper.pageListCountDetail(query,pageInfo));
         List<SysUser> sysUsers = sysUserMapper.selectAllList();
         for (TPedigreeChartDetailVO tPedigreeChartDetailVO : list) {
-            SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
+            SysUser sysUser = StringUtils.isEmpty(tPedigreeChartDetailVO.getVaccinateId()) ? null : sysUsers.stream()
+                    .filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
                     .findFirst().orElse(null);
             if (sysUser!=null){
                 tPedigreeChartDetailVO.setExperimenter(sysUser.getNickName());
-            }
-            SysUser sysUser1 = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
-                    .findFirst().orElse(null);
-            if (sysUser1!=null){
                 tPedigreeChartDetailVO.setVaccinateName(sysUser.getNickName());
             }
-            tPedigreeChartDetailVO.setStrainCode(tPedigreeChart.getStrainCode());
-            tPedigreeChartDetailVO.setStrainName(tPedigreeChart.getStrainName());
-            tPedigreeChartDetailVO.setConfirmTime(tPedigreeChart.getCreateTime());
+            TPedigreeChartDetail parent = pedigreeChartDetailMapper.selectList(
+                    Wrappers.<TPedigreeChartDetail>lambdaQuery()
+                            .eq(TPedigreeChartDetail::getId, tPedigreeChartDetailVO.getParentId())
+                            .eq(TPedigreeChartDetail::getPedigreeChartId, query.getId())
+                            .eq(TPedigreeChartDetail::getType, 1)
+                            .orderByDesc(TPedigreeChartDetail::getUpdateTime)
+                            .orderByDesc(TPedigreeChartDetail::getCreateTime)
+                            .last("limit 1")
+            ).stream().findFirst().orElse(null);
+            if (parent != null) {
+                tPedigreeChartDetailVO.setStrainType(parent.getStrainType());
+                tPedigreeChartDetailVO.setSource(parent.getSource());
+                tPedigreeChartDetailVO.setColonyNumber(parent.getColonyNumber());
+                tPedigreeChartDetailVO.setStrainCode(StringUtils.isNotEmpty(parent.getStrainCode())
+                        ? parent.getStrainCode() : tPedigreeChart.getStrainCode());
+                tPedigreeChartDetailVO.setStrainName(StringUtils.isNotEmpty(parent.getStrainName())
+                        ? parent.getStrainName() : tPedigreeChart.getStrainName());
+                tPedigreeChartDetailVO.setConfirmTime(parent.getConfirmTime() != null
+                        ? parent.getConfirmTime() : parent.getStorageTime());
+            } else {
+                tPedigreeChartDetailVO.setStrainCode(tPedigreeChart.getStrainCode());
+                tPedigreeChartDetailVO.setStrainName(tPedigreeChart.getStrainName());
+                tPedigreeChartDetailVO.setConfirmTime(tPedigreeChart.getCreateTime());
+            }
         }
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    private List<TPedigreeChartDetailVO> distinctById(List<TPedigreeChartDetailVO> list) {
+        Map<String, TPedigreeChartDetailVO> uniqueRecords = new LinkedHashMap<>();
+        for (TPedigreeChartDetailVO detail : list) {
+            uniqueRecords.putIfAbsent(detail.getId(), detail);
+        }
+        return new ArrayList<>(uniqueRecords.values());
+    }
 }

--
Gitblit v1.7.1