diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java index 9dcfb9c..08ca347 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java @@ -20,6 +20,7 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -117,7 +118,7 @@ public class UserController { @ApiOperation("导出用户列表") @PostMapping("/exportUserTable") - public void exportPointTable(@Validated @RequestBody UserExportQry qry, HttpServletResponse httpServletResponse) { + public void exportUserTable(@Validated @RequestBody UserExportQry qry, HttpServletResponse httpServletResponse) { List dataIds = Collections.emptyList(); if(qry.getIds() != null && qry.getIds().length > 0){ dataIds = Arrays.stream(qry.getIds()) @@ -128,5 +129,12 @@ public class UserController { } userService.exportUserTable(httpServletResponse, dataIds, Long.valueOf(qry.getCorpinfoId())); } + + @ApiOperation("导入用户列表") + @PostMapping("/importUserTable") + public Response importUserTable(@RequestPart(value = "file") MultipartFile file) { + userService.importUserTable(file); + return SingleResponse.buildSuccess(); + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index 28e93b9..91110a9 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -1,19 +1,28 @@ package com.zcloud.basic.info.command; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.cola.exception.BizException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jjb.saas.config.client.dicttree.facade.ConfDictTreeFacade; +import com.jjb.saas.config.client.dicttree.response.ConfDictTreeCO; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.basic.info.command.convertor.UserCoConvertor; import com.zcloud.basic.info.domain.gateway.CorpInfoGateway; import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; import com.zcloud.basic.info.domain.gateway.UserGateway; +import com.zcloud.basic.info.domain.model.DepartmentE; +import com.zcloud.basic.info.domain.model.PostE; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserEmploymentLogE; import com.zcloud.basic.info.dto.UserAddCmd; import com.zcloud.basic.info.dto.UserXgfAddCmd; -import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; -import com.zcloud.basic.info.persistence.dataobject.UserEmploymentLogDO; +import com.zcloud.basic.info.persistence.dataobject.*; import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; +import com.zcloud.basic.info.persistence.repository.DepartmentRepository; +import com.zcloud.basic.info.persistence.repository.PostRepository; +import com.zcloud.basic.info.persistence.repository.UserRepository; +import com.zcloud.gbscommon.excelEntity.UserExcelImportEntity; import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; @@ -23,6 +32,10 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Collections; +import java.util.List; /** @@ -37,6 +50,12 @@ public class UserAddExe { private UserCoConvertor userCoConvertor; private final UserEmploymentLogGateway userEmploymentLogGateway; private final CorpInfoRepository corpInfoRepository; + private final DepartmentRepository departmentRepository; + private final PostRepository postRepository; + private final UserRepository userRepository; + @DubboReference + private ConfDictTreeFacade confDictTreeFacade; + // @Autowired // private RedisTemplate redisTemplate; // @DubboReference(check = false) @@ -98,5 +117,36 @@ public class UserAddExe { } return true; } + + @Transactional(rollbackFor = Exception.class) + public void importUserTable(MultipartFile file){ + UserE userE = new UserE(); + Long corpinfoId = AuthContext.getTenantId(); + + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("corpinfo_id", corpinfoId); + queryWrapper.eq("delete_enum", "FALSE"); + + // 部门数据 + List departmentDOList = departmentRepository.list(queryWrapper); + List departmentEList = BeanUtil.copyToList(departmentDOList, DepartmentE.class); + // 岗位数据 + List postDOList = postRepository.list(queryWrapper); + List postEList = BeanUtil.copyToList(postDOList, PostE.class); + queryWrapper.clear(); + // 用户名数据 + queryWrapper.eq("delete_enum", "FALSE"); + List userDOList = userRepository.list(queryWrapper); + List userEList = BeanUtil.copyToList(userDOList, UserE.class); + // 企业端-人员类型字典 + List confDictCOList = confDictTreeFacade.listByAppKeyAndParentIdTree("0bb989ecada5470c87635018ece9f327", 1986379731994513408L); +// if(CollectionUtil) + + + List userExcelImportEntityList = userE.parseImportTemplateData(file); + List userDOS = userCoConvertor.converExcelEntitysToDOs(userExcelImportEntityList); + // todo 批量插入用户 + + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java b/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java index c3704bb..5a3f256 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java @@ -5,6 +5,7 @@ import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.dto.clientobject.UserCO; import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; +import com.zcloud.gbscommon.excelEntity.UserExcelImportEntity; import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo; import org.mapstruct.Mapper; @@ -25,6 +26,7 @@ public interface UserCoConvertor { */ List converDOsToCOs(List userDOs); List converDOsToExcelEntitys(List userDOs); + List converExcelEntitysToDOs(List entities); UserCO converDOToCO(UserDO userDO); FacadeUserAddCmd converEToFacadeUserAddCmd(UserE userE); diff --git a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java index d0f05d7..b96017c 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java @@ -13,6 +13,7 @@ import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.clientobject.UserCO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.Collection; @@ -62,6 +63,11 @@ public class UserServiceImpl implements UserServiceI { userQueryExe.exportUserTable(httpServletResponse, dataIds, corpinfoId); } + @Override + public void importUserTable(MultipartFile file) { + userAddExe.importUserTable(file); + } + @Override public void remove(Long id) { userRemoveExe.execute(id); diff --git a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java index d63bd56..f0ff51f 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java +++ b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java @@ -7,6 +7,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.clientobject.UserCO; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.Collection; @@ -28,6 +29,8 @@ public interface UserServiceI { void exportUserTable(HttpServletResponse httpServletResponse, List dataIds, Long corpinfoId); + void importUserTable(MultipartFile file); + void remove(Long id); void removeBatch(Long[] ids); diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java index 7def2c5..d3e4c54 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java @@ -1,16 +1,22 @@ package com.zcloud.basic.info.domain.model; +import cn.hutool.core.collection.CollUtil; import com.alibaba.cola.dto.Response; import com.alibaba.cola.exception.BizException; import com.jjb.saas.framework.domain.model.BaseE; +import com.zcloud.gbscommon.excelEntity.RiskUnitExcelEntity; import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; +import com.zcloud.gbscommon.excelEntity.UserExcelImportEntity; import com.zcloud.gbscommon.utils.ExcelUtils; import com.zcloud.gbscommon.utils.Tools; +import com.zcloud.gbscommon.utils.UuidUtil; import lombok.Data; import org.springframework.util.ObjectUtils; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** @@ -155,6 +161,13 @@ public class UserE extends BaseE { return false; } + public void checkNull(List userList) { + if(CollUtil.isNotEmpty(userList)){ + throw new BizException("岗位有相应人员,请解除相关岗位信息后删除。"); + } + } + + // 导出 public void exportUserTable(HttpServletResponse httpServletResponse, List userExcelEntities) { try { @@ -164,5 +177,24 @@ public class UserE extends BaseE { } } + // 导入 + public List parseImportTemplateData(MultipartFile file){ + List list = new ArrayList<>(); + try { + ExcelUtils.readBatch(file, UserExcelImportEntity.class, list); + if (list.isEmpty()) { + throw new BizException("文件为空"); + } + } catch (Exception e) { + throw new BizException("文件解析失败"); + } + // todo 校验 + for (int i = 0; i < list.size(); i++) { + UserExcelImportEntity entity = list.get(i); + + } + return list; + } + }