From a2dd5b42824eff9626d1f48e1561be85f17f6107 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 23 十月 2026 16:36:19 +0800
Subject: [PATCH] 【丽水】指标统计查看详情里面问题重复了,本来应该只有3条,里面18条

---
 smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
index c7f4390..4dd9148 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
@@ -1,11 +1,19 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.PatChildArchive;
+import com.smartor.domain.PatChildArchiveDetail;
 import com.smartor.mapper.PatChildArchiveMapper;
+import com.smartor.service.IPatChildArchiveDetailService;
 import com.smartor.service.IPatChildArchiveService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -15,11 +23,15 @@
  * @author ruoyi
  * @date 2026-10-09
  */
+@Slf4j
 @Service
 public class PatChildArchiveServiceImpl implements IPatChildArchiveService
 {
     @Autowired
     private PatChildArchiveMapper patChildArchiveMapper;
+
+    @Autowired
+    private IPatChildArchiveDetailService patChildArchiveDetailService;
 
     @Override
     public PatChildArchive selectPatChildArchiveById(Long id)
@@ -54,8 +66,118 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int batchDeletePatChildArchiveByIds(Long[] ids)
+    {
+        // 鍏堝垹闄ゅ搴旂殑璇︽儏琛ㄦ暟鎹�
+        patChildArchiveDetailService.deletePatChildArchiveDetailByArchiveIds(ids);
+        // 鍐嶅垹闄や富琛ㄦ暟鎹�
+        return patChildArchiveMapper.deletePatChildArchiveByIds(ids);
+    }
+
+    @Override
     public int deletePatChildArchiveById(Long id)
     {
         return patChildArchiveMapper.deletePatChildArchiveById(id);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int insertOrUpdateChildArchive(PatChildArchiveDetail patChildArchiveDetail) {
+        if (patChildArchiveDetail == null) {
+            log.error("insertOrUpdateChildArchive鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+            throw new BaseException("鍎跨妗f鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        if (StringUtils.isEmpty(patChildArchiveDetail.getOuthospno())) {
+            throw new BaseException("鍎跨妗f鍏ュ弬闂ㄨ瘖缂栧彿outhospno涓虹┖锛岃妫�鏌ュ叆鍙傞棬璇婄紪鍙�");
+        }
+        if (StringUtils.isEmpty(patChildArchiveDetail.getArchiveType())) {
+            throw new BaseException("鍎跨妗f鍏ュ弬妗f绫诲瀷archiveType涓虹┖锛岃妫�鏌ュ叆鍙傛。妗堢被鍨�");
+        }
+
+        // 鎸変笟鍔¢敭鏌ヨ鎯�
+        PatChildArchiveDetail key = new PatChildArchiveDetail();
+        key.setOrgid(patChildArchiveDetail.getOrgid());
+        key.setPatid(patChildArchiveDetail.getPatid());
+        key.setOuthospno(patChildArchiveDetail.getOuthospno());
+        key.setArchiveType(patChildArchiveDetail.getArchiveType());
+        List<PatChildArchiveDetail> olds =
+                patChildArchiveDetailService.selectPatChildArchiveDetailList(key);
+
+        Long existArchiveId = null;
+        Long existDetailId = null;
+        if (CollectionUtils.isNotEmpty(olds)) {
+            existArchiveId = olds.get(0).getArchiveid();
+            existDetailId = olds.get(0).getId();
+        }
+
+        // 璇︽儏娌℃煡鍒帮紝鍐嶅厹搴曟寜鍚屾牱閿煡涓昏〃锛岄伩鍏嶄富琛ㄩ噸澶�
+        if (existArchiveId == null) {
+            PatChildArchive mainKey = new PatChildArchive();
+            mainKey.setOrgid(patChildArchiveDetail.getOrgid());
+            mainKey.setPatid(patChildArchiveDetail.getPatid());
+            mainKey.setOuthospno(patChildArchiveDetail.getOuthospno());
+            mainKey.setArchiveType(patChildArchiveDetail.getArchiveType());
+            List<PatChildArchive> mainOlds =
+                    patChildArchiveMapper.selectPatChildArchiveList(mainKey);
+            if (CollectionUtils.isNotEmpty(mainOlds)) {
+                existArchiveId = mainOlds.get(0).getId();
+            }
+        }
+        patChildArchiveDetail.setArchiveid(existArchiveId);
+
+        // 鍚庨潰鏇存柊璇︽儏鏃讹紝浼樺厛鐢ㄤ笟鍔¢敭鍖归厤鍒扮殑 detail id
+        Long detailId = patChildArchiveDetail.getId();
+        if (detailId == null) {
+            detailId = existDetailId;
+        }
+
+
+        // 灏嗚鎯呬腑鐨勫叕鍏卞瓧娈靛鍒跺埌涓昏〃瀵硅薄
+        PatChildArchive patChildArchive = DtoConversionUtils.sourceToTarget(patChildArchiveDetail, PatChildArchive.class);
+        if (patChildArchive == null) {
+            throw new BaseException("鍎跨妗f瀵硅薄杞崲澶辫触锛岃妫�鏌ュ叆鍙�");
+        }
+        // 闃叉鎶婅鎯呰〃id锛坧atChildArchiveDetail.id锛夊綋浣滀富琛╥d锛屼富琛╥d蹇呴』浠rchiveid涓哄噯
+        patChildArchive.setId(patChildArchiveDetail.getArchiveid());
+
+        // 涓昏〃锛氭湁id涓斿簱涓瓨鍦ㄥ垯淇敼锛屽惁鍒欐柊澧�
+        if (patChildArchive.getId() != null
+                && patChildArchiveMapper.selectPatChildArchiveById(patChildArchive.getId()) != null) {
+            patChildArchive.setUpdateTime(DateUtils.getNowDate());
+            patChildArchiveMapper.updatePatChildArchive(patChildArchive);
+        } else {
+            patChildArchive.setCreateTime(DateUtils.getNowDate());
+            if (StringUtils.isEmpty(patChildArchive.getDelFlag())) {
+                patChildArchive.setDelFlag("0");
+            }
+            patChildArchiveMapper.insertPatChildArchive(patChildArchive);
+        }
+
+        // 鍥炲~涓昏〃id鍒拌鎯咃紝鍚屾鐢熸垚/鏇存柊璇︽儏琛�
+        patChildArchiveDetail.setArchiveid(patChildArchive.getId());
+
+//      Long detailId = patChildArchiveDetail.getId();
+        if (detailId == null && patChildArchiveDetail.getArchiveid() != null) {
+            PatChildArchiveDetail query = new PatChildArchiveDetail();
+            query.setArchiveid(patChildArchiveDetail.getArchiveid());
+            List<PatChildArchiveDetail> existList = patChildArchiveDetailService.selectPatChildArchiveDetailList(query);
+            if (CollectionUtils.isNotEmpty(existList)) {
+                detailId = existList.get(0).getId();
+            }
+        }
+
+        if (detailId != null) {
+            patChildArchiveDetail.setId(detailId);
+            patChildArchiveDetailService.updatePatChildArchiveDetail(patChildArchiveDetail);
+        } else {
+            if (StringUtils.isEmpty(patChildArchiveDetail.getDelFlag())) {
+                patChildArchiveDetail.setDelFlag("0");
+            }
+            patChildArchiveDetailService.insertPatChildArchiveDetail(patChildArchiveDetail);
+        }
+
+        log.info("insertOrUpdateChildArchive澶勭悊瀹屾垚锛屼富琛╥d锛歿}锛岃鎯卛d锛歿}", patChildArchive.getId(), patChildArchiveDetail.getId());
+        return patChildArchive.getId().intValue();
+    }
 }

--
Gitblit v1.9.3