|
@@ -1,6 +1,7 @@
|
|
|
package org.springblade.business.service.impl;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -23,13 +24,17 @@ import org.springblade.core.secure.BladeUser;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
|
|
|
import org.springblade.manager.feign.SaveUserInfoByProjectClient;
|
|
|
+import org.springblade.system.entity.Role;
|
|
|
import org.springblade.system.feign.ISysClient;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -56,6 +61,8 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
|
|
|
|
|
|
private final SaveUserInfoByProjectClient saveUserInfoByProjectClient;
|
|
|
|
|
|
+ private final JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
@Override
|
|
|
public Integer getOpinionNumber(String userId) {
|
|
|
return this.baseMapper.getOpinionNumber(userId);
|
|
@@ -85,6 +92,34 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
|
|
|
List<Long> userOpinionKeys = finalResult.stream().map(BusinessUserOpinionVO::getUserOpinionId).distinct().collect(Collectors.toList());
|
|
|
List<UserOpinionFile> allFile = this.userOpinionFileService.selectUserOpinionFileByUserOpinionKeys(userOpinionKeys);
|
|
|
|
|
|
+ /*所有工单最新状态userOpinionFlowGroupMap*/
|
|
|
+ List<String> concatenatedList = finalResult.stream()
|
|
|
+ .filter(obj -> ObjectUtil.isNotEmpty(obj.getUserOpinionId()) && ObjectUtil.isNotEmpty(obj.getNewNumber()))
|
|
|
+ .map(obj -> obj.getUserOpinionId() + "___" + obj.getNewNumber())
|
|
|
+ .map(String::valueOf)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<UserOpinionFlowVO> UserOpinionFlowVOList = this.userOpinionFlowService.queryUserOpinionFlowsByConcatenatedIds(concatenatedList);
|
|
|
+ Map<String, List<UserOpinionFlowVO>> userOpinionFlowGroupMap = UserOpinionFlowVOList.stream()
|
|
|
+ .filter(vo -> Objects.nonNull(vo.getUserOpinionId()) && Objects.nonNull(vo.getNumber()))
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ vo -> vo.getUserOpinionId() + vo.getNumber() + ""
|
|
|
+ ));
|
|
|
+
|
|
|
+ /*获取所有提交人userOpinionMap*/
|
|
|
+ List<UserOpinion> userOpinionList = this.getBaseMapper().selectBatchIds(userOpinionKeys);
|
|
|
+ Map<Long, UserOpinion> userOpinionMap = userOpinionList.stream().collect(Collectors.toMap(UserOpinion::getId, Function.identity()));
|
|
|
+
|
|
|
+ /*获取创建人信息userMap*/
|
|
|
+ List<Long> createUserIds = userOpinionList.stream().map(UserOpinion::getCreateUser).collect(Collectors.toList());
|
|
|
+ List<User> userList = this.userClient.userInfoByIds(createUserIds);
|
|
|
+ Map<Long, User> userMap = userList.stream().distinct().collect(Collectors.toMap(User::getId, Function.identity()));
|
|
|
+
|
|
|
+ /*获取用户与项目关系信息saveUserInfoByProjectGroupMap*/
|
|
|
+ Map<String, List<SaveUserInfoByProjectDTO>> saveUserInfoByProjectGroupMap = this.saveUserInfoByProjectClient.searchUserInfoAndProjectByUserIds(createUserIds).stream().collect(Collectors.groupingBy(SaveUserInfoByProjectDTO::getUserId));
|
|
|
+
|
|
|
+ /*获取角色信息roleMap*/
|
|
|
+ Map<Long, Role> roleMap = jdbcTemplate.query("SELECT id,role_name FROM blade_role WHERE is_deleted = 0", new BeanPropertyRowMapper<>(Role.class)).stream().collect(Collectors.toMap(Role::getId, Function.identity()));
|
|
|
+
|
|
|
//设置附件信息
|
|
|
finalResult.forEach(vo -> {
|
|
|
List<String> imageUrls = new ArrayList<>();
|
|
@@ -103,7 +138,8 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
|
|
|
vo.setImageUrl(imageUrls);
|
|
|
|
|
|
//获取当前工单最新状态
|
|
|
- List<UserOpinionFlowVO> newFlow = this.userOpinionFlowService.queryCurrentUserOpinionFlowByUserOpinionId(String.valueOf(vo.getUserOpinionId()), vo.getNewNumber());
|
|
|
+ /*List<UserOpinionFlowVO> newFlow = this.userOpinionFlowService.queryCurrentUserOpinionFlowByUserOpinionId(String.valueOf(vo.getUserOpinionId()), vo.getNewNumber());*/
|
|
|
+ List<UserOpinionFlowVO> newFlow = userOpinionFlowGroupMap.getOrDefault(vo.getUserOpinionId() + vo.getNewNumber() + "", null);
|
|
|
if (newFlow != null && newFlow.size() > 0) {
|
|
|
//获取退后阶段
|
|
|
UserOpinionFlowVO flow = newFlow.get(3);
|
|
@@ -156,13 +192,16 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
|
|
|
}
|
|
|
|
|
|
//获取提交人
|
|
|
- UserOpinion opinion = this.getById(vo.getUserOpinionId());
|
|
|
+ //UserOpinion opinion = this.getById(vo.getUserOpinionId());
|
|
|
+ UserOpinion opinion = userOpinionMap.getOrDefault(vo.getUserOpinionId(), null);
|
|
|
if (opinion != null) {
|
|
|
vo.setSubmitUserName(opinion.getCreateUserName());
|
|
|
- User user = this.userClient.userInfoById(opinion.getCreateUser()).getData();
|
|
|
+ //User user = this.userClient.userInfoById(opinion.getCreateUser()).getData();
|
|
|
+ User user = userMap.getOrDefault(opinion.getCreateUser(), null);
|
|
|
if (user != null) {
|
|
|
vo.setSubmitPhone(user.getPhone());
|
|
|
- List<SaveUserInfoByProjectDTO> userRoleList = this.saveUserInfoByProjectClient.searchUserInfoAndProject2(opinion.getCreateUser().toString());
|
|
|
+ //List<SaveUserInfoByProjectDTO> userRoleList = this.saveUserInfoByProjectClient.searchUserInfoAndProject2(opinion.getCreateUser().toString());
|
|
|
+ List<SaveUserInfoByProjectDTO> userRoleList = saveUserInfoByProjectGroupMap.getOrDefault(opinion.getCreateUser().toString(), null);
|
|
|
//用户角色
|
|
|
String roleIds = user.getRoleId();
|
|
|
if (userRoleList != null && userRoleList.size() > 0) {
|
|
@@ -172,8 +211,16 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
|
|
|
roleIds = userRoleList.stream().map(SaveUserInfoByProjectDTO::getRoleId).distinct().collect(Collectors.joining(","));
|
|
|
}
|
|
|
}
|
|
|
- List<String> roleNames = this.sysClient.getRoleNames(roleIds).getData();
|
|
|
- if (roleNames != null && roleNames.size() > 0) {
|
|
|
+
|
|
|
+ List<String> roleNames = new ArrayList<>();
|
|
|
+ for (String roleId : roleIds.split(",")) {
|
|
|
+ Role role = roleMap.getOrDefault(Long.parseLong(roleId), null);
|
|
|
+ if (role != null) {
|
|
|
+ roleNames.add(role.getRoleName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //List<String> roleNames = this.sysClient.getRoleNames(roleIds).getData();
|
|
|
+ if (/*roleNames != null &&*/ roleNames.size() > 0) {
|
|
|
vo.setSubmitUserRole(String.join(",", roleNames));
|
|
|
}
|
|
|
}
|