소스 검색

用户批量导入

xiaof 2 년 전
부모
커밋
ef66c00d2a

+ 69 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncSysUserDataImportService.java

@@ -0,0 +1,69 @@
+package com.qmth.paper.library.business.templete.execute;
+
+import cn.hutool.core.date.DateUtil;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.paper.library.business.templete.importData.AsyncImportTaskTemplate;
+import com.qmth.paper.library.business.templete.service.TaskLogicService;
+import com.qmth.paper.library.common.contant.SpringContextHolder;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.entity.TBTask;
+import com.qmth.paper.library.common.enums.TaskResultEnum;
+import com.qmth.paper.library.common.enums.TaskStatusEnum;
+import com.qmth.paper.library.common.service.TBTaskService;
+import com.qmth.paper.library.common.util.Result;
+import com.qmth.paper.library.common.util.ResultUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.StringJoiner;
+
+/**
+ * @Description: 系统用户批量导入
+ * @Author: CaoZixuan
+ * @Date: 2021-08-12
+ */
+@Service
+public class AsyncSysUserDataImportService extends AsyncImportTaskTemplate {
+    private final static Logger log = LoggerFactory.getLogger(AsyncSysUserDataImportService.class);
+
+    public static final String OBJ_TITLE = "用户基本信息";
+
+    @Override
+    public Result importTask(Map<String, Object> map) throws Exception {
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        InputStream inputStream = super.getUploadFileInputStream(tbTask);
+        map.put("inputStream", inputStream);
+
+        StringJoiner stringJoinerSummary = new StringJoiner("\n")
+                .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
+        tbTask.setStatus(TaskStatusEnum.RUNNING);
+        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
+        tbTaskService.updateById(tbTask);
+        try {
+            TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
+
+            // 执行导入基础用户数据
+            Map<String, Object> result = taskLogicService.executeImportSysUserLogic(map);
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_SIZE));
+            tbTask.setResult(TaskResultEnum.SUCCESS);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
+            tbTask.setResult(TaskResultEnum.ERROR);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {//生成txt文件
+            tbTask.setSummary(stringJoinerSummary.toString());
+            super.createTxt(tbTask);
+        }
+        return ResultUtil.ok(map);
+    }
+}

+ 9 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/TaskLogicService.java

