package com.iailab.module.data.ind.data.controller.admin;

import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.framework.common.pojo.PageResult;
import com.iailab.framework.common.util.object.BeanUtils;
import com.iailab.module.data.ind.data.entity.IndDataSetFieldEntity;
import com.iailab.module.data.ind.data.service.IndDataSetFieldService;
import com.iailab.module.data.ind.data.vo.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

import static com.iailab.framework.common.pojo.CommonResult.success;

/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年09月10日
 */
@Tag(name = "数据平台 - 指标数据集字段")
@RestController
@RequestMapping("/data/ind/data-set-field")
@Validated
public class IndDataSetFieldController {

    @Autowired
    private IndDataSetFieldService indDataSetFieldService;

    @GetMapping("/page")
    @Operation(summary = "获取指标数据集字段列表", description = "用于【指标数据集字段】界面")
    @PreAuthorize("@ss.hasPermission('data:ind-data-set:query')")
    public CommonResult<PageResult<IndDataSetFieldRespVO>> page(IndDataSetFieldPageReqVO reqVO) {
        PageResult<IndDataSetFieldEntity> page = indDataSetFieldService.page(reqVO);
        return success(BeanUtils.toBean(page, IndDataSetFieldRespVO.class));
    }

    @PostMapping("/create")
    @Operation(summary = "创建指标数据集字段")
    @PreAuthorize("@ss.hasPermission('data:ind-data-set:create')")
    public CommonResult<Boolean> create(@Valid @RequestBody IndDataSetFieldSaveReqVO createReqVO) {
        indDataSetFieldService.create(createReqVO);
        return success(true);
    }

    @PutMapping("/update")
    @Operation(summary = "修改指标数据集字段")
    @PreAuthorize("@ss.hasPermission('data:ind-data-set:update')")
    public CommonResult<Boolean> update(@Valid @RequestBody IndDataSetFieldSaveReqVO updateReqVO) {
        indDataSetFieldService.update(updateReqVO);
        return success(true);
    }

    @DeleteMapping("/delete")
    @Operation(summary = "删除指标数据集字段")
    @Parameter(name = "id", description = "指标数据集字段编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('data:ind-data-set:delete')")
    public CommonResult<Boolean> delete(@RequestParam("id") String id) {
        indDataSetFieldService.delete(id);
        return success(true);
    }

    @GetMapping("/get")
    @Operation(summary = "获取指标数据集字段信息")
    @PreAuthorize("@ss.hasPermission('data:ind-data-set:query')")
    public CommonResult<IndDataSetFieldRespVO> get(String id) {
        IndDataSetFieldEntity entity = indDataSetFieldService.get(id);
        return success(BeanUtils.toBean(entity, IndDataSetFieldRespVO.class));
    }
}