package com.ruoyi.postCheck.controller;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.postCheck.domain.problemStatistics.*;
import com.ruoyi.postCheck.service.IPostCheckedProblemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RestController;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 岗检问题表Controller
 *
 * @author csg
 * @date 2023-12-23
 */
@Api(tags = "5.2.1-统计分析-整改统计-整改统计（职能管理）")
@RestController
@RequestMapping("/postCheck/rectificationFunctionProblemStatistics")
public class PostCheckedRectificationFunctionProblemStatisticsController extends BaseController {
    @Autowired
    private IPostCheckedProblemService postCheckedProblemService;


    @ApiOperation("1-职能部各部门问题数量对比")
    @GetMapping("/functionDeptProblemContrast")
    public AjaxResult functionDeptProblemContrast(FunctionDeptProblemContrastView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）
//        GROUP BY problem_category -- 问题类别（职责权限问题、工作内容问题、工作标准问题、考核奖励问题、任职资格问题、其他）

        List<FunctionDeptProblemContrastView> list = new ArrayList<>();
        FunctionDeptProblemContrastView data = new FunctionDeptProblemContrastView();
        data.setDeptId(100l);
        data.setDeptName("测试部门1");
        data.setProblemTotal(6);
        data.setProblemComplete(1);
        data.setProblemSuitable(2);
        data.setProblemEffective(3);

        data.setProblemCategoryOne(1);
        data.setProblemCategoryTwo(1);
        data.setProblemCategoryThree(1);
        data.setProblemCategoryFour(1);
        data.setProblemCategoryFive(1);
        data.setProblemCategorySix(1);

        list.add(data);

        FunctionDeptProblemContrastView data1 = new FunctionDeptProblemContrastView();
        data1.setDeptId(101l);
        data1.setDeptName("测试部门2");
//        data1.setProblemTotal(6);
//        data1.setProblemComplete(1);
//        data1.setProblemSuitable(2);
        data1.setProblemEffective(3);
        data1.setProblemCategoryOne(1);
        data1.setProblemCategoryTwo(1);
        data1.setProblemCategoryThree(2);
        data1.setProblemCategoryFour(1);
        data1.setProblemCategoryFive(4);
        data1.setProblemCategorySix(1);
        list.add(data1);

        FunctionDeptProblemContrastView data2 = new FunctionDeptProblemContrastView();
        data2.setDeptId(102l);
        data2.setDeptName("测试部门3");
        data2.setProblemTotal(6);
        data2.setProblemComplete(1);
//        data2.setProblemSuitable(2);
        data2.setProblemEffective(3);

        data2.setProblemCategoryOne(1);
//        data2.setProblemCategoryTwo(1);
        data2.setProblemCategoryThree(1);
//        data2.setProblemCategoryFour(1);
        data2.setProblemCategoryFive(1);
        data2.setProblemCategorySix(4);
        list.add(data2);
        return success(list);
    }


    @ApiOperation("2-岗检覆盖率")
    @GetMapping("/coverageRateView")
    public AjaxResult coverageRateView(CoverageRateView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        status = 40    状态：1-待指定整改人（问题录入完成时）；2-待填写方案（部门管理员指定整改人后）；3-方案填写完成；10-部门审核通过；11-部门审核驳回；20-专业部门人审核（非必填）通过；21-专业部门人审核驳回（非必填）；30-整改人待上传实施（整改人上传实施图片）；31-上传实施照片完成；40-复查部门人审核通过；41-复查部门人审核驳回
//        is_rectification_completed = 1 整改情况-是否完成(1-Yes；2-No；)


        List<CoverageRateView> list = new ArrayList<>();
        CoverageRateView data = new CoverageRateView();
        data.setProblemTotal(6);
        data.setProblemComplete(5);

        list.add(data);
        return success(list);
    }

    @ApiOperation("3-岗检问题职责类别占比")
    @GetMapping("/dutyTypeProblemStatisticsView")
    public AjaxResult dutyTypeProblemStatisticsView(DutyTypeProblemStatisticsView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        group by duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；


        List<DutyTypeProblemStatisticsView> list = new ArrayList<>();
        DutyTypeProblemStatisticsView data = new DutyTypeProblemStatisticsView();
        data.setDutyTypeOne(1);
        data.setDutyTypeTwo(2);
        data.setDutyTypeThree(3);
        data.setDutyTypeFour(4);

        list.add(data);
        return success(list);
    }

    @ApiOperation("4-岗检问题级别占比")
    @GetMapping("/problemLevelView")
    public AjaxResult problemLevelView(ProblemLevelView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        group by problem_level   问题等级（一般、重要）

        List<ProblemLevelView> list = new ArrayList<>();
        ProblemLevelView data = new ProblemLevelView();
        data.setProblemLeveOne(2);
        data.setProblemLeveTwo(1);


        list.add(data);
        return success(list);
    }


    @ApiOperation("5-岗检问题属性及类别整改占比")
    @GetMapping("/problemAttributeCategoryView")
    public AjaxResult problemAttributeCategoryView(ProblemAttributeCategoryView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）
//        GROUP BY problem_category -- 问题类别（职责权限问题、工作内容问题、工作标准问题、考核奖励问题、任职资格问题、其他）


        List<ProblemAttributeCategoryView> list = new ArrayList<>();
        ProblemAttributeCategoryView data = new ProblemAttributeCategoryView();
//        data.set完成性
//        data.set适宜性
//        data.set有效性
//        data.set职责权限
//        data.set工作内容
//        data.set工作标准
//        data.set考核奖励
//        data.set任职资格
//        data.set其他

        list.add(data);
        return success(list);
    }


