|
@@ -1,16 +1,20 @@
|
|
|
package com.bizmatics.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
-import com.bizmatics.common.core.util.DateUtils;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.bizmatics.model.HadDataLog;
|
|
|
import com.bizmatics.persistence.mapper.HadDataLogMapper;
|
|
|
import com.bizmatics.service.HadDataLogService;
|
|
|
import com.bizmatics.common.mvc.base.AbstractCrudService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -26,7 +30,46 @@ public class HadDataLogServiceImpl extends AbstractCrudService<HadDataLogMapper,
|
|
|
@Override
|
|
|
public List<HadDataLog> list(Date startTime, Date endTime) {
|
|
|
LambdaQueryWrapper<HadDataLog> queryWrapper = Wrappers.lambdaQuery();
|
|
|
- queryWrapper.between(HadDataLog::getDataTime,startTime,endTime);
|
|
|
+ queryWrapper
|
|
|
+ .select(HadDataLog::getDataTime,HadDataLog::getSiteIdList,HadDataLog::getHadData)
|
|
|
+ .between(HadDataLog::getDataTime,startTime,endTime);
|
|
|
return this.list(queryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<HadDataLog> maxAndMinList(Date startTime, Date endTime) {
|
|
|
+ Page<HadDataLog> minPage = new Page<>(0, 1);
|
|
|
+ LambdaQueryWrapper<HadDataLog> minQuery = Wrappers.lambdaQuery();
|
|
|
+ minQuery
|
|
|
+ .select(HadDataLog::getDataTime)
|
|
|
+ .between(HadDataLog::getDataTime,startTime,endTime);
|
|
|
+ minPage = baseMapper.selectPage(minPage, minQuery);
|
|
|
+ Page<HadDataLog> maxPage = new Page<>(0, 1);
|
|
|
+ LambdaQueryWrapper<HadDataLog> maxQuery = Wrappers.lambdaQuery();
|
|
|
+ maxQuery
|
|
|
+ .select(HadDataLog::getDataTime)
|
|
|
+ .between(HadDataLog::getDataTime,startTime,endTime)
|
|
|
+ .orderByDesc(HadDataLog::getId);
|
|
|
+ maxPage = baseMapper.selectPage(maxPage, minQuery);
|
|
|
+ List<HadDataLog> hadDataLogs = addList(minPage);
|
|
|
+ hadDataLogs.addAll(addList(maxPage));
|
|
|
+ return hadDataLogs;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<HadDataLog> addList(Page<HadDataLog> page){
|
|
|
+ AtomicReference<List<HadDataLog>> list = new AtomicReference<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(page.getRecords())){
|
|
|
+ Optional.ofNullable(page.getRecords().get(0))
|
|
|
+ .flatMap(hadDataLog -> Optional.ofNullable(hadDataLog.getDataTime()))
|
|
|
+ .ifPresent(date -> {
|
|
|
+ LambdaQueryWrapper<HadDataLog> query = Wrappers.lambdaQuery();
|
|
|
+ query.select(HadDataLog::getDataTime,HadDataLog::getHadData,HadDataLog::getSiteIdList)
|
|
|
+ .eq(HadDataLog::getDataTime,date);
|
|
|
+ List<HadDataLog> hadDataLogs = baseMapper.selectList(query);
|
|
|
+ list.set(hadDataLogs);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return Optional.ofNullable(list.get()).orElse(new ArrayList<>());
|
|
|
+ }
|
|
|
+
|
|
|
}
|