package com.zjrs.zwnw.sxgl.entity;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.zjrs.zwnw.sxgl.dto.*;
import com.zjrs.zwnw.sxgl.po.Fwoperator2rightPO;
import com.zjrs.zwnw.sxgl.po.FwrightPO;
import com.zjrs.zwnw.sxgl.po.SxpzxxPO;

import java.util.HashMap;
import java.util.List;

@Mapper
public interface SxpzxxMapper extends BaseMapper<SxpzxxPO> {

    //获取事项详情
    public SxpzxxXsDTO getSxpzxxById(@Param("id") String id);

    //获取事项关联材料分页listBySxbm
    public Page<SxglclListDTO> getSxglclListBySxbm(Page<SxglclListDTO> page, @Param("dto") SxglclQueryDTO dto);

    //获取事项关联材料分页listById
    public Page<SxglclListDTO> getSxglclListById(Page<SxglclListDTO> page, @Param("dto") SxglclQueryDTO dto);

    //获取事项未关联的材料分页listBySxbm
    public Page<SdzlsxListDTO> getSxWglclListBySxbm(Page<SdzlsxListDTO> page, @Param("dto") SxWglclQueryDTO dto);

    //获取事项未关联的材料分页listId
    public Page<SdzlsxListDTO> getSxWglclListById(Page<SdzlsxListDTO> page, @Param("dto") SxWglclQueryDTO dto);

    //获取事项流程环节分页list
    public Page<LchjListDTO> getLchjList(Page<LchjListDTO> page, @Param("sxbm") String sxbm);

    //查询导出事项列表
    public List<SxExportListDTO> queryExportSxlList(@Param("dto") SxExportQueryDTO dto);

    //获取事项关联测试信息bySxbm
    public SxglclListDTO getSxglcXxBySxbm(@Param("dto")SxglclXxQueryDTO dto);

    //获取事项关联测试信息bySxId
    public SxglclListDTO getSxglcXxBySxId(@Param("dto")SxglclXxQueryDTO dto);

    //根据事项编码统计流程量
    public int countLcBySxbm(@Param("sxbm") String sxbm);

    //根据事项编码前缀找最大编码
    public String getMaxSxbm(@Param("sxbm") String sxbm);
    //流程是否走完
    public int checkProcessInstance(@Param("rsSxConfigLsh") String rsSxConfigLsh);

    //流程临时表是否存在
    public int checkLcTemp(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //流程正式表是否存在
    public int checkZslc(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //获取流程临时表信息分页
    public Page<LchjListDTO> getSxlcpzList(Page<LchjListDTO> page, @Param("rsSxConfigLsh") String rsSxConfigLsh);
    //获取流程正式表信息
    public List<SxpzxxLchjDTO> getWfActionDefBySxid(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //获取事项详情
    public SxpzxxLcpzDTO getSxpzxxLcpzById(@Param("id") String id);
    //检验当前环节到一下环节是否发短信
    public int checkHjTaskSendSms(@Param("dto")SxpzxxLchjDTO dto);
    //流程临时表是否存在科员受理环节
    public int checkLcExistKyls(@Param("processdefid") String processdefid);
    //获取环节信息根据流程ID
    public SxpzxxLchjDTO getLchjxxByLcid(@Param("processdefid") String processdefid);
    //获取环节ID后缀
    public String getHjID();
    //获取流程设计列表
    public List<SxpzxxLcpzSetListDTO> getLcpzSetList(@Param("processdefid") String processdefid);
    //是否上下环节
    public int lcpzSetCheckHj(@Param("dto")SxpzxxLchjDTO dto);
    //是否发短信
    public int lcpzSetCheckSendSms(@Param("dto")SxpzxxLchjDTO dto);
    //查询多余环节
    public List<SxpzxxLchjDTO> getBlankHjMoreThanOne(@Param("processdefid") String processdefid);
    //下一环节是否为空
    public int checkNextHjIsBlank(@Param("dto")SxpzxxLchjDTO dto);
    //获取环节信息根据环节ID
    public SxpzxxLchjDTO getLchjxxByHjid(@Param("actiondefid") String actiondefid);
    //校验排序号
    public int checkSortno(@Param("dto")SxpzxxLchjDTO dto);
    //校验排序号是否有重复
    public Integer checkSortnoMoreThanOne(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //所有非回退环节都有一下环节，除了办结、退单
    public List<SxpzxxLchjDTO> checkAllHjHaveNext(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //获取流程临时表环节List
    public List<SxpzxxLchjDTO> getWfactiondeftempList(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //流程临时表是否存在科员受理环节
    public int isWfactiondeftempHaveKysl(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //权限表是否存在根据ID
    public int checkRightById(@Param("rightid") String rightid);
    //权限表是否存在根据环节ID
    public int checkRightByActiondefid(@Param("actiondefid") String actiondefid);
    //权限表rightid最大值
    public String getMaxRightid(@Param("rightid") String rightid);
    //获取流程临时表环节根据环节ID
    public List<SxpzxxLchjDTO> getWfactiondeftempByActiondefid(@Param("actiondefid") String actiondefid);
    public List<SxpzxxLchjDTO> getWfactiondeftempByNextactiondefid(@Param("nextactiondefid") String nextactiondefid);
    public List<SxpzxxLchjDTO> getWfactiondeftempFdx(@Param("processdefid") String processdefid);
    //无效的权限ID
    public List<FwrightPO> getNoAvailRights(@Param("processdefid") String processdefid);
    public int checkZslcHaveKysl(@Param("actiondefid") String actiondefid);
    //环节名称动态字典
    public List<HjmcDictDTO> getHjmcDict();
    //正式环节
    public List<String> getWfactiondefHj(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //临时环节
    public List<String> getWfactiondeftermHj(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //流程图，结点
    public List<SxpzxxLcpzLctListDTO> getLctNodes(@Param("processdefid") String processdefid);
    //流程图，边
    public List<SxpzxxLcpzLctListDTO> getLctEdges(@Param("processdefid") String processdefid);
    //取事项配置流水号根据流程ID
    public String getRssxconfigIdByProcessdefid(@Param("processdefid") String processdefid);
    //是否为管理员，取OPERID
    public String getAdminOperid(@Param("userid") String userid);
    //清除Fwoperator2right
    public void delFwoperator2right(@Param("map") HashMap map);
    public List<FwrightPO> getRightsByProcessdefid(@Param("processdefid") String processdefid);
    public void insertFwoperator2right(@Param("po") Fwoperator2rightPO po);
    //获取事项配置附件list
    public Page<SxpzxxFjybListDTO> getSxpzxxFjybList(Page<SxpzxxFjybListDTO> page, @Param("dto") SxpzxxFjybQueryDTO dto);
    //所有非回退环节都有一上环节，除了办结、退单
    public List<SxpzxxLchjDTO> checkAllHjHavePre(@Param("rsSxConfigLsh") String rsSxConfigLsh);
    //获取事项详情根据事项编码
    public SxpzxxXsDTO getSxpzxxBySxbm(@Param("sxbm") String sxbm);
}
