dev
luotaiqian 2026-08-04 09:42:12 +08:00
parent 09301a18b6
commit f0ebc579ab
3 changed files with 49 additions and 10 deletions

View File

@ -1,15 +1,20 @@
package org.qinan.safetyeval.app.support; package org.qinan.safetyeval.app.support;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.system.client.user.request.RoleDeptAddCmd;
import com.jjb.saas.system.client.user.request.UserAddCmd;
import com.zcloud.gbscommon.utils.MD5;
import com.zcloud.gbscommon.utils.Sm2Util;
import org.qinan.safetyeval.client.co.OrgPersonnelImportErrorCO; import org.qinan.safetyeval.client.co.OrgPersonnelImportErrorCO;
import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO; import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO;
import org.qinan.safetyeval.domain.constant.QualificationLevelEnum;
import org.qinan.safetyeval.domain.entity.OrgDepartmentEntity; import org.qinan.safetyeval.domain.entity.OrgDepartmentEntity;
import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity;
import org.qinan.safetyeval.domain.entity.OrgPositionEntity; import org.qinan.safetyeval.domain.entity.OrgPositionEntity;
import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.domain.entity.TitleCodeCo;
import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.constant.QualificationLevelEnum;
import org.qinan.safetyeval.domain.gateway.OrgDepartmentGateway; import org.qinan.safetyeval.domain.gateway.OrgDepartmentGateway;
import org.qinan.safetyeval.domain.gateway.OrgPersonnelGateway; import org.qinan.safetyeval.domain.gateway.OrgPersonnelGateway;
import org.qinan.safetyeval.domain.gateway.OrgPositionGateway; import org.qinan.safetyeval.domain.gateway.OrgPositionGateway;
@ -17,8 +22,10 @@ import org.qinan.safetyeval.domain.major.gateway.BasicDisciplineMajorGateway;
import org.qinan.safetyeval.domain.major.model.BasicDisciplineMajorE; import org.qinan.safetyeval.domain.major.model.BasicDisciplineMajorE;
import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService; import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
import org.qinan.safetyeval.infrastructure.remote.SystemRemote;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -27,15 +34,7 @@ import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeFormatterBuilder;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -70,6 +69,19 @@ public class OrgPersonnelExcelImporter {
@Resource @Resource
private OrgPersonnelDomainService orgPersonnelDomainService; private OrgPersonnelDomainService orgPersonnelDomainService;
@Resource
private SystemRemote systemRemote;
@Value("${def.password:a123456}")
private String defPassword;
@Value("${def.publicKey:0402df2195296d4062ac85ad766994d73e871b887e18efb9a9a06b4cebc72372869b7da6c347c129dee2b46a0f279ff066b01c76208c2a052af75977c722a2ccee}")
private String publicKey;
@Value("${auth.deptId.org}")
private Long orgDeptId;
@Value("${auth.roleCode.org}")
private String orgRoleCode;
public OrgPersonnelImportResultCO importPersonnel(MultipartFile file) { public OrgPersonnelImportResultCO importPersonnel(MultipartFile file) {
if (file == null || file.isEmpty()) { if (file == null || file.isEmpty()) {
throw new BizException(ErrorCode.FILE_UPLOAD_EMPTY); throw new BizException(ErrorCode.FILE_UPLOAD_EMPTY);
@ -118,6 +130,8 @@ public class OrgPersonnelExcelImporter {
// 行内枚举/数据校验未通过,已记录异常 // 行内枚举/数据校验未通过,已记录异常
continue; continue;
} }
Long userId = addUserIfAbsentAndAppendRole(entity);
entity.setId(userId);
orgPersonnelDomainService.add(entity); orgPersonnelDomainService.add(entity);
successCount++; successCount++;
} catch (Exception ex) { } catch (Exception ex) {
@ -133,6 +147,29 @@ public class OrgPersonnelExcelImporter {
return result; return result;
} }
/**
* addUserIfAbsentAndAppendRole
*
* @return Long
*/
public Long addUserIfAbsentAndAppendRole(OrgPersonnelEntity personnelEntity) {
// 添加底座用户
UserAddCmd userAddCmd = new UserAddCmd();
userAddCmd.setAccount(personnelEntity.getAccount());
userAddCmd.setTenantId(AuthContext.getTenantId());
userAddCmd.setName(personnelEntity.getUserName());
String encrypt = Sm2Util.encryptHex(MD5.md5(defPassword), publicKey);
userAddCmd.setPassword(encrypt);
RoleDeptAddCmd roleDept = new RoleDeptAddCmd();
roleDept.setRoleCode(orgRoleCode);
roleDept.setDeptId(orgDeptId);
userAddCmd.setRoleDepts(Collections.singletonList(roleDept));
return systemRemote.addUserIfAbsentAndAppendRole(userAddCmd
, Collections.singletonList(orgRoleCode));
}
/** /**
* Excel12 * Excel12
* <p> * <p>

View File

@ -77,6 +77,7 @@ auth:
org: 2074857068268802050 org: 2074857068268802050
roleCode: roleCode:
expert: expert001 expert: expert001
org: org001
template: template:
personnel: personnel:

View File

@ -78,6 +78,7 @@ auth:
org: 2069671307598893058 org: 2069671307598893058
roleCode: roleCode:
expert: expert001 expert: expert001
org: org001
template: template:
personnel: personnel: