|
@@ -1,14 +1,16 @@
|
|
package com.dragoninfo.dcuc.auth.sub.service.impl;
|
|
package com.dragoninfo.dcuc.auth.sub.service.impl;
|
|
|
|
|
|
-import com.dragoninfo.dcuc.auth.DcucAuthApplication;
|
|
|
|
import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
|
|
import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
|
|
-import com.dragoninfo.dcuc.auth.sub.bpo.AuthUserInfoRepository;
|
|
|
|
|
|
+import com.dragoninfo.dcuc.auth.sub.entity.AuthUserOrgRel;
|
|
|
|
+import com.dragoninfo.dcuc.auth.sub.enumresource.JobTypeEnum;
|
|
|
|
+import com.dragoninfo.dcuc.auth.sub.repo.AuthUserInfoRepository;
|
|
import com.dragoninfo.dcuc.auth.sub.dto.AuthUserDTO;
|
|
import com.dragoninfo.dcuc.auth.sub.dto.AuthUserDTO;
|
|
import com.dragoninfo.dcuc.auth.sub.dto.ExcelImpUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.dto.ExcelImpUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthOrgInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthOrgInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.entity.AuthUserInfo;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthOrgInfoService;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthOrgInfoService;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthUserInfoService;
|
|
import com.dragoninfo.dcuc.auth.sub.service.IAuthUserInfoService;
|
|
|
|
+import com.dragoninfo.dcuc.auth.sub.service.IAuthUserOrgRelService;
|
|
import com.dragoninfo.dcuc.auth.util.ImportUtil;
|
|
import com.dragoninfo.dcuc.auth.util.ImportUtil;
|
|
import com.dragoninfo.dcuc.duceap.enums.UserTypeEnum;
|
|
import com.dragoninfo.dcuc.duceap.enums.UserTypeEnum;
|
|
import com.dragoninfo.dcuc.duceap.facade.ICodeListResourceFacade;
|
|
import com.dragoninfo.dcuc.duceap.facade.ICodeListResourceFacade;
|
|
@@ -18,7 +20,9 @@ import com.dragoninfo.dcuc.list.facade.IWhiteListFacade;
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
import com.dragonsoft.duceap.base.entity.metadata.CodeRecord;
|
|
import com.dragonsoft.duceap.base.entity.metadata.CodeRecord;
|
|
import com.dragonsoft.duceap.base.entity.search.SearchDTO;
|
|
import com.dragonsoft.duceap.base.entity.search.SearchDTO;
|
|
|
|
+import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
|
|
import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
|
|
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
|
|
import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
import com.dragonsoft.duceap.core.search.Searchable;
|
|
import com.dragonsoft.duceap.core.search.Searchable;
|
|
@@ -34,9 +38,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Example;
|
|
import org.springframework.data.domain.Example;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.PageImpl;
|
|
import org.springframework.data.domain.PageImpl;
|
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
|
+import javax.persistence.criteria.Path;
|
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
@@ -97,6 +105,9 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
@Autowired
|
|
@Autowired
|
|
private IWhiteListFacade whiteListFacade;
|
|
private IWhiteListFacade whiteListFacade;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IAuthUserOrgRelService userOrgRelService;
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private DcucAuthConfig authConfig;
|
|
private DcucAuthConfig authConfig;
|
|
|
|
|
|
@@ -107,7 +118,6 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
}
|
|
}
|
|
AuthUserInfo userInfo = new AuthUserInfo();
|
|
AuthUserInfo userInfo = new AuthUserInfo();
|
|
userInfo.setIdcard(idcard);
|
|
userInfo.setIdcard(idcard);
|
|
- userInfo.setDeleted(BooleanEnum.FALSE.value);
|
|
|
|
Example<AuthUserInfo> example = Example.of(userInfo);
|
|
Example<AuthUserInfo> example = Example.of(userInfo);
|
|
return userInfoRepository.findOne(example).orElse(null);
|
|
return userInfoRepository.findOne(example).orElse(null);
|
|
}
|
|
}
|
|
@@ -120,7 +130,6 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Page<AuthUserDTO> page(Searchable searchable) {
|
|
public Page<AuthUserDTO> page(Searchable searchable) {
|
|
- searchable.addSearchFilter("deleted", SearchOperator.eq, BooleanEnum.FALSE.value);
|
|
|
|
Page<AuthUserInfo> page = userInfoRepository.paging(searchable);
|
|
Page<AuthUserInfo> page = userInfoRepository.paging(searchable);
|
|
List<AuthUserDTO> userDTOS = page.getContent().stream().map(item -> {
|
|
List<AuthUserDTO> userDTOS = page.getContent().stream().map(item -> {
|
|
AuthUserDTO userDTO = new AuthUserDTO();
|
|
AuthUserDTO userDTO = new AuthUserDTO();
|
|
@@ -169,7 +178,9 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
//对数据进行校验
|
|
//对数据进行校验
|
|
verifyUserInfo(list);
|
|
verifyUserInfo(list);
|
|
//保存数据
|
|
//保存数据
|
|
- saveImport(list);
|
|
|
|
|
|
+ List<AuthUserInfo> authUserInfos = saveImport(list);
|
|
|
|
+ //保存人员机构关联关系
|
|
|
|
+ saveUserOrgRel(authUserInfos);
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
return ResponseStatus.fail("文件格式不对");
|
|
return ResponseStatus.fail("文件格式不对");
|
|
} catch (NumberFormatException e){
|
|
} catch (NumberFormatException e){
|
|
@@ -178,6 +189,35 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
return ResponseStatus.success("导入成功");
|
|
return ResponseStatus.success("导入成功");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 保存人员和机构关系
|
|
|
|
+ * @param authUserInfos
|
|
|
|
+ */
|
|
|
|
+ private void saveUserOrgRel(List<AuthUserInfo> authUserInfos) {
|
|
|
|
+ if(CollectionUtils.isEmpty(authUserInfos)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ BaseSecurityUser currentUser = UserContextUtils.getCurrentUser();
|
|
|
|
+ List<AuthUserOrgRel> collect = authUserInfos.stream().filter(e->{
|
|
|
|
+ String userType = e.getUserType();
|
|
|
|
+ return UserTypeEnum.HELPER.getValue().equals(userType)
|
|
|
|
+ || UserTypeEnum.POLICE.getValue().equals(userType);
|
|
|
|
+ }).map(e -> {
|
|
|
|
+ AuthUserOrgRel rel = new AuthUserOrgRel();
|
|
|
|
+ rel.setIdcard(e.getIdcard());
|
|
|
|
+ rel.setOrgCode(e.getOrgCode());
|
|
|
|
+ rel.setRelStatus(JobTypeEnum.ZZ.getValue());
|
|
|
|
+ rel.setCreateTime(date);
|
|
|
|
+ rel.setDeleted(BooleanEnum.FALSE.value);
|
|
|
|
+ if(null != currentUser) {
|
|
|
|
+ rel.setCreateUser(currentUser.getId());
|
|
|
|
+ }
|
|
|
|
+ return rel;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ userOrgRelService.saveAll(collect);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void delete(String id) {
|
|
public void delete(String id) {
|
|
userInfoRepository.deleteById(id);
|
|
userInfoRepository.deleteById(id);
|
|
@@ -191,14 +231,12 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
@Override
|
|
@Override
|
|
public List<AuthUserInfo> findList(SearchDTO searchDTO) {
|
|
public List<AuthUserInfo> findList(SearchDTO searchDTO) {
|
|
Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
- searchable.addSearchFilter("deleted", SearchOperator.eq, BooleanEnum.FALSE.getValue());
|
|
|
|
return userInfoRepository.findAll(searchable);
|
|
return userInfoRepository.findAll(searchable);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Page<AuthUserDTO> notInWhiteListUserPage(SearchDTO searchDTO) {
|
|
public Page<AuthUserDTO> notInWhiteListUserPage(SearchDTO searchDTO) {
|
|
Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
- searchable.addSearchFilter("deleted", SearchOperator.eq, BooleanEnum.FALSE.value);
|
|
|
|
List<String> userIds = whiteListFacade.getAllUser();
|
|
List<String> userIds = whiteListFacade.getAllUser();
|
|
searchable.addSearchFilter("id", SearchOperator.notIn, userIds);
|
|
searchable.addSearchFilter("id", SearchOperator.notIn, userIds);
|
|
Page<AuthUserInfo> userPage = userInfoRepository.paging(searchable);
|
|
Page<AuthUserInfo> userPage = userInfoRepository.paging(searchable);
|
|
@@ -246,13 +284,33 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
return rootUserId;
|
|
return rootUserId;
|
|
}
|
|
}
|
|
|
|
|
|
- private void saveImport(List<ExcelImpUserInfo> list) {
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<AuthUserInfo> getByIdcards(List<String> idcards) {
|
|
|
|
+ Specification<AuthUserInfo> spec = (root, query, cb) -> root.get("idcard").in(idcards);
|
|
|
|
+ return userInfoRepository.findAll(spec);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<AuthUserInfo> saveImport(List<ExcelImpUserInfo> list) {
|
|
|
|
+ List<AuthUserInfo> authUserInfos = new ArrayList<>();
|
|
|
|
+ if(CollectionUtils.isEmpty(list)) {
|
|
|
|
+ return authUserInfos;
|
|
|
|
+ }
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ BaseSecurityUser currentUser = UserContextUtils.getCurrentUser();
|
|
list.forEach(item->{
|
|
list.forEach(item->{
|
|
AuthUserInfo authUserInfo = new AuthUserInfo();
|
|
AuthUserInfo authUserInfo = new AuthUserInfo();
|
|
BeanUtils.copyProperties(item, authUserInfo);
|
|
BeanUtils.copyProperties(item, authUserInfo);
|
|
authUserInfo.setDeleted(BooleanEnum.FALSE.value);
|
|
authUserInfo.setDeleted(BooleanEnum.FALSE.value);
|
|
- userInfoRepository.save(authUserInfo);
|
|
|
|
|
|
+ authUserInfo.setCreateTime(date);
|
|
|
|
+ if(null != currentUser) {
|
|
|
|
+ authUserInfo.setCreateUser(currentUser.getId());
|
|
|
|
+ }
|
|
|
|
+ authUserInfos.add(authUserInfo);
|
|
});
|
|
});
|
|
|
|
+ if(CollectionUtils.isNotEmpty(authUserInfos)) {
|
|
|
|
+ userInfoRepository.saveAll(authUserInfos);
|
|
|
|
+ }
|
|
|
|
+ return authUserInfos;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -393,7 +451,6 @@ public class AuthUserInfoService implements IAuthUserInfoService {
|
|
private List<String> getExistIdcards(List<String> idcards) {
|
|
private List<String> getExistIdcards(List<String> idcards) {
|
|
Searchable searchable = Searchable.newSearchable();
|
|
Searchable searchable = Searchable.newSearchable();
|
|
searchable.addSearchFilter("idcard", SearchOperator.in, idcards);
|
|
searchable.addSearchFilter("idcard", SearchOperator.in, idcards);
|
|
- searchable.addSearchFilter("deleted", SearchOperator.eq, BooleanEnum.FALSE.value);
|
|
|
|
List<AuthUserInfo> authUserInfos = userInfoRepository.findAll(searchable);
|
|
List<AuthUserInfo> authUserInfos = userInfoRepository.findAll(searchable);
|
|
List<String> collect = authUserInfos.stream().map(AuthUserInfo::getIdcard).distinct().collect(Collectors.toList());
|
|
List<String> collect = authUserInfos.stream().map(AuthUserInfo::getIdcard).distinct().collect(Collectors.toList());
|
|
return collect;
|
|
return collect;
|