wlzboy
2025-10-26 91b4d899403587e6982c6f76674307cd5612b17b
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -17,6 +17,8 @@
      <result property="delFlag"    column="del_flag"    />
      <result property="parentName" column="parent_name" />
      <result property="departmentId" column="department_id" />
      <result property="serviceOrderClass" column="service_order_class" />
      <result property="dispatchOrderClass" column="dispatch_order_class" />
      <result property="createBy"   column="create_by"   />
      <result property="createTime" column="create_time" />
      <result property="updateBy"   column="update_by"   />
@@ -24,7 +26,7 @@
   </resultMap>
   
   <sql id="selectDeptVo">
        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.department_id, d.create_by, d.create_time
        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.department_id, d.service_order_class, d.dispatch_order_class, d.create_by, d.create_time
        from sys_dept d
    </sql>
    
@@ -43,6 +45,12 @@
      <if test="status != null and status != ''">
         AND status = #{status}
      </if>
      <if test="serviceOrderClass != null and serviceOrderClass != ''">
         AND service_order_class = #{serviceOrderClass}
      </if>
      <if test="dispatchOrderClass != null and dispatchOrderClass != ''">
         AND dispatch_order_class = #{dispatchOrderClass}
      </if>
      <!-- 数据范围过滤 -->
      ${params.dataScope}
      order by d.parent_id, d.order_num
@@ -60,7 +68,7 @@
   </select>
    
    <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
      select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.department_id,
      select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.department_id, d.service_order_class, d.dispatch_order_class,
         (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
      from sys_dept d
      where d.dept_id = #{deptId}
@@ -100,6 +108,8 @@
          <if test="email != null and email != ''">email,</if>
          <if test="status != null">status,</if>
          <if test="departmentId != null">department_id,</if>
          <if test="serviceOrderClass != null and serviceOrderClass != ''">service_order_class,</if>
          <if test="dispatchOrderClass != null and dispatchOrderClass != ''">dispatch_order_class,</if>
          <if test="createBy != null and createBy != ''">create_by,</if>
          create_time
       )values(
@@ -113,6 +123,8 @@
          <if test="email != null and email != ''">#{email},</if>
          <if test="status != null">#{status},</if>
          <if test="departmentId != null">#{departmentId},</if>
          <if test="serviceOrderClass != null and serviceOrderClass != ''">#{serviceOrderClass},</if>
          <if test="dispatchOrderClass != null and dispatchOrderClass != ''">#{dispatchOrderClass},</if>
          <if test="createBy != null and createBy != ''">#{createBy},</if>
          sysdate()
       )
@@ -130,6 +142,8 @@
          <if test="email != null">email = #{email},</if>
          <if test="status != null and status != ''">status = #{status},</if>
          <if test="departmentId != null">department_id = #{departmentId},</if>
          <if test="serviceOrderClass != null">service_order_class = #{serviceOrderClass},</if>
          <if test="dispatchOrderClass != null">dispatch_order_class = #{dispatchOrderClass},</if>
          <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
          update_time = sysdate()
       </set>
@@ -176,4 +190,24 @@
      limit 1
   </select>
   <!-- 获取指定部门ID的分公司ID(parent_id=100的部门) -->
   <select id="selectBranchCompanyIdByDeptId" parameterType="Long" resultType="Long">
      select case
         -- 如果传入的就是分公司(parent_id=100),直接返回
         when exists(select 1 from sys_dept where dept_id = #{deptId} and parent_id = 100 and del_flag = '0')
         then #{deptId}
         else (
            -- 否则从 ancestors 中查找分公司ID
            select d.dept_id
            from sys_dept d
            where d.parent_id = 100
            and d.del_flag = '0'
            and FIND_IN_SET(d.dept_id, (
               select ancestors from sys_dept where dept_id = #{deptId} and del_flag = '0'
            ))
            limit 1
         )
      end
   </select>
</mapper>