package com.iailab.module.data.api.plan;

import com.iailab.module.data.api.plan.dto.ApiPlanDataDTO;
import com.iailab.module.data.api.plan.dto.ApiPlanItemDTO;
import com.iailab.module.data.api.point.dto.ApiPointDTO;
import com.iailab.module.data.common.ApiDataQueryDTO;
import com.iailab.module.data.common.ApiDataValueDTO;
import com.iailab.module.data.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;

/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年11月03日
 */
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "计划数据")
public interface PlanItemApi {

    String PREFIX = ApiConstants.PREFIX + "/plan-item";

    @PostMapping(PREFIX + "/query-plan/history-value")
    @Operation(summary = "查询计划历史值")
    List<ApiDataValueDTO> queryPlanItemHistoryValue(@RequestBody ApiDataQueryDTO dto);

    @PostMapping(PREFIX + "/query-plans/record-value")
    @Operation(summary = "查询计划记录")
    LinkedHashMap<String, List<ApiPlanDataDTO>> queryPlanItemRecordValue(@RequestBody ApiDataQueryDTO dto);

    @GetMapping(PREFIX + "/info/no/{itemNo}")
    @Operation(summary = "根据编号查询计划数据信息")
    ApiPlanItemDTO getInfoByNo(@PathVariable("itemNo") String itemNo);

    @GetMapping(PREFIX + "/info/id/{id}")
    @Operation(summary = "根据id查询计划数据信息")
    ApiPlanItemDTO getInfoById(@PathVariable("id") String id);

    @PostMapping(PREFIX + "/info/ids")
    @Operation(summary = "根据多个id查询计划数据信息")
    List<ApiPlanItemDTO> getInfoByIds(@RequestParam("planIds") Set<String> planIds);
}