Commit 979001e0 authored by 雍欢's avatar 雍欢

涉密等级查询条件

parent f49151b8
package com.huigou.uasp.bmp.common.easysearch.application.impl; package com.huigou.uasp.bmp.common.easysearch.application.impl;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.huigou.cache.DictionaryDesc;
import com.huigou.cache.SystemCache; import com.huigou.cache.SystemCache;
import com.huigou.context.ThreadLocalUtil; import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.dialect.Dialect; import com.huigou.data.dialect.Dialect;
...@@ -29,6 +25,7 @@ import com.huigou.uasp.bmp.easysearch.EasySearchDocument.EasySearch; ...@@ -29,6 +25,7 @@ import com.huigou.uasp.bmp.easysearch.EasySearchDocument.EasySearch;
import com.huigou.uasp.bmp.easysearch.PermissionDocument.Permission; import com.huigou.uasp.bmp.easysearch.PermissionDocument.Permission;
import com.huigou.uasp.bmp.easysearch.PermissionsDocument.Permissions; import com.huigou.uasp.bmp.easysearch.PermissionsDocument.Permissions;
import com.huigou.util.*; import com.huigou.util.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
...@@ -119,6 +116,7 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial ...@@ -119,6 +116,7 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial
// 重新构建查询条件 // 重新构建查询条件
String sql = dto.buildSql(); String sql = dto.buildSql();
Map<String, Object> param = dto.getQueryParams(); Map<String, Object> param = dto.getQueryParams();
initPersonSecurityGradeRange(sdo, param);
param.put("currentPersonId", sdo.getOperator().getUserId()); param.put("currentPersonId", sdo.getOperator().getUserId());
param.put("currentOrgId", sdo.getOperator().getOrgId()); param.put("currentOrgId", sdo.getOperator().getOrgId());
param.put("currentPositionId", sdo.getOperator().getPositionId()); param.put("currentPositionId", sdo.getOperator().getPositionId());
...@@ -137,6 +135,29 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial ...@@ -137,6 +135,29 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial
dto.setData(reBuilderData(dto, list)); dto.setData(reBuilderData(dto, list));
} }
/**
* 初始化人员涉密等级参数值
*
* @param param 原始查询参数
*/
private void initPersonSecurityGradeRange(SDO sdo, Map<String, Object> param) {
Map<String, DictionaryDesc> personSecurityGradeDictionary = SystemCache.getDictionary("personSecurityGrade");
String minPersonSecurityGrade = sdo.getString("minPersonSecurityGrade");
if (StringUtils.isNotBlank(minPersonSecurityGrade)) {
Integer personSecurityGradeSequence = Optional.ofNullable(personSecurityGradeDictionary.get(minPersonSecurityGrade))
.map(DictionaryDesc::getSequence)
.orElseThrow(() -> new IllegalArgumentException(String.format("无效的涉密等级: %s", minPersonSecurityGrade)));
param.put("minPersonSecurityGrade", personSecurityGradeSequence);
}
String maxPersonSecurityGrade = sdo.getString("maxPersonSecurityGrade");
if (StringUtils.isNotBlank(maxPersonSecurityGrade)) {
Integer personSecurityGradeSequence = Optional.ofNullable(personSecurityGradeDictionary.get(maxPersonSecurityGrade))
.map(DictionaryDesc::getSequence)
.orElseThrow(() -> new IllegalArgumentException(String.format("无效的涉密等级: %s", maxPersonSecurityGrade)));
param.put("maxPersonSecurityGrade", personSecurityGradeSequence);
}
}
/** /**
* 判断快捷查询执行前是否需要调用外部接口 * 判断快捷查询执行前是否需要调用外部接口
* *
...@@ -214,6 +235,7 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial ...@@ -214,6 +235,7 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial
// 重新构建查询条件 // 重新构建查询条件
String sql = dto.buildSql(); String sql = dto.buildSql();
Map<String, Object> param = dto.getQueryParams(); Map<String, Object> param = dto.getQueryParams();
initPersonSecurityGradeRange(sdo, param);
param.put("currentPersonId", sdo.getOperator().getUserId()); param.put("currentPersonId", sdo.getOperator().getUserId());
param.put("currentOrgId", sdo.getOperator().getOrgId()); param.put("currentOrgId", sdo.getOperator().getOrgId());
param.put("currentPositionId", sdo.getOperator().getPositionId()); param.put("currentPositionId", sdo.getOperator().getPositionId());
......
...@@ -3,7 +3,10 @@ package com.huigou.uasp.bmp.common.treeview.application.impl; ...@@ -3,7 +3,10 @@ package com.huigou.uasp.bmp.common.treeview.application.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import com.huigou.cache.DictionaryDesc;
import com.huigou.cache.SystemCache;
import com.huigou.data.jdbc.JDBCDao; import com.huigou.data.jdbc.JDBCDao;
import com.huigou.data.query.QueryPermissionBuilder; import com.huigou.data.query.QueryPermissionBuilder;
import com.huigou.data.query.model.SQLModel; import com.huigou.data.query.model.SQLModel;
...@@ -12,6 +15,7 @@ import com.huigou.uasp.bmp.common.treeview.domain.model.TreeModel; ...@@ -12,6 +15,7 @@ import com.huigou.uasp.bmp.common.treeview.domain.model.TreeModel;
import com.huigou.util.ClassHelper; import com.huigou.util.ClassHelper;
import com.huigou.util.Constants; import com.huigou.util.Constants;
import com.huigou.util.StringUtil; import com.huigou.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
/** /**
* 查询树结构 * 查询树结构
...@@ -41,6 +45,7 @@ public class TreeViewApplicationImpl implements TreeViewApplication { ...@@ -41,6 +45,7 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
* @throws Exception * @throws Exception
*/ */
public List<Map<String, Object>> treeBuilder(final TreeModel model, final Map<String, Object> param) throws Exception { public List<Map<String, Object>> treeBuilder(final TreeModel model, final Map<String, Object> param) throws Exception {
initPersonSecurityGradeRange(param);
String sql = model.getRootSql(param); String sql = model.getRootSql(param);
String manageType = model.getManageType(); String manageType = model.getManageType();
if (!StringUtil.isBlank(manageType)) { if (!StringUtil.isBlank(manageType)) {
...@@ -64,15 +69,15 @@ public class TreeViewApplicationImpl implements TreeViewApplication { ...@@ -64,15 +69,15 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
/** /**
* 第归查询子节点 * 第归查询子节点
* *
* @author
* @param id * @param id
* @param model * @param model
* @param param * @param param
* @return * @return
* @throws Exception * @throws Exception List<Map<String,Object>>
* List<Map<String,Object>> * @author
*/ */
public List<Map<String, Object>> treeBuilderChildren(String id, TreeModel model, Map<String, Object> param) throws Exception { public List<Map<String, Object>> treeBuilderChildren(String id, TreeModel model, Map<String, Object> param) throws Exception {
initPersonSecurityGradeRange(param);
String sql = model.getChildrenSql(param); String sql = model.getChildrenSql(param);
String manageType = model.getManageType(); String manageType = model.getManageType();
if (!StringUtil.isBlank(manageType)) { if (!StringUtil.isBlank(manageType)) {
...@@ -98,8 +103,7 @@ public class TreeViewApplicationImpl implements TreeViewApplication { ...@@ -98,8 +103,7 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
* 树节点添加权限标志 * 树节点添加权限标志
* *
* @param list * @param list
* @param manageType * @param manageType 管理权限类别
* 管理权限类别
* @return * @return
*/ */
private List<Map<String, Object>> addPermissionFlag(List<Map<String, Object>> list, String manageType) { private List<Map<String, Object>> addPermissionFlag(List<Map<String, Object>> list, String manageType) {
...@@ -122,4 +126,27 @@ public class TreeViewApplicationImpl implements TreeViewApplication { ...@@ -122,4 +126,27 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
} }
return l; return l;
} }
/**
* 初始化人员涉密等级参数值
*
* @param param 原始查询参数
*/
private void initPersonSecurityGradeRange(Map<String, Object> param) {
Map<String, DictionaryDesc> personSecurityGradeDictionary = SystemCache.getDictionary("personSecurityGrade");
String minPersonSecurityGrade = (String) param.get("minPersonSecurityGrade");
if (StringUtils.isNotBlank(minPersonSecurityGrade)) {
Integer personSecurityGradeSequence = Optional.ofNullable(personSecurityGradeDictionary.get(minPersonSecurityGrade))
.map(DictionaryDesc::getSequence)
.orElseThrow(() -> new IllegalArgumentException(String.format("无效的涉密等级: %s", minPersonSecurityGrade)));
param.put("minPersonSecurityGrade", personSecurityGradeSequence);
}
String maxPersonSecurityGrade = (String) param.get("maxPersonSecurityGrade");
if (StringUtils.isNotBlank(maxPersonSecurityGrade)) {
Integer personSecurityGradeSequence = Optional.ofNullable(personSecurityGradeDictionary.get(maxPersonSecurityGrade))
.map(DictionaryDesc::getSequence)
.orElseThrow(() -> new IllegalArgumentException(String.format("无效的涉密等级: %s", maxPersonSecurityGrade)));
param.put("maxPersonSecurityGrade", personSecurityGradeSequence);
}
}
} }
...@@ -98,6 +98,8 @@ ...@@ -98,6 +98,8 @@
t.center_id, t.center_name, t.dept_id, t.dept_name, t.position_id, t.center_id, t.center_name, t.dept_id, t.dept_name, t.position_id,
t.position_name, t.full_sequence t.position_name, t.full_sequence
from sa_oporg t from sa_oporg t
left join sa_opperson p on t.person_id = p.id
left join (select dd.value,dd.sequence from sa_dictionarydetail dd left join sa_dictionary d on dd.dictionary_id=d.id where d.code='personSecurityGrade') dd on p.person_security_grade_id=dd.value
where instr(full_org_kind_id, 'prj') = 0 where instr(full_org_kind_id, 'prj') = 0
</sql> </sql>
<field name="id" code="id" type='hidden'/> <field name="id" code="id" type='hidden'/>
...@@ -121,6 +123,8 @@ ...@@ -121,6 +123,8 @@
<condition column="dept_level" name="deptLevel" symbol="=" alias="t"/> <condition column="dept_level" name="deptLevel" symbol="=" alias="t"/>
<condition column="full_id" name="orgFullId" symbol="like" alias="t"/> <condition column="full_id" name="orgFullId" symbol="like" alias="t"/>
<condition column="full_id" name="orgRoot" symbol="like" alias="t"/> <condition column="full_id" name="orgRoot" symbol="like" alias="t"/>
<condition column="sequence" name="minPersonSecurityGrade" symbol=">=" alias="dd"/>
<condition column="sequence" name="maxPersonSecurityGrade" type="java.lang.Integer" symbol="&lt;=" alias="dd" />
</easy-search> </easy-search>
<easy-search name="orgSelectProxy" desc="代理人选择"> <easy-search name="orgSelectProxy" desc="代理人选择">
......
...@@ -35,10 +35,10 @@ ...@@ -35,10 +35,10 @@
(org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p where p.id=person_id and p.security_grade_id <![CDATA[<=]]> :maxSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p where p.id=person_id and p.security_grade_id <![CDATA[<=]]> :maxSecurityGrade)))
</condition> </condition>
<condition column="person_security_grade_id" name="minPersonSecurityGrade" symbol=">="> <condition column="person_security_grade_id" name="minPersonSecurityGrade" symbol=">=">
(org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p where p.id=person_id and p.person_security_grade_id <![CDATA[>=]]> :minPersonSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p left join (select dd.value,dd.sequence from sa_dictionarydetail dd left join sa_dictionary d on dd.dictionary_id=d.id where d.code='personSecurityGrade') dd on p.person_security_grade_id=dd.value where p.id=person_id and dd.sequence <![CDATA[>=]]> :minPersonSecurityGrade)))
</condition> </condition>
<condition column="person_security_grade_id" name="maxPersonSecurityGrade" type="java.lang.Integer" symbol="&lt;="> <condition column="person_security_grade_id" name="maxPersonSecurityGrade" type="java.lang.Integer" symbol="&lt;=">
(org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p where p.id=person_id and p.person_security_grade_id <![CDATA[<=]]> :maxPersonSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or org_kind_id='psm' and (exists (select 1 from sa_opperson p left join (select dd.value,dd.sequence from sa_dictionarydetail dd left join sa_dictionary d on dd.dictionary_id=d.id where d.code='personSecurityGrade') dd on p.person_security_grade_id=dd.value where p.id=person_id and dd.sequence <![CDATA[<=]]> :maxPersonSecurityGrade)))
</condition> </condition>
</dataModel> </dataModel>
</tree> </tree>
...@@ -63,10 +63,10 @@ ...@@ -63,10 +63,10 @@
(org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p where p.id=person_id and p.security_grade_id <![CDATA[<=]]> :maxSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p where p.id=person_id and p.security_grade_id <![CDATA[<=]]> :maxSecurityGrade)))
</condition> </condition>
<condition column="person_security_grade_id" name="minPersonSecurityGrade" symbol=">="> <condition column="person_security_grade_id" name="minPersonSecurityGrade" symbol=">=">
(org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p where p.id=person_id and p.person_security_grade_id >= :minPersonSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p left join (select dd.value,dd.sequence from sa_dictionarydetail dd left join sa_dictionary d on dd.dictionary_id=d.id where d.code='personSecurityGrade') dd on p.person_security_grade_id=dd.value where p.id=person_id and dd.sequence >= :minPersonSecurityGrade)))
</condition> </condition>
<condition column="person_security_grade_id" name="maxPersonSecurityGrade" type="java.lang.Integer" symbol="&lt;="> <condition column="person_security_grade_id" name="maxPersonSecurityGrade" type="java.lang.Integer" symbol="&lt;=">
(org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p where p.id=person_id and p.person_security_grade_id <![CDATA[<=]]> :maxPersonSecurityGrade))) (org_kind_id <![CDATA[<>]]> 'psm' or (exists (select 1 from sa_opperson p left join (select dd.value,dd.sequence from sa_dictionarydetail dd left join sa_dictionary d on dd.dictionary_id=d.id where d.code='personSecurityGrade') dd on p.person_security_grade_id=dd.value where p.id=person_id and dd.sequence <![CDATA[<=]]> :maxPersonSecurityGrade)))
</condition> </condition>
</dataModel> </dataModel>
</tree> </tree>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment