|
@@ -3,19 +3,27 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTeam;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTeam;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.WmTeamExcelModel;
|
|
import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.SysUserRoleMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTeamMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTeamMapper;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTeamService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTeamService;
|
|
|
|
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -29,12 +37,15 @@ import java.util.stream.Stream;
|
|
* @author lixuesong
|
|
* @author lixuesong
|
|
* @date 2021年12月08日 13:51
|
|
* @date 2021年12月08日 13:51
|
|
*/
|
|
*/
|
|
|
|
+@Slf4j
|
|
@Service
|
|
@Service
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> implements WmTeamService {
|
|
public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> implements WmTeamService {
|
|
|
|
|
|
private final SysUserMapper sysUserMapper;
|
|
private final SysUserMapper sysUserMapper;
|
|
|
|
|
|
|
|
+ private final SysUserRoleMapper sysUserRoleMapper;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 查询可选择的人员
|
|
* 查询可选择的人员
|
|
*
|
|
*
|
|
@@ -122,9 +133,11 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
resultMap.put("selectedLeaders", selectedLeaders);
|
|
resultMap.put("selectedLeaders", selectedLeaders);
|
|
resultMap.put("selectedMembers", selectedMembers);
|
|
resultMap.put("selectedMembers", selectedMembers);
|
|
|
|
+ resultMap.put("teamName", team.getName());
|
|
} else {
|
|
} else {
|
|
resultMap.put("selectedLeaders", new ArrayList<>());
|
|
resultMap.put("selectedLeaders", new ArrayList<>());
|
|
resultMap.put("selectedMembers", new ArrayList<>());
|
|
resultMap.put("selectedMembers", new ArrayList<>());
|
|
|
|
+ resultMap.put("teamName", "");
|
|
}
|
|
}
|
|
resultMap.put("leaders", leaderList);
|
|
resultMap.put("leaders", leaderList);
|
|
resultMap.put("notAssignedMembers", notAssignedUserList);
|
|
resultMap.put("notAssignedMembers", notAssignedUserList);
|
|
@@ -132,4 +145,111 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
|
|
|
|
|
|
return resultMap;
|
|
return resultMap;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 团队批量导入成员
|
|
|
|
+ *
|
|
|
|
+ * @param teamId
|
|
|
|
+ * @param excelMap
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, String> batchImport(Integer teamId, Map<String, List<WmTeamExcelModel>> excelMap) {
|
|
|
|
+ // 变量
|
|
|
|
+ Map<String, String> errorMap = new HashMap<>();
|
|
|
|
+ List<SysUser> currentList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ // 获取操作员
|
|
|
|
+ HnqzUser creator = SecurityUtils.getUser();
|
|
|
|
+
|
|
|
|
+ // 业务值校验
|
|
|
|
+ for (Map.Entry<String, List<WmTeamExcelModel>> entry : excelMap.entrySet()) {
|
|
|
|
+ checkoutUserInfo(entry.getValue(), creator, errorMap, currentList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 上传结果
|
|
|
|
+ if (CollectionUtil.isEmpty(errorMap)) {
|
|
|
|
+ String[] userIdArr = currentList.stream()
|
|
|
|
+ .map(sysUser -> String.valueOf(sysUser.getUserId()))
|
|
|
|
+ .toArray(String[]::new);
|
|
|
|
+ WmTeam team = new WmTeam();
|
|
|
|
+ team.setId(teamId);
|
|
|
|
+ team.setMember(userIdArr);
|
|
|
|
+ team.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ team.setUpdateUser(creator.getId());
|
|
|
|
+ this.updateById(team);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return errorMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验用户信息
|
|
|
|
+ *
|
|
|
|
+ * @param errorMap
|
|
|
|
+ * @param currentList
|
|
|
|
+ */
|
|
|
|
+ private void checkoutUserInfo(List<WmTeamExcelModel> userList, HnqzUser creator, Map<String, String> errorMap, List<SysUser> currentList) {
|
|
|
|
+ log.info("开始校验数据:{}", userList);
|
|
|
|
+
|
|
|
|
+ if (userList.size() != 1){
|
|
|
|
+ log.error("表中手机号重复");
|
|
|
|
+ Set<String> idSet = userList.stream().map(WmTeamExcelModel::getId).collect(Collectors.toSet());
|
|
|
|
+ errorMap(errorMap, "表中手机号重复", JSONUtil.toJsonStr(idSet));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WmTeamExcelModel user = userList.get(0);
|
|
|
|
+
|
|
|
|
+ SysUser insertUser = new SysUser();
|
|
|
|
+ // 校验用户是否存在
|
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
|
|
|
|
+ .eq(SysUser::getDeptId, SecurityUtils.getUser().getDeptId())
|
|
|
|
+ .eq(SysUser::getRealname, user.getRealname())
|
|
|
|
+ .eq(SysUser::getUsername, user.getUsername())
|
|
|
|
+ .eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val()));
|
|
|
|
+ SysUser sysUser = null;
|
|
|
|
+ if (CollectionUtil.isEmpty(sysUsers)) {
|
|
|
|
+ log.error("用户不存在");
|
|
|
|
+ errorMap(errorMap, "用户不存在", user.getId());
|
|
|
|
+ } else {
|
|
|
|
+ sysUser = sysUsers.get(0);
|
|
|
|
+ insertUser.setUserId(sysUser.getUserId());
|
|
|
|
+ insertUser.setRealname(sysUser.getRealname());
|
|
|
|
+ insertUser.setUsername(sysUser.getUsername());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验用户角色是否正确
|
|
|
|
+ if (sysUser != null) {
|
|
|
|
+ List<SysUserRole> sysUserRoles = sysUserRoleMapper.selectList(Wrappers.<SysUserRole>lambdaQuery()
|
|
|
|
+ .eq(SysUserRole::getUserId, sysUser.getUserId()));
|
|
|
|
+ if (CollectionUtil.isNotEmpty(sysUserRoles)) {
|
|
|
|
+ List<Integer> roleList = sysUserRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
|
|
|
|
+ if (!roleList.contains(6)) {
|
|
|
|
+ log.error("用户角色不正确");
|
|
|
|
+ errorMap(errorMap, "用户角色不正确", user.getId());
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ log.error("用户角色异常");
|
|
|
|
+ errorMap(errorMap, "用户角色异常", user.getId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 记录正确的结果
|
|
|
|
+ currentList.add(insertUser);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 封装错误信息
|
|
|
|
+ *
|
|
|
|
+ * @param errorMap 记录错误信息map
|
|
|
|
+ * @param key 原因
|
|
|
|
+ * @param idStr 错误id
|
|
|
|
+ */
|
|
|
|
+ private void errorMap(Map<String, String> errorMap, String key, String idStr) {
|
|
|
|
+ if (errorMap.containsKey(key)) {
|
|
|
|
+ String val = errorMap.get(key);
|
|
|
|
+ idStr = String.join(";", val, idStr);
|
|
|
|
+ }
|
|
|
|
+ errorMap.put(key, idStr);
|
|
|
|
+ }
|
|
}
|
|
}
|