@@ -20,6 +20,15 @@ public interface TaskLogicService {
      */
     Map<String, Object> executeImportSysOrgLogic(Map<String, Object> map) throws Exception;
 
+    /**
+     * 处理导入用户数据
+     *
+     * @param map 数据源
+     * @return 结果
+     * @throws Exception 异常
+     */
+    Map<String, Object> executeImportSysUserLogic(Map<String, Object> map) throws Exception;
+
     /**
      * 处理导入扫描任务详情
      *

+ 77 - 1
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -18,6 +18,7 @@ import com.qmth.paper.library.business.templete.service.TaskLogicService;
 import com.qmth.paper.library.common.bean.dto.excel.BasicStudentImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.SysOrgImportDto;
+import com.qmth.paper.library.common.bean.dto.excel.SysUserImportDto;
 import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
 import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SystemConstant;
@@ -28,6 +29,7 @@ import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.service.BasicStudentService;
 import com.qmth.paper.library.common.service.SysOrgService;
+import com.qmth.paper.library.common.service.SysUserService;
 import com.qmth.paper.library.common.util.*;
 import com.qmth.paper.library.common.util.excel.ExcelError;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -63,6 +65,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     private DictionaryConfig dictionaryConfig;
     @Resource
     private SysOrgService sysOrgService;
+
+    @Resource
+    SysUserService sysUserService;
     @Resource
     private PaperArchivesService paperArchivesService;
     @Resource
@@ -111,6 +116,76 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         return map;
     }
 
+    @Transactional
+    @Override
+    public Map<String, Object> executeImportSysUserLogic(Map<String, Object> map) throws Exception {
+        InputStream inputStream = (InputStream) map.get("inputStream");
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(SysUserImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            List<ExcelError> excelErrorTemp = new ArrayList<>();
+            Map<String, SysUserImportDto> checkDtoMap = new HashMap<>();
+
+            for (int i = 0; i < finalExcelList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
+                List<Object> sysUserImportDtoList = excelMap.get(i);
+                assert sysUserImportDtoList != null;
+                if (sysUserImportDtoList.get(0) instanceof DescribeImportDto) {
+                    continue;
+                }
+                map.put("dataCount", sysUserImportDtoList.size());
+                List<SysUserImportDto> duplicateData = new ArrayList<>();
+                for (int y = 0; y < Objects.requireNonNull(sysUserImportDtoList).size(); y++) {
+                    SysUserImportDto sysUserImportDto = (SysUserImportDto) sysUserImportDtoList.get(y);
+                    String name = sysUserImportDto.getName().trim();
+                    String loginName = sysUserImportDto.getLoginName().trim();
+                    String phoneNumber = sysUserImportDto.getPhoneNumber().trim();
+                    String orgName = sysUserImportDto.getOrgName().trim();
+                    String roleName = sysUserImportDto.getRoleName().trim();
+
+                    if (checkDtoMap.containsKey(loginName)) {
+                        SysUserImportDto primaryCell = checkDtoMap.get(loginName);
+                        String priName = primaryCell.getName();
+                        String priPhoneNumber = primaryCell.getPhoneNumber();
+                        String priOrgName = primaryCell.getOrgName();
+                        if (!Objects.equals(priName, name)) {
+                            throw ExceptionResultEnum.ERROR.exception("【账号】 :" + loginName + "的用户存在不同的名称");
+                        }
+                        if (!Objects.equals(priPhoneNumber, phoneNumber)) {
+                            throw ExceptionResultEnum.ERROR.exception("【账号】 :" + loginName + "的用户存在不同的手机号");
+                        }
+                        if (!Objects.equals(priOrgName, orgName)) {
+                            throw ExceptionResultEnum.ERROR.exception("【账号】 :" + loginName + "的用户存在不同的组织架构");
+                        }
+                        String priRoleName = primaryCell.getRoleName();
+                        if (SystemConstant.strNotNull(roleName)) {
+                            priRoleName = priRoleName + SystemConstant.COMMA + roleName;
+                            primaryCell.setRoleName(priRoleName);
+                        }
+                        duplicateData.add(sysUserImportDto);
+                    } else {
+                        checkDtoMap.put(loginName, sysUserImportDto);
+                    }
+
+                    excelErrorTemp.addAll(ExcelUtil.checkExcelField(sysUserImportDto, y, i));
+                    if (Objects.isNull(loginName) || loginName.length() > 30 || !loginName.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[账号]不符合输入规范"));
+                    }
+                    if (Objects.isNull(name) || name.length() > 30) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[姓名]不符合输入规范"));
+                    }
+                    if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[电话号码]不符合输入规范"));
+                    }
+                }
+                sysUserImportDtoList.removeAll(duplicateData);
+            }
+            if (excelErrorTemp.size() > 0) {
+                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
+            }
+            return finalExcelList;
+        });
+        return sysUserService.executeSysUserImportLogic(finalList, map);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception {
@@ -455,7 +530,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
     /**
      * 生成清单
-     *  @param zipLocalRootPath 路径
+     *
+     * @param zipLocalRootPath 路径
      * @param list             数据
      * @param successMap
      * @param errorMap

+ 12 - 12
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/excel/SysUserImportDto.java

@@ -14,13 +14,13 @@ import java.io.Serializable;
 @ExcelImportTempleteVaild(value = true)
 public class SysUserImportDto implements Serializable {
 
-    @ExcelNote(value = "姓名")
+    @ExcelNote(value = "账号")
     @NotNull
-    private String name;
+    private String loginName;
 
-    @ExcelNote(value = "工号")
+    @ExcelNote(value = "姓名")
     @NotNull
-    private String code;
+    private String name;
 
     @ExcelNote(value = "手机号")
     private String phoneNumber;
@@ -33,20 +33,20 @@ public class SysUserImportDto implements Serializable {
     @NotNull
     private String roleName;
 
-    public String getName() {
-        return name;
+    public String getLoginName() {
+        return loginName;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
     }
 
-    public String getCode() {
-        return code;
+    public String getName() {
+        return name;
     }
 
-    public void setCode(String code) {
-        this.code = code;
+    public void setName(String name) {
+        this.name = name;
     }
 
     public String getPhoneNumber() {

+ 11 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/entity/SysUser.java

@@ -50,6 +50,8 @@ public class SysUser extends BaseEntity implements Serializable {
     @Length(message = "姓名不能超过{max}个字符", max = 32)
     private String realName;
 
+    private String code;
+
     /**
      * 密码
      */
@@ -170,6 +172,14 @@ public class SysUser extends BaseEntity implements Serializable {
         this.realName = realName;
     }
 
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public String getPassword() {
         return password;
     }
@@ -265,4 +275,5 @@ public class SysUser extends BaseEntity implements Serializable {
     public void setIdentifyArea(String identifyArea) {
         this.identifyArea = identifyArea;
     }
+
 }

+ 11 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/service/SysUserService.java

@@ -9,9 +9,11 @@ import com.qmth.paper.library.common.bean.result.LoginResult;
 import com.qmth.paper.library.common.bean.result.SysUserResult;
 import com.qmth.paper.library.common.bean.result.UserRoleNameResult;
 import com.qmth.paper.library.common.entity.SysUser;
+import org.springframework.util.LinkedMultiValueMap;
 
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -36,6 +38,15 @@ public interface SysUserService extends IService<SysUser> {
      */
     IPage<UserDto> listForPrintSystem(String userInfo, Long orgId, String roleId, Boolean enable, Integer pageNumber, Integer pageSize);
 
+    /**
+     * 执行批量导入用户逻辑
+     *
+     * @param finalList 基础课程数据集合
+     * @param map       参数
+     * @return 结果
+     */
+    Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException;
+
     Long saveUser(UserSaveParams userSaveParams) throws IllegalAccessException;
 
     boolean enable(SysUser user) throws NoSuchAlgorithmException, IllegalAccessException;

+ 106 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/SysUserServiceImpl.java

@@ -10,6 +10,8 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.paper.library.common.bean.auth.AuthBean;
 import com.qmth.paper.library.common.bean.dto.UserDto;
 import com.qmth.paper.library.common.bean.dto.VerifyCodeCheckDto;
+import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
+import com.qmth.paper.library.common.bean.dto.excel.SysUserImportDto;
 import com.qmth.paper.library.common.bean.params.ApproveUserResult;
 import com.qmth.paper.library.common.bean.params.UserSaveParams;
 import com.qmth.paper.library.common.bean.result.LoginResult;
@@ -30,9 +32,11 @@ import com.qmth.paper.library.common.util.Base64Util;
 import com.qmth.paper.library.common.util.ResultUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
 import java.security.NoSuchAlgorithmException;
@@ -75,6 +79,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     SysUserService sysUserService;
 
+    @Resource
+    SysOrgService sysOrgService;
+
     @Resource
     DictionaryConfig dictionaryConfig;
 
@@ -103,6 +110,78 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userDtoIPage;
     }
 
+    @Transactional
+    @Override
+    public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
+        SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
+        Long schoolId = requestUser.getSchoolId();
+        List<Long> userIdList = new ArrayList<>();
+        for (int i = 0; i < finalList.size(); i++) {
+            LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
+            List<Object> sysUserImportDtoList = excelMap.get(i);
+            assert sysUserImportDtoList != null;
+            if (sysUserImportDtoList.get(0) instanceof DescribeImportDto) {
+                continue;
+            }
+
+            //  处理机构
+            if (sysUserImportDtoList.get(0) instanceof SysUserImportDto) {
+                List<SysUserImportDto> datasource = sysUserImportDtoList.stream().map(e -> {
+                    SysUserImportDto sysUserImportDto = new SysUserImportDto();
+                    BeanUtils.copyProperties(e, sysUserImportDto);
+                    return sysUserImportDto;
+                }).collect(Collectors.toList());
+                // 机构信息
+                List<String> orgInfoList = datasource.stream().map(SysUserImportDto::getOrgName).distinct().collect(Collectors.toList());
+                // 提前创建或获取机构信息并存入map
+                Map<String, Long> orgInfoMap = sysOrgService.createOrGetOrgByOrgInfo(orgInfoList, requestUser);
+                for (SysUserImportDto sysUserImportDto : datasource) {
+                    String name = sysUserImportDto.getName();
+                    String loginName = sysUserImportDto.getLoginName();
+                    String phoneNumber = sysUserImportDto.getPhoneNumber();
+                    String orgName = sysUserImportDto.getOrgName();
+                    if (!orgInfoMap.containsKey(orgName)) {
+                        throw ExceptionResultEnum.ERROR.exception("在解析的机构map集合中,没有找到excel数据中的用户机构名称【" + orgName + "】");
+                    }
+                    // 直接解析机构id
+                    Long orgId = orgInfoMap.get(orgName);
+                    String roleName = sysUserImportDto.getRoleName();
+
+                    UserSaveParams userSaveParams = new UserSaveParams();
+
+                    LinkedHashSet<Long> roleIdList = this.analyzeRoleName(schoolId, roleName);
+
+                    SysUser oldUser = this.getOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getLoginName, loginName).eq(SysUser::getSchoolId, schoolId));
+                    Long oldUserId = null;
+                    Set<Long> oldRoleIdSet = new HashSet<>();
+                    if (Objects.nonNull(oldUser)) {
+                        oldUserId = oldUser.getId();
+                        oldRoleIdSet = new HashSet<>(sysRoleService.getUserRoles(oldUserId));
+                    }
+                    String code = loginName;
+                    if (SystemConstant.longNotNull(oldUserId)) {
+                        // 编辑
+                        userSaveParams.setId(oldUserId);
+                        loginName = oldUser.getLoginName();
+                    }
+                    userSaveParams.setOrgId(orgId);
+                    userSaveParams.setRealName(name);
+                    userSaveParams.setLoginName(loginName);
+                    userSaveParams.setRoleIds(roleIdList.toArray(new Long[0]));
+                    if (SystemConstant.strNotNull(phoneNumber)) {
+                        userSaveParams.setMobileNumber(phoneNumber);
+                    }
+                    userSaveParams.setCode(code);
+                    userSaveParams.setSchoolId(schoolId);
+                    Long upUserId = this.saveUserCommon(userSaveParams, requestUser.getId());
+                    userIdList.add(upUserId);
+                }
+            }
+        }
+        map.put("userIdList", userIdList);
+        return map;
+    }
+
     @Transactional
     @Override
     public Long saveUser(UserSaveParams userSaveParams) {
@@ -532,4 +611,31 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         return true;
     }
