package com.ruoyi.web.modules.screen.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.web.modules.screen.domain.vo.CommonProsperityProjectTypeDetailVo;
import com.ruoyi.web.modules.screen.domain.vo.ScreenProjectListItemVo;
import com.ruoyi.web.modules.screen.service.ICommonProsperityScreenService;

/**
 * 大屏 — 共同富裕统计（只读）。
 * <p>
 * 提供看板聚合、共富项目分页列表，以及共富项目分类情况明细分页。
 * 看板含：成果总览 / 数字赋能、按月趋势图、项目分类饼图。
 * </p>
 * <p>
 * 数据来源：{@code biz_common_prosperity_achievement}（成果台账）、
 * {@code biz_common_prosperity_project}（已发布项目）、运营图片子表。
 * 成果口径与管理端「共同富裕成果年度报告」一致（共用 {@code AchievementReportAggregator}）。
 * </p>
 * <p>权限标识示例：{@code bigScreen:commonProsperity:query}。</p>
 *
 * @see ICommonProsperityScreenService
 */
@RestController
@RequestMapping("/bigScreen/commonProsperity")
public class CommonProsperityScreenController extends BaseController
{
    @Autowired
    private ICommonProsperityScreenService commonProsperityScreenService;

    /**
     * 共同富裕看板一屏数据。
     * <p>
     * 成果：总览 / 数字赋能取所选年<strong>最大统计月</strong>单月值；
     * {@code monthly} 为该年 1～最大月（缺月补 0）。
     * 项目：仅 {@code publish_status=1} 且实施年限等于统计年 Y。
     * </p>
     *
     * @param statYear 统计年份，如 {@code 2026}
     * @return {@code data} 为 {@link com.ruoyi.web.modules.screen.domain.vo.CommonProsperityScreenDashboardVo}
     */
    @GetMapping("/dashboard")
    public AjaxResult dashboard(@RequestParam("statYear") String statYear)
    {
        return success(commonProsperityScreenService.loadDashboard(statYear));
    }

    /**
     * 共富项目分页列表（行内含运营图，无单独详情接口）。
     * <p>筛选口径同看板项目：已发布且实施年限等于 {@code statYear}；配合 PageHelper。</p>
     *
     * @param statYear 统计年份，如 {@code 2026}
     */
    @GetMapping("/projects")
    public TableDataInfo projects(@RequestParam("statYear") String statYear)
    {
        startPage();
        List<ScreenProjectListItemVo> list = commonProsperityScreenService.listPublishedProjects(statYear);
        return getDataTable(list);
    }

    /**
     * 共富项目分类情况明细（分页）；按所属年份（实施年限）倒序。
     * <p>
     * 数据源 {@code biz_common_prosperity_project}；口径与看板分类一致：
     * {@code publish_status=1}，按 {@code impl_year}、{@code project_type} 聚合。
     * </p>
     *
     * @param statYear 所属年份；未传不过滤
     */
    @GetMapping("/projectTypeDetails")
    public TableDataInfo projectTypeDetails(
            @RequestParam(value = "statYear", required = false) Integer statYear)
    {
        startPage();
        List<CommonProsperityProjectTypeDetailVo> list =
                commonProsperityScreenService.listProjectTypeDetails(statYear);
        return getDataTable(list);
    }
}
