package com.hdkj.lt.bf.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hdkj.hussar.ApiResponse;
import com.hdkj.lt.base.model.response.PageVO;
import com.hdkj.lt.bf.entity.dto.ReconDetailReqDTO;
import com.hdkj.lt.bf.entity.dto.ReconListReqDTO;
import com.hdkj.lt.bf.entity.dto.ReconPageReqDTO;
import com.hdkj.lt.bf.entity.vo.*;
import com.hdkj.lt.bf.service.ReconQueryService;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 重构方案查询控制器
 *
 * @author Sunlit
 * @date 2026/7/17
 */
@RestController
@RequestMapping("/recon")
@RequiredArgsConstructor
public class FhzgReconController {

    @Autowired
    private ReconQueryService reconQueryService;

    /**
     * 查询方案列表（事件详情页）
     */
    @PostMapping("/list")
    @ApiOperation(value = "查询重构方案列表")
    public ApiResponse<ReconListVO> getSchemeList(@RequestBody ReconListReqDTO reqDTO) {
        return reconQueryService.getSchemeList(reqDTO);
    }

    /**
     * 查询方案详情（方案详情页）
     */
    @PostMapping("/detail")
    @ApiOperation(value = "查询重构方案详情")
    public ApiResponse<ReconDetailVO> getSchemeDetail(@RequestBody ReconDetailReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getSchemeDetail(reqDTO));
    }

    /**
     * 查询开关动作顺序（分页）
     */
    @PostMapping("/switch-seq/page")
    @ApiOperation(value = "查询开关动作顺序")
    public ApiResponse<PageVO<ReconSwitchSeqVO>> getSwitchSeqPage(@RequestBody ReconPageReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getSwitchSeqPage(reqDTO));
    }

    /**
     * 查询馈线重构前后对比（分页）
     */
    @PostMapping("/feeder-compare/page")
    @ApiOperation(value = "查询馈线重构前后对比")
    public ApiResponse<PageVO<ReconFeederCompareVO>> getFeederComparePage(@RequestBody ReconPageReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getFeederComparePage(reqDTO));
    }

    /**
     * 查询负荷点电压对比（分页）
     */
    @PostMapping("/loadpoint-compare/page")
    @ApiOperation(value = "查询负荷点电压对比")
    public ApiResponse<PageVO<ReconLoadpointCompareVO>> getLoadpointComparePage(@RequestBody ReconPageReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getLoadpointComparePage(reqDTO));
    }

    /**
     * 查询开关状态对比（分页）
     */
    @PostMapping("/switch-compare/page")
    @ApiOperation(value = "查询开关状态对比")
    public ApiResponse<PageVO<ReconSwitchCompareVO>> getSwitchComparePage(@RequestBody ReconPageReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getSwitchComparePage(reqDTO));
    }

    /**
     * 查询方案详情（方案详情页）
     */
    @PostMapping("/svg-switch-change")
    @ApiOperation(value = "重构后开关变化列表")
    public ApiResponse<List<BreakerAreaVO>> getSvgSwitchChange(@RequestBody ReconDetailReqDTO reqDTO) {
        return ApiResponse.success(reconQueryService.getSvgSwitchChange(reqDTO));
    }
}