+
+    /**
+     * 根据角色名称获取角色id集合
+     *
+     * @param schoolId 学校id
+     * @param roleName 角色名称组
+     * @return 角色集合
+     */
+    private LinkedHashSet<Long> analyzeRoleName(Long schoolId, String roleName) {
+        LinkedHashSet<Long> roleIdList = new LinkedHashSet<>();
+        String[] arr = roleName.split(SystemConstant.COMMA);
+        for (String cell : arr) {
+            QueryWrapper<SysRole> sysRoleQueryWrapper = new QueryWrapper<>();
+            sysRoleQueryWrapper.lambda().eq(SysRole::getEnable, true)
+                    .eq(SysRole::getName, cell);
+            if (Objects.isNull(RoleTypeEnum.convertDescToEnum(cell))) {
+                // 自定义角色带学校id查
+                sysRoleQueryWrapper.lambda().eq(SysRole::getSchoolId, schoolId);
+            }
+            SysRole sysRole = sysRoleService.getOne(sysRoleQueryWrapper);
+            if (Objects.isNull(sysRole)) {
+                throw ExceptionResultEnum.ERROR.exception("系统中不存在excel导入的角色【" + cell + "】");
+            }
+            roleIdList.add(sysRole.getId());
+        }
+        return roleIdList;
+    }
 }

