package com.yunfeiyun.agmp.fms.mapper;

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

import com.yunfeiyun.agmp.fms.domain.FmsTask;
import com.yunfeiyun.agmp.fms.domain.reqvo.FmsTaskListReqVo;
import com.yunfeiyun.agmp.fms.domain.reqvo.SelectOfTssStatReqVo;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsTaskMessageResVo;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsTaskResVo;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsTaskSumTaskrcdHourResVo;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsTaskTypeCountResVo;
import com.yunfeiyun.agmp.fms.domain.resvo.SpmPayOfTssStatResVo;

/**
 * 农事任务Mapper接口
 * 
 * @author 杨晓辉
 * @date 2023-05-19
 */
public interface FmsTaskMapper
{
    /**
     * 查询农事任务
     * 
     * @param taskId 农事任务主键
     * @return 农事任务
     */
    public FmsTask selectFmsTaskByTaskId(String taskId);

    public int selectCountFmsTaskByPlanId(String planId);

    public int selectCountFmsTask(FmsTaskListReqVo reqVo);

    public List<FmsTaskTypeCountResVo> selectCountFmsTaskByType(FmsTaskListReqVo reqVo);

    public List<FmsTaskSumTaskrcdHourResVo> selectSumTaskrcdHour(FmsTaskListReqVo reqVo);

    /**
     * 查询农事任务详情
     *
     * @param taskId 农事任务主键
     * @return 农事任务
     */
    public FmsTaskResVo getInfoByTaskId(String taskId);
    /**
     * 查询农事任务详情(种植规划档案查询)
     *
     * @param planId 农事任务主键
     * @return 农事任务
     */
    public List<FmsTaskResVo> getInfoByPlanId(String planId);

    /**
     * 查询农事任务列表
     * 
     * @param fmsTask 农事任务
     * @return 农事任务集合
     */
    public List<FmsTask> selectFmsTaskList(FmsTask fmsTask);

    public List<FmsTaskResVo> selectTaskList(FmsTaskListReqVo reqVo);
    public List<FmsTaskResVo> selectTaskListAll(FmsTaskListReqVo reqVo);

    public List<FmsTaskResVo> selectTaskListScreenData(FmsTaskListReqVo reqVo);

    public List<FmsTaskMessageResVo> selectAllTaskList(FmsTaskListReqVo reqVo);

    /**
     * 新增农事任务
     * 
     * @param fmsTask 农事任务
     * @return 结果
     */
    public int insertFmsTask(FmsTask fmsTask);

    /**
     * 修改农事任务
     * 
     * @param fmsTask 农事任务
     * @return 结果
     */
    public int updateFmsTask(FmsTask fmsTask);

    /**
     * 删除农事任务
     * 
     * @param taskId 农事任务主键
     * @return 结果
     */
    public int deleteFmsTaskByTaskId(String taskId);

    /**
     * 批量删除农事任务
     * 
     * @param taskIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFmsTaskByTaskIds(String[] taskIds);


    /**
     农事，巡田，采收 任务最大编号
     */
    public String selectFmsTaskMaxWaterKey();

    /**
     * 查询代办事项总条数
     * @param landId
     * @return
     */
    public int selectTaskCountOfTaskStatus(String landId);
    /**
     * 查询代办事项列表
     * @param landId
     * @return
     */
    public List<FmsTaskMessageResVo> selectTaskListOfTaskStatus(String landId);
    
    /** 溯源统计页面使用：成本占比（农资，农机，人工费用） */
    public Map<String,Object> selectSumTaskrcdMoney(SelectOfTssStatReqVo reqVo);
    /** 溯源统计页面使用：成本占比-明细（人工） */
    public List<SpmPayOfTssStatResVo> selectPayByRg(SelectOfTssStatReqVo reqVo);
    /** 溯源统计页面使用：成本占比-明细（农机） */
    public List<SpmPayOfTssStatResVo> selectPayByNj(SelectOfTssStatReqVo reqVo);
    /** 溯源统计页面使用：成本占比-明细（农资） */
    public List<SpmPayOfTssStatResVo> selectPayByNz(SelectOfTssStatReqVo reqVo);
    
    /** 溯源统计页面使用：年度分析-每月（人工） */
    public List<Map<String, Object>> selectPayMonthByRg(SelectOfTssStatReqVo reqVo);
    /** 溯源统计页面使用：年度分析-每月（农机） */
    public List<Map<String, Object>> selectPayMonthByNj(SelectOfTssStatReqVo reqVo);
    /** 溯源统计页面使用：年度分析-每月（农资） */
    public List<Map<String, Object>> selectPayMonthByNz(SelectOfTssStatReqVo reqVo);

}