    @ApiOperation("6-历年岗检问题数量")
    @GetMapping("/historyProblemNumberView")
    public AjaxResult historyProblemNumberView(HistoryProblemNumberView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）
//        GROUP BY problem_category -- 问题类别（职责权限问题、工作内容问题、工作标准问题、考核奖励问题、任职资格问题、其他）


        List<HistoryProblemNumberView> list = new ArrayList<>();
        HistoryProblemNumberView data = new HistoryProblemNumberView();
        data.setCheckYear(new Date());
//        data.set问题总数
//        data.set完成性
//        data.set适宜性
//        data.set有效性
//        data.set职责权限
//        data.set工作内容
//        data.set工作标准
//        data.set考核奖励
//        data.set任职资格
//        data.set其他

        list.add(data);
        return success(list);
    }


    @ApiOperation("7-部门详情")
    @GetMapping("/deptDetaailView")
    public AjaxResult deptDetaailView(DeptDetaailView notParam) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        group by duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）


        List<DeptDetaailView> list = new ArrayList<>();

        //TODO 第一步：得到各个部门ID和部门名称及统计时间
        //TODO 第二步：得到4个职责类别的问题数量及整改完成数量(1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；)
        //TODO 第三步：设置部门的整改率：遍历职责类别计算整改率

        DeptDetaailView data1 = new DeptDetaailView();
//        data1.setdeptId 部门ID
//        data1.setdeptName 部门名称
//        data1.setproblemRectificationRate 整改率
//        data1.setstatisticsTime 统计时间

        List<DeptDetaailView.ProblemAttributeInner> children1 = new ArrayList<>();
        DeptDetaailView.ProblemAttributeInner child1 = new DeptDetaailView.ProblemAttributeInner();
//        child1.set业务职责字典值 private Integer dutyType; 业务职责字典值-前端自己显示中文名称：duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；
//        child1.set完整性数量 private Integer problemComplete;
//        child1.set适宜性数量 private Integer problemSuitable;
//        child1.set有效性数量 private Integer problemEffective;
//        child1.set已完成完整性数量 private Integer problemCompleteChecked;
//        child1.set已完成适宜性数量 private Integer problemSuitableChecked;
//        child1.set已完成有效性数量 private Integer problemEffectiveChecked;
        children1.add(child1);
        data1.setChildren(children1);
        list.add(data1);

        DeptDetaailView data2 = new DeptDetaailView();
//        data2.setdeptId 部门ID
//        data2.setdeptName 部门名称
//        data2.setproblemRectificationRate 整改率
//        data2.setstatisticsTime 统计时间
        List<DeptDetaailView.ProblemAttributeInner> children2 = new ArrayList<>();
        DeptDetaailView.ProblemAttributeInner child2 = new DeptDetaailView.ProblemAttributeInner();
//        child2.set业务职责字典值 private Integer dutyType; 业务职责字典值-前端自己显示中文名称：duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；
//        child2.set完整性数量  private Integer problemComplete;
//        child2.set适宜性数量  private Integer problemSuitable;
//        child2.set有效性数量  private Integer problemEffective;
//        child2.set已完成完整性数量 private Integer problemCompleteChecked;
//        child2.set已完成适宜性数量 private Integer problemSuitableChecked;
//        child2.set已完成有效性数量 private Integer problemEffectiveChecked;
        children1.add(child2);
        data2.setChildren(children2);
        list.add(data2);

        DeptDetaailView data3 = new DeptDetaailView();
//        data3.setdeptId 部门ID
//        data3.setdeptName 部门名称
//        data3.setproblemRectificationRate 整改率
//        data3.setstatisticsTime 统计时间
        List<DeptDetaailView.ProblemAttributeInner> children3 = new ArrayList<>();
        DeptDetaailView.ProblemAttributeInner child3 = new DeptDetaailView.ProblemAttributeInner();
//        child3.set业务职责字典值 private Integer dutyType; 业务职责字典值-前端自己显示中文名称：duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；
//        child3.set完整性数量  private Integer problemComplete;
//        child3.set适宜性数量  private Integer problemSuitable;
//        child3.set有效性数量  private Integer problemEffective;
//        child3.set已完成完整性数量 private Integer problemCompleteChecked;
//        child3.set已完成适宜性数量 private Integer problemSuitableChecked;
//        child3.set已完成有效性数量 private Integer problemEffectiveChecked;
        children1.add(child3);
        data3.setChildren(children3);
        list.add(data3);

        DeptDetaailView data4 = new DeptDetaailView();
//        data4.setdeptId 部门ID
//        data4.setdeptName 部门名称
//        data4.setproblemRectificationRate 整改率
//        data4.setstatisticsTime 统计时间
        List<DeptDetaailView.ProblemAttributeInner> children4 = new ArrayList<>();
        DeptDetaailView.ProblemAttributeInner child4 = new DeptDetaailView.ProblemAttributeInner();
//        child4.set业务职责字典值 private Integer dutyType; 业务职责字典值-前端自己显示中文名称：duty_type 职责类别：1-业务职责；2-党建及党风廉政；3-安全环保职责；4-合规保密职；
//        child4.set完整性数量 private Integer problemComplete;
//        child4.set适宜性数量 private Integer problemSuitable;
//        child4.set有效性数量 private Integer problemEffective;
//        child4.set已完成完整性数量 private Integer problemCompleteChecked;
//        child4.set已完成适宜性数量 private Integer problemSuitableChecked;
//        child4.set已完成有效性数量 private Integer problemEffectiveChecked;
        children1.add(child4);
        data4.setChildren(children4);
        list.add(data4);
        return success(list);
    }
}
