package com.ruoyi.SafetyDeclaration.service.impl;

import com.ruoyi.SafetyDeclaration.domain.BeCurrentTable;
import com.ruoyi.SafetyDeclaration.domain.SafetyDeclarationTable;
import com.ruoyi.SafetyDeclaration.domain.VoCircularDiagram;
import com.ruoyi.SafetyDeclaration.mapper.VisualizationMapper;
import com.ruoyi.SafetyDeclaration.service.IVisualizationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class VisualizationServiceImpl implements IVisualizationService {

    @Autowired
    private VisualizationMapper visualizationMapper;

    @Override
    public List<BeCurrentTable> selectHistogram() {
        return visualizationMapper.selectHistogram();
    }

    @Override
    public List<BeCurrentTable> selectLineChart() {
        return visualizationMapper.selectLineChart();
    }

    @Override
    public VoCircularDiagram SelectCircularDiagram(SafetyDeclarationTable safetyDeclarationTable) {
        // 创建一个 VoCircularDiagram 对象，用于存储查询结果
        VoCircularDiagram voCircularDiagram = new VoCircularDiagram();

        // 调用 visualizationMapper 的 SelectCircularDiagram 方法，传入 safetyDeclarationTable 对象，返回一个 List<BeCurrentTable> 类型的列表
        List<BeCurrentTable> list = visualizationMapper.SelectCircularDiagram(safetyDeclarationTable);

        // 调用 visualizationMapper 的 selectTotal 方法，返回一个表示总数的整数
        int total = visualizationMapper.selectTotal();

        // 调用 visualizationMapper 的 selectMonthTotal 方法，传入 safetyDeclarationTable 对象，返回一个表示月度总数的整数
        int monthTotal = visualizationMapper.selectMonthTotal(safetyDeclarationTable);

        // 遍历查询结果列表，将每个 BeCurrentTable 对象添加到 voCircularDiagram 的列表中
        list.forEach(item -> {
            voCircularDiagram.addBeCurrentTableList(item);
        });

        // 设置 voCircularDiagram 的 total 属性
        voCircularDiagram.setTotal(total);

        // 设置 voCircularDiagram 的 monthTotal 属性
        voCircularDiagram.setMonthTotal(monthTotal);

        // 返回构建好的 VoCircularDiagram 对象
        return voCircularDiagram;
    }



}
