From ac2e836f65cf291bb3c94746df7467d99d546791 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 29 一月 2026 15:51:19 +0800
Subject: [PATCH] 【市一】用户、院区同步逻辑修改

---
 ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml                  |   30 +++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java    |    4 
 smartor/src/main/java/com/smartor/domain/SysUserOrg.java                            |    2 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java |   43 ++++++++++----
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java            |    8 ++
 smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml                     |   40 +++++++++++++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java         |   16 -----
 smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java                     |    2 
 smartor/src/main/resources/mapper/smartor/SysUserMapper.xml                         |   20 +++++-
 9 files changed, 129 insertions(+), 36 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index feb1aa4..b59dcb3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -256,22 +256,6 @@
     private List<Map<String, Object>> belongDepts = new ArrayList();
 
 
-    public String getCampusid() {
-        return campusid;
-    }
-
-    public void setCampusid(String campusid) {
-        this.campusid = campusid;
-    }
-
-    /**
-     * 鏈烘瀯ID
-     */
-    @ApiModelProperty("闄㈠尯")
-    @Excel(name = " 闄㈠尯 ")
-    private String campusid;
-
-
     public SysUser() {
 
     }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
index 2e07928..c687dcc 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
@@ -45,6 +45,14 @@
     public List<SysUserDept> yhyksxx(SysUser sysUser);
 
     /**
+     * 鐢ㄦ埛涓庣梾鎴夸俊鎭�
+     *
+     * @param sysUser
+     * @return
+     */
+    public List<SysUserDept> yhybfxx(SysUser sysUser);
+
+    /**
      * 鐢ㄦ埛涓庨櫌鍖轰俊鎭�
      *
      * @param sysUser
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index c0c38f9..1e4ae1b 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -445,44 +445,63 @@
     public Integer selectUserList(SysUser sysUser) {
         List<SysUser> sysUserList = chMapper.selectUserList(sysUser);
         SysUser suerTemp = new SysUser();
+        //鐢ㄦ埛-鏈烘瀯鍏崇郴-绉戝
         List<SysUserDept> sysUserDeptAll = chMapper.yhyksxx(suerTemp);
+        //鐢ㄦ埛-鏈烘瀯鍏崇郴-鐥呮埧
+        List<SysUserDept> sysUserDeptBfAll = chMapper.yhybfxx(suerTemp);
         //鐢ㄦ埛-闄㈠尯鍏崇郴
         List<SysUserOrg> sysUserOrgAll = chMapper.yhyyqxx(suerTemp);
 
         log.info("sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysUserList.size());
         int i = 0;// sysUser2Mapper.batchUser(sysUserList);
         for (SysUser sysUser1 : sysUserList) {
-//            log.info("sysUser1鐨処D涓猴細{}", sysUser1.getUserId());
-//            log.info("sysUser1鐨凥ISUSERID涓猴細{}", sysUser1.getHisUserId());
             if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;
             SysUser suTemp = new SysUser();
             suTemp.setHisUserId(sysUser1.getHisUserId());
             List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);
+
+            //鏂板鐢ㄦ埛涓庣瀹�
+            List<SysUserDept> sysUserDept = sysUserDeptAll.stream().filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId())).collect(Collectors.toList());
+            //鏂板鐢ㄦ埛涓庣梾鍖�
+            List<SysUserDept> sysUserDeptBf = sysUserDeptBfAll.stream().filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId())).collect(Collectors.toList());
+            //鏂板鐢ㄦ埛涓庨櫌鍖�
+            List<SysUserOrg> sysUserOrg = sysUserOrgAll.stream().filter((SysUserOrg o) -> o.getUserId().equals(sysUser1.getHisUserId())).collect(Collectors.toList());
             if (usersTemp.size() > 0) {
                 sysUser1.setUserId(usersTemp.get(0).getUserId());
                 sysUser1.setUserName(sysUser1.getHisUserId());
+                //瀵瑰簲 SysUserServiceImpl selectUserByUserName2 191琛�
+                if (!org.springframework.util.CollectionUtils.isEmpty(sysUserOrg)) {
+                    sysUser1.setOrgid(sysUserOrg.get(0).getOrgid());
+                    sysUser1.setCampusid(sysUserOrg.get(0).getCampusid());
+                }
                 sysUser2Mapper.updateUser(sysUser1);
             } else {
                 sysUser1.setUserName(sysUser1.getHisUserId());
                 sysUser2Mapper.insertUser(sysUser1);
+                //瀵瑰簲 SysUserServiceImpl selectUserByUserName2 191琛�
+                if (!org.springframework.util.CollectionUtils.isEmpty(sysUserOrg)) {
+                    sysUser1.setOrgid(sysUserOrg.get(0).getOrgid());
+                    sysUser1.setCampusid(sysUserOrg.get(0).getCampusid());
+                }
                 usersTemp = sysUser2Mapper.selectUserList(suTemp);
             }
-
-            //鏂板鐢ㄦ埛涓庨儴闂�
-            //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);
-            List<SysUserDept> sysUserDept = sysUserDeptAll.stream().filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId())).collect(Collectors.toList());
-
             for (SysUserDept sud : sysUserDept) {
-                if (usersTemp.size() > 0) {
+                if (!usersTemp.isEmpty()) {
+                    sud.setDeptType("1");
                     sud.setUserId(usersTemp.get(0).getUserId());
                     sysUserDeptMapper.insertSysUserDept(sud);
                 }
             }
-            //鏂板鐢ㄦ埛涓庨櫌鍖�
-            List<SysUserOrg> sysUserOrg = sysUserOrgAll.stream().filter((SysUserOrg o) -> o.getUserId().equals(sysUser1.getHisUserId())).collect(Collectors.toList());
+            for (SysUserDept sudb : sysUserDeptBf) {
+                if (!usersTemp.isEmpty()) {
+                    sudb.setDeptType("2");
+                    sudb.setUserId(usersTemp.get(0).getUserId());
+                    sysUserDeptMapper.insertSysUserDept(sudb);
+                }
+            }
             for (SysUserOrg suo : sysUserOrg) {
-                if (usersTemp.size() > 0) {
-                    suo.setUserId(usersTemp.get(0).getUserId());
+                if (!usersTemp.isEmpty()) {
+                    suo.setUserId(usersTemp.get(0).getUserId().toString());
                     sysUserOrgMapper.insertSysUserOrg(suo);
                 }
             }
diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
index dd3ebe6..ded67a3 100644
--- a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
+++ b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
@@ -391,10 +391,20 @@
         <if test="hisUserId != null ">and user_id = #{hisUserId}</if>
     </select>
 
+    <select id="yhybfxx" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserDeptResult">
+        select user_id , user_code , dept_type ,dept_code,dept_name,deptparent,del_flag,orgid
+        FROM healthy_user_dept_bf
+        where 1=1
+        and user_id != 'admin'
+        <if test="orgid != null and orgid != ''">
+            AND orgid = #{orgid}
+        </if>
+        <if test="hisUserId != null ">and user_id = #{hisUserId}</if>
+    </select>
+
     <select id="yhyyqxx" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserOrgResult">
         select
             d.orgid as campusid,
-            d.del_flag,
             ud.user_id as user_id,
             ud.orgid as orgid
         FROM healthy_dept d
@@ -410,6 +420,24 @@
         <if test="campusid != null">
             AND d.orgid = #{campusid}
         </if>
+        union all
+        select
+        d.orgid as campusid,
+        udb.user_id as user_id,
+        udb.orgid as orgid
+        FROM healthy_dept d
+        JOIN healthy_user_dept_bf udb ON d.his_dept_id = udb.dept_code
+        where 1=1
+        and udb.user_id != 'admin'
+        <if test="orgid != null and orgid != ''">
+            AND udb.orgid = #{orgid}
+        </if>
+        <if test="hisUserId != null ">
+            AND udb.user_id = #{hisUserId}
+        </if>
+        <if test="campusid != null">
+            AND d.orgid = #{campusid}
+        </if>
     </select>
 
     <select id="selectPatArchiveList" parameterType="com.smartor.domain.PatArchive" resultMap="PatArchiveResult">
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 70e4423..0a9d673 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -182,7 +182,7 @@
 
         //鑾峰彇褰撳墠鐧婚檰浜虹殑鏈烘瀯鍜岄櫌鍖�
         SysUserOrg sysUserOrg = new SysUserOrg();
-        sysUserOrg.setUserId(sysUser.getUserId());
+        sysUserOrg.setUserId(sysUser.getUserId().toString());
         sysUserOrg.setOrgid(split[1].equals("null") ? "" : split[1]);
         sysUserOrg.setCampusid(split[2].equals("null") ? "" : split[2]);
         List<SysUserOrg> sysUserOrgs = sysUserOrgMapper.selectSysUserOrgList(sysUserOrg);
@@ -302,7 +302,7 @@
 
         //鑾峰彇褰撳墠鐧婚檰浜虹殑鏈烘瀯鍜岄櫌鍖�
         SysUserOrg sysUserOrg = new SysUserOrg();
-        sysUserOrg.setUserId(sysUser.getUserId());
+        sysUserOrg.setUserId(sysUser.getUserId().toString());
         sysUserOrg.setOrgid(split[1].equals("null") ? "" : split[1]);
         sysUserOrg.setCampusid(split[3].equals("null") ? "" : split[3]);
         List<SysUserOrg> sysUserOrgs = sysUserOrgMapper.selectSysUserOrgList(sysUserOrg);
diff --git a/smartor/src/main/java/com/smartor/domain/SysUserOrg.java b/smartor/src/main/java/com/smartor/domain/SysUserOrg.java
index 5d44213..09eeff8 100644
--- a/smartor/src/main/java/com/smartor/domain/SysUserOrg.java
+++ b/smartor/src/main/java/com/smartor/domain/SysUserOrg.java
@@ -26,7 +26,7 @@
     /** 鐢ㄦ埛ID */
     @ApiModelProperty("鐢ㄦ埛ID")
             @Excel(name = "鐢ㄦ埛ID")
