package com.securitycontrol.system.base.mapper;

import com.securitycontrol.entity.system.base.dto.GxPlanDto;
import com.securitycontrol.entity.system.base.dto.ProScheduleDto;
import com.securitycontrol.entity.system.base.vo.GxPlanProgressVo;
import com.securitycontrol.entity.system.base.vo.GxPlanVo;
import com.securitycontrol.entity.system.base.vo.ProScheduleVo;
import org.apache.ibatis.annotations.MapKey;
import org.springframework.stereotype.Repository;

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

/**
 * @author：cwchen
 * @date：2024-03-13-19:08
 * @version：1.0
 * @description：工程进度-业务逻辑层
 */
@Repository(value = "IProScheduleMapper")
public interface IProScheduleMapper {
    /**
     * 获取工程进度列表
     *
     * @param dto
     * @return List<ProScheduleVo>
     * @description
     * @author cwchen
     * @date 2024/3/13 19:20
     */
    List<ProScheduleVo> getProScheduleLists(ProScheduleDto dto);

    /**
     * 获取工序计划列表
     *
     * @param dto
     * @return List<GxPlanVo>
     * @description
     * @author cwchen
     * @date 2024/3/16 13:42
     */
    List<GxPlanVo> getGxPlanLists(GxPlanDto dto);

    /**
     * 工序计划延期提醒
     *
     * @param dto
     * @return List<String>
     * @description
     * @author cwchen
     * @date 2024/3/16 14:04
     */
    List<String> getGxPlansIsDela(ProScheduleDto dto);

    /**
     * 获取工序计划进度列表
     *
     * @param dto
     * @return List<GxPlanProgressVo>
     * @description
     * @author cwchen
     * @date 2024/3/16 14:26
     */
    List<GxPlanProgressVo> getGxPlanProgressLists(ProScheduleDto dto);

    /**
     * 工序计划是否第一次填报
     *
     * @param vo
     * @return int
     * @description
     * @author cwchen
     * @date 2024/3/16 14:53
     */
    int isFirstFillingGxProgress(GxPlanProgressVo vo);

    /**
     * 更新工序计划信息
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/3/16 14:55
     */
    void updateGxPlanData(GxPlanProgressVo vo);

    /**
     * 填报工序计划进度
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/3/16 15:25
     */
    void addGxPlanProgress(GxPlanProgressVo vo);

    /**
     * 工程为线路时 更新杆塔当前工序
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/3/16 15:40
     */
    void updateGtData(GxPlanProgressVo vo);

    /**
     * 获取当前工序计划的填报进度
     *
     * @param vo
     * @return String
     * @description
     * @author cwchen
     * @date 2024/3/28 14:10
     */
    String getGxPlanProgress(GxPlanProgressVo vo);

    /**
     * 查询该工序计划所有填报信息
     *
     * @param vo
     * @return List<Map < Object>>
     * @description
     * @author cwchen
     * @date 2024/3/30 12:39
     */
    @MapKey("planId")
    List<Map<String, Object>> getProgressData(GxPlanProgressVo vo);

    /**
     * 更新工序计划进度
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/3/30 13:05
     */
    void updateGxPlan(GxPlanProgressVo vo);
}
