|
@@ -1,7 +1,6 @@
|
|
|
package com.rongwei.savecheck.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysRoleDo;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
@@ -13,19 +12,19 @@ import com.rongwei.rwcommon.vo.SearchColumnVo;
|
|
|
import com.rongwei.sfcommon.utils.CommonUtil;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
-
|
|
|
+import com.rongwei.sfcommon.config.QueryFilteringConfig;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.rongwei.safecommon.utils.SaveConstans.*;
|
|
|
+import static com.rongwei.safecommon.utils.SaveConstans.AND;
|
|
|
|
|
|
/**
|
|
|
* CxCommonController class
|
|
@@ -36,21 +35,23 @@ import static com.rongwei.safecommon.utils.SaveConstans.*;
|
|
|
@RestController
|
|
|
@RequestMapping("/common")
|
|
|
@RefreshScope
|
|
|
-public class CxCommonController {
|
|
|
+public class QueryFilteringController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private QueryFilteringConfig queryFilteringConfig;
|
|
|
+
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
+
|
|
|
public static final SearchColumnVo SEARCH_COLUMN_VO = new SearchColumnVo() {{
|
|
|
setField("TENANTID");
|
|
|
setFieldType("string");
|
|
|
setSymbol("like");
|
|
|
}};
|
|
|
+
|
|
|
public static final ColumnQueryType COLUMN_QUERY_TYPE = new ColumnQueryType() {{
|
|
|
setLastTyepRelation(AND);
|
|
|
setColumnInnerRelation(AND);
|
|
|
}};
|
|
|
- private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
- @Value("#{'${pagepart.blacklist}'.split(',')}")
|
|
|
- private List<String> blackListPagePartIds;
|
|
|
- @Value("#{'${control.rolecode}'.split(',')}")
|
|
|
- private List<String> controlRoleCode;
|
|
|
|
|
|
@PostMapping("/criteria/query")
|
|
|
public R weekForYear(@RequestBody Map<String, Object> map) {
|
|
@@ -64,12 +65,12 @@ public class CxCommonController {
|
|
|
logger.error("查询参数异常");
|
|
|
return R.ok(new CriteriaQuery());
|
|
|
}
|
|
|
- if (StringUtils.isBlank(criteriaQuery.getPagePartId())) {
|
|
|
+ if(StringUtils.isBlank(criteriaQuery.getPagePartId())){
|
|
|
logger.error("查询参数异常");
|
|
|
return R.ok(criteriaQuery);
|
|
|
}
|
|
|
// 如果ID在黑名单中直接返回
|
|
|
- if (blackListPagePartIds.contains(criteriaQuery.getPagePartId())) {
|
|
|
+ if (queryFilteringConfig.getNoIsolationPagePartId().contains(criteriaQuery.getPagePartId())) {
|
|
|
return R.ok(criteriaQuery);
|
|
|
}
|
|
|
SysUserVo currentUser = CommonUtil.getCurrentUser();
|
|
@@ -83,7 +84,7 @@ public class CxCommonController {
|
|
|
return R.ok(criteriaQuery);
|
|
|
}
|
|
|
// 判断是否拥有特殊角色 只有这些角色可以看所有厂区的数据
|
|
|
- SysRoleDo sysRoleDo = roleDos.stream().filter(role -> controlRoleCode.contains(role.getCode())).findFirst().orElse(null);
|
|
|
+ SysRoleDo sysRoleDo = roleDos.stream().filter(role -> queryFilteringConfig.getOrgCod().contains(role.getCode())).findFirst().orElse(null);
|
|
|
if (sysRoleDo != null) {
|
|
|
return R.ok(criteriaQuery);
|
|
|
}
|
|
@@ -92,15 +93,17 @@ public class CxCommonController {
|
|
|
logger.error("无法获取到当前登陆人所属的组织机构");
|
|
|
return R.ok(criteriaQuery);
|
|
|
}
|
|
|
- String topOrgId = organizationDoList.stream()
|
|
|
- .filter(org -> MINUS_ONE.equals(org.getPid()))
|
|
|
- .map(SysOrganizationDo::getId)
|
|
|
- .distinct()
|
|
|
- .collect(Collectors.joining(","));
|
|
|
- if (StringUtils.isBlank(topOrgId)) {
|
|
|
- topOrgId = organizationDoList.stream().map(info -> info.getFullpid().split(",")[1]).distinct().collect(Collectors.joining(","));
|
|
|
- }
|
|
|
- SEARCH_COLUMN_VO.setValue(topOrgId);
|
|
|
+ List<String> isolationId = queryFilteringConfig.getIsolationId();
|
|
|
+ List<String> userOrgIds = organizationDoList.stream().map(org -> {
|
|
|
+ if (StringUtils.isBlank(org.getFullpid())) {
|
|
|
+ return org.getId().split(",");
|
|
|
+ } else {
|
|
|
+ return (org.getId() + org.getFullpid()).split(",");
|
|
|
+ }
|
|
|
+ }).flatMap(Arrays::stream).distinct().collect(Collectors.toList());
|
|
|
+ // 过滤的数据ID
|
|
|
+ String curentUserisolationId = isolationId.stream().filter(userOrgIds::contains).findFirst().orElse(null);
|
|
|
+ SEARCH_COLUMN_VO.setValue(curentUserisolationId);
|
|
|
COLUMN_QUERY_TYPE.setColumns(Arrays.asList(SEARCH_COLUMN_VO));
|
|
|
List<ColumnQueryType> columnQueryTypes = criteriaQuery.getColumnQueryTypes();
|
|
|
columnQueryTypes.add(COLUMN_QUERY_TYPE);
|