-    private Long userId;
+    private String userId;
 
     /** 闄㈠尯ID */
     @ApiModelProperty("闄㈠尯ID")
diff --git a/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java b/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java
index b104da1..9b04895 100644
--- a/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java
@@ -71,4 +71,6 @@
     public int deleteSysUserDeptByIds(Long[] ids);
 
     public int deleteSysUserDeptByCode(SysUserDept sysUserDept);
+
+    public int updateSysUserDeptForSync(SysUserDept sysUserDept);
 }
diff --git a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
index ca6fd04..915cf2c 100644
--- a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
@@ -237,5 +237,43 @@
         where user_id =#{userId} and dept_code=#{deptCode}
     </update>
 
-
+    <update id="updateSysUserDeptForSync" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept">
+        update sys_user_dept
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="deptId != null">dept_id =
+                #{deptId},
+            </if>
+            <if test="delFlag != null ">
+                del_flag = #{delFlag},
+            </if>
+            <if test="createTime != null ">
+                create_time = #{createTime},
+            </if>
+            <if test="updateTime != null ">
+                update_time = #{updateTime},
+            </if>
+            <if test="deptType != null ">
+                dept_type = #{deptType},
+            </if>
+            <if test="deptCode != null ">
+                dept_code = #{deptCode},
+            </if>
+            <if test="deptName != null ">
+                dept_name = #{deptName},
+            </if>
+            <if test="orgid != null ">
+                orgid = #{orgid},
+            </if>
+            <if test="campusid != null ">
+                campusid = #{campusid},
+            </if>
+        </trim>
+        where user_id =#{userId}
+        <if test="orgid != null and orgid != ''">
+            and orgid = #{orgid}
+        </if>
+        <if test="campusid != null and campusid != ''">
+            and campusid = #{campusid}
+        </if>
+    </update>
 </mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
