From c0e32b4907e8ac9cae56b77e4f83fefdc8cc5ad3 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 24 Jan 2024 17:27:40 +0800
Subject: [PATCH] 机构查询优化
---
src/main/java/org/springblade/modules/system/vo/DeptVO.java | 2 +
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml | 57 +++++++++++++---------------
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java | 27 ++++---------
src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyDistrictServiceImpl.java | 27 +++++++------
4 files changed, 52 insertions(+), 61 deletions(-)
diff --git a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyDistrictServiceImpl.java b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyDistrictServiceImpl.java
index b51ecd1..a550453 100644
--- a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyDistrictServiceImpl.java
+++ b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyDistrictServiceImpl.java
@@ -85,17 +85,17 @@
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveOrUpdatePropertyCompanyDistrict(PropertyCompanyDistrictEntity propertyCompanyDistrict) throws Exception {
- IUserService bean = SpringUtil.getBean(IUserService.class);
- User user = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, propertyCompanyDistrict.getPrincipal()));
- if (StringUtils.isNotBlank(user.getRoleId())) {
- if (!user.getRoleId().contains("1747504028253229058")) {
- user.setRoleId(user.getRoleId() + ",1747504028253229058");
- }
- } else {
- user.setRoleId("1747504028253229058");
- }
+ // IUserService bean = SpringUtil.getBean(IUserService.class);
+ // User user = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, propertyCompanyDistrict.getPrincipal()));
+ // if (StringUtils.isNotBlank(user.getRoleId())) {
+ // if (!user.getRoleId().contains("1747504028253229058")) {
+ // user.setRoleId(user.getRoleId() + ",1747504028253229058");
+ // }
+ // } else {
+ // user.setRoleId("1747504028253229058");
+ // }
if (null != propertyCompanyDistrict.getId()) {
- bean.updateById(user);
+ // bean.updateById(user);
return updateById(propertyCompanyDistrict) && submitPropertyDistrictUser(propertyCompanyDistrict);
} else {
long count = count(Wrappers.<PropertyCompanyDistrictEntity>lambdaQuery()
@@ -105,7 +105,7 @@
if (count > 0) {
throw new Exception("您已有该小区的合同,请勿重复添加!");
}
- bean.updateById(user);
+ // bean.updateById(user);
return save(propertyCompanyDistrict) && submitPropertyDistrictUser(propertyCompanyDistrict);
}
}
@@ -118,10 +118,11 @@
*/
private boolean submitPropertyDistrictUser(PropertyCompanyDistrictEntity propertyCompanyDistrict) {
List<Long> userIdList = Func.toLongList(propertyCompanyDistrict.getUserId());
+ List<Long> arrayList = new ArrayList<Long>(userIdList);
// 把项目经理也加到物业用户关联表
- userIdList.add(Long.valueOf(propertyCompanyDistrict.getPrincipal()));
+ arrayList.add(Long.valueOf(propertyCompanyDistrict.getPrincipal()));
List<PropertyDistrictUserEntity> propertyDistrictUserEntityList = new ArrayList<>();
- userIdList.forEach(userId -> {
+ arrayList.forEach(userId -> {
PropertyDistrictUserEntity propertyDistrictUserEntity = new PropertyDistrictUserEntity();
propertyDistrictUserEntity.setUserId(userId);
propertyDistrictUserEntity.setPropertyCompanyDistrictId(propertyCompanyDistrict.getId());
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
index daa5053..5709e20 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -28,12 +28,10 @@
<result column="has_children" property="hasChildren"/>
</resultMap>
- <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
+ <resultMap id="treeNodeResultMap" type="org.springblade.modules.system.vo.DeptVO">
<id column="id" property="id"/>
<result column="parent_id" property="parentId"/>
<result column="title" property="title"/>
- <result column="value" property="value"/>
- <result column="key" property="key"/>
<result column="has_children" property="hasChildren"/>
</resultMap>
@@ -67,31 +65,32 @@
</select>
<select id="tree" resultMap="treeNodeResultMap">
-
- <if test="param2!=null">
- SELECT
- id,
- dept_name AS title,
- id AS "value",
- id AS "key",
- parent_id
- FROM
- ( SELECT * FROM blade_dept WHERE is_deleted = 0 AND tenant_id = #{param1} ORDER BY parent_id, id )
- org_query,
- ( SELECT @id := #{param2} ) initialisation
- WHERE
- (FIND_IN_SET( parent_id, @id ) > 0 or FIND_IN_SET( id, @id ) > 0)
- AND @id := CONCAT(@id,',',id) ORDER BY sort
- </if>
-
- <if test="param2==null">
- select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
- <if test="param1!=null and param1!=''">
- and tenant_id = #{param1}
- </if>
- ORDER BY sort
- </if>
-
+ SELECT
+ a.id,
+ a.dept_name AS title,
+ a.parent_id,
+ b.id,
+ IF
+ ( b.id > 0, FALSE, TRUE ) disabled
+ FROM
+ blade_dept a
+ LEFT JOIN (
+ SELECT
+ id,
+ dept_name AS title,
+ parent_id
+ FROM
+ ( SELECT * FROM blade_dept WHERE is_deleted = 0 AND tenant_id = #{param1} ORDER BY parent_id, id ) org_query,
+ ( SELECT @id := #{param2} ) initialisation
+ WHERE
+ ( FIND_IN_SET( parent_id, @id ) > 0 OR FIND_IN_SET( id, @id ) > 0 )
+ AND @id := CONCAT( @id, ',', id )
+ ORDER BY
+ sort
+ ) b ON a.id = b.id
+ WHERE
+ is_deleted = 0
+ AND tenant_id = #{param1} ORDER BY a.sort
</select>
<select id="lazyTree" resultMap="treeNodeResultMap">
@@ -99,8 +98,6 @@
dept.id,
dept.parent_id,
dept.dept_name AS title,
- dept.id AS "value",
- dept.id AS "key",
(
SELECT
CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
diff --git a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
index 8862eeb..c049953 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -99,27 +99,18 @@
@Override
public List<DeptVO> tree(String tenantId) {
- Long id = null;
+ Long id = 0L;
// 判断数据权限控制,非超管角色只可看到本级及以下数据
-// if (!AuthUtil.isAdministrator()) {
-// Long deptId = Func.firstLong(AuthUtil.getDeptId());
-// Dept dept = SysCache.getDept(deptId);
-// if (dept.getParentId() != 0) {
-// parentId = dept.getParentId();
-// }
-// List<DeptVO> merge = ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId));
-// List<DeptVO> copy = BeanUtil.copy(merge, DeptVO.class);
-// copy = copy.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
-// return copy;
-// }
- String userRole = AuthUtil.getUserRole();
- // 判断物业公司
- if (userRole.contains("wygly") || userRole.contains("wyxmjl")) {
- // 获取当前用户的机构
+ if (!AuthUtil.isAdmin()) {
id = Func.firstLong(AuthUtil.getDeptId());
}
-
- return ForestNodeMerger.merge(baseMapper.tree(tenantId, id));
+ List<DeptVO> tree = baseMapper.tree(tenantId, id);
+ if (AuthUtil.isAdmin()) {
+ for (DeptVO deptVO : tree) {
+ deptVO.setDisabled(false);
+ }
+ }
+ return ForestNodeMerger.merge(tree);
}
@Override
diff --git a/src/main/java/org/springblade/modules/system/vo/DeptVO.java b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
index 129d622..59c10d1 100644
--- a/src/main/java/org/springblade/modules/system/vo/DeptVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
@@ -84,4 +84,6 @@
*/
private String deptCategoryName;
+ private Boolean disabled;
+
}
--
Gitblit v1.9.3