package com.usky.fire.service;

import com.usky.common.core.bean.ApiResult;
import com.usky.common.core.bean.CommonPage;
import com.usky.common.log.annotation.Log;
import com.usky.common.log.enums.BusinessType;
import com.usky.fire.domain.DemInspectList;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.service.vo.*;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;

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

/**
 * <p>
 * 督察单 服务类
 * </p>
 *
 * @author ZYJ
 * @since 2022-12-28
 */
public interface DemInspectListService extends CrudService<DemInspectList> {
    /**
     * 事件管理-电子督察单-列表查询
     */
    CommonPage<InspectDetailVO> demInspectList(String inspectCode, String companyName, String deviceCode, Integer handlingStatus, Integer pageNum, Integer pageSize);

    /**
     * 事件管理-电子督察单-列表查询-导出
     */
    List<DemInspectExportVO> demInspectListExport(String inspectCode, String companyName, String deviceCode, Integer handlingStatus);

    /**
     * 件管理-企业电子督察单-列表管理
     */
    CommonPage<InspectManagerVO> inspectManageList(String inspectCode, String deviceCode, Integer handlingStatus, Integer pageNum, Integer pageSize);

    /**
     * 事件管理-电子督察单-数据统计
     * @param startDate
     * @param endDate
     * @return
     */
    Map<String, Object> inspectStatistics(String startDate, String endDate);

    /**
     * 电子督察单数量
     * @param companyIdList
     * @param handlingStatus 处置状态（1 已处置 2 待处置 3 超时未处置）
     * @param startDate
     * @param endDate
     * @return
     */
    Integer inspectCount(List<String> companyIdList, Integer handlingStatus, String startDate, String endDate);

    /**
     * 事件管理-数字平台/企业版-查看电子督察单
     *
     * @param inspectCode
     * @return
     */
    List<InspectHandleVO> inspectInfo(String inspectCode);

    /**
     * 事件管理-企业版-填报电子督察单处理结果
     * @param inspectCode  督察单编号
     * @param handler    处理人
     * @param handlerPhone  处理人联系电话
     * @param deviceStatus  设备状态（1 已恢复 2 设备损坏 3 设备维修 4 设备停用）
     * @param handlingContent   处理内容
     * @param sitePhoto1    现场照片1
     * @param sitePhoto2    现场照片2
     * @param sitePhoto3    现场照片3
     */
    void updateInspectManage(String inspectCode, String handler, String handlerPhone, Integer deviceStatus, String handlingContent, String sitePhoto1, String sitePhoto2, String sitePhoto3);

    /**
     * 定时任务-生成待处置和超时未处置的电子督察单
     */
    void demInspectAutoTask();

}
