Commit fcff3d84 authored by 雍欢's avatar 雍欢

1、消除QueryPermissionBuilderImpl 循环依赖

2、其他完善
parent 730b9829
......@@ -6,8 +6,8 @@ import com.huigou.context.OrgUnit;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.datamanagement.*;
import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.jdbc.JDBCDao;
import com.huigou.data.jdbc.SQLQuery;
import com.huigou.data.query.executor.SQLExecutorDao;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.SQLModel;
import com.huigou.data.query.parser.model.PermissionModel;
......@@ -24,7 +24,6 @@ import javax.annotation.Resource;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.*;
import java.util.stream.Collectors;
@Service("queryPermissionBuilder")
public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
......@@ -41,9 +40,12 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
@Resource(name = "permissionCache")
private ICache icache;
@Autowired
protected SQLExecutorDao sqlExecutorDao;
private SQLQuery sqlQuery;
@Autowired
private JDBCDao jdbcDao;
@Autowired
private QueryXmlLoadInterface queryXmlManager;
private Object orgFun;
......@@ -68,7 +70,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
// 不带参数的方法调用
orgFun = clazz.newInstance();
Method method = clazz.getMethod("setSQLQuery", SQLQuery.class);
method.invoke(orgFun, this.sqlExecutorDao.getSqlQuery());
method.invoke(orgFun, sqlQuery);
this.findSubordinationsByOrgManageTypeMethod = clazz.getMethod(FIND_SUBORDINATIONS_BY_ORG_MANAGE_TYPE_METHOD_NAME, Object.class, String.class);
this.findSubordinationsForNearestManagerMethod = clazz.getMethod(FIND_SUBORDINATIONS_FOR_NEAREST_MANAGER_METHOD_NAME, Object.class,
......@@ -398,14 +400,14 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
* @return
*/
private List<DataManageResourceGroup> doQueryDataManagement(String code, String personId) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "dataManagement");
QueryDescriptor queryDescriptor = this.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "dataManagement");
// 查询包含的数据角色ID
String sql = queryDescriptor.getSqlByName("queryPersonDataManageDetailByCode");
List<String> managedetalIds;
if ("oracle".equals(sqlDialect)) {
managedetalIds = this.sqlExecutorDao.queryToList(sql, String.class, code, personId);
managedetalIds = this.jdbcDao.queryToList(sql, String.class, code, personId);
} else {
managedetalIds = this.sqlExecutorDao.queryToList(sql, String.class, code, personId, code, personId);
managedetalIds = this.jdbcDao.queryToList(sql, String.class, code, personId, code, personId);
}
if (managedetalIds == null || managedetalIds.size() == 0) {
return Collections.emptyList();
......@@ -416,7 +418,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
for (String managedetalId : managedetalIds) {
DataManageResourceGroup group = new DataManageResourceGroup();
group.setDataManagedetalId(managedetalId);
List<DataManageResource> resources = this.sqlExecutorDao.queryToList(sqlResource, DataManageResource.class, managedetalId);
List<DataManageResource> resources = this.jdbcDao.queryToList(sqlResource, DataManageResource.class, managedetalId);
if (resources != null && resources.size() > 0) {
for (DataManageResource resource : resources) {
// 解析数据资源信息
......@@ -502,7 +504,7 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
*/
private List<DataManageResource> parseOrgManageType(DataManageResource resource, String personId) {
String sql = "select t.full_id from sa_oporg t where t.status = 1 and t.person_id=?";
List<String> fullIds = this.sqlExecutorDao.queryToList(sql, String.class, personId);
List<String> fullIds = this.jdbcDao.queryToList(sql, String.class, personId);
List<DataManageResource> dataResources = new ArrayList<>();
List<OrgUnit> list = this.findSubordinations(personId, fullIds, resource.getKey());
if (list != null && list.size() > 0) {
......@@ -529,16 +531,16 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
private DataManageFieldsGroup doQueryDataManageFields(String code) {
DataManageFieldsGroup group = new DataManageFieldsGroup();
group.setBusinessCode(code);
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "opdatamanagebusinessField");
QueryDescriptor queryDescriptor = this.getQuery(DATA_MANAGEMENT_XML_FILE_PATH, "opdatamanagebusinessField");
// 查询使用的数据管理权限
String sql = queryDescriptor.getSqlByName("queryManageCodeByBusinessCode");
String manageCode = this.sqlExecutorDao.queryToString(sql, code);
String manageCode = this.jdbcDao.queryToString(sql, code);
if (StringUtil.isNotBlank(manageCode)) {
group.setManageCode(manageCode);
}
// 查询权限包含的字段
sql = queryDescriptor.getSqlByName("queryFieldsByBusinessCode");
List<Map<String, Object>> list = this.sqlExecutorDao.queryToListMap(sql, code);
List<Map<String, Object>> list = this.jdbcDao.queryToListMap(sql, code);
if (list == null || list.size() == 0) {
return null;
}
......@@ -569,4 +571,10 @@ public class QueryPermissionBuilderImpl implements QueryPermissionBuilder {
}
return group;
}
private QueryDescriptor getQuery(String queryFilePath, String queryName) {
QueryXmlModel model = queryXmlManager.loadConfigFile(queryFilePath);
QueryDescriptor queryDescriptor = new QueryDescriptor(model.getDeclaredQueries(queryName));
return queryDescriptor;
}
}
......@@ -9,8 +9,8 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional("transactionManager")
public class GeneralRepository extends GeneralRepositorySuper {
@PersistenceContext(unitName="system")
@Qualifier(value = "entityManagerFactory")
// @PersistenceContext(unitName="system")
// @Qualifier(value = "entityManagerFactory")
private EntityManager em;
@Override
......
......@@ -3,6 +3,7 @@ package com.huigou.shiro.session;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionListenerAdapter;
import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;
import org.apache.shiro.session.mgt.eis.SessionDAO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -20,11 +21,11 @@ public class ShiroSessionListener extends SessionListenerAdapter {
private static final Logger logger = LoggerFactory.getLogger(ShiroSessionListener.class);
private AbstractSessionDAO sessionDAO;
private SessionDAO sessionDAO;
private ICache icache;
public void setSessionDAO(AbstractSessionDAO sessionDAO) {
public void setSessionDAO(SessionDAO sessionDAO) {
this.sessionDAO = sessionDAO;
}
......
......@@ -22,7 +22,7 @@ public interface ProcUnitHandlerRepository extends JpaRepository<ProcUnitHandler
ProcUnitHandler findFirstByBizIdAndProcUnitIdAndGroupId(String bizId, String procUnitId, Integer groupId);
@Query(name = "procUnitHandler.findAllNextProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId and t.groupId > :groupId)")
@Query(name = "procUnitHandler.findAllNextProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId and t.groupId > :groupId")
List<ProcUnitHandler> findAllNextProcUnitHandlers(@Param("bizId") String bizId, @Param("groupId") Integer groupId);
@Query(name = "procUnitHandler.findNextGroupProcUnitHandlers", value = "select t from ProcUnitHandler t where t.bizId = :bizId\n"
......
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