package com.ruoyi.postCheck.controller;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.SysDeptEnum;
import com.ruoyi.postCheck.domain.problemStatistics.*;
import com.ruoyi.postCheck.service.IPostCheckedProblemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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/{year}")
    @ApiImplicitParam(name = "year", value = "年度", dataType = "String", dataTypeClass = String.class)
    public AjaxResult functionDeptProblemContrast(@PathVariable("year") String year) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）
//        GROUP BY problem_category -- 问题类别（职责权限问题、工作内容问题、工作标准问题、考核奖励问题、任职资格问题、其他）


//        List<FunctionDeptProblemContrastView> dataList = new ArrayList<>();



  /*      List<Map<String, Object>> deptIdListByType = postCheckedProblemService.getDeptIdListByType(type);
        if (deptIdListByType != null && deptIdListByType.size() > 0) {
            for (Map<String, Object> map : deptIdListByType) {
                FunctionDeptProblemContrastView data = new FunctionDeptProblemContrastView();
                data.setDeptId(Long.parseLong(map.get("deptId").toString()));
                data.setDeptName(String.valueOf(map.get("deptName")));
                postCheckedProblemService.functionDeptProblemContrast(data, year);
                dataList.add(data);
            }


            FunctionDeptProblemContrastView data = new FunctionDeptProblemContrastView();
            data.setDeptId(0L);
            data.setDeptName("全部");
            Integer i = dataList.stream().map(FunctionDeptProblemContrastView::getProblemTotal).reduce(Integer::sum).get();
            data.setProblemTotal(i);
            dataList.add(0, data);

        }*/

        Integer type = SysDeptEnum.TYPE_ZN.getValue();

        List<FunctionDeptProblemContrastView> dataList = postCheckedProblemService.deptProblemRectificationRate(type, year);

        return success(dataList);
    }


//    @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；)


//        Integer type = 1;
//        return success();
//    }

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

//        postCheckedProblemService.dutyTypeProblemStatisticsView(type, year, deptId)

        Integer type = SysDeptEnum.TYPE_ZN.getValue();

        DutyTypeProblemStatisticsView dataList = postCheckedProblemService.deptProblemDutyTypeRectificationRate(type, year, deptId);

        return success(dataList);
    }

    @ApiOperation("3-岗检问题级别整改占比")
    @GetMapping("/problemLevelView/{year}/{deptId}")
    public AjaxResult problemLevelView(@PathVariable("year") String year, @PathVariable("deptId") Long deptId) { //notParam不是参数-是返回信息-方便接口联调
//         查询问题表
//        select * from "public"."post_checked_problem";
//        group by problem_level   问题等级（一般、重要）
        Integer type = SysDeptEnum.TYPE_ZN.getValue();
        ProblemLevelView dataList = postCheckedProblemService.deptProblemLevelRectificationRate(type, year, deptId);
        return success(dataList);
//        return success(postCheckedProblemService.problemLevelView(type, year, deptId));
    }


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

        //1 职能部门 2 生产部门 3 其他
        Integer type = SysDeptEnum.TYPE_ZN.getValue();
        ProblemAttributeCategoryView data = postCheckedProblemService.problemAttributeRate(type, year, deptId);
        return success(data);
    }


    @ApiOperation("5-岗检问题类别整改占比")
    @GetMapping("/problemCategoryView/{year}/{deptId}")
    public AjaxResult problemCategoryView(@PathVariable("year") String year, @PathVariable("deptId") Long deptId) {
//         查询问题表
//        select * from "public"."post_checked_problem";
//        GROUP BY problem_attribute -- 问题属性（1-完整问题；2-有效性问题；3-适宜性问题；）
//        GROUP BY problem_category -- 问题类别（职责权限问题、工作内容问题、工作标准问题、考核奖励问题、任职资格问题、其他）

        //1 职能部门 2 生产部门 3 其他
        Integer type = SysDeptEnum.TYPE_ZN.getValue();
        ProblemAttributeCategoryView data = postCheckedProblemService.problemCategoryRate(type, year, deptId);
        return success(data);
    }


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

    @ApiOperation("6-近三年岗检问题整改率对比")
    @GetMapping("/lastThreeYearsRatelView/{year}")
    public AjaxResult lastThreeYearsRatelView(@PathVariable("year") String year) { //notParam不是参数-是返回信息-方便接口联调

        //1 职能部门 2 生产部门 3 其他
        Integer type = SysDeptEnum.TYPE_ZN.getValue();
        List<CheckedProblemYearsRatelView> dataList = postCheckedProblemService.lastThreeYearsRatelView(type, year);
        return success(dataList);
    }

    @ApiOperation("7-各部门整改率对比排名")
    @GetMapping("/deptRatelView/{year}")
    public AjaxResult deptDetaailView(@PathVariable("year") String year) {

        //1 职能部门 2 生产部门 3 其他
        Integer type = SysDeptEnum.TYPE_ZN.getValue();
        List<CheckedProblemDeptRateView> dataList = postCheckedProblemService.deptRate(type, year);
        return success(dataList);
    }
}
