From 0b1e9e70818f0e3eb32dd6c029d42d93236ecdc6 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Wed, 03 Jul 2024 12:07:01 +0800
Subject: [PATCH] 数据同步新增连接池配置
---
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 205 insertions(+), 3 deletions(-)
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 92e3850..356c289 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
@@ -17,21 +17,34 @@
package org.springblade.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.cache.SysCache;
+import org.springblade.common.node.TreeStringNode;
+import org.springblade.common.utils.SpringUtils;
+import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.Region;
import org.springblade.modules.system.mapper.DeptMapper;
+import org.springblade.modules.system.node.DeptUserTreeNode;
+import org.springblade.modules.system.node.TreeNode;
import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IRegionService;
+import org.springblade.modules.system.vo.DeptDetailVO;
import org.springblade.modules.system.vo.DeptVO;
import org.springblade.modules.system.wrapper.DeptWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@@ -46,6 +59,12 @@
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
private static final String TENANT_ID = "tenantId";
private static final String PARENT_ID = "parentId";
+//
+// @Autowired
+// private IPropertyCompanyService propertyCompanyService;
+
+ @Autowired
+ private IRegionService regionService;
@Override
public List<DeptVO> lazyList(String tenantId, Long parentId, Map<String, Object> param) {
@@ -68,6 +87,9 @@
if (dept.getParentId() != 0) {
parentId = dept.getParentId();
}
+ List<DeptVO> deptVOS = baseMapper.lazyList(tenantId, parentId, param);
+ deptVOS = deptVOS.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
+ return deptVOS;
}
// 判断点击搜索带有查询条件的情况
if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) {
@@ -78,13 +100,38 @@
@Override
public List<DeptVO> tree(String tenantId) {
- return ForestNodeMerger.merge(baseMapper.tree(tenantId));
+ Long id = null;
+ // 判断数据权限控制,非超管角色只可看到本级及以下数据
+ if (!AuthUtil.isAdmin()) {
+ id = Func.firstLong(AuthUtil.getDeptId());
+ }
+ List<DeptVO> tree = baseMapper.tree(tenantId, id);
+ return ForestNodeMerger.merge(tree);
}
@Override
public List<DeptVO> lazyTree(String tenantId, Long parentId) {
if (AuthUtil.isAdministrator()) {
tenantId = StringPool.EMPTY;
+ }
+ // 判断数据权限控制,非超管角色只可看到本级及以下数据
+// if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
+// Long deptId = Func.firstLong(AuthUtil.getDeptId());
+// Dept dept = SysCache.getDept(deptId);
+// if (dept.getParentId() != 0) {
+// parentId = dept.getParentId();
+// }
+// }
+ if (Func.toLong(parentId) == 0L && !AuthUtil.isAdmin()) {
+ Long deptId = Func.firstLong(AuthUtil.getDeptId());
+ Dept dept = SysCache.getDept(deptId);
+ if (dept.getParentId() != 0) {
+ parentId = dept.getParentId();
+ }
+ List<DeptVO> merge = ForestNodeMerger.merge(baseMapper.lazyTree(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;
}
return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
}
@@ -123,16 +170,34 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean removeDept(String ids) {
Long cnt = baseMapper.selectCount(Wrappers.<Dept>query().lambda().in(Dept::getParentId, Func.toLongList(ids)));
if (cnt > 0L) {
throw new ServiceException("请先删除子节点!");
}
- return removeByIds(Func.toLongList(ids));
+ List<Long> longs = Func.toLongList(ids);
+ // 遍历
+ for (Long id : longs) {
+ // 查询当前机构信息
+ DeptVO dept = baseMapper.getDeptById(id);
+ }
+ return removeByIds(longs);
}
@Override
public boolean submit(Dept dept) {
+ deptHandle(dept);
+ // 保存并返回
+ return saveOrUpdate(dept);
+ }
+
+ /**
+ * 机构信息处理
+ *
+ * @param dept
+ */
+ private void deptHandle(Dept dept) {
if (Func.isEmpty(dept.getParentId())) {
dept.setTenantId(AuthUtil.getTenantId());
dept.setParentId(BladeConstant.TOP_PARENT_ID);
@@ -148,7 +213,56 @@
dept.setAncestors(ancestors);
}
dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
- return saveOrUpdate(dept);
+ }
+
+ /**
+ * 自定义新增或修改
+ *
+ * @param dept
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean saveOrUpdateDeptInfo(Dept dept) {
+ boolean flag = false;
+ deptHandle(dept);
+ // 判断类型,如果为物业公司(上级机构名称为物业公司),名称不能重复
+ QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_deleted", 0).eq("id", dept.getParentId());
+ Dept parentDept = getOne(queryWrapper);
+ // 如果父机构为物业公司
+ if (parentDept != null && parentDept.getDeptName().equals("物业公司")) {
+ // 查询当前
+ QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted", 0)
+ .eq("dept_name", dept.getDeptName());
+ Dept one = getOne(wrapper);
+ if (null != one) {
+ dept.setId(one.getId());
+ flag = updateById(dept);
+ } else {
+ if (dept.getId() > 0) {
+ flag = updateById(dept);
+ } else {
+ flag = save(dept);
+ }
+ }
+ //保存物业公司信息
+ savePropertyCompany(dept);
+ } else {
+ flag = saveOrUpdate(dept);
+ }
+ // 保存并返回
+ return flag;
+ }
+
+ /**
+ * 保存物业公司信息
+ *
+ * @param dept
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void savePropertyCompany(Dept dept) {
}
@Override
@@ -168,4 +282,92 @@
return DeptWrapper.build().listNodeVO(deptList);
}
+ /**
+ * 数据处理(社区绑定)
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Object dataHandle() {
+ // 查询所有的社区
+ QueryWrapper<Region> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("district_code","361102").eq("region_level",5);
+ List<Region> list = regionService.list(queryWrapper);
+ // 遍历
+ for (Region region : list) {
+ // 查询是否已创建
+ QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted", 0).eq("dept_name", region.getName());
+ Dept one = getOne(wrapper);
+ if (null == one) {
+ // 新增
+ Dept dept = new Dept();
+ dept.setFullName(region.getName());
+ dept.setDeptName(region.getName());
+ dept.setDeptCategory(1);
+ dept.setTenantId("000000");
+ // 查询上级id
+ QueryWrapper<Dept> deptQueryWrapper = new QueryWrapper<>();
+ deptQueryWrapper.eq("is_deleted", 0).eq("dept_name", region.getTownName());
+ Dept parentDept = getOne(deptQueryWrapper);
+ if (null!=parentDept){
+ dept.setParentId(parentDept.getId());
+ dept.setAncestors(parentDept.getAncestors() + "," + parentDept.getId());
+ }
+ dept.setRegionCode(region.getCode());
+ // 新增
+ saveOrUpdate(dept);
+ // 插入社区表数据
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 数据处理(社区绑定)--处理机构
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Object dataHandleCommunity() {
+ return null;
+ }
+
+ /**
+ * 数据处理(区域网格编号绑定)
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Object dataRegionGridCodeBindHandle() {
+ return null;
+ }
+
+ @Override
+ public List<DeptUserTreeNode> getDeptAndUserTree(DeptUserTreeNode treeNode) {
+ // 查询数据
+ Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMap(treeNode);
+ Map<String, DeptUserTreeNode> userMap = baseMapper.getUserMap(treeNode);
+ deptMap.putAll(userMap);
+ List<DeptUserTreeNode> deptAndUserNodeTree = NodeTreeUtil.getDeptAndUserNodeTree(deptMap);
+ // 处理并返回
+ return deptAndUserNodeTree;
+ }
+
+ /**
+ * 数据处理(社区绑定)-- 处理社区(派出所下)
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Object dataHandleCommunityByPolice() {
+ return null;
+ }
+
+ /**
+ * 查询对应的派出所
+ * @param deptId
+ * @return
+ */
+ @Override
+ public Dept getDeptByDeptIds(String deptId) {
+ return baseMapper.getDeptByDeptIds(deptId);
+ }
}
--
Gitblit v1.9.3