linwe
2023-12-23 55d677758efadb6d42e6d4e595cecc2c50c20d5a
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -17,21 +17,28 @@
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.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.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.property.entity.PropertyCompanyEntity;
import org.springblade.modules.property.service.IPropertyCompanyService;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.mapper.DeptMapper;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IRegionService;
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 +53,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) {
@@ -123,16 +136,38 @@
   }
   @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);
         // 如果父机构为物业公司
         if (dept.getParentName().equals("物业公司")){
            // 删除
            propertyCompanyService.remove(Wrappers.<PropertyCompanyEntity>update().lambda().eq(PropertyCompanyEntity::getDeptId, 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 +183,70 @@
         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 {
            flag = save(dept);
         }
         //保存物业公司信息
         savePropertyCompany(dept);
      }else {
         flag = saveOrUpdate(dept);
      }
      // 保存并返回
      return flag;
   }
   /**
    * 保存物业公司信息
    * @param dept
    */
   @Transactional(rollbackFor = Exception.class)
   public void savePropertyCompany(Dept dept) {
      // 查询物业公司是否存在
      QueryWrapper<PropertyCompanyEntity> wrapper = new QueryWrapper<>();
      wrapper.eq("is_deleted",0)
         .eq("dept_id",dept.getId())
         .eq("name",dept.getDeptName());
      PropertyCompanyEntity propertyCompanyEntity = propertyCompanyService.getOne(wrapper);
      if (null!=propertyCompanyEntity){
         // 修改
         propertyCompanyEntity.setDeptId(dept.getId());
         propertyCompanyEntity.setName(dept.getDeptName());
         // 往物业公司表中插入一条数据
         propertyCompanyService.updateById(propertyCompanyEntity);
      }else {
         // 新增
         PropertyCompanyEntity companyEntity = new PropertyCompanyEntity();
         companyEntity.setDeptId(dept.getId());
         companyEntity.setName(dept.getDeptName());
         // 往物业公司表中插入一条数据
         propertyCompanyService.save(companyEntity);
      }
   }
   @Override
@@ -168,4 +266,32 @@
      return DeptWrapper.build().listNodeVO(deptList);
   }
   /**
    * 数据处理(社区绑定)
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public Object dataHandle() {
      // 查询未绑定的网格
      List<TreeStringNode> list = regionService.getTree("361102005");
      // 遍历
      for (TreeStringNode treeStringNode : list) {
         // 查询是否已创建
         QueryWrapper<Dept> wrapper = new QueryWrapper<>();
         wrapper.eq("is_deleted",0).eq("dept_name",treeStringNode.getName());
         Dept one = getOne(wrapper);
         if (null==one){
            // 新增
            Dept dept = new Dept();
            dept.setParentId(1733066387113734145L);
            dept.setFullName(treeStringNode.getName());
            dept.setDeptName(treeStringNode.getName());
            dept.setDeptCategory(1);
            dept.setTenantId("000000");
            // 新增
            save(dept);
         }
      }
      return null;
   }
}