package cn.com.countrygarden.bi.main.service.advise;

import cn.com.countrygarden.bi.main.core.Result;
import cn.com.countrygarden.bi.main.dto.advise.AfAdviseFeedbackAddPreVO;
import cn.com.countrygarden.bi.main.dto.advise.AfAdviseFeedbackListVO;
import cn.com.countrygarden.bi.main.dto.advise.AfAdviseFeedbackOneVO;
import cn.com.countrygarden.bi.main.dto.advise.param.*;
import cn.com.countrygarden.bi.main.model.AccessToken;

/**
 * 建言-业务逻辑层
 *
 * @author 木木子
 * @email 944528607@qq.com
 * @url
 * @date 2019-04-15
 */
public interface IAfAdviseFeedbackService {

    Result queryPageList(AdviseFeedbackParam adviseFeedbackParam, int page, int size);

    /**
     * 处理列表页面的各按钮是否显示问题
     * @param afAdviseFeedbackVO
     * @param adviseFeedbackParam
     * @param responsiblerDTOList :当前登录用户的所有角色数据
     * @return
     */
     AfAdviseFeedbackListVO handleListButtonisShow(AfAdviseFeedbackListVO afAdviseFeedbackVO,AdviseFeedbackParam adviseFeedbackParam,int sortNumber);
    /**
     * 获得节点数据
     *
     * @param adviseProcess
     * @param accessToken
     * @return
     */
    AfAdviseFeedbackOneVO queryById(AdviseFeedbackOneParam adviseFeedbackOneParam, AccessToken accessToken);

    Result addOrEdit(AfAdviseFeedbackAddParam afAdviseFeedbackAddParam, AccessToken accessToken);

    /**
     * 软删除建言（只有在保存状态才可执行）
     *
     * @param id
     * @return
     */
    Result del(Integer id);

    /**
     * 获得此建言已经回复的信息
     *
     * @param hasRole：是否区域管理员
     * @param afAdviseProcess
     * @param accessToken
     * @return
     */


    Result getReplyAfAdviseInfo(ReplyAfAdviseParam replyAfAdviseParam, AccessToken accessToken);

    /**
     * 处理返回回复信息的数据
     *
     * @param replyAfAdviseParam
     * @return
     */
    AfAdviseFeedbackOneVO handleAfAdviseFeedbackOneVODate(ReplyAfAdviseParam replyAfAdviseParam, AccessToken accessToken);

    /**
     * 查看建言流程
     * @param id
     * @param accessToken
     * @return
     */
    Result selectAdviseFeedbackOne(Integer id, AccessToken accessToken);

    /**
     * 前端页面是否显示发布/撤回按钮
     *
     * @param adviseFeedbackOneVO
     * @param accessToken
     * @return
     */
    AfAdviseFeedbackOneVO editNoticeState(AfAdviseFeedbackOneVO adviseFeedbackOneVO, AccessToken accessToken);


    Result editDate(Integer id, AdviseFeedbackParam accessToken);

    /**
     * 增加分配建言信息及节点
     *
     * @param afAdviseFeedback
     * @param accessToken
     * @return
     */
    Result addOrEditDistribution(ProcessDistributionParam processDistributionParam, AccessToken accessToken);

    /**
     * 获得当前登录用户所属的区域数据
     *
     * @param organCode
     * @param accessToken
     * @return
     */
    Result getRegionDate(String organCode, AdviseFeedbackParam adviseFeedbackParam);

    /**
     * 添加建言前登录人有多个角色时根据业务进行处理
     * @param adviseFeedbackParam
     * @return
     */
     AfAdviseFeedbackAddPreVO handAddPreMultipleRoles(AdviseFeedbackParam adviseFeedbackParam);
}