|
@@ -1,5 +1,6 @@
|
|
|
package com.imed.costaccount.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.crypto.SecureUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -10,7 +11,7 @@ import com.imed.costaccount.common.exception.CostException;
|
|
|
import com.imed.costaccount.common.token.JwtUtil;
|
|
|
import com.imed.costaccount.common.util.BeanUtil;
|
|
|
import com.imed.costaccount.common.util.PageUtils;
|
|
|
-import com.imed.costaccount.constants.NumberConstant;
|
|
|
+import com.imed.costaccount.common.util.Result;
|
|
|
import com.imed.costaccount.mapper.UserMapper;
|
|
|
import com.imed.costaccount.model.Hosptail;
|
|
|
import com.imed.costaccount.model.User;
|
|
@@ -20,16 +21,14 @@ import com.imed.costaccount.model.vo.LoginVO;
|
|
|
import com.imed.costaccount.model.vo.UserVO;
|
|
|
import com.imed.costaccount.service.HosptailService;
|
|
|
import com.imed.costaccount.service.UserService;
|
|
|
-import org.apache.shiro.SecurityUtils;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-import org.springframework.util.ObjectUtils;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
-import javax.jws.soap.SOAPBinding;
|
|
|
-import javax.validation.constraints.NotBlank;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -38,6 +37,7 @@ import java.util.stream.Collectors;
|
|
|
/**
|
|
|
* @author 11290
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service("userService")
|
|
|
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
|
|
|
|
@@ -162,6 +162,79 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|
|
baseMapper.insert(userRequest);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 导入用户
|
|
|
+ * @param list 上传的文件读取的内容
|
|
|
+ * @param currentUser 当前登录用户
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
|
|
|
+ public Result importUser(List<List<Object>> list, User currentUser) {
|
|
|
+ // TODO: 2021/7/26 校验excel格式是否正确
|
|
|
+ for (int i = list.size() - 1; i >= 0; i--) {
|
|
|
+ if (i == 0 || i == 1 || i == 2 || i == 3) {
|
|
|
+ list.remove(list.get(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("读取的数据为:{}", list);
|
|
|
+ List<User> users = new ArrayList<>();
|
|
|
+ List<String> errRowNums = new ArrayList<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ List<Object> data = list.get(i);
|
|
|
+ log.info("得到用户输入的数据为:{}",data);
|
|
|
+ User user = new User();
|
|
|
+ // TODO: 2021/7/26 暂时写死
|
|
|
+// user.setHospId(currentUser.getHospId());
|
|
|
+ user.setHospId(1);
|
|
|
+ user.setCreateTime(new Date().getTime());
|
|
|
+ int size = data.size();
|
|
|
+ if (size != 3) {
|
|
|
+ // 补充读取的null问题
|
|
|
+ if (size == 2) {
|
|
|
+ data.add(StrUtil.EMPTY);
|
|
|
+ }
|
|
|
+ for (int j = 0; j < 3; j++) {
|
|
|
+ if (Objects.isNull(data.get(j))) {
|
|
|
+ data.set(j, StrUtil.EMPTY);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int j = 0; j < 3; j++) {
|
|
|
+ String str = String.valueOf(data.get(j));
|
|
|
+ log.info("得到的字符串{}",str);
|
|
|
+ if (StrUtil.isBlank(str)) {
|
|
|
+ errRowNums.add("" + (i + 5));
|
|
|
+ }
|
|
|
+ if (j == 0) {
|
|
|
+ user.setName(str);
|
|
|
+ } else if (j == 1) {
|
|
|
+ user.setAccount(str);
|
|
|
+ } else {
|
|
|
+ user.setPassword(SecureUtil.md5(str));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ users.add(user);
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(errRowNums)) {
|
|
|
+ String collect = errRowNums.stream().collect(Collectors.joining(StrUtil.COMMA));
|
|
|
+ throw new CostException(500, "第" + collect + "行数据异常");
|
|
|
+ }
|
|
|
+ // 校验users
|
|
|
+ List<User> realUsers = new ArrayList<>();
|
|
|
+ users.forEach(i -> {
|
|
|
+ User one = getOne(
|
|
|
+ new QueryWrapper<User>().lambda()
|
|
|
+ .eq(User::getAccount, i.getAccount())
|
|
|
+ .eq(User::getHospId, i.getHospId())
|
|
|
+ );
|
|
|
+ if (Objects.nonNull(one)) {
|
|
|
+ realUsers.add(one);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ users = users.stream().filter(i -> !realUsers.stream().map(User::getAccount).collect(Collectors.toList()).contains(i.getAccount())).collect(Collectors.toList());
|
|
|
+ this.saveBatch(users);
|
|
|
+ return Result.build(200, "有" + realUsers.size() + "条数据已存在,未被导入", null);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|