luoyb
2021-05-31 3ae6bd194fe1f17b4f5d96cb78b057705e5d0d78
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java
@@ -31,6 +31,7 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -174,6 +175,53 @@
    @PostMapping("updateStatus")
    public void updateStatus(@NotBlank(message = "{required}") String certificateNumb) {
        this.userService.updateUserByCertificateNumb(certificateNumb);
        String[] strNumbers = certificateNumb.split(",");
        for (int i = 0,k=strNumbers.length; i < k; i++) {
            this.userService.updateUserByCertificateNumb(strNumbers[i]);
        }
    }
    private static final String XLSX = ".xlsx";
    @PostMapping("import")
    public FebsResponse importExcels(MultipartFile file) throws IOException, FebsException {
        if (file.isEmpty()) {
            throw new FebsException("导入数据为空");
        }
        String filename = file.getOriginalFilename();
        if (!StringUtils.endsWith(filename, XLSX)) {
            throw new FebsException("只支持.xlsx类型文件导入");
        }
        Stopwatch stopwatch = Stopwatch.createStarted();
        final List<SystemUser> data = Lists.newArrayList();
        final List<Map<String, Object>> error = Lists.newArrayList();
        ExcelKit.$Import(SystemUser.class).readXlsx(file.getInputStream(), new ExcelReadHandler<SystemUser>() {
            @Override
            public void onSuccess(int sheet, int row, SystemUser eximport) {
                data.add(eximport);
            }
            @Override
            public void onError(int sheet, int row, List<ExcelErrorField> errorFields) {
                error.add(ImmutableMap.of("row", row, "errorFields", errorFields));
            }
        });
        if (CollectionUtils.isNotEmpty(data)) {
            for (SystemUser systemUser:data){
                Dept one = deptService.getOne(new QueryWrapper<Dept>().eq("DEPT_NAME", systemUser.getDeptName()));
                if(one!=null){
                    systemUser.setDeptId(one.getDeptId());
                }
                this.userService.createUser(systemUser);
            }
        }
        ImmutableMap<String, Object> result = ImmutableMap.of(
                "time", stopwatch.stop().toString(),
                "data", data,
                "error", error
        );
        return new FebsResponse().data(result);
    }
    @PostMapping("template")
    public void generateImportTemplate(HttpServletResponse response) {
        List<SystemUser> list = new ArrayList<>();
        ExcelKit.$Export(SystemUser.class, response).downXlsx(list, true);
    }
}