package com.consum.base.service; import com.consum.base.pojo.FinSysTenantParam; import com.consum.model.po.FinSysTenant; import com.iplatform.model.po.S_user_core; 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.HashMap; import java.util.List; import java.util.Map; /** * @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 = ?"; /** * @Description 根据机构id查询机构 * @Author 卢庆阳 * @Date 2023/10/23 */ public FinSysTenant selectByTenantId(String code) { List select = this.select(QUERY_BY_PARENT_CODE, new Object[]{code}, new FinSysTenant()); if (StringUtils.isEmptyList(select)) { return null; } else { return select.get(0); } } /** * 添加机构 * @author 卢庆阳 * @date 2023/10/4 */ public int addSysTenant(FinSysTenantParam param, S_user_core currentUser, int lv) { FinSysTenant sysTenant = new FinSysTenant(); //id和tempId StringBuilder sql = new StringBuilder("SELECT max(id) FROM fin_sys_tenant WHERE 1=1"); HashMap paramts = new HashMap<>(); sql.append(" and parent_id =:parent_id"); paramts.put("parent_id", param.getParentId()); List> list = this.select(sql.toString(), paramts); long id = 0L; if (!CollectionUtils.isEmpty(list) && list.get(0).get("max(id)") != null) { id = (Long) list.get(0).get("max(id)") + 1; } else { id = param.getParentId() * 1000 + 1; } sysTenant.setTempId(id); sysTenant.setId(id); sysTenant.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()); //设置各层级id及名称 sysTenant.setLv(lv); setLvIdAndName(param, sysTenant, id, lv); return this.insert(sysTenant); } /** * 设置各层级id及名称 * * @author 卢庆阳 * @date 2023/10/4 */ private void setLvIdAndName(FinSysTenantParam param, FinSysTenant sysTenant, 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()); } } else if (lv == 3) { //新增县级机构 //查询上一级 - 市级 FinSysTenant finSysTenant2 = this.get(new FinSysTenant(param.getParentId())); if (finSysTenant2 != null) { //查询上一级 - 省级 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()); } } else if (lv == 4) { //新增支局机构 //查询上一级 - 县级 FinSysTenant finSysTenant3 = this.get(new FinSysTenant(param.getParentId())); if (finSysTenant3 != null) { //查询上一级 - 市级 FinSysTenant finSysTenant2 = this.get(new FinSysTenant(finSysTenant3.getParentId())); if (finSysTenant2 != null) { //查询上一级 - 省级 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()); } } } } } }