吉安感知网项目-后端
linwei
5 days ago ec860211e41595a74ced0b5242ddf835ccf0983d
fix(workorder): 修复线索事件统计中的权限控制逻辑

- 移除Mapper XML中的重复SQL片段gdClueEventDeptWhere
- 在查询语句中直接添加部门过滤条件并支持动态判断
- 修改服务层实现将部门和用户ID初始化移到权限检查之后
- 确保非管理员用户能够正确获取部门和用户信息进行数据过滤
2 files modified
27 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml 20 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/mapper/GdClueEventMapper.xml
@@ -73,11 +73,6 @@
        <result column="completed_count" property="completedCount"/>
    </resultMap>
    <sql id="gdClueEventDeptWhere">
        where ce.is_deleted = 0
        and ce.dispose_dept = #{deptId}
    </sql>
    <resultMap id="gdClueEventExcelResultMap" type="org.sxkj.gd.workorder.excel.GdClueEventExcel">
        <result column="result_id" property="resultId"/>
        <result column="work_order_id" property="workOrderId"/>
@@ -119,7 +114,10 @@
        left join ja_gd_task_result tr on tr.id::VARCHAR = ce.result_id::VARCHAR and tr.is_deleted = 0
        left join blade_user bu on bu.id::VARCHAR = ce.dispose_user::VARCHAR and bu.is_deleted = 0
        left join blade_dept bd on bd.id::VARCHAR = ce.dispose_dept::VARCHAR and bd.is_deleted = 0
        <include refid="gdClueEventDeptWhere"/>
        where ce.is_deleted = 0
        <if test="deptId != null">
            and ce.dispose_dept = #{deptId}
        </if>
        <if test="statusList != null and statusList.size() > 0">
            and ce.event_status in
            <foreach collection="statusList" item="status" open="(" separator="," close=")">
@@ -180,7 +178,10 @@
        left join blade_user cu on cu.id::VARCHAR = ce.create_user::VARCHAR and cu.is_deleted = 0
        left join blade_dept cd on cd.id::VARCHAR = ce.create_dept::VARCHAR and cd.is_deleted = 0
        left join ja_gd_task_result tr on tr.id::VARCHAR = ce.result_id::VARCHAR and tr.is_deleted = 0
        <include refid="gdClueEventDeptWhere"/>
        where ce.is_deleted = 0
        <if test="deptId != null">
            and ce.dispose_dept = #{deptId}
        </if>
        and ce.id = #{id}
    </select>
@@ -191,7 +192,10 @@
        COALESCE(sum(case when ce.event_status = 3 then 1 else 0 end), 0) as disposed_count,
        COALESCE(sum(case when ce.event_status = 4 then 1 else 0 end), 0) as completed_count
        from ja_gd_clue_event ce
        <include refid="gdClueEventDeptWhere"/>
        where ce.is_deleted = 0
        <if test="deptId != null">
            and ce.dispose_dept = #{deptId}
        </if>
        <if test="statusList != null and statusList.size() > 0">
            and ce.event_status in
            <foreach collection="statusList" item="status" open="(" separator="," close=")">
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdClueEventServiceImpl.java
@@ -175,10 +175,9 @@
    @Override
    public GdClueEventCountVO getGdClueEventCount(String keyword) {
        // 1. 获取当前用户部门ID和用户ID
        Long deptId = Long.valueOf(AuthUtil.getDeptId());
        Long userId = AuthUtil.getUserId();
        List<Integer> statusList;
        Long deptId = null;
        Long userId = null;
        // 2. 判断是否为管理员
        boolean isAdmin = AuthUtil.isAdministrator() || AuthUtil.isAdmin();
@@ -186,6 +185,8 @@
            // 管理员:可以查询所有状态
            statusList = java.util.Arrays.asList(0, 1, 2, 3, 4);
        } else {
            deptId = Long.valueOf(AuthUtil.getDeptId());
            userId = AuthUtil.getUserId();
            // 非管理员:排除已退回状态(状态2)
            statusList = java.util.Arrays.asList(0, 1, 3, 4);
        }