From e64ef739c4cf4484c19f8da31773dd0e4611428a Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期五, 23 十月 2026 09:14:37 +0800
Subject: [PATCH] 献器官分配解决前端ID未传重复数据

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java
index 4c43028..2d41255 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java
@@ -1,10 +1,16 @@
 package com.ruoyi.project.service.impl;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.project.domain.ServiceDonateorgan;
+import com.ruoyi.project.domain.vo.ServiceDonateorganBaseVO;
 import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
 import com.ruoyi.project.domain.vo.DonateorganBaseInfoVO;
 import com.ruoyi.project.mapper.ServiceDonateorganMapper;
@@ -13,9 +19,6 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import java.util.ArrayList;
-import java.util.Map;
 
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.mapper.ServiceDonateorganBaseMapper;
@@ -127,4 +130,53 @@
         return this.list(wrappers);
     }
 
+    @Override
+    public long add(ServiceDonateorganBaseVO serviceDonateorganBaseVO) {
+        ServiceDonateorganBase serviceDonateorganBase = DtoConversionUtils.sourceToTarget(serviceDonateorganBaseVO, ServiceDonateorganBase.class);
+        boolean save = false;
+        if (ObjectUtils.isNotEmpty(serviceDonateorganBase)) {
+            save = save(serviceDonateorganBase);
+            if (save == true && CollectionUtils.isNotEmpty(serviceDonateorganBaseVO.getServiceDonateorganList())) {
+                for (ServiceDonateorgan serviceDonateorgan : serviceDonateorganBaseVO.getServiceDonateorganList()) {
+                    serviceDonateorgan.setBaseId(serviceDonateorganBase.getId());
+                    serviceDonateorganMapper.insert(serviceDonateorgan);
+                }
+            }
+        }
+
+        return serviceDonateorganBase.getId();
+    }
+
+    @Override
+    public Boolean updateByParam(ServiceDonateorganBaseVO serviceDonateorganBaseVO) {
+        ServiceDonateorganBase serviceDonateorganBase = DtoConversionUtils.sourceToTarget(serviceDonateorganBaseVO, ServiceDonateorganBase.class);
+        boolean b = false;
+        if (ObjectUtils.isNotEmpty(serviceDonateorganBase)) {
+            b = updateById(serviceDonateorganBase);
+            if (b == true && CollectionUtils.isNotEmpty(serviceDonateorganBaseVO.getServiceDonateorganList())) {
+                Map<String,Object> query=new HashMap<>();
+                query.put("InfoID",serviceDonateorganBaseVO.getInfoid());
+                List<ServiceDonateorgan> lists= serviceDonateorganMapper.selectByMap(query);
+                for (ServiceDonateorgan serviceDonateorgan : serviceDonateorganBaseVO.getServiceDonateorganList()) {
+                    List<ServiceDonateorgan> temps=lists.stream().filter(row->row.getOrganno()==serviceDonateorgan.getOrganno())
+                            .collect(Collectors.toList());
+                    if(temps.size()>0&&ObjectUtils.isEmpty(serviceDonateorgan.getId())){
+                        serviceDonateorgan.setId(temps.get(0).getId());
+                    }
+                    if(ObjectUtils.isNotEmpty(serviceDonateorgan.getId()) ) {
+                        if(ObjectUtils.isNotEmpty(serviceDonateorgan.getDelFlag())&&serviceDonateorgan.getDelFlag()==1 ) {
+                            serviceDonateorganMapper.deleteById(serviceDonateorgan.getId());
+                        }else {
+                            serviceDonateorganMapper.updateById(serviceDonateorgan);
+                        }
+                    }else {
+                        serviceDonateorgan.setBaseId(serviceDonateorganBase.getId());
+                        serviceDonateorganMapper.insert(serviceDonateorgan);
+                    }
+                }
+            }
+        }
+        return b;
+    }
+
 }

--
Gitblit v1.9.3