|
|
|
|
@ -56,79 +56,15 @@ public class WarningController {
|
|
|
|
|
|
|
|
|
|
//预警督察列表
|
|
|
|
|
@PostMapping("/getPage") |
|
|
|
|
public Result<Page<EntryWindowVo>> getPage(@RequestBody WarningQueryParam queryParam){ |
|
|
|
|
public Result<Page<EntryWindowVo>> getPage(@RequestBody WarningQueryParam queryParam) { |
|
|
|
|
UserAuth user = UserContextHolder.getCurrentUser(); |
|
|
|
|
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()); |
|
|
|
|
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); |
|
|
|
|
QueryWrapper<ReportProject> wrapper = buildWarningWrapper(queryParam, user); |
|
|
|
|
Page<EntryWindowVo> page = reportProjectService.getPageWarning( |
|
|
|
|
new Page<>(queryParam.getCurrent(), queryParam.getSize()), wrapper, queryParam.getWarningState()); |
|
|
|
|
|
|
|
|
|
page.getRecords().forEach(this::fillProjectData); |
|
|
|
|
sortByLastWarningTime(page.getRecords()); |
|
|
|
|
|
|
|
|
|
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()); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|