Browse Source

feat:审计质量评价列表重构

master
buaixuexideshitongxue 3 weeks ago
parent
commit
10ee3c9726
  1. 183
      src/main/java/com/biutag/supervision/controller/warning/WarningController.java
  2. 3
      src/main/java/com/biutag/supervision/pojo/vo/entryWindow/EntryWindowVo.java

183
src/main/java/com/biutag/supervision/controller/warning/WarningController.java

@ -56,79 +56,15 @@ public class WarningController {
//预警督察列表 //预警督察列表
@PostMapping("/getPage") @PostMapping("/getPage")
public Result<Page<EntryWindowVo>> getPage(@RequestBody WarningQueryParam queryParam){ public Result<Page<EntryWindowVo>> getPage(@RequestBody WarningQueryParam queryParam) {
UserAuth user = UserContextHolder.getCurrentUser(); UserAuth user = UserContextHolder.getCurrentUser();
QueryWrapper<ReportProject> wrapper= new QueryWrapper<ReportProject>() QueryWrapper<ReportProject> wrapper = buildWarningWrapper(queryParam, user);
.like(StrUtil.isNotBlank(queryParam.getReportName()),"p.report_name",queryParam.getReportName()) Page<EntryWindowVo> page = reportProjectService.getPageWarning(
.eq("f.report_link","end") new Page<>(queryParam.getCurrent(), queryParam.getSize()), wrapper, queryParam.getWarningState());
.eq("f.approver_state","end")
.eq(StrUtil.isNotBlank(queryParam.getWarningState()),"p.warning_state",queryParam.getWarningState()) page.getRecords().forEach(this::fillProjectData);
.eq("p.node",FlowStateEnum.End.getLabel()) sortByLastWarningTime(page.getRecords());
.eq("p.delete_flag", DeleteStatusEnum.NO.getCode());
if ("cwlnt".equals(queryParam.getSpecialArea())) {
wrapper.in("p.audit_unit_id", departService.getAllNodeIds(CWLN));
}
if (StrUtil.isNotBlank(queryParam.getAuditUnitId())) {
// 获取选择的审计单位及其所有子部门的ID
wrapper.in("p.audit_unit_id", departService.getAllNodeIds(queryParam.getAuditUnitId()));
}
if (StrUtil.isNotBlank(queryParam.getProjectUnitId())){
wrapper.in("p.project_unit_id", departService.getAllNodeIds(queryParam.getProjectUnitId()));
}
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && !user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode())) {
List<String> orgIds =new ArrayList<>();
if(!user.getAuthDepartIds().isEmpty()){
orgIds = departService.getAllNodeIds(user.getAuthDepartIds());
wrapper.in("p.project_unit_id", orgIds);
}else{
orgIds = departService.getAllNodeIds(user.getDepartId());
wrapper.in("p.project_unit_id", orgIds);
}
// List<String> orgIds = departService.getAllNodeIds(user.getAuthDepartIds());
// wrapper.in("p.project_unit_id", orgIds);
}
if(CollectionUtil.isNotEmpty(queryParam.getPublicationDate())){
wrapper.between(CollectionUtil.isNotEmpty(queryParam.getPublicationDate()),"p.publication_date",queryParam.getPublicationDate().get(0),queryParam.getPublicationDate().get(1));
}
if(CollectionUtil.isNotEmpty(queryParam.getEndDate())){
wrapper.between(CollectionUtil.isNotEmpty(queryParam.getEndDate()),"p.archiving",queryParam.getEndDate().get(0),queryParam.getEndDate().get(1));
}
wrapper.orderByAsc("p.warning_state");
wrapper.groupBy("p.id");
Page<EntryWindowVo> page= reportProjectService.getPageWarning(new Page<>(queryParam.getCurrent(),queryParam.getSize()),wrapper,queryParam.getWarningState());
List<EntryWindowVo> entryWindowVos = page.getRecords();
entryWindowVos.forEach(s->{
List<WarningRecord> list = recordService.list(new LambdaQueryWrapper<WarningRecord>().eq(WarningRecord::getReportId,s.getId()));
if(CollectionUtil.isNotEmpty(list)) {
//1的代表已下发问题
List<WarningRecord> records= list.stream().filter(x-> "1".equals(x.getFlowState())).toList();
// 为空表示已提交审核
// List<WarningRecord> auditNumber= list.stream().filter(x-> StrUtil.isEmpty(x.getFlowState())).toList();
//1 为 已下发问题 ,2 为已提交审核,0为常规
// String stateData = CollectionUtil.isNotEmpty(records)?"1":(CollectionUtil.isNotEmpty(auditNumber)?"2":"0");
String stateData = !records.isEmpty()? "1": "0";
s.setStateData(stateData);
List<String> ids = list.stream().map(x -> x.getId()).toList();
long counts = contentService.count(new LambdaQueryWrapper<WarningContent>().in(WarningContent::getWarningId, ids)
.isNotNull(WarningContent::getRemark));
s.setWarningContent(counts);
}
SupDepart auditById = departService.getById(s.getAuditUnitId());
SupDepart projectById = departService.getById(s.getProjectUnitId());
if (3==(auditById.getLevel())){
SupDepart byPId = departService.getById(auditById.getPid());
s.setAuditUnitStr(byPId.getShortName() +"/" + auditById.getShortName());
}else {
s.setAuditUnitStr(auditById.getShortName() +"/");
}
if (3==projectById.getLevel()){
SupDepart byPId = departService.getById(projectById.getPid());
s.setProjectUnitStr(byPId.getShortName() +"/" + projectById.getShortName());
}else {
s.setProjectUnitStr(projectById.getShortName() +"/");
}
});
page.setRecords(entryWindowVos);
return Result.success(page); return Result.success(page);
} }
/** /**
@ -255,4 +191,107 @@ public class WarningController {
} }
// ==================== 私有方法 ====================
/**
* 构建查询条件
*/
private QueryWrapper<ReportProject> buildWarningWrapper(WarningQueryParam queryParam, UserAuth user) {
QueryWrapper<ReportProject> wrapper = new QueryWrapper<ReportProject>()
.like(StrUtil.isNotBlank(queryParam.getReportName()), "p.report_name", queryParam.getReportName())
.eq("f.report_link", "end")
.eq("f.approver_state", "end")
.eq(StrUtil.isNotBlank(queryParam.getWarningState()), "p.warning_state", queryParam.getWarningState())
.eq("p.node", FlowStateEnum.End.getLabel())
.eq("p.delete_flag", DeleteStatusEnum.NO.getCode());
// 长望浏宁Tab
if ("cwlnt".equals(queryParam.getSpecialArea())) {
wrapper.in("p.audit_unit_id", departService.getAllNodeIds(CWLN));
} else {
// 排除督审支队和长望浏宁
List<String> excludeOrgIds = new ArrayList<>(departService.getAllNodeIds(AppConstants.DSZD));
excludeOrgIds.addAll(departService.getAllNodeIds(AppConstants.CWLN));
wrapper.notIn("p.audit_unit_id", excludeOrgIds);
}
// 审计单位
if (StrUtil.isNotBlank(queryParam.getAuditUnitId())) {
wrapper.in("p.audit_unit_id", departService.getAllNodeIds(queryParam.getAuditUnitId()));
}
// 项目单位
if (StrUtil.isNotBlank(queryParam.getProjectUnitId())) {
wrapper.in("p.project_unit_id", departService.getAllNodeIds(queryParam.getProjectUnitId()));
}
// 权限控制
if (!AppConstants.USER_TYPE_SUPER.equals(user.getUserType()) && !user.getRoleCodes().contains(RoleCodeEnum.FIRST_ADMIN.getCode())) {
List<String> orgIds = user.getAuthDepartIds().isEmpty()
? departService.getAllNodeIds(user.getDepartId())
: departService.getAllNodeIds(user.getAuthDepartIds());
wrapper.in("p.project_unit_id", orgIds);
}
// 日期范围
if (CollectionUtil.isNotEmpty(queryParam.getPublicationDate())) {
wrapper.between(true, "p.publication_date", queryParam.getPublicationDate().get(0), queryParam.getPublicationDate().get(1));
}
if (CollectionUtil.isNotEmpty(queryParam.getEndDate())) {
wrapper.between(true, "p.archiving", queryParam.getEndDate().get(0), queryParam.getEndDate().get(1));
}
wrapper.orderByAsc("p.warning_state").groupBy("p.id");
return wrapper;
}
/**
* 填充项目数据
*/
private void fillProjectData(EntryWindowVo s) {
List<WarningRecord> list = recordService.list(
new LambdaQueryWrapper<WarningRecord>().eq(WarningRecord::getReportId, s.getId()));
if (CollectionUtil.isNotEmpty(list)) {
// 是否已下发问题
s.setStateData(list.stream().anyMatch(x -> "1".equals(x.getFlowState())) ? "1" : "0");
// 最新预警时间
list.stream().filter(r -> r.getSupervisionTime() != null)
.max((a, b) -> a.getSupervisionTime().compareTo(b.getSupervisionTime()))
.ifPresent(r -> s.setLastWarningTime(r.getSupervisionTime()
.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))));
// 预警问题数
List<String> ids = list.stream().map(WarningRecord::getId).toList();
s.setWarningContent(contentService.count(
new LambdaQueryWrapper<WarningContent>().in(WarningContent::getWarningId, ids).isNotNull(WarningContent::getRemark)));
}
// 格式化单位字符串
s.setAuditUnitStr(formatDepartStr(departService.getById(s.getAuditUnitId())));
s.setProjectUnitStr(formatDepartStr(departService.getById(s.getProjectUnitId())));
}
/**
* 格式化部门字符串
*/
private String formatDepartStr(SupDepart depart) {
if (depart == null) return "/";
if (depart.getLevel() == 3) {
SupDepart parent = departService.getById(depart.getPid());
return parent.getShortName() + "/" + depart.getShortName();
}
return depart.getShortName() + "/";
}
/**
* 按最新预警时间倒序排列
*/
private void sortByLastWarningTime(List<EntryWindowVo> list) {
list.sort((a, b) -> {
if (a.getLastWarningTime() == null && b.getLastWarningTime() == null) return 0;
if (a.getLastWarningTime() == null) return 1;
if (b.getLastWarningTime() == null) return -1;
return b.getLastWarningTime().compareTo(a.getLastWarningTime());
});
}
} }

3
src/main/java/com/biutag/supervision/pojo/vo/entryWindow/EntryWindowVo.java

@ -31,4 +31,7 @@ public class EntryWindowVo extends ReportProject {
@Schema(description = "是否是本单位的数据, 1是, 0否") @Schema(description = "是否是本单位的数据, 1是, 0否")
private String isSelfData; private String isSelfData;
@Schema(description = "最新预警时间")
private String lastWarningTime;
} }

Loading…
Cancel
Save