Newer
Older
pichan-haerbin / src / main / java / com / casic / service / impl / GasDataServiceImpl.java
package com.casic.service.impl;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.dao.GasDataRecvMapper;
import com.casic.dao.NbDeviceMapper;
import com.casic.entity.LucencyGasData;
import com.casic.model.ResponseData;
import com.casic.service.GasDataService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@Slf4j
public class GasDataServiceImpl implements GasDataService {
    @Resource
    private GasDataRecvMapper gasDataRecvMapper;
    @Resource
    private NbDeviceMapper nbDeviceMapper;

    @Override
    public ResponseData<List<LucencyGasData>> getGasDataList(String devcode, String beginTime, String endTime, Integer currentIndex, Integer pageSize, Boolean sortDevcode, Boolean realData) {
        ResponseData responseData = new ResponseData();
        try {
            devcode = StringUtils.isEmpty(devcode) ? "3" : devcode;
            QueryWrapper<LucencyGasData> lucencyGasWrapper = new QueryWrapper<LucencyGasData>()
                    .like("devcode", devcode);
            if (realData) {
                lucencyGasWrapper.ne("signals", "");
            }
            if (!StringUtils.isEmpty(beginTime)) {
                lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime);
            }
            if (!StringUtils.isEmpty(endTime)) {
                lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime);
            }
            lucencyGasWrapper = sortDevcode ? lucencyGasWrapper.orderByAsc("devcode") : lucencyGasWrapper.orderByDesc("logtime");
            Integer count = gasDataRecvMapper.selectCount(lucencyGasWrapper);
            lucencyGasWrapper = lucencyGasWrapper.groupBy("devcode");
            lucencyGasWrapper = lucencyGasWrapper.select("id,devcode,tenant_id as tenantId,data_value as  dataValue,signals,chha,chhha,cell," +
                    "device_id as deviceId,logtime,max(uptime) as uptime,imei");
            Page<LucencyGasData> userPage = new Page<>((count-1) / pageSize + 1 < currentIndex ? (count-1) / pageSize + 1 : currentIndex, pageSize);
            IPage<LucencyGasData> userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper);
            Map<String, Object> page = new HashMap();
            page.put("total", userIPage.getTotal());
            page.put("rows", userIPage.getRecords());
            page.put("current", userIPage.getCurrent());
            responseData.setCode(200);
            responseData.setMessage("查询成功");
            responseData.setData(page);
        } catch (DataAccessException dex) {
            log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage());
            responseData.setCode(500);
            responseData.setMessage("查询异常");
        }
        return responseData;
    }

    @Override
    public ResponseData<List<LucencyGasData>> getGasHistoryList(String devcode, String beginTime, String endTime, Integer currentIndex,
                                                                Integer pageSize) {
        ResponseData responseData = new ResponseData();
        try {
            devcode = StringUtils.isEmpty(devcode) ? "" : devcode;
            QueryWrapper<LucencyGasData> lucencyGasWrapper = new QueryWrapper<LucencyGasData>().like("devcode", devcode);
            if (!StringUtils.isEmpty(beginTime)) {
                lucencyGasWrapper = lucencyGasWrapper.gt("uptime", beginTime);
            }
            if (!StringUtils.isEmpty(endTime)) {
                lucencyGasWrapper = lucencyGasWrapper.lt("uptime", endTime);
            }
            lucencyGasWrapper = lucencyGasWrapper.orderByDesc("logtime");
            Page<LucencyGasData> userPage = new Page<>(currentIndex, pageSize);
            IPage<LucencyGasData> userIPage = gasDataRecvMapper.selectPage(userPage, lucencyGasWrapper);
            Map<String, Object> page = new HashMap();
            page.put("total", userIPage.getTotal());
            page.put("rows", userIPage.getRecords());
            page.put("current", userIPage.getCurrent());
            responseData.setCode(200);
            responseData.setMessage("查询成功");
            responseData.setData(page);
        } catch (DataAccessException dex) {
            log.error("主题:哈尔滨燃气数据查询异常,异常信息:{}", dex.getMessage());
            responseData.setCode(500);
            responseData.setMessage("查询异常");
        }
        return responseData;
    }
}