|
@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.manager;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -44,8 +45,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.LinkedList;
|
|
@@ -366,105 +370,238 @@ public class WmSupervisionManager {
|
|
|
* @param pkgId 执行包ID
|
|
|
* @return 任务列表
|
|
|
*/
|
|
|
- public List<Map<String, Object>> listAvailableTask(Integer pkgId) {
|
|
|
-
|
|
|
+ public List<Map<String, Object>> listAvailableTask(Integer pkgId, Boolean review) {
|
|
|
|
|
|
+ String username = SecurityUtils.getUser().getUsername();
|
|
|
List<Integer> roles = SecurityUtils.getRoles();
|
|
|
|
|
|
-
|
|
|
// 监督员
|
|
|
if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
|
|
|
+ List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
|
|
|
+ .eq(WmTaskSupervision::getPackageId, pkgId)
|
|
|
+ .orderByDesc(WmTaskSupervision::getCreateTime)
|
|
|
+ );
|
|
|
|
|
|
- // 获取当前积分包已经监督过的任务ID
|
|
|
- Set<Integer> supTaskIds = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, pkgId)).stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
|
|
|
- List<WmTask> wmTasks = taskService.listAvailableTaskForSupervision(pkgId, supTaskIds);
|
|
|
+ // 复查
|
|
|
+ List<WmTask> wmTasks;
|
|
|
+ if (review) {
|
|
|
+ // 获取当前积分包已经监督过的任务ID
|
|
|
+ Set<Integer> supTaskIds = list.stream().filter(ts -> StrUtil.equals(username, ts.getCreateBy())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
+ wmTasks = CollUtil.isEmpty(supTaskIds) ? Collections.emptyList() : taskService.listByIds(supTaskIds);
|
|
|
+ } else {
|
|
|
+ // 获取当前积分包已经监督过的任务ID
|
|
|
+ Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
+ wmTasks = taskService.listAvailableTaskForSupervision(pkgId, supTaskIds);
|
|
|
+ }
|
|
|
|
|
|
- List<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
|
|
|
+
|
|
|
+ List<Map<String, Object>> maps = CollUtil.isEmpty(wmTasks) ? Collections.emptyList() : taskService.listTaskInfo(wmTasks, pkgId.toString());
|
|
|
+
|
|
|
+ Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
|
|
|
+ List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
|
|
|
+ Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
|
|
|
+ Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
|
|
|
+ List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
|
|
|
+ Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
|
|
|
+ Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
|
|
|
+ Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
|
|
|
+
|
|
|
+ Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
|
|
|
+ maps.forEach(m -> {
|
|
|
+
|
|
|
+ Integer id = Integer.valueOf(m.get("id").toString());
|
|
|
+
|
|
|
+ List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
|
|
|
+ m.put("supervision", wmTaskSupervisions);
|
|
|
+
|
|
|
+ List<String> msgs = new ArrayList<>(4);
|
|
|
+ if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
|
|
|
+
|
|
|
+ msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
|
|
|
+ .map(ts -> {
|
|
|
+ SysUser user = userMap.get(ts.getCreateBy());
|
|
|
+ SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
|
|
|
+ String roleName = roleMap.get(sysUserRole.getRoleId());
|
|
|
+ String realName = user.getRealname();
|
|
|
+ String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
|
|
|
+ String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
|
|
|
+ String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
|
|
|
+
|
|
|
+ return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
|
|
|
+
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ m.put("supervisionMessages", msgs);
|
|
|
+ m.put("review", review);
|
|
|
+
|
|
|
+ });
|
|
|
|
|
|
return maps;
|
|
|
- } else if (CollUtil.containsAny(roles, List.of(37))) {
|
|
|
+ }
|
|
|
+ // 服务商
|
|
|
+ else if (CollUtil.containsAny(roles, List.of(37))) {
|
|
|
// 获取当前积分包已经监督过的任务ID
|
|
|
List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
|
|
|
- .eq(WmTaskSupervision::getSupervisionState, UpmsState.TaskSupervisionState.PASSED)
|
|
|
+ // .eq(WmTaskSupervision::getSupervisionState, UpmsState.TaskSupervisionState.PASSED)
|
|
|
.eq(WmTaskSupervision::getPackageId, pkgId).orderByDesc(WmTaskSupervision::getCreateTime));
|
|
|
|
|
|
if (CollUtil.isEmpty(list)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
|
|
|
- Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
+ Set<Integer> supTaskIds = list.stream().filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
+
|
|
|
+ if (CollUtil.isEmpty(supTaskIds)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
|
|
|
List<Map<String, Object>> maps = taskService.listTaskInfo(tasks, pkgId.toString());
|
|
|
|
|
|
- Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
|
|
|
+ Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
|
|
|
+ List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
|
|
|
+ Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
|
|
|
+ Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
|
|
|
+ List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
|
|
|
+ Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
|
|
|
+ Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
|
|
|
+ Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
|
|
|
|
|
|
+ Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
|
|
|
maps.forEach(m -> {
|
|
|
+
|
|
|
Integer id = Integer.valueOf(m.get("id").toString());
|
|
|
- WmTaskSupervision wmTaskSupervision = collect.get(id).get(0);
|
|
|
|
|
|
- m.put("supervision", wmTaskSupervision);
|
|
|
+ List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
|
|
|
+ m.put("supervision", wmTaskSupervisions);
|
|
|
+
|
|
|
+ List<String> msgs = new ArrayList<>(4);
|
|
|
+ if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
|
|
|
+
|
|
|
+ msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
|
|
|
+ .map(ts -> {
|
|
|
+ SysUser user = userMap.get(ts.getCreateBy());
|
|
|
+ SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
|
|
|
+ String roleName = roleMap.get(sysUserRole.getRoleId());
|
|
|
+ String realName = user.getRealname();
|
|
|
+ String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
|
|
|
+ String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
|
|
|
+ String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
|
|
|
+
|
|
|
+ return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
|
|
|
+
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ m.put("supervisionMessages", msgs);
|
|
|
+ m.put("review", review);
|
|
|
|
|
|
});
|
|
|
|
|
|
return maps;
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ // 负责人|分管领导|事业部总经理
|
|
|
+ else {
|
|
|
|
|
|
|
|
|
// 获取当前积分包已经监督过的任务ID
|
|
|
- List<WmTaskSupervision> list = taskSupervisionService.
|
|
|
- list(Wrappers.<WmTaskSupervision>lambdaQuery()
|
|
|
- .eq(WmTaskSupervision::getPackageId, pkgId)
|
|
|
- .orderByDesc(WmTaskSupervision::getCreateTime));
|
|
|
+ List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
|
|
|
+ .eq(WmTaskSupervision::getPackageId, pkgId)
|
|
|
+ .orderByDesc(WmTaskSupervision::getCreateTime));
|
|
|
|
|
|
- Map<UpmsState.TaskSupervisionState, Set<Integer>> collect1 = list.stream()
|
|
|
- .collect(Collectors.groupingBy(WmTaskSupervision::getSupervisionState, Collectors.mapping(WmTaskSupervision::getTaskId, Collectors.toSet())));
|
|
|
|
|
|
+ List<WmTask> wmTasks;
|
|
|
+ if (review) {
|
|
|
+ // 获取当前积分包已经监督过的任务ID
|
|
|
+ Set<Integer> supTaskIds = list.stream().filter(ts -> StrUtil.equals(username, ts.getCreateBy())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
+ wmTasks = CollUtil.isEmpty(supTaskIds) ? Collections.emptyList() : taskService.listByIds(supTaskIds);
|
|
|
+ } else {
|
|
|
+ Map<UpmsState.TaskSupervisionState, Set<Integer>> collect1 = list.stream()
|
|
|
+ .collect(Collectors.groupingBy(WmTaskSupervision::getSupervisionState, Collectors.mapping(WmTaskSupervision::getTaskId, Collectors.toSet())));
|
|
|
|
|
|
- Set<Integer> init = collect1.get(UpmsState.TaskSupervisionState.INIT);
|
|
|
- Set<Integer> ckt1 = collect1.get(UpmsState.TaskSupervisionState.CKT1);
|
|
|
- Set<Integer> ckt2 = collect1.get(UpmsState.TaskSupervisionState.CKT2);
|
|
|
- Set<Integer> passed = collect1.get(UpmsState.TaskSupervisionState.PASSED);
|
|
|
- Set<Integer> rejected = collect1.get(UpmsState.TaskSupervisionState.REJECTED);
|
|
|
|
|
|
- List<Integer> supTaskIds;
|
|
|
- // 负责人
|
|
|
- if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
|
|
|
+ Set<Integer> init = collect1.get(UpmsState.TaskSupervisionState.INIT);
|
|
|
+ Set<Integer> ckt1 = collect1.get(UpmsState.TaskSupervisionState.CKT1);
|
|
|
+ Set<Integer> ckt2 = collect1.get(UpmsState.TaskSupervisionState.CKT2);
|
|
|
+ Set<Integer> passed = collect1.get(UpmsState.TaskSupervisionState.PASSED);
|
|
|
+ Set<Integer> rejected = collect1.get(UpmsState.TaskSupervisionState.REJECTED);
|
|
|
|
|
|
- Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
|
|
|
- supTaskIds = CollUtil.subtractToList(init, temp);
|
|
|
+ // 负责人
|
|
|
+ List<Integer> supTaskIds;
|
|
|
+ if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
|
|
|
|
|
|
- }
|
|
|
- // 分管领导
|
|
|
- else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
|
|
|
- Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
|
|
|
- supTaskIds = CollUtil.subtractToList(ckt1, temp);
|
|
|
+ Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
|
|
|
+ supTaskIds = CollUtil.subtractToList(init, temp);
|
|
|
|
|
|
- }
|
|
|
- // 事业部总经理
|
|
|
- else if (CollUtil.containsAny(roles, List.of(39))) {
|
|
|
- Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
|
|
|
- supTaskIds = CollUtil.subtractToList(ckt2, temp);
|
|
|
- } else {
|
|
|
- throw new BizException("无监督权限");
|
|
|
- }
|
|
|
+ }
|
|
|
+ // 分管领导
|
|
|
+ else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
|
|
|
+ Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
|
|
|
+ supTaskIds = CollUtil.subtractToList(ckt1, temp);
|
|
|
|
|
|
+ }
|
|
|
+ // 事业部总经理
|
|
|
+ else if (CollUtil.containsAny(roles, List.of(39))) {
|
|
|
+ Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
|
|
|
+ supTaskIds = CollUtil.subtractToList(ckt2, temp);
|
|
|
+ } else {
|
|
|
+ throw new BizException("无监督权限");
|
|
|
+ }
|
|
|
|
|
|
- if (CollUtil.isEmpty(supTaskIds)) {
|
|
|
- return Collections.emptyList();
|
|
|
+
|
|
|
+ if (CollUtil.isEmpty(supTaskIds)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ wmTasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
|
|
|
}
|
|
|
|
|
|
- // Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
|
|
|
- List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
|
|
|
- List<Map<String, Object>> maps = taskService.listTaskInfo(tasks, pkgId.toString());
|
|
|
+
|
|
|
+ List<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
|
|
|
|
|
|
Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
|
|
|
|
|
|
+ Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
|
|
|
+ List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
|
|
|
+ Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
|
|
|
+ Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
|
|
|
+ List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
|
|
|
+ Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
|
|
|
+ Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
|
|
|
+ Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
|
|
|
+
|
|
|
maps.forEach(m -> {
|
|
|
+
|
|
|
Integer id = Integer.valueOf(m.get("id").toString());
|
|
|
- WmTaskSupervision wmTaskSupervision = collect.get(id).get(0);
|
|
|
|
|
|
- m.put("supervision", wmTaskSupervision);
|
|
|
+ List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
|
|
|
+ m.put("supervision", wmTaskSupervisions);
|
|
|
+
|
|
|
+ List<String> msgs = new ArrayList<>(4);
|
|
|
+ if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
|
|
|
+
|
|
|
+ msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
|
|
|
+ .map(ts -> {
|
|
|
+ SysUser user = userMap.get(ts.getCreateBy());
|
|
|
+ SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
|
|
|
+ String roleName = roleMap.get(sysUserRole.getRoleId());
|
|
|
+ String realName = user.getRealname();
|
|
|
+ String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
|
|
|
+ String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
|
|
|
+ String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
|
|
|
+
|
|
|
+ return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
|
|
|
+
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ m.put("supervisionMessages", msgs);
|
|
|
+ m.put("review", review);
|
|
|
|
|
|
});
|
|
|
|