黎星凯
2024-04-15 62b6a7fac3f2acde70b578431147c4a01f19c182
consum-base/src/main/java/com/consum/base/service/impl/FinSysTenantServiceImpl.java
@@ -6,6 +6,12 @@
import java.util.Map;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.consum.base.service.SLoginInfoServiceImp;
import com.consum.model.po.SLoginInfo;
import com.iplatform.model.po.S_role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.consum.base.pojo.FinSysTenantParam;
@@ -17,14 +23,21 @@
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import cn.hutool.core.date.DateUtil;
import org.springframework.transaction.annotation.Transactional;
@Service
public class FinSysTenantServiceImpl extends BaseServiceImpl implements FinSysTenantService {
    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";
            "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  ";
            "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  ";
    @Autowired
    private SLoginInfoServiceImp sLoginInfoService;
    /**
     * @Author :power
@@ -44,7 +57,7 @@
    @Override
    public List<FinSysTenant> queryForTree() {
        // 展示全部节点
        return this.select(QUERY_TREE_ALL, new Object[] {}, new FinSysTenant());
        return this.select(QUERY_TREE_ALL, new Object[]{}, new FinSysTenant());
    }
    /**
@@ -129,8 +142,8 @@
        List<Map<String, Object>> 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;
        if (!CollectionUtils.isEmpty(list)) {
            id = (Long) list.get(0).get("max(id)") + 1;
        } else {
            id = param.getParentId() * 1000 + 1;
        }
@@ -142,7 +155,7 @@
        finSysTenant.setCode(param.getCode());
        // 设置详细地址及经纬度
        finSysTenant.setName(param.getName());
        finSysTenant.setCreateTime3(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        finSysTenant.setCreateTime3(DateUtil.date());
        finSysTenant.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        finSysTenant.setSummary(param.getSummary());
        finSysTenant.setCreateBy(sysInfo.getUserName());
@@ -159,7 +172,6 @@
     * @author 卢庆阳
     * @date 2023/10/4
     */
    @Override
    public void setLvIdAndName(FinSysTenantParam param, FinSysTenant finSysTenant, long id, int lv) {
        if (lv == 2) { // 新增市级机构
            // 查询上一级 - 省级
@@ -237,7 +249,7 @@
        } else {
            finSysTenant.setLv3Name(finSysTenant.getName());
        }
        finSysTenant.setModified(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        finSysTenant.setModified(DateUtil.date());
        finSysTenant.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        finSysTenant.setUpdateBy(sysInfo.getUserName());
        return this.update(finSysTenant);
@@ -256,4 +268,70 @@
        tenant.setName(tenantName);
        return this.select(tenant).stream().findFirst().orElse(null);
    }
    @Override
    public FinSysTenant selectByNameAndPid(Long pid, String tenantName) {
        FinSysTenant tenant = new FinSysTenant();
        tenant.setName(tenantName);
        tenant.setParentId(pid);
        return this.select(tenant).stream().findFirst().orElse(null);
    }
    @Override
    public FinSysTenant selectByNameAndPid100(Long pid, String tenantName) {
        FinSysTenant tenant = new FinSysTenant();
        tenant.setName(tenantName);
        tenant.setParentId(100L);
        return this.select(tenant).stream().findFirst().orElse(null);
    }
    @Override
    public FinSysTenant selectByNameAndPid0(Long pid, String tenantName) {
        FinSysTenant tenant = new FinSysTenant();
        tenant.setName(tenantName);
        tenant.setParentId(0L);
        return this.select(tenant).stream().findFirst().orElse(null);
    }
    /**
     * 修改登录日志的信息,加上登陆人,登录人的部门
     *
     * @param sysUserName 用户name
     */
    @Override
    @Transactional(readOnly = false)
    public void changeSLoginInfo(String sysUserName) {
        // 查询当前登录用户的最后一条日志
        Map<String, Object> parameter = new HashMap();
        parameter.put("userName", sysUserName);
        StringBuilder whStr = new StringBuilder(" order by login_time desc LIMIT 1 ");
        List<SLoginInfo> select = select(new SLoginInfo(), whStr.toString(), parameter);
        if (!CollectionUtil.isEmpty(select) && select.size() == 1) {
            // 查询用户关联的机构部门和姓名
            SLoginInfo sLoginInfo = select.get(0);
            StringBuilder selSql = new StringBuilder("SELECT fstu.USER_NAME userName,fst.NAME tenantName,fstd.NAME sysDeptName FROM\n" +
                    "\tFIN_SYS_TENANT_USER fstu LEFT JOIN fin_sys_tenant fst ON fst.id = fstu.TENANT_ID LEFT JOIN fin_sys_tenant_department fstd ON fstd.id = fstu.SYS_DEPT_ID \n" +
                    "WHERE fstu.IS_DELETE = 0  ");
            selSql.append(" AND fstu.USER_NAME =:userName");
            parameter.put("userName", sysUserName);
            List<Map<String, Object>> selected = select(selSql.toString(), parameter);
            Object unit = null;
            Object name = null;
            if (!CollectionUtil.isEmpty(selected)) {
                Map<String, Object> stringObjectMap = selected.get(0);
                name = stringObjectMap.get("userName");
                unit = stringObjectMap.get("sysDeptName");
            }
            if (unit != null && name != null) {
                // 如果有部门和用户名 更新日志表的数据
                StringBuilder sb = new StringBuilder("update s_login_info set sys_user_unit = '");
                sb.append(unit == null ? "" : unit.toString() + "',");
                sb.append("  sys_user_name = '");
                sb.append(name == null ? "" : name.toString() + "'");
                sb.append(" where info_id = ");
                sb.append(sLoginInfo.getInfoId());
                sLoginInfoService.update(sb.toString());
            }
        }
    }
}