package com.usky.fire.service;

import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.PatrolInspectionPlanSon;
import com.usky.fire.domain.PatrolInspectionSite;
import com.usky.fire.service.vo.*;

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

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-07-18
 */
public interface PatrolInspectionPlanSonService extends CrudService<PatrolInspectionPlanSon> {

    /**
     * 手机端-巡检自检-首页
     *
     * @param currentDate 时间 格式：yyyy-MM-dd
     * @return
     */
    Map<String, Object> appPlanStatistics(String currentDate);

    /**
     * 手机端-巡检自检-巡检计划
     *
     * @param currentDate 时间 格式：yyyy-MM-dd
     * @param sort        排序 （正序：ASC 倒序：DESC）
     * @return
     */
    List<PatrolInspectionPlanSonVo> patrolInspectionPlan(String currentDate, String sort);


    /**
     * 手机端-巡检自检-巡检计划-扫码查询计划
     *
     * @param siteNubmber 地点号码
     * @return
     */
    List<PatrolInspectionPlanSonVo> planList(String siteNubmber);


    /**
     * 手机端-巡检自检-巡检扫码地点详情
     *
     * @param siteId      地点ID
     * @param siteNubmber 地点号码
     * @return
     */
    Map<String, Object> siteDetails(Integer siteId, String siteNubmber, Integer planSonId);


    /**
     * 手机端-巡检自检-巡检上报-提交
     *
     * @param planRecordVo
     */
    void updatePlan(PlanRecordVo planRecordVo);


    /**
     * 手机端-巡检自检-巡检上报-根据子计划ID查询站点
     *
     * @param planSonId 子计划ID
     * @return
     */
    List<PatrolInspectionSiteVo> planSonSiteDetails(Integer planSonId);


    /**
     * 手机端-巡检自检-点位采集-提交
     *
     * @param patrolInspectionSite
     */
    void addSite(PatrolInspectionSite patrolInspectionSite);

    /**
     * 手机端-巡检自检-点位采集-采集记录
     *
     * @param startTime 开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endTime   结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    List<PatrolInspectionSite> siteList(String startTime, String endTime);

    /**
     * 手机端-巡检自检-巡检记录
     *
     * @param currentDate 时间 格式：yyyy-MM-dd
     * @param sort        排序 （正序：ASC 倒序：DESC）
     * @return
     */
    List<PatrolInspectionRecordVo> recordList(String currentDate, String sort, Integer id, Integer planSonId, Integer siteId);

    /**
     * 手机端-巡检自检-巡检记录-查看巡检项
     *
     * @param recordId 记录ID
     * @param siteId   地点ID
     * @return
     */
    Map<String, Object> recordOption(Integer recordId, Integer siteId);

    /**
     * 手机端-根据用户获取巡检人员ID
     *
     * @return
     */
    List<Integer> getpersonId();

    /**
     * 手机端-巡检自检-子计划巡检点位统计
     *
     * @param planSonId        子计划ID
     * @param inspectionStatus 巡检状态（1 未巡检，2 已巡检）
     * @return
     */
    Integer planSiteSonCount(Integer planSonId, Integer inspectionStatus);

    /**
     * 手机端-巡检自检-根据巡检地点ID查巡检内容
     *
     * @param siteId 地点ID
     * @return
     */
    List<PatrolInspectionContentVo> contentList(Integer siteId);

    /**
     * 手机端-巡检自检-巡检计划列表查询
     *
     * @param planIdList
     * @param currentDate
     * @param sort
     * @return
     */
    List<PatrolInspectionPlanSonVo> patrolInspectionPlanSon(List<Integer> planIdList, String currentDate, String sort);


    /**
     * 手机端-巡检自检-巡检任务-巡检子计划地点统计
     *
     * @param planSonidList    子计划ID
     * @param inspectionStatus 巡检状态（1 未巡检，2 已巡检）
     * @return
     */
    List<DataCountVo> planSiteSonCount(List<Integer> planSonidList, Integer inspectionStatus);

    /**
     * 手机端-巡检子计划数量查询
     *
     * @param planIdList  主计划ID
     * @param completion  完成百分比
     * @param currentDate 当前日期
     * @return
     */
    Integer planSonCount(List<Integer> planIdList, Integer completion, String currentDate);

    /**
     * 根据时间查询子计划ID
     *
     * @param planSonSiteIdList 子计划ID
     * @param startTime         开始日期
     * @param endTime           结束日期
     * @return
     */
    List<Integer> planSonIdList(List<Integer> planSonSiteIdList, String startTime, String endTime);

    /**
     * 定时同步巡检系统漏检数据到巡检异常记录表中
     *
     * @return
     */
    void addPatrolInspectionAbnormalData();
}
