package com.chinaweal.aiccs.aiccs.abnormal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.aiccs.aiccs.abnormal.entity.Gzaiccode;
import com.chinaweal.aiccs.aiccs.dict.entity.CascadeTreeNode;
import com.chinaweal.aicorg.model.AICUser;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author chinaweal
 * @since 2021-10-21
 */
public interface IGzaiccodeService extends IService<Gzaiccode> {

    List<CascadeTreeNode> getOrgTreeList();

    void flushCache();

    /**
     * 新增
     */
    Gzaiccode saveGzaiccode(Gzaiccode gzaiccode);

    /**
     * 修改
     */
    void updateGzaiccode(Gzaiccode gzaiccode);

    /**
     * 分页查询
     */
    IPage<Gzaiccode> listGzaiccode(BaseQuery<Gzaiccode> query);

    /**
     * 根据主体机关和权限标识，分配对应部门，拿到对应的用户列表
     * 分派规则：
     * 谁列入谁移出
     * 根据主体的登记机关区分是否市局登记，属于市局登记的，再判断受理机关的，当受理机关为440129的主体，分派至注册二处的经办人岗，其他市局登记的主体分派至市局经办人岗
     * 非市局登记的主体，先按照登记机关分派至区局经办人岗，再按照属地监管所进行判断，分派至属地监管所的经办人岗，状态为待受理
     *
     * @param pripid     企业主键
     * @param permission 权限标识
     * @param decorg    列入的机关代码
     * @param decorgCn 列入的机关名称
     */
    List<AICUser> byPermissionListHandleUserList(String pripid, String permission, String decorg, String decorgCn);

    /**
     * 根据码值获取机关中文
     * @param code
     * @return
     */
    String getNameByCode(String code);

    /**
     * 根据层级获取机关列表
     * @param slevel
     * @return
     */
    List<CascadeTreeNode> getList(String slevel);

    /**
     * 获取子列表
     * @param parentid
     * @return
     */
    List<CascadeTreeNode> getChildList(String parentid);

    List<CascadeTreeNode> getNodeByOrg(String org);

    /**
     * 获取子列表（只有所的）
     * @param parentid
     * @return
     */
    List<CascadeTreeNode> getChildStationList(String parentid);

//    /**
//     * 根据层级获取机关列表
//     * @param parentid
//     * @return
//     */
//    List<CascadeTreeNode> getStationByOrg(String parentid);

}
