package com.usky.park.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.usky.common.core.bean.CommonPage;
import com.usky.park.domain.AlarmGr;
import com.usky.park.domain.DmpDevice;
import com.usky.park.mapper.AlarmGrMapper;
import com.usky.park.service.AlarmGrService;
import com.usky.common.mybatis.core.AbstractCrudService;
import com.usky.park.service.vo.AlarmGrVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 机房告警表 服务实现类
 * </p>
 *
 * @author zyj
 * @since 2023-04-03
 */
@Service
public class AlarmGrServiceImpl extends AbstractCrudService<AlarmGrMapper, AlarmGr> implements AlarmGrService {

    @Override
    public CommonPage<AlarmGrVO> alarmList(String deviceName, Integer handlingStatus, String alarmType, String startDate, String endDate, Integer pageNum, Integer pageSize){
        IPage<AlarmGr> page = new Page<>(pageNum,pageSize);
        List<AlarmGrVO> list = new ArrayList<>();

        LambdaQueryWrapper<AlarmGr> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.like(StringUtils.isNotBlank(deviceName),AlarmGr::getDeviceName,deviceName)
                .eq(handlingStatus != null,AlarmGr::getHandlingStatus,handlingStatus)
                .like(StringUtils.isNotBlank(alarmType),AlarmGr::getAlarmType,alarmType)
                .between(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate), AlarmGr::getAlarmTime,startDate,endDate)
                .orderByDesc(AlarmGr::getId);
        page = this.page(page,queryWrapper);

        if(CollectionUtils.isNotEmpty(page.getRecords())){
            for(int i=0;i<page.getRecords().size();i++){
                AlarmGrVO alarmGrVO = new AlarmGrVO();
                alarmGrVO.setAlarmDesc(page.getRecords().get(i).getAlarmDesc());
                alarmGrVO.setAlarmTime(page.getRecords().get(i).getAlarmTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                alarmGrVO.setAlarmType(page.getRecords().get(i).getAlarmType());
                alarmGrVO.setAlarmValue(page.getRecords().get(i).getAlarmValue());
                alarmGrVO.setHandlingStatus(page.getRecords().get(i).getHandlingStatus());
                alarmGrVO.setDeviceName(page.getRecords().get(i).getDeviceName());

                list.add(alarmGrVO);
            }

        }

        return new CommonPage<>(list,page.getTotal(),pageNum,pageSize);

    }
}
