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

涉密等级查询条件

parent f49151b8
package com.huigou.uasp.bmp.common.easysearch.application.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import com.huigou.cache.DictionaryDesc;
import com.huigou.cache.SystemCache;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.dialect.Dialect;
......@@ -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.PermissionsDocument.Permissions;
import com.huigou.util.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
......@@ -119,6 +116,7 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial
// 重新构建查询条件
String sql = dto.buildSql();
Map<String, Object> param = dto.getQueryParams();
initPersonSecurityGradeRange(sdo, param);
param.put("currentPersonId", sdo.getOperator().getUserId());
param.put("currentOrgId", sdo.getOperator().getOrgId());
param.put("currentPositionId", sdo.getOperator().getPositionId());
......@@ -137,6 +135,29 @@ public class EasySearchApplicationImpl implements EasySearchApplication, Initial
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
// 重新构建查询条件
String sql = dto.buildSql();
Map<String, Object> param = dto.getQueryParams();
initPersonSecurityGradeRange(sdo, param);
param.put("currentPersonId", sdo.getOperator().getUserId());
param.put("currentOrgId", sdo.getOperator().getOrgId());
param.put("currentPositionId", sdo.getOperator().getPositionId());
......
......@@ -3,7 +3,10 @@ package com.huigou.uasp.bmp.common.treeview.application.impl;
import java.util.ArrayList;
import java.util.List;
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.query.QueryPermissionBuilder;
import com.huigou.data.query.model.SQLModel;
......@@ -12,10 +15,11 @@ import com.huigou.uasp.bmp.common.treeview.domain.model.TreeModel;
import com.huigou.util.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.StringUtil;
import org.apache.commons.lang3.StringUtils;
/**
* 查询树结构
*
*
* @author gongmm
*/
public class TreeViewApplicationImpl implements TreeViewApplication {
......@@ -34,13 +38,14 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
/**
* 组合树结构
*
*
* @param model
* @param param
* @return
* @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 manageType = model.getManageType();
if (!StringUtil.isBlank(manageType)) {
......@@ -63,16 +68,16 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
/**
* 第归查询子节点
*
* @author
*
* @param id
* @param model
* @param param
* @return
* @throws Exception
* List<Map<String,Object>>
* @throws Exception List<Map<String,Object>>
* @author
*/
public List<Map<String, Object>> treeBuilderChildren(String id, TreeModel model, Map<String, Object> param) throws Exception {
initPersonSecurityGradeRange(param);
String sql = model.getChildrenSql(param);
String manageType = model.getManageType();
if (!StringUtil.isBlank(manageType)) {
......@@ -96,10 +101,9 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
/**
* 树节点添加权限标志
*
*
* @param list
* @param manageType
* 管理权限类别
* @param manageType 管理权限类别
* @return
*/
private List<Map<String, Object>> addPermissionFlag(List<Map<String, Object>> list, String manageType) {
......@@ -122,4 +126,27 @@ public class TreeViewApplicationImpl implements TreeViewApplication {
}
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,7 +98,9 @@
t.center_id, t.center_name, t.dept_id, t.dept_name, t.position_id,
t.position_name, t.full_sequence
from sa_oporg t
where instr(full_org_kind_id, 'prj') = 0
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
</sql>
<field name="id" code="id" type='hidden'/>
<field name="fullId" code="fullId" type='hidden'/>
......@@ -121,6 +123,8 @@
<condition column="dept_level" name="deptLevel" symbol="=" alias="t"/>
<condition column="full_id" name="orgFullId" 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 name="orgSelectProxy" desc="代理人选择">
......
......@@ -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)))
</condition>
<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 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>
</dataModel>
</tree>
......@@ -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)))
</condition>
<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 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>
</dataModel>
</tree>
......@@ -128,4 +128,4 @@
<order>asc</order>
</dataModel>
</tree>
</tree-mappings>
\ No newline at end of file
</tree-mappings>
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