package com.njcn.process.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.minioss.bo.MinIoUploadResDTO;
import com.njcn.process.pojo.param.*;
import com.njcn.process.pojo.po.RGeneralSurveyPlanPO;
import com.njcn.process.pojo.vo.*;
import liquibase.pro.packaged.S;

import java.util.List;

/**
 * Description:
 * 接口文档访问地址：http://serverIP:port/swagger-ui.html
 * Date: 2022/11/11  11:24【需求编号】
 *
 * @author clam
 * @version V1.0.0
 */
public interface RGeneralSurveyPlanPOService extends IMppService<RGeneralSurveyPlanPO> {

    /**
     * @Description: addPlan
     * @Param: [rGeneralSurveyPlanAddParm]
     * @return: java.lang.Boolean
     * @Author: clam
     * @Date: 2022/11/14
     */
    Boolean addPlan(RGeneralSurveyPlanAddParm rGeneralSurveyPlanAddParm);

    /**
     * @Description: query
     * @Param: [rGeneralSurveyPlanQueryParm]
     * @return: java.util.List<com.njcn.process.pojo.vo.RGeneralSurveyPlanVO>
     * @Author: clam
     * @Date: 2022/11/15
     */
    IPage<RGeneralSurveyPlanVO> query(RGeneralSurveyPlanQueryParm rGeneralSurveyPlanQueryParm, List<String> statusList, String type);


    RGeneralSurveyPlanVO queryPlanOne(String planId);

    /**
     * @Description: surveyResultUpload
     * @Param: [surveyResultUploadParam]
     * @return: boolean
     * @Author: clam
     * @Date: 2022/11/18
     */
    boolean surveyResultUpload(SurveyResultUploadParam surveyResultUploadParam);

    /**
     * @Description: surveyResultDownload
     * @Param: [planNo]
     * @return: java.util.List<java.lang.String>
     * @Author: clam
     * @Date: 2022/11/18
     */
    List<MinIoUploadResDTO> surveyResultDownload(String planNo);

    /**
     * @Description: exportSurveyPlan
     * @Param: []
     * @return: java.util.List<com.njcn.process.pojo.vo.SurveyPlanExcel>
     * @Author: clam
     * @Date: 2022/11/21
     */
    List<SurveyPlanExcel> exportSurveyPlan(List<String> planIdList);

    /**
     * @Description: querySurveyPlanOnQuestion
     * @Param: [questionQueryParm]
     * @return: java.util.List<com.njcn.process.pojo.vo.RGeneralSurveyPlanDetailOnQuestionVO>
     * @Author: clam
     * @Date: 2022/11/30
     */
    List<RGeneralSurveyPlanDetailOnQuestionVO> querySurveyPlanOnQuestion(SurveyPlanQuestionQueryParm questionQueryParm);

    /**
     * @Description: 更具questionQueryParm查计划名称
     * @Param: [questionQueryParm]
     * @return: java.util.List<com.njcn.process.pojo.param.SurveyPlanQuestionQueryParm>
     * @Author: clam
     * @Date: 2022/12/1
     */
    List<RGeneralSurveyPlanPO> querySurveyPlanName(SurveyPlanQuestionQueryParm questionQueryParm);

    /**
     * @Description: checkPlanAudit
     * @Param: [rGeneralSurveyPlanChcekParm]
     * @return: java.lang.Boolean
     * @Author: clam
     * @Date: 2023/2/22
     */
    Boolean checkPlanAudit(RGeneralSurveyPlanChcekParm rGeneralSurveyPlanChcekParm);

    RGeneralSurveyPlanAddParm querySubStatation(Integer statetionNum);

    List<DeptSubstationVO> initDetpStataionTree(String orgid);

    /**
     * @Description: 设置普测周期
     * @Param: [cycleNum]
     * @return: java.lang.Boolean
     * @Author: clam
     * @Date: 2023/3/15
     */
    RSurveyCycleVO addPlanCycle(Integer cycleNum);


    Boolean submitAuditUser(RGeneralSurveyPlanAuditUserParam rGeneralSurveyPlanAuditUserParam);


    Boolean deletePlan(List<String> planIds);
}
