导入代码
@ApiOperation("人员导入")
@PostMapping("/userFileImport")
public R<List<Map<String, Object>>> userFileImport(@RequestBody MultipartFile file,@RequestHeader("token") String token) {
R<List<Map<String, Object>>> result = new R<>();
List<Map<String, Object>> errorList = new ArrayList<>();
try {
InputStream in = file.getInputStream();
@SuppressWarnings("resource")
XSSFSheet xssfSheet = new XSSFWorkbook(in).getSheetAt(0);
if (xssfSheet == null) {
result.setCode(REnum.PARAMETER.getCode());
result.setMsg("导入数据为空");
return result;
}
if (xssfSheet.getLastRowNum() > 10000) {
result.setCode(REnum.PARAMETER.getCode());
result.setMsg("单次导入数据不能超过10000条");
return result;
}
List<String> primeval = new ArrayList<>();
primeval.add("姓名");
primeval.add("登录账号");
primeval.add("所属机构");
primeval.add("指挥调度系统权限");
Map<String, Integer> existColumn = new HashMap<String, Integer>();
XSSFRow xssfRow = xssfSheet.getRow(0);
int column = 0;
String columnValue = xssfRow.getCell(column).toString();
while (columnValue != null) {
columnValue = columnValue.replace(" ", "");
for (int i = 0; i < primeval.size(); i++) {
if (primeval.contains(columnValue) && primeval.get(i).equals(columnValue)) {
existColumn.put(columnValue, column - 1);
break;
}
}
Object value = xssfRow.getCell(column++);
columnValue = value == null ? null : value.toString();
}
@SuppressWarnings({"unchecked", "rawtypes"})
List<String> mapList = new ArrayList(existColumn.keySet());
for (int i = 0; i < primeval.size(); i++) {
if (!mapList.contains(primeval.get(i))) {
result.setCode(REnum.PARAMETER.getCode());
result.setMsg("Excel表格不正确,缺少: " + mapList.get(i) + " 列,请填写正确后重新再试.");
return result;
}
}
List<User> list = new ArrayList<>();
Date timeReportDate = new Date();
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow == null) {
continue;
}
String userName = xssfRow.getCell(existColumn.get("姓名")).toString();
String loginUser = xssfRow.getCell(existColumn.get("登录账号")).toString();
String orgName = xssfRow.getCell(existColumn.get("所属机构")).toString();
String commandAuth = xssfRow.getCell(existColumn.get("指挥调度系统权限")).toString();
QueryWrapper<Organization> qw = new QueryWrapper<>();
qw.lambda().eq(Organization::getName, orgName);
Organization organizationVO = organizationService.getOne(qw);
if (organizationVO != null) {
if (userService.count(new QueryWrapper<User>().lambda().eq(User::getOrganizationId, organizationVO.getId())) > 0) {
Map<String, Object> map = new HashMap<>();
map.put("userName", userName);
map.put("loginUser", loginUser);
map.put("orgName", orgName);
map.put("commandAuth", commandAuth);
map.put("msg", "该机构已有账号");
errorList.add(map);
continue;
}
QueryWrapper<User> qw1 = new QueryWrapper<User>();
qw1.lambda().eq(User::getUserName, loginUser);
User userInfoVO = userService.getOne(qw1);
Date intiDate = new Date();
int locked;
if (userInfoVO != null) {
userInfoVO.setNickName(userName);
if(commandAuth.equals("开启")){
locked=0;
}else{
locked=1;
}
userInfoVO.setLocked(locked);
userInfoVO.setOrganizationId(organizationVO.getId());
userInfoVO.setTimeUpdate(LocalDateTime.now());
userService.updateById(userInfoVO);
} else {
User info= new User();
info.setNickName(userName);
if(commandAuth.equals("开启")){
locked=0;
}else{
locked=1;
}
info.setLocked(locked);
info.setUserName(loginUser);
info.setOrganizationId(organizationVO.getId());
info.setTimeCreate(LocalDateTime.now());
info.setTimeUpdate(LocalDateTime.now());
Role r=roleService.getOne(new QueryWrapper<Role>().lambda().eq(Role::getRoleName,"普通警员"));
info.setRoleId(r.getId());
info.setUserCreate(JWTUtils.getUid(token).longValue());
info.setPassword(Md5Util.md5DigestAsHex("666666"));
userService.save(info);
}
} else {
Map<String, Object> map = new HashMap<>();
map.put("userName", userName);
map.put("loginUser", loginUser);
map.put("orgName", orgName);
map.put("commandAuth", commandAuth);
map.put("msg", "所属机构不存在");
errorList.add(map);
continue;
}
}
} catch (Exception ex) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
result.setCode(REnum.PARAMETER.getCode());
result.setMsg("导入失败");
return result;
}
result.setData(errorList);
return result;
}
}