package com.diagbot.client;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.diagbot.client.hystrix.MedAppealExamineInfoServiceHystrix;
import com.diagbot.dto.CommonResult;
import com.diagbot.dto.GetAppealInfoDTO;
import com.diagbot.dto.GetAppealReviewDTO;
import com.diagbot.dto.GetComplaintRecordDTO;
import com.diagbot.entity.QcresultDetail;
import com.diagbot.vo.ApprovedVo;
import com.diagbot.vo.GetAppealInfoVO;
import com.diagbot.vo.GetAppealReviewVO;
import com.diagbot.vo.GetAuditNumberVO;
import com.diagbot.vo.GetComplaintDetailMsgVO;
import com.diagbot.vo.GetComplaintRecordVO;
import com.diagbot.vo.RejectedVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;



/**
 * @description: 申诉功能远程调用
 * @author: zhoutg
 * @date: 2020/4/13 18:28
 */
@FeignClient(name = "gateway-service", url = "${appeal.address}", fallback = MedAppealExamineInfoServiceHystrix.class)
public interface MedAppealExamineInfoServiceClient {
    /**
     * 获取申诉记录
     * @param getComplaintRecordVO
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/getComplaintRecord")
    CommonResult<Page<GetComplaintRecordDTO>> getComplaintRecord(@RequestBody GetComplaintRecordVO getComplaintRecordVO);

    /**
     * 获取申诉审核列表
     * @param getAppealReviewVO
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/getAppealReview")
    CommonResult<Page<GetAppealReviewDTO>> getAppealReview(@RequestBody GetAppealReviewVO getAppealReviewVO);


    /**
     *审核通过
     * @param approvedVo
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/approved")
    CommonResult<Boolean> approved(@RequestBody ApprovedVo approvedVo);

    /**
     *驳回
     * @param rejectedVo
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/rejected")
    CommonResult<Boolean> rejected(@RequestBody RejectedVo rejectedVo);

    /**
     *审核查看
     * @param getAppealInfoVO
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/getApprovedView")
    CommonResult<GetAppealInfoDTO> getApprovedView(@RequestBody GetAppealInfoVO getAppealInfoVO);

    /**
     *待审核数量
     * @param getAuditNumberVO
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/getAuditNumber")
    CommonResult<Integer> getAuditNumber(@RequestBody GetAuditNumberVO getAuditNumberVO);

    /**
     *获取该申诉记录最新缺陷详情
     * @param getComplaintDetailMsgVO
     * @return
     */
    @PostMapping(value = "/report-service/medAppealExamineInInfoManage/getComplaintDetailMsg")
    CommonResult<QcresultDetail> getComplaintDetailMsg(@RequestBody GetComplaintDetailMsgVO getComplaintDetailMsgVO);


}



