Parcourir la source

机构新增时,管理员角色纠正,机构失效时,机构树形机构表数据同步更改

LiTaohong il y a 6 ans
Parent
commit
bb13592f79

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/OrgTreeDao.java

@ -5,6 +5,7 @@ import com.yihu.jw.base.service.org.tree.TreeNode;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -38,6 +39,11 @@ public interface OrgTreeDao extends PagingAndSortingRepository<OrgTree, Integer>
    boolean existsByCode(String code);
    boolean existsByParentCode(String parentCode);
    @Query("select tree.code as code,tree.name as name from OrgTree tree where parentCode = ?1 and level = 3")
    List<Map<String,Object>> findOrgListByParentCode(String parent);
    @Modifying
    Integer deleteByCode(String code);
}

+ 18 - 9
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/BaseOrgService.java

@ -23,6 +23,7 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.*;
@ -142,6 +143,7 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
     * @param baseOrgDO
     * @param orgAdminJson
     */
//    @Transactional(rollbackFor = Exception.class)
    public String createOrUpdateOrg(BaseOrgDO baseOrgDO,JSONObject orgAdminJson){
        UserDO userDO = null;
        //id为空表示新增
@ -160,25 +162,21 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
            baseOrgSaasDO.setSaasid(defaultSaasId);
            baseOrgSaasService.save(baseOrgSaasDO);
            //新增机构与管理员关联关系
            // 新增机构与管理员关联关系
            BaseOrgUserDO baseOrgUserDO = new BaseOrgUserDO();
            baseOrgUserDO.setOrgCode(baseOrgDO.getCode());
            baseOrgUserDO.setUserId(mobile);
            baseOrgUserService.save(baseOrgUserDO);
            //新增用户(管理员)
            // 新增用户(管理员)
            userDO = new UserDO();
            userDO.setUsername(mobile);
            userDO.setName(adminName);
            userDO.setMobile(mobile);
            // 默认为机构管理员,系统初始化时会在base_role表中初始化三类角色数据,1-超级管理员,2-租户管理员,3-机构管理员
            userDO.setRoleId("3");
            userService.registerWithMobile(userDO);
            // 新增用户角色关联关系
            UserRoleDO userRoleDO = new UserRoleDO();
            userRoleDO.setRoleId("");
            userRoleDO.setUserId(userDO.getId());
            userRoleService.save(userRoleDO);
            //新增机构与区域的树形结构关系
            orgTreeService.addOrgTreeNode(baseOrgDO);
        }else{
@ -203,7 +201,6 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
        return ConstantUtils.SUCCESS;
    }
    /**
     * 判断机构代码是否存在
     * @param code
@ -222,6 +219,7 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
     * @param del
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public String enableOrDisableOrg(String id,String del){
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(id) || StringUtils.isEmpty(del)){
@ -235,11 +233,22 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
            result.put("response",ConstantUtils.FAIL);
            return result.toJSONString();
        }
        baseOrgDO.setDel(del);
        this.save(baseOrgDO);
        // 将机构状态改为失效
        if(StringUtils.endsWithIgnoreCase(ConstantUtils.STATUS_0,del)){
            // 将机构关联的树形结构表中的机构数据删除
            orgTreeService.deleteByCode(baseOrgDO);
        }else if(StringUtils.endsWithIgnoreCase(ConstantUtils.STATUS_1,del)){
            // 将机构关联的树形结构表中的机构数据恢复
            orgTreeService.addOrgTreeNode(baseOrgDO);
        }
        result.put("response",ConstantUtils.SUCCESS);
        return result.toJSONString();
    }
    /**
     * 构建机构区域树形结构
     * @return

+ 37 - 52
svr/svr-base/src/main/java/com/yihu/jw/base/service/org/OrgTreeService.java

@ -61,22 +61,6 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
            OrgTree provinceTree = new OrgTree(baseOrgDO.getProvinceCode(),"",baseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue());
            treeNodes.add(provinceTree);
        }
        /*if(orgTreeDao.existsByCode(baseOrgDO.getTownCode())){
            OrgTree orgNode = new OrgTree(baseOrgDO.getCode(),baseOrgDO.getTownCode(),baseOrgDO.getName(), OrgTree.Level.org.getLevelValue());
            treeNodes.add(orgNode);
        }
        else if(orgTreeDao.existsByCode(baseOrgDO.getCityCode())){
            OrgTree townNode = new OrgTree(baseOrgDO.getTownCode(),baseOrgDO.getCityCode(),baseOrgDO.getTownName(), OrgTree.Level.town.getLevelValue());
            treeNodes.add(townNode);
        }
        else if(orgTreeDao.existsByCode(baseOrgDO.getProvinceCode())){
            OrgTree cityNode = new OrgTree(baseOrgDO.getCityCode(),baseOrgDO.getProvinceCode(),baseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue());
            treeNodes.add(cityNode);
        }
        else{
            OrgTree provinceNode = new OrgTree(baseOrgDO.getProvinceCode(),"",baseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue());
            treeNodes.add(provinceNode);
        }*/
        this.batchInsert(treeNodes);
    }