+ 29 - 3
paper-library/src/main/java/com/qmth/paper/library/api/SysUserController.java

@@ -3,20 +3,26 @@ package com.qmth.paper.library.api;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.paper.library.business.bean.result.EditResult;
+import com.qmth.paper.library.business.service.PaperLibraryCommonService;
+import com.qmth.paper.library.business.templete.execute.AsyncSysUserDataImportService;
 import com.qmth.paper.library.common.bean.params.UserSaveParams;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.SysUser;
+import com.qmth.paper.library.common.entity.TBTask;
+import com.qmth.paper.library.common.enums.TaskTypeEnum;
+import com.qmth.paper.library.common.service.LibraryCommonService;
 import com.qmth.paper.library.common.service.SysUserService;
 import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import com.qmth.paper.library.common.util.ServletUtil;
+import io.swagger.annotations.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -24,6 +30,8 @@ import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -45,6 +53,12 @@ public class SysUserController {
     @Resource
     private SysUserService sysUserService;
 
+    @Resource
+    private PaperLibraryCommonService paperLibraryCommonService;
+
+    @Resource
+    private AsyncSysUserDataImportService asyncSysUserDataImportService;
+
     /**
      * 用户列表查询
      *
@@ -134,5 +148,17 @@ public class SysUserController {
         return ResultUtil.ok(sysUserService.bindRoles(sysUser));
     }
 
+    @ApiOperation(value = "用户管理-批量导入(异步)")
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result sysUserImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Map<String, Object> map = paperLibraryCommonService.saveTask(file, TaskTypeEnum.USER_IMPORT);
+        map.put(SystemConstant.SYS_USER, sysUser);
+
+        asyncSysUserDataImportService.importTask(map);
+        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
+    }
 }