package org.springblade.modules.csInfo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.appmenu.vo.DbsxVO;
import org.springblade.modules.appmenu.vo.SssjVO;
import org.springblade.modules.csInfo.dto.TimeDTO;
import org.springblade.modules.csInfo.entity.CsInfoEntity;
import org.springblade.modules.csInfo.entity.CsRlb;
import org.springblade.modules.csInfo.excel.*;
import org.springblade.modules.csInfo.vo.CsInfoVO;
import org.springblade.modules.csInfo.vo.CsInfoVOS;
import org.springblade.modules.csInfo.vo.InfoVO;
import org.springblade.modules.csInfo.vo.TjfxVO;
import org.springblade.modules.sqjw.jwtdzrq.entity.JwtdZrqEntity;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.vo.DeptAllVO;

import java.util.List;
import java.util.Map;

/**
 * 场所 服务类
 *
 * @author BladeX
 * @since 2023-07-21
 */
public interface ICsInfoService extends BaseService<CsInfoEntity> {
	/**
	 * 自定义分页
	 *
	 * @param page
	 * @return
	 */
	IPage<CsInfoVO> selectInfoPage(IPage<CsInfoVO> page, Map<String, Object> params);

	/**
	 * 自定义分页
	 *
	 * @param page
	 * @return
	 */
	IPage<CsInfoVO> selectInfoPagePublic(IPage<CsInfoVO> page, Map<String, Object> params);

	CsInfoEntity selectCsInfoByIdAndPcsbm(Map<String, Object> param);
	/**
	 * 导出数据
	 *
	 * @return
	 */
	List<CsInfoExcel> exportInfo(Map<String, Object> params);

    CsInfoVO getDetail(Long id);

	int getOverDue(Map<String, Object> params);

	int getXqzgTx(Map<String, Object> params);

    IPage<CsInfoEntity> selectCsPcs(IPage<Object> page, CsInfoEntity csInfo,String deptId);

	List<CsInfoVOS> selectCsSq(Long id,String datetime);

	IPage<CsInfoEntity> selectCsxx(IPage<Object> page, CsInfoEntity csInfo);

	IPage<CsInfoEntity> selectSqByDeptname(IPage<Object> page, CsInfoEntity csInfo,String deptId);

    DeptAllVO getParentInfo(Long sssqBm);

	List<Dept> getDeptList(Map<String, Object> params);

	IPage<QsJxcsExcel> getQsJxcs(IPage<QsJxcsExcel> page, Map<String, Object> params);

	List<QsJxcsExcel> exportQsJxcs(Map<String, Object> params);

	IPage<MjsjtjExcel> getSqTj(IPage<MjsjtjExcel> page, Map<String, Object> params);

	IPage<MjsjtjExcel> getPcsTj(IPage<MjsjtjExcel> page, Map<String, Object> params);

	IPage<MjsjtjExcel> getFjTj(IPage<MjsjtjExcel> page, Map<String, Object> params);

	IPage<MjsjtjExcel> getQsTj(IPage<MjsjtjExcel> page, Map<String, Object> params);

	List<MjsjtjExcel> exportSqTj(Map<String, Object> params);

	List<MjsjtjExcel> exportPcsTj(Map<String, Object> params);

	List<MjsjtjExcel> exportFjTj(Map<String, Object> params);

	List<MjsjtjExcel> exportQsTj(Map<String, Object> params);

	List<TimeDTO> getXfjcTime(Map<String, Object> params);

    SssjVO getSssj(Map<String, Object> params);

    DbsxVO getDbsxVOjc(String deptId);

	IPage<TjfxVO> getTjfxSjtj(IPage<TjfxVO> page, TjfxVO tjfxVO);
	List<TjfxSjExcel> exportTjfxSjtj();
	IPage<TjfxVO> getTjfxFjtj(IPage<TjfxVO> page, TjfxVO tjfxVO);
	List<TjfxFjExcel> exportTjfxFjtj();
	IPage<TjfxVO> getTjfxPcstj(IPage<TjfxVO> page, TjfxVO tjfxVO);
	List<TjfxPcsExcel> exportTjfxPcstj();
	IPage<TjfxVO> getTjfxMjtj(IPage<TjfxVO> page, TjfxVO tjfxVO);
	List<TjfxMjExcel> exportTjfxMjtj();

	CsInfoEntity getPublicCsInfo(long id);
	void addCsRl(CsRlb csRlb);
	boolean deleteByIds(String ids);

	CsInfoEntity selectCsById(CsInfoEntity info);

	List<CsRlb> getRlByCszjAndPcsbm(@Param("param")Map<String, Object> param);

	boolean getJxcsXf(CsInfoEntity csInfoEntity);

	IPage<CsInfoEntity> getCsLb(IPage<CsInfoEntity> page, Long id, CsInfoEntity csInfoEntity);

	List<CsInfoEntity> selectSb(String[] csIds);

    IPage<CsInfoVO> getJxcsSc(IPage<Object> page, Map<String, Object> params);

	boolean getJxcsHf(String[] ids);

	CsInfoEntity selectShtyxydm(String tyxydm);

    boolean updateLastJcId(Long csId, Long jcId);

    List<Long> getLdList(Map<String, Object> params);

	boolean csLdGl(String[] ids, String ldphxlh);

	boolean updateSspcs(String str, Long id, String deptName);

    boolean getQxgl(CsInfoEntity csInfoEntity);

	IPage<InfoVO> getDztj(IPage<InfoVO> page, String deptId);

	IPage<CsInfoVO> getDzxq(IPage<CsInfoVO> page, Map<String, Object> params);

	List<DztjExcel> exportDztj(@Param("param") Map<String, Object> dztj);

	int getJxcsSl(Long userId);

	JwtdZrqEntity getBySqBm(Long sssqbm);

	CsInfoEntity getTyxydm(String tyxydm);

    void deleteBySp(CsInfoEntity csInfoEntity);

	void deleteBySpToJl(CsInfoEntity csInfoEntity);

	void hfDeleted(Long id);

	void saveToJl(CsInfoEntity info);

	void updateByIdToJl(CsInfoEntity csInfoEntity);

    int countBySqBm(Map<String, Object> params);
}