@ -89,71 +73,71 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
    public void updateOrgTreeNode(BaseOrgDO oldBaseOrgDO,BaseOrgDO newBaseOrgDO,int level){
        if( level == OrgTree.Level.org.getLevelValue() ){
            OrgTree orgTree = orgTreeDao.findByCode(oldBaseOrgDO.getCode());
            //新修改的机构代码不存在,表示未添加过,应把相应的父类关联关系存储起来(省份,城市,区域等)
            if(null == orgTree){
                addOrgTreeNode(newBaseOrgDO);
                return;
            }
            orgTree.setCode(newBaseOrgDO.getCode());
            orgTree.setName(newBaseOrgDO.getName());
            this.save(orgTree);
            addOrgTreeNode(newBaseOrgDO);
        }
        else if( level == OrgTree.Level.town.getLevelValue() ){
            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getCode(),oldBaseOrgDO.getTownCode());
            //新修改的代区码不存在,表示未添加过,应把相应的父类关联关系存储起来(省份,城市,等)
            if(null == orgTree){
                addOrgTreeNode(newBaseOrgDO);
                return;
            }
            orgTree.setParentCode(newBaseOrgDO.getTownCode());
            this.save(orgTree);
           /* List<OrgTree> treeNodes = new ArrayList<>();
            //新修改的区代码不存在,表示未添加过,应把相应的父类关联关系存储起来(城市,省份等)
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getTownCode())){
                OrgTree townTree = new OrgTree(newBaseOrgDO.getTownCode(),newBaseOrgDO.getCityCode(),newBaseOrgDO.getTownName(), OrgTree.Level.town.getLevelValue());
                treeNodes.add(townTree);
            }
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getCityCode())){
                OrgTree cityTree = new OrgTree(newBaseOrgDO.getCityCode(),newBaseOrgDO.getProvinceCode(),newBaseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue());
                treeNodes.add(cityTree);
            }
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){
                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue());
                treeNodes.add(provinceTree);
            }
            this.batchInsert(treeNodes);*/
            addOrgTreeNode(newBaseOrgDO);
        }
       else if( level == OrgTree.Level.city.getLevelValue() ){
            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getTownCode(),oldBaseOrgDO.getCityCode());
            //新修改的城市代码不存在,表示未添加过,应把相应的父类关联关系存储起来(省份等)
            if(null == orgTree){
                addOrgTreeNode(newBaseOrgDO);
                return;
            }
            orgTree.setParentCode(newBaseOrgDO.getCityCode());
            this.save(orgTree);
            addOrgTreeNode(newBaseOrgDO);
            /*List<OrgTree> treeNodes = new ArrayList<>();
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getCityCode())){
                OrgTree cityTree = new OrgTree(newBaseOrgDO.getCityCode(),newBaseOrgDO.getProvinceCode(),newBaseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue());
                treeNodes.add(cityTree);
            }
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){
                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue());
                treeNodes.add(provinceTree);
            }
            this.batchInsert(treeNodes);*/
        }
        else if( level == OrgTree.Level.province.getLevelValue() ){
            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getCityCode(),oldBaseOrgDO.getProvinceCode());
            //新修改的省代码不存在,表示未添加过,
            if(null == orgTree){
                addOrgTreeNode(newBaseOrgDO);
                return;
            }
            orgTree.setParentCode(newBaseOrgDO.getProvinceCode());
            this.save(orgTree);
            addOrgTreeNode(newBaseOrgDO);
            /*List<OrgTree> treeNodes = new ArrayList<>();
            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){
                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue());
                treeNodes.add(provinceTree);
            }
            this.batchInsert(treeNodes);*/
        }
    }
    /**
     * 删除机构
     * @param baseOrgDO
     */
    @Transactional(rollbackFor = Exception.class)
    public void deleteByCode(BaseOrgDO baseOrgDO){
        if(StringUtils.isEmpty(baseOrgDO.getCode())){
            return;
        }
        // 删除机构code
        orgTreeDao.deleteByCode(baseOrgDO.getCode());
        // 判断该机构code所在的区下面还有没有其他机构,如果没有,该区县一并删掉
        if(!orgTreeDao.existsByParentCode(baseOrgDO.getTownCode())){
            orgTreeDao.deleteByCode(baseOrgDO.getTownCode());
        }
        // 判断该区县code所在的城市下面还有没有其他区县,如果没有,该城市一并删掉
        if(!orgTreeDao.existsByParentCode(baseOrgDO.getCityCode())){
            orgTreeDao.deleteByCode(baseOrgDO.getCityCode());
        }
        // 判断该城市code所在的省下面还有没有其他城市,如果没有,该省一并删掉
        if(!orgTreeDao.existsByParentCode(baseOrgDO.getProvinceCode())){
            orgTreeDao.deleteByCode(baseOrgDO.getProvinceCode());
        }
    }
@ -171,7 +155,7 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
    }
    /**
     * 根据区下面的机构列表
     * 获取区下面的机构列表
     *
     * @param townCode
     * @return
@ -184,6 +168,7 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> {
        return orgTreeDao.findOrgListByParentCode(townCode);
    }
    /**
     * 构建树形结构
     * @return

+ 6 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/util/ConstantUtils.java

@ -7,4 +7,10 @@ package com.yihu.jw.base.util;
public class ConstantUtils {
    public static final String SUCCESS = "success";
    public static final String FAIL = "fail";
    // 状态失效
    public static final String STATUS_0 = "0";
    // 状态有效
    public static final String STATUS_1 = "1";
}