yxk-20260529-巡视整改提升台账,任务清单

1、将整改任务列表调整为“问题清单 + 任务清单”的扁平台账。
2、每一行仍代表一条整改任务,补齐展示其所属的问题分类、面上问题、具体问题。
3、相同的问题分类、面上问题、具体问题在表格中使用 rowSpan 合并单元格,形成直观台账。
4、发起流程仍以“整改任务”为粒度,即每条整改措施单独发起流程。
This commit is contained in:
ye1023
2026-05-29 15:33:45 +08:00
parent 064839e178
commit fe005521e6
6 changed files with 232 additions and 1 deletions
@@ -26,6 +26,7 @@ import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress;
import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask;
import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo;
import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskPage;
import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService;
import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectProgressService;
@@ -83,6 +84,24 @@ public class DqInspectTaskController {
IPage<DqInspectTask> pageList = dqInspectTaskService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 整改任务台账:一行一条整改任务,补齐问题分类、面上问题、具体问题。
*
* @param dqInspectTask
* @param pageNo
* @param pageSize
* @return
*/
@Operation(summary="dq_inspect_task-台账分页列表查询")
@GetMapping(value = "/ledgerList")
public Result<IPage<DqInspectTaskLedgerVo>> queryLedgerList(DqInspectTask dqInspectTask,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<DqInspectTaskLedgerVo> page = new Page<DqInspectTaskLedgerVo>(pageNo, pageSize);
IPage<DqInspectTaskLedgerVo> pageList = dqInspectTaskService.queryLedgerPage(page, dqInspectTask);
return Result.OK(pageList);
}
/**
* 添加
@@ -2,9 +2,12 @@ package org.jeecg.modules.demo.dqinspecttask.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo;
/**
* @Description: dq_inspect_task
@@ -14,4 +17,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface DqInspectTaskMapper extends BaseMapper<DqInspectTask> {
/**
* 查询整改任务台账,补齐问题分类、面上问题、具体问题信息。
*
* @param page 分页参数
* @param task 查询条件
* @return 台账分页
*/
IPage<DqInspectTaskLedgerVo> queryLedgerPage(Page<DqInspectTaskLedgerVo> page, @Param("task") DqInspectTask task);
}
@@ -2,4 +2,71 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectTaskMapper">
</mapper>
<select id="queryLedgerPage" resultType="org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo">
select
t.id,
p_category.id as categoryId,
p_category.problem_name as categoryName,
p_surface.id as surfaceId,
p_surface.problem_name as surfaceName,
p_specific.id as specificId,
p_specific.problem_name as specificName,
t.problem_id as problemId,
p_specific.inspect_advice as inspectAdvice,
t.secret_level as secretLevel,
t.improve_measure as improveMeasure,
t.deadline,
t.target_node as targetNode,
t.measure_res_leader as measureResLeader,
t.measure_res_dept as measureResDept,
t.rectification_evidence as rectificationEvidence,
t.evaluation_criterion as evaluationCriterion,
t.is_need_appro as isNeedAppro,
t.sup_deptleaderid as supDeptleaderid,
t.inspection_status as inspectionStatus,
t.supervisory_opinion as supervisoryOpinion,
t.measure_count as measureCount,
t.bpm_process_id as bpmProcessId,
t.bpm_status as bpmStatus,
t.task_status as taskStatus,
t.supervise_count as superviseCount,
t.sort_no as sortNo,
t.create_time as createTime
from dq_inspect_task t
inner join dq_inspect_problem p_specific
on t.problem_id = p_specific.id
and p_specific.node_type = 'specific'
and ifnull(p_specific.del_flag, '0') = '0'
left join dq_inspect_problem p_surface
on p_specific.pid = p_surface.id
and ifnull(p_surface.del_flag, '0') = '0'
left join dq_inspect_problem p_category
on p_surface.pid = p_category.id
and ifnull(p_category.del_flag, '0') = '0'
where ifnull(t.del_flag, '0') = '0'
<if test="task != null">
<if test="task.improveMeasure != null and task.improveMeasure != ''">
and t.improve_measure like concat('%', #{task.improveMeasure}, '%')
</if>
<if test="task.measureResLeader != null and task.measureResLeader != ''">
and t.measure_res_leader = #{task.measureResLeader}
</if>
<if test="task.measureResDept != null and task.measureResDept != ''">
and t.measure_res_dept = #{task.measureResDept}
</if>
<if test="task.problemId != null and task.problemId != ''">
and t.problem_id = #{task.problemId}
</if>
</if>
order by
p_category.sort_no asc,
p_category.create_time asc,
p_surface.sort_no asc,
p_surface.create_time asc,
p_specific.sort_no asc,
p_specific.create_time asc,
t.sort_no asc,
t.create_time asc
</select>
</mapper>
@@ -1,8 +1,11 @@
package org.jeecg.modules.demo.dqinspecttask.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress;
import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
@@ -44,5 +47,14 @@ public interface IDqInspectTaskService extends IService<DqInspectTask> {
* @param idList
*/
public void delBatchMain (Collection<? extends Serializable> idList);
/**
* 查询整改任务台账。
*
* @param page 分页参数
* @param dqInspectTask 查询条件
* @return 台账分页
*/
IPage<DqInspectTaskLedgerVo> queryLedgerPage(Page<DqInspectTaskLedgerVo> page, DqInspectTask dqInspectTask);
}
@@ -9,7 +9,10 @@ import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress;
import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectProgressMapper;
import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectTaskMapper;
import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService;
import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@@ -82,6 +85,11 @@ public class DqInspectTaskServiceImpl extends ServiceImpl<DqInspectTaskMapper, D
}
}
@Override
public IPage<DqInspectTaskLedgerVo> queryLedgerPage(Page<DqInspectTaskLedgerVo> page, DqInspectTask dqInspectTask) {
return dqInspectTaskMapper.queryLedgerPage(page, dqInspectTask);
}
/**
* 整改任务必须挂在问题清单的“具体问题”节点下,避免接口绕过前端产生非法层级数据。
*/
@@ -0,0 +1,113 @@
package org.jeecg.modules.demo.dqinspecttask.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 整改任务台账行:一行对应一条整改任务,同时带出所属的问题层级信息。
*/
@Data
@Schema(description = "整改任务台账")
public class DqInspectTaskLedgerVo implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "任务ID")
private String id;
@Schema(description = "问题分类ID")
private String categoryId;
@Schema(description = "问题分类")
private String categoryName;
@Schema(description = "面上问题ID")
private String surfaceId;
@Schema(description = "面上问题")
private String surfaceName;
@Schema(description = "具体问题ID")
private String specificId;
@Schema(description = "具体问题")
private String specificName;
@Schema(description = "具体问题ID")
private String problemId;
@Schema(description = "巡视建议")
private String inspectAdvice;
@Dict(dicCode = "secret_level")
@Schema(description = "密级")
private String secretLevel;
@Schema(description = "整改措施")
private String improveMeasure;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(description = "完成时限")
private Date deadline;
@Schema(description = "目标节点")
private String targetNode;
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "措施责任领导")
private String measureResLeader;
@Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id")
@Schema(description = "措施责任部门")
private String measureResDept;
@Schema(description = "整改交付成果")
private String rectificationEvidence;
@Schema(description = "成效评价标准")
private String evaluationCriterion;
@Dict(dicCode = "yn")
@Schema(description = "是否需要党群领导审批")
private String isNeedAppro;
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "党群领导")
private String supDeptleaderid;
@Schema(description = "检查情况")
private String inspectionStatus;
@Schema(description = "监督意见")
private String supervisoryOpinion;
@Schema(description = "措施数量")
private Integer measureCount;
@Schema(description = "流程实例ID")
private String bpmProcessId;
@Dict(dicCode = "super_status")
@Schema(description = "流程状态")
private String bpmStatus;
@Schema(description = "整改状态")
private String taskStatus;
@Schema(description = "督办次数")
private String superviseCount;
@Schema(description = "排序")
private Integer sortNo;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间")
private Date createTime;
}