index 4ebdb2f..428a18a 100644
--- a/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SysUserMapper.xml
@@ -34,6 +34,8 @@
         <result property="userType" column="user_type"/>
         <result property="searchscope" column="searchscope"/>
         <result property="guid" column="guid"/>
+        <result property="orgid" column="orgid"/>
+        <result property="campusid" column="campusid"/>
         <association property="dept" column="dept_id" javaType="com.ruoyi.common.core.domain.entity.SysDept"
                      resultMap="deptResult"/>
         <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
@@ -86,6 +88,8 @@
                u.create_time,
                u.remark,
                u.guid,
+               u.orgid,
+               u.campusid,
                d.dept_id,
                d.parent_id,
                d.ancestors,
@@ -115,8 +119,10 @@
         u.birthday,
         u.job_phone,
         u.phonenumber, u.sex, u.status,
-        u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user
-        u
+        u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+        u.orgid, u.campusid,
+        d.dept_name, d.leader
+        from sys_user u
         left join sys_dept d on u.dept_id = d.dept_id
         where u.del_flag = '0'
         <if test="userId != null and userId != 0">
@@ -282,6 +288,8 @@
         <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>
+        <if test="orgid != null and orgid != ''">orgid,</if>
+        <if test="campusid != null and campusid != ''">campusid,</if>
         create_time
         )values(
         <if test="userId != null and userId != ''">#{userId},</if>
@@ -309,6 +317,8 @@
         <if test="deptCode != null and deptCode != ''">#{deptCode},</if>
         <if test="deptName != null and deptName != ''">#{deptName},</if>
         <if test="userCode != null and userCode != ''">#{userCode},</if>
+        <if test="orgid != null and orgid != ''">#{orgid},</if>
+        <if test="campusid != null and campusid != ''">#{campusid},</if>
         sysdate()
         )
     </insert>
@@ -318,7 +328,7 @@
         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,
-        user_code,
+        user_code, orgid, campusid,
         create_time
         ) values
         <foreach collection="list" item="item" separator=",">
@@ -346,6 +356,8 @@
             #{item.hisUserId},
             #{item.guid},
             #{item.userCode},
+            #{item.orgid},
+            #{item.campusid},
             now()
             )
         </foreach>
@@ -381,6 +393,8 @@
             <if test="hisUserId != null and hisUserId != ''">
                 his_user_id = #{hisUserId},
             </if>
+            <if test="orgid != null and orgid != ''">orgid = #{orgid},</if>
+            <if test="campusid != null and campusid != ''">campusid = #{campusid},</if>
             update_time = sysdate()
         </set>
         where user_id = #{userId}

--
Gitblit v1.9.3