|
@@ -1,13 +1,27 @@
|
|
|
package com.dragoninfo.dcuc.auth.element.business.impl;
|
|
|
|
|
|
import com.dragoninfo.dcuc.auth.element.business.IEnvElementBusiness;
|
|
|
+import com.dragoninfo.dcuc.auth.element.entity.ElementUserRel;
|
|
|
import com.dragoninfo.dcuc.auth.element.entity.EnvElement;
|
|
|
+import com.dragoninfo.dcuc.auth.element.service.IElementUserRelService;
|
|
|
import com.dragoninfo.dcuc.auth.element.service.IEnvElementService;
|
|
|
+import com.dragoninfo.dcuc.auth.element.vo.ElementUserRelRespVo;
|
|
|
+import com.dragoninfo.dcuc.auth.element.vo.ElementUserSaveVo;
|
|
|
import com.dragoninfo.dcuc.auth.element.vo.EnvElementSaveVo;
|
|
|
import com.dragoninfo.dcuc.auth.element.vo.RespEnvElementVo;
|
|
|
+import com.dragoninfo.dcuc.auth.sub.entity.AuthUserInfo;
|
|
|
+import com.dragoninfo.dcuc.auth.sub.service.IAuthUserInfoService;
|
|
|
+import com.dragoninfo.dcuc.auth.sub.vo.AuthUserVo;
|
|
|
+import com.dragoninfo.dcuc.common.utils.DcucBeanUtil;
|
|
|
+import com.dragoninfo.duceap.core.enums.ResultEnum;
|
|
|
+import com.dragoninfo.duceap.core.response.Result;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
|
import com.dragonsoft.duceap.base.entity.search.SearchDTO;
|
|
|
+import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
|
+import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
|
|
|
import com.dragonsoft.duceap.core.search.Searchable;
|
|
|
+import com.dragonsoft.duceap.core.search.enums.SearchOperator;
|
|
|
+import com.dragonsoft.duceap.core.search.filter.Condition;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
@@ -18,6 +32,7 @@ import org.springframework.stereotype.Service;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -30,6 +45,12 @@ public class EnvElementBusiness implements IEnvElementBusiness {
|
|
|
@Autowired
|
|
|
private IEnvElementService envElementService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IElementUserRelService elementUserRelService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IAuthUserInfoService userInfoService;
|
|
|
+
|
|
|
@Override
|
|
|
public RespEnvElementVo getById(String id) {
|
|
|
EnvElement envElement = envElementService.getById(id);
|
|
@@ -82,4 +103,132 @@ public class EnvElementBusiness implements IEnvElementBusiness {
|
|
|
envElementService.deleted(id);
|
|
|
return ResponseStatus.success();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result<List<ElementUserRelRespVo>> userRelPage(SearchDTO searchDTO) {
|
|
|
+ Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
|
+ Condition elementIdCondition = searchable.getSearchFilter("elementId", SearchOperator.eq);
|
|
|
+ if (null == elementIdCondition) {
|
|
|
+ return Result.failMessage("请选择环境要素");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 暂时没有用户查询条件
|
|
|
+ List<AuthUserInfo> userInfos = null;
|
|
|
+// List<AuthUserInfo> userInfos = getSearchUsers(searchable);
|
|
|
+// if (userInfos != null && userInfos.isEmpty()) {
|
|
|
+// return Result.success(0L, Collections.emptyList());
|
|
|
+// }
|
|
|
+ String elementId = elementIdCondition.getValue().toString();
|
|
|
+ Page<ElementUserRel> elementUserRels = getElementUserRels(searchable, elementId, userInfos);
|
|
|
+ if (elementUserRels.isEmpty()) {
|
|
|
+ return Result.success(0L, Collections.emptyList());
|
|
|
+ }
|
|
|
+ // 用户查询为空再次查询用户
|
|
|
+ if (null == userInfos) {
|
|
|
+ List<String> userIds = elementUserRels.getContent()
|
|
|
+ .stream()
|
|
|
+ .map(ElementUserRel::getUserId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ userInfos = userInfoService.findByIds(userIds);
|
|
|
+ if (CollectionUtils.isEmpty(userInfos)) {
|
|
|
+ return Result.success(0L, Collections.emptyList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return getPageVos(elementUserRels, userInfos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result<Object> userRelSave(ElementUserSaveVo relSaveVo) {
|
|
|
+ List<String> userIds = relSaveVo.getUserIds();
|
|
|
+ if (CollectionUtils.isEmpty(userIds)) {
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+ String elementId = relSaveVo.getElementId();
|
|
|
+ List<ElementUserRel> collect = userIds.stream()
|
|
|
+ .map(e -> {
|
|
|
+ ElementUserRel userRel = new ElementUserRel();
|
|
|
+ userRel.setElementId(elementId);
|
|
|
+ userRel.setUserId(e);
|
|
|
+ userRel.setDeleted(BooleanEnum.FALSE.value);
|
|
|
+ return userRel;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ elementUserRelService.batchSave(collect);
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result<Object> deleteUserRel(String id) {
|
|
|
+ elementUserRelService.deleteById(id);
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result<List<AuthUserVo>> notInUserRelPage(SearchDTO searchDTO) {
|
|
|
+ Searchable searchable = Searchable.toSearchable(searchDTO);
|
|
|
+ Condition elementIdCondition = searchable.getSearchFilter("elementId", SearchOperator.eq);
|
|
|
+ if (null == elementIdCondition) {
|
|
|
+ return Result.failMessage("请选择环境要素");
|
|
|
+ }
|
|
|
+ searchable.removeSearchFilter("elementId", SearchOperator.eq);
|
|
|
+ String elementId = elementIdCondition.getValue().toString();
|
|
|
+ // 查询关联人员的id
|
|
|
+ List<String> userIds = elementUserRelService.getUserIdByElementId(elementId);
|
|
|
+ if (CollectionUtils.isNotEmpty(userIds)) {
|
|
|
+ searchable.addSearchFilter("id", SearchOperator.notIn, userIds);
|
|
|
+ }
|
|
|
+ Page<AuthUserInfo> page = userInfoService.page(searchable);
|
|
|
+ Page<AuthUserVo> copy = DcucBeanUtil.createCopyToObjectPage(page, AuthUserVo.class);
|
|
|
+ return new Result(ResultEnum.SUCCESS.getKey(), ResultEnum.SUCCESS.getValue(), copy.getTotalElements(),copy.getContent());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Page<ElementUserRel> getElementUserRels(Searchable searchable, String elementId, List<AuthUserInfo> userInfos) {
|
|
|
+ Searchable relSearch = Searchable.newSearchable();
|
|
|
+ relSearch.addSort(Sort.Direction.DESC, "createTime");
|
|
|
+ relSearch.addSearchFilter("elementId", SearchOperator.eq, elementId);
|
|
|
+ relSearch.setPage(searchable.getPage());
|
|
|
+ if (userInfos != null) {
|
|
|
+ List<String> userIds = userInfos.stream()
|
|
|
+ .map(AuthUserInfo::getId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ relSearch.addSearchFilter("userId", SearchOperator.in, userIds);
|
|
|
+ }
|
|
|
+ return elementUserRelService.pageSearch(relSearch);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Result<List<ElementUserRelRespVo>> getPageVos(Page<ElementUserRel> userRelPage, List<AuthUserInfo> userInfos) {
|
|
|
+ Map<String, AuthUserInfo> userInfoMap = userInfos
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(AuthUserInfo::getId, e -> e));
|
|
|
+ List<ElementUserRelRespVo> collect = userRelPage.stream()
|
|
|
+ .map(e -> {
|
|
|
+ ElementUserRelRespVo vo = new ElementUserRelRespVo();
|
|
|
+ BeanUtils.copyProperties(e, vo);
|
|
|
+ String userId = e.getUserId();
|
|
|
+ AuthUserInfo authUserInfo = userInfoMap.get(userId);
|
|
|
+ if (null != authUserInfo) {
|
|
|
+ vo.setIdcard(authUserInfo.getIdcard());
|
|
|
+ vo.setUserName(authUserInfo.getName());
|
|
|
+ vo.setOrgName(authUserInfo.getOrgName());
|
|
|
+ vo.setPoliceNumber(authUserInfo.getPoliceNumber());
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return Result.success(userRelPage.getTotalElements(), collect);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回null表示不查询
|
|
|
+ * 返回空集合表示查询结果为空
|
|
|
+ *
|
|
|
+ * @param searchable
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<AuthUserInfo> getSearchUsers(Searchable searchable) {
|
|
|
+ searchable.removeSearchFilter("elementId", SearchOperator.eq);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
}
|