wlzboy
2025-11-09 fa5ea853099e88be253fca4fb2b0c2b7af5f396e
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,8 +45,13 @@
      <if test="status != null and status != ''">
         AND status = #{status}
      </if>
      <!-- 数据范围过滤 -->
      ${params.dataScope}
      <if test="serviceOrderClass != null and serviceOrderClass != ''">
         AND service_order_class = #{serviceOrderClass}
      </if>
      <if test="dispatchOrderClass != null and dispatchOrderClass != ''">
         AND dispatch_order_class = #{dispatchOrderClass}
      </if>
      order by d.parent_id, d.order_num
    </select>
    
@@ -60,7 +67,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 +107,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 +122,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 +141,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 +189,37 @@
      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>
   <!-- 根据编码列表查询分公司 -->
   <select id="selectBranchCompaniesByOrderCodes" resultMap="SysDeptResult">
      select dept_id, dept_name, parent_id, ancestors, service_order_class, dispatch_order_class
      from sys_dept
      where parent_id = 100
      and del_flag = '0'
      and (
         <foreach collection="orderCodes" item="code" separator=" or ">
            service_order_class = #{code} or dispatch_order_class = #{code}
         </foreach>
      )
   </select>
</mapper>