From 60f25c11afcff593ff56ccb7a52d9bd4714e30c4 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 23 九月 2025 20:17:01 +0800
Subject: [PATCH] 处理因重复数据,导致的数据问题

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |   28 ++++++++++++++++++++++++++--
 smartor/src/main/resources/mapper/smartor/SysUserMapper.xml                    |   18 +++++++++++++-----
 2 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index 178feb8..603b80f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -138,8 +138,12 @@
         sysUser.setUserName(externalUserInfo.getYongHuDLM());
         sysUser.setOrgid(externalUserInfo.getZuZhiJGID());
         //鏍规嵁userName鍒ゆ柇涓�涓嬶紝鏄笉鏄箣鍓嶆湁鏂板
-        SysUser sysUser1 = sysUserMapper.selectUserByUserName(externalUserInfo.getYongHuDLM());
-
+        SysUser sysUser1 = null;
+        List<SysUser> sysUserList = sysUserMapper.selectUserList(sysUser);
+        if (CollectionUtils.isNotEmpty(sysUserList)) {
+            sysUser1 = sysUserList.get(0);
+            if (sysUserList.size() > 1) sysUser1 = getUser(sysUserList);
+        }
         sysUser.setGuid(externalUserInfo.getZuZhiJGID());
         sysUser.setNickName(externalUserInfo.getYongHuXM());
         sysUser.setUserType("");
@@ -173,6 +177,26 @@
     }
 
 
+    private SysUser getUser(List<SysUser> sysUserList) {
+        SysUser sysUser = null;
+        if (CollectionUtils.isNotEmpty(sysUserList) && sysUserList.size() > 1) {
+            // 鎸塩reate_time闄嶅簭鎺掑簭锛岃幏鍙栨渶鏂扮殑璁板綍
+            List<SysUser> sortedList = sysUserList.stream().sorted(Comparator.comparing(SysUser::getCreateTime).reversed()).collect(Collectors.toList());
+
+            // 绗竴鏉★紙鏈�鏂扮殑锛夎祴鍊肩粰sysUser1
+            sysUser = sortedList.get(0);
+
+            // 鑾峰彇闇�瑕佸垹闄ょ殑ID锛堜粠绗簩鏉″紑濮嬶級
+            List<Long> idsToDelete = sortedList.stream().skip(1).map(SysUser::getUserId).collect(Collectors.toList());
+            Long[] idArray = idsToDelete.toArray(new Long[0]);
+            // 鎵归噺鍒犻櫎鍏朵粬璁板綍
+            if (!idsToDelete.isEmpty()) {
+                sysUserMapper.deleteUserByIds(idArray);
+            }
+        }
+        return sysUser;
+    }
+
     @Override
     public Boolean addOrganInfo(Map dataMap) {
         log.info("ServiceExternalServiceImpl---addOrganInfo鐨勬柊澧炵殑鍊间负锛歿}", dataMap);
diff --git a/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
index 61c5238..2725d6c 100644
--- a/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
@@ -9,6 +9,7 @@
         <id property="orgid" column="orgid"/>
         <id property="hisUserId" column="his_user_id"/>
         <result property="deptId" column="dept_id"/>
+        <result property="userCode" column="user_code"/>
         <result property="hospInfo" column="hosp_info"/>
         <result property="deptInfo" column="dept_info"/>
         <result property="userName" column="user_name"/>
@@ -61,6 +62,7 @@
     <sql id="selectUserVo">
         select u.user_id,
                u.dept_id,
+               u.user_code,
                u.id_card,
                u.hosp_info,
                u.dept_info,
@@ -106,7 +108,8 @@
     </sql>
 
     <select id="selectUserList" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserResult">
-        select u.user_id,u.title,u.his_user_id,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_type,
+        select u.user_code,u.user_id,u.title,u.his_user_id,u.hosp_info,u.dept_info, u.searchscope, u.dept_id,
+        u.user_type,
         u.nick_name, u.user_name,
         u.email,u.id_card,
         u.avatar,
@@ -165,7 +168,7 @@
     <select id="selectAllocatedList" parameterType="com.ruoyi.common.core.domain.entity.SysUser"
             resultMap="SysUserResult">
         select distinct u.user_id,u.his_user_id,u.title,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_name,
-        u.user_type,
+        u.user_type,u.user_code,
         u.nick_name,
         u.email,
         u.birthday,
@@ -198,6 +201,7 @@
             resultMap="SysUserResult">
         select distinct u.user_id, u.dept_id, u.hosp_info, u.dept_info,u.searchscope, u.user_name, u.user_type,
         u.nick_name,
+        u.user_code,
         u.email,
         u.his_user_id,
         u.title,
@@ -282,6 +286,7 @@
         <if test="orgid != null and orgid != ''">orgid,</if>
         <if test="deptCode != null and deptCode != ''">dept_code,</if>
         <if test="deptName != null and deptName != ''">dept_name,</if>
+        <if test="userCode != null and userCode != ''">user_code,</if>
         create_time
         )values(
         <if test="userId != null and userId != ''">#{userId},</if>
@@ -309,6 +314,7 @@
         <if test="orgid != null and orgid != ''">#{orgid},</if>
         <if test="deptCode != null and deptCode != ''">#{deptCode},</if>
         <if test="deptName != null and deptName != ''">#{deptName},</if>
+        <if test="userCode != null and userCode != ''">#{userCode},</if>
         sysdate()
         )
     </insert>
@@ -317,7 +323,7 @@
     <insert id="batchUser" useGeneratedKeys="true" keyProperty="userId">
         insert into sys_user(
         user_id, dept_id, user_name, nick_name, email, avatar, phonenumber, sex, password, status, create_by, remark,
-        user_type, dept_info, hosp_info, searchscope, id_card, title, job_phone, birthday, his_user_id, guid, orgid,
+        user_type, dept_info, hosp_info, searchscope, id_card, title, job_phone, birthday, his_user_id, guid, orgid,user_code,
         create_time
         ) values
         <foreach collection="list" item="item" separator=",">
@@ -345,6 +351,7 @@
             #{item.hisUserId},
             #{item.guid},
             #{item.orgid},
+            #{item.userCode},
             now()
             )
         </foreach>
@@ -374,6 +381,7 @@
             <if test="jobPhone != null and jobPhone != ''">job_phone=#{jobPhone},</if>
             <if test="birthday != null ">birthday=#{birthday},</if>
             <if test="orgid != null ">orgid=#{orgid},</if>
+            <if test="userCode != null ">user_code=#{userCode},</if>
             <if test="title != null and title != ''">
                 title = #{title},
             </if>
@@ -400,12 +408,12 @@
 
     <delete id="deleteUserById" parameterType="Long">
         update sys_user
-        set del_flag = '2'
+        set del_flag = '1'
         where user_id = #{userId}
     </delete>
 
     <delete id="deleteUserByIds" parameterType="Long">
-        update sys_user set del_flag = '2' where user_id in
+        update sys_user set del_flag = '1' where user_id in
         <foreach collection="array" item="userId" open="(" separator="," close=")">
             #{userId}
         </foreach>

--
Gitblit v1.9.3