package jtznyj.common.api;

import jtznyj.common.api.vo.AFocusWarn;
import jtznyj.engineer.vo.LtdRecord;
import org.springframework.stereotype.Service;

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

/**
 * 智能预警module-system中需共用部分
 */
public interface ICommonApi {
    /**
     * 默认的工程预警算法
     */
    List<Map<String, Object>> queryDefaultEngineerLogic();

    /**
     * 井的工程预警算法
     * @param jh
     * @return
     */
    List<Map<String, Object>> queryWellEngineerLogic(String jh);

    /**
     * 根据井号名称获得表代码
     * @param jh
     * @return
     */
    String getTableCode(String jh);

    /**
     * 查询一段时间内的ltd数据
     * @param end
     * @param minutes
     * @return
     */
    List<LtdRecord> queryLtdListInPeriod(String jh, Date end, Integer minutes);

    /**
     * 查询一段时间内的ltd数据, 倒序排列
     * @param end
     * @param minutes
     * @return
     */
    List<LtdRecord> queryLtdListInPeriodDesc(String jh, Date end, Integer minutes);


    /**
     * 查询ltd中井有数据的最新一天
     * @param jh
     * @return
     */
    List<Map<String, Object>> queryJhLastDayOnLtd(String jh);

    /**
     * 查询钻井液中井有数据的最新一天
     * @param jh
     * @return
     */
    List<Map<String, Object>> queryJhLastDayOnZjy(String jh);

    /**
     * 保存一条 AFocusWarn
     * @param src
     * @return
     */
    Boolean saveOneAFocusWarn(AFocusWarn src);

    /**
     * 使用 sql 查询一条 AFcousWarn
     * @param sql
     * @return
     */
    AFocusWarn queryOneAFocusWarnWithSql(String sql);

    /**
     * 获取井最新时间的深度值
     * @param jh
     * @return
     */
    List<Map<String, Object>> queryDepthWithLastTime(String jh);

    /**
     * 获取表 A_JH 所有数据
     * @return
     */
    List<Map<String, Object>> queryAllAJh();

    /**
     * 获取井 最新一条的 A_FOCUS_WARN数据
     * @param jh
     * @return
     */
    List<Map<String, Object>> queryWellAfocusWarnLast(String jh);
}
