futian.liu
2023-12-05 3836720e3b0fc9ab884d178e0ac27e942b175da2
consum-base/src/main/java/com/consum/base/service/FinSysTenantServiceImpl.java
@@ -2,48 +2,125 @@
import com.consum.base.pojo.FinSysTenantParam;
import com.consum.model.po.FinSysTenant;
import com.iplatform.model.po.S_user_core;
import com.consum.model.po.FinSysTenantUser;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
/**
 * @Description 系统机构
 * @Author 卢庆阳
 * @Date 2023/10/23
 */
@Service
public class FinSysTenantServiceImpl extends BaseServiceImpl {
    private static final String QUERY_BY_PARENT_CODE = "SELECT * FROM fin_sys_tenant WHERE CODE = ?";
    private static final String QUERY_TREE_ALL = "select * from FIN_SYS_TENANT where is_delete = 0 and status = 1  order by parent_id, LV ASC";
    private static final String QUERY_TREE_BY_CODE = "SELECT * FROM FIN_SYS_TENANT  ";
    private static final String QUERY_LIST_BY_CITY_CODE = "SELECT ID, NAME, CODE, CASE WHEN LV = 2 THEN ID ELSE PARENT_ID END AS PARENT_ID, LV, TENANT_TYPE, BELONG_PROVINCE FROM FIN_SYS_TENANT  ";
    private static final String QUERY_LV2_ALL = "SELECT * FROM FIN_SYS_TENANT WHERE LV < 3 ORDER BY CODE ASC";
    /**
     * @Description 根据机构id查询机构
     * @Author 卢庆阳
     * @Date 2023/10/23
     * @Author :power
     * @Date : 2023/7/20 20:41 获取区划信息 主要用于缓存
     */
    public FinSysTenant selectByTenantId(String code) {
        List<FinSysTenant> select = this.select(QUERY_BY_PARENT_CODE, new Object[]{code}, new FinSysTenant());
        if (StringUtils.isEmptyList(select)) {
            return null;
        } else {
            return select.get(0);
    public FinSysTenant queryOneByCode(String code) {
        FinSysTenant tenant = new FinSysTenant();
        tenant.setCode(code);
        List<FinSysTenant> tenantList = this.select(tenant);
        if (!StringUtils.isEmptyList(tenantList)) {
            return tenantList.get(0);
        }
        return null;
    }
    public List<FinSysTenant> queryForTree() {
        // 展示全部节点
        return this.select(QUERY_TREE_ALL, new Object[]{}, new FinSysTenant());
    }
    /**
     * 添加机构
     * @Author :power
     * @Date : 2023/7/20 16:34 根据id 查询下级所有节点 地市查询自己 省查询所有地市
     */
    public List<FinSysTenant> queryTreeById(Long id, Integer lv) {
        if (lv == 3) {
            return new ArrayList<>();
        }
        Map<String, Object> parameter = new HashMap<>(5);
        StringBuilder sql = new StringBuilder(QUERY_TREE_BY_CODE);
        if (id != null && lv == 1) {
            sql.append(" WHERE PARENT_ID = :orgId OR ID = :orgId");
            parameter.put("orgId", id);
        }
        if (id != null && lv == 2) {
            sql.append(" WHERE ID = :orgId");
            parameter.put("orgId", id);
        }
        return this.select(sql.toString(), parameter, new FinSysTenant());
    }
    /**
     * @Author :power
     * @Date : 2023/7/21 14:46 特殊数据 禁止其他接口使用
     */
    public Map<Long, List<FinSysTenant>> queryCountyByCityCode(Long id, Integer lv) {
        Map<String, Object> parameter = new HashMap<>(5);
        StringBuilder sql = new StringBuilder(QUERY_LIST_BY_CITY_CODE);
        if (id != null && (lv == 2 || lv == 3)) {
            sql.append(" WHERE LV >= 2  ");
            sql.append(" AND (PARENT_ID = :orgId OR ID = :orgId ) ");
            parameter.put("orgId", id);
        } else {
            sql.append(" WHERE LV > 1  ");
            sql.append(" AND PARENT_ID IS NOT NULL ");
        }
        sql.append(" ORDER BY PARENT_ID ,ID ");
        List<FinSysTenant> list = this.select(sql.toString(), parameter, new FinSysTenant());
        // return list.stream().filter(tenant -> Objects.nonNull(tenant.getParentId())).collect(Collectors.groupingBy(FinSysTenant::getParentId));
        return list.stream().collect(Collectors.groupingBy(FinSysTenant::getParentId));
    }
    /**
     * @Description 查询所有的市级带河南省的区划
     * @Author wh
     * @Date 2023/7/20 15:29
     */
    public List<FinSysTenant> selectByLV2() {
        return this.select(QUERY_LV2_ALL, new Object[]{}, new FinSysTenant());
    }
    /**
     * 删除
     *
     * @author 卢庆阳
     * @date 2023/10/4
     */
    public int addSysTenant(FinSysTenantParam param, S_user_core currentUser, int lv) {
        FinSysTenant sysTenant = new FinSysTenant();
    public int updateById(FinSysTenantParam param, FinSysTenantUser sysInfo) {
        FinSysTenant finSysTenant = new FinSysTenant();
        finSysTenant.setTempId(param.getId());
        finSysTenant.setStatus(0);
        finSysTenant.setIsDelete(1);
        finSysTenant.setModified(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        finSysTenant.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        finSysTenant.setUpdateBy(sysInfo.getUserName());
        return this.update(finSysTenant);
    }
    /**
     * 添加机构
     *
     * @author 卢庆阳
     * @date 2023/10/4
     */
    public int addFinSysTenant(FinSysTenantParam param, FinSysTenantUser sysInfo, int lv) {
        FinSysTenant finSysTenant = new FinSysTenant();
        //id和tempId
        StringBuilder sql = new StringBuilder("SELECT max(id) FROM fin_sys_tenant WHERE 1=1");
@@ -59,21 +136,23 @@
        } else {
            id = param.getParentId() * 1000 + 1;
        }
        sysTenant.setTempId(id);
        sysTenant.setId(id);
        sysTenant.setStatus(param.getStatus());
        finSysTenant.setTempId(id);
        finSysTenant.setId(id);
        finSysTenant.setStatus(param.getStatus());
        sysTenant.setParentId(param.getParentId());
        sysTenant.setCode(param.getCode());
        sysTenant.setName(param.getName());
        sysTenant.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        sysTenant.setSummary(param.getSummary());
        sysTenant.setCreateBy(currentUser.getUser_name());
        finSysTenant.setParentId(param.getParentId());
        finSysTenant.setCode(param.getCode());
        //设置详细地址及经纬度
        finSysTenant.setName(param.getName());
        finSysTenant.setCreateTime3(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        finSysTenant.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        finSysTenant.setSummary(param.getSummary());
        finSysTenant.setCreateBy(sysInfo.getUserName());
        //设置各层级id及名称
        sysTenant.setLv(lv);
        setLvIdAndName(param, sysTenant, id, lv);
        finSysTenant.setLv(lv);
        setLvIdAndName(param, finSysTenant, id, lv);
        return this.insert(sysTenant);
        return this.insert(finSysTenant);
    }
    /**
@@ -82,15 +161,15 @@
     * @author 卢庆阳
     * @date 2023/10/4
     */
    private void setLvIdAndName(FinSysTenantParam param, FinSysTenant sysTenant, long id, int lv) {
    private void setLvIdAndName(FinSysTenantParam param, FinSysTenant finSysTenant, long id, int lv) {
        if (lv == 2) {    //新增市级机构
            //查询上一级 - 省级
            FinSysTenant finSysTenant1 = this.get(new FinSysTenant(param.getParentId()));
            if (finSysTenant1 != null) {
                sysTenant.setLv1Id(finSysTenant1.getId());
                sysTenant.setLv1Name(finSysTenant1.getName());
                sysTenant.setLv2Id(id);
                sysTenant.setLv2Name(param.getName());
                finSysTenant.setLv1Id(finSysTenant1.getId());
                finSysTenant.setLv1Name(finSysTenant1.getName());
                finSysTenant.setLv2Id(id);
                finSysTenant.setLv2Name(param.getName());
            }
        } else if (lv == 3) {     //新增县级机构
            //查询上一级 - 市级
@@ -99,12 +178,12 @@
                //查询上一级 - 省级
                FinSysTenant finSysTenant1 = this.get(new FinSysTenant(finSysTenant2.getParentId()));
                sysTenant.setLv1Id(finSysTenant1.getId());
                sysTenant.setLv1Name(finSysTenant1.getName());
                sysTenant.setLv2Id(finSysTenant2.getId());
                sysTenant.setLv2Name(finSysTenant2.getName());
                sysTenant.setLv3Id(id);
                sysTenant.setLv3Name(param.getName());
                finSysTenant.setLv1Id(finSysTenant1.getId());
                finSysTenant.setLv1Name(finSysTenant1.getName());
                finSysTenant.setLv2Id(finSysTenant2.getId());
                finSysTenant.setLv2Name(finSysTenant2.getName());
                finSysTenant.setLv3Id(id);
                finSysTenant.setLv3Name(param.getName());
            }
        } else if (lv == 4) {      //新增支局机构
            //查询上一级 - 县级
@@ -116,17 +195,58 @@
                    //查询上一级 - 省级
                    FinSysTenant sysTenant1 = this.get(new FinSysTenant(finSysTenant2.getParentId()));
                    if (sysTenant1 != null) {
                        sysTenant.setLv1Id(sysTenant1.getId());
                        sysTenant.setLv1Name(sysTenant1.getName());
                        sysTenant.setLv2Id(finSysTenant2.getId());
                        sysTenant.setLv2Name(finSysTenant2.getName());
                        sysTenant.setLv3Id(finSysTenant3.getId());
                        sysTenant.setLv3Name(finSysTenant3.getName());
                        sysTenant.setLv4Id(id);
                        sysTenant.setLv4Name(param.getName());
                        finSysTenant.setLv1Id(sysTenant1.getId());
                        finSysTenant.setLv1Name(sysTenant1.getName());
                        finSysTenant.setLv2Id(finSysTenant2.getId());
                        finSysTenant.setLv2Name(finSysTenant2.getName());
                        finSysTenant.setLv3Id(finSysTenant3.getId());
                        finSysTenant.setLv3Name(finSysTenant3.getName());
                        finSysTenant.setLv4Id(id);
                        finSysTenant.setLv4Name(param.getName());
                    }
                }
            }
        }
    }
    /**
     * 批量添加机构
     *
     * @author jlq
     * @date 2023/10/9
     */
    public void insertFinSysTenantBatch(List<FinSysTenantParam> params, FinSysTenantUser sysInfo, int lv) {
        for (FinSysTenantParam param : params) {
            addFinSysTenant(param, sysInfo, lv);
        }
    }
    /**
     * 编辑
     *
     * @author 卢庆阳
     * @date 2023/10/6
     */
    public int updateFinSysTenant(FinSysTenant finSysTenant, FinSysTenantUser sysInfo) {
        Integer lv = finSysTenant.getLv();
        if (lv == 1) {
            finSysTenant.setLv1Name(finSysTenant.getName());
        } else if (lv == 2) {
            finSysTenant.setLv2Name(finSysTenant.getName());
        } else {
            finSysTenant.setLv3Name(finSysTenant.getName());
        }
        finSysTenant.setModified(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        finSysTenant.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        finSysTenant.setUpdateBy(sysInfo.getUserName());
        return this.update(finSysTenant);
    }
    public FinSysTenant selectById(Long id) {
        FinSysTenant tenant = new FinSysTenant();
        tenant.setTempId(id);
        return this.get(tenant);
    }
}