电表部分代码

This commit is contained in:
guo 2023-10-31 18:59:50 +08:00
parent 53870d2d36
commit 29058b3094
5 changed files with 102 additions and 24 deletions

View File

@ -1,5 +1,7 @@
package com.zhgd.xmgl.base.entity.vo;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import lombok.Data;
@ -35,9 +37,21 @@ public class TrendVo {
vo.setY("0");
vo.setX(day);
}
vo.setX(DateUtil.format(DateUtil.parseDate(vo.getX()), format));
vo.setX(DateUtil.format(parse(vo.getX(), format), format));
rtList.add(vo);
}
return rtList;
}
/**
* @param str
* @param format
* @return
*/
private static DateTime parse(String str, String format) {
if ("yyyy-MM".equals(format)) {
return DateUtil.parse(str, format);
}
return DateUtil.parse(str);
}
}

View File

@ -57,7 +57,7 @@ public interface AmmeterRecordDetailMapper extends BaseMapper<AmmeterRecordDetai
List<AmmeterRecordDetail> queryNewestRecord(Map<String, Object> map);
double getDegreeSum(Map<String, Object> map);
Double getDegreeSum(Map<String, Object> map);
/**
* 查询用电量

View File

@ -116,8 +116,8 @@
group by b.ammeter_no
</select>
<select id="getDegreeSum" resultType="double">
select sum(ifnull(a.degree, 0))
<select id="getDegreeSum" resultType="java.lang.Double">
select ifnull(sum(ifnull(a.degree, 0)), 0)
from ammeter_record_detail a
WHERE a.project_sn = #{projectSn}
<if test="ammeterNo != null and ammeterNo != ''">

View File

@ -9,9 +9,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.xmgl.base.entity.vo.TrendVo;
import com.zhgd.xmgl.modules.ammeter.entity.Ammeter;
import com.zhgd.xmgl.modules.ammeter.entity.AmmeterMonthRecord;
import com.zhgd.xmgl.modules.ammeter.entity.AmmeterRecordDetail;
import com.zhgd.xmgl.modules.ammeter.entity.vo.CountAmmeterRecordDetailVo;
import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterMapper;
import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterMonthRecordMapper;
import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterRecordDetailMapper;
import com.zhgd.xmgl.modules.ammeter.service.IAmmeterRecordDetailService;
import com.zhgd.xmgl.modules.doublecarbon.entity.dto.DateValueDTO;
@ -39,6 +41,8 @@ public class AmmeterRecordDetailServiceImpl extends ServiceImpl<AmmeterRecordDet
@Autowired
private AmmeterRecordDetailMapper ammeterRecordDetailMapper;
@Autowired
private AmmeterMonthRecordMapper ammeterMonthRecordMapper;
@Autowired
private AmmeterMapper ammeterMapper;
@Override
@ -138,6 +142,8 @@ public class AmmeterRecordDetailServiceImpl extends ServiceImpl<AmmeterRecordDet
public List<TrendVo> queryUseRecordTrend(Map<String, Object> map) {
List<TrendVo> trendVos = new ArrayList<>();
Integer type = MapUtils.getInteger(map, "type");
String projectSn = MapUtils.getString(map, "projectSn");
String ammeterNo = MapUtils.getString(map, "ammeterNo");
if (Objects.equals(type, 1)) {
//近7天
List<AmmeterRecordDetail> ammeterRecordDetails = baseMapper.queryUseRecord(map);
@ -162,7 +168,30 @@ public class AmmeterRecordDetailServiceImpl extends ServiceImpl<AmmeterRecordDet
return TrendVo.fillTrendVos(list, days, "MM-dd");
} else if (Objects.equals(type, 3)) {
//近半年
List<AmmeterMonthRecord> ammeterMonthRecords = ammeterMonthRecordMapper.selectList(new LambdaQueryWrapper<AmmeterMonthRecord>()
.eq(AmmeterMonthRecord::getAmmeterNo, ammeterNo)
.eq(AmmeterMonthRecord::getAmmeterNo, projectSn));
List<String> dateStrList = DateUtils.getDateStrList(90, "yyyy-MM");
List<TrendVo> list = ammeterMonthRecords.stream().map(detail -> {
TrendVo vo = new TrendVo();
vo.setY(detail.getUseDegree() + "");
vo.setX(detail.getMonthTime() + "");
return vo;
}).collect(Collectors.toList());
return TrendVo.fillTrendVos(list, dateStrList, "yyyy-MM");
} else if (Objects.equals(type, 4)) {
//近一年
List<AmmeterMonthRecord> ammeterMonthRecords = ammeterMonthRecordMapper.selectList(new LambdaQueryWrapper<AmmeterMonthRecord>()
.eq(AmmeterMonthRecord::getAmmeterNo, ammeterNo)
.eq(AmmeterMonthRecord::getAmmeterNo, projectSn));
List<String> dateStrList = DateUtils.getDateStrList(93, "yyyy-MM");
List<TrendVo> list = ammeterMonthRecords.stream().map(detail -> {
TrendVo vo = new TrendVo();
vo.setY(detail.getUseDegree() + "");
vo.setX(detail.getMonthTime() + "");
return vo;
}).collect(Collectors.toList());
return TrendVo.fillTrendVos(list, dateStrList, "yyyy-MM");
}
return trendVos;
}

View File

@ -1,5 +1,6 @@
package com.zhgd.xmgl.util;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
@ -425,11 +426,11 @@ public class DateUtils {
public static List<String> getCurrentMonthAllDayList() {
ArrayList<String> rtList = new ArrayList<>();
Date now = new Date();
DateTime beginDate = cn.hutool.core.date.DateUtil.beginOfMonth(now);
DateTime endDate = cn.hutool.core.date.DateUtil.endOfMonth(now);
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
DateTime beginDate = DateUtil.beginOfMonth(now);
DateTime endDate = DateUtil.endOfMonth(now);
long offset = DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i)));
rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i)));
}
return rtList;
}
@ -441,11 +442,11 @@ public class DateUtils {
*/
public static List<String> getDaysBetweenLastMonth() {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = cn.hutool.core.date.DateUtil.lastMonth();
DateTime beginDate = DateUtil.lastMonth();
DateTime endDate = DateTime.now();
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
long offset = DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i)));
rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i)));
}
return rtList;
}
@ -457,11 +458,11 @@ public class DateUtils {
*/
public static List<String> getDaysBetweenLastWeek() {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = cn.hutool.core.date.DateUtil.lastWeek();
DateTime beginDate = DateUtil.lastWeek();
DateTime endDate = DateTime.now();
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
long offset = DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i)));
rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i)));
}
return rtList;
}
@ -507,9 +508,9 @@ public class DateUtils {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = DateUtil.parseDate(queryStartTime);
DateTime endDate = DateUtil.parseDate(queryEndTime);
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
long offset = DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i), format));
rtList.add(DateUtil.format(DateUtil.offsetDay(beginDate, i), format));
}
return rtList;
}
@ -521,11 +522,11 @@ public class DateUtils {
*/
public static List<String> getDaysBetweenLastWeekWithoutYear() {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = cn.hutool.core.date.DateUtil.lastWeek();
DateTime beginDate = DateUtil.lastWeek();
DateTime endDate = DateTime.now();
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
long offset = DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i), "MM-dd"));
rtList.add(DateUtil.format(DateUtil.offsetDay(beginDate, i), "MM-dd"));
}
return rtList;
}
@ -537,11 +538,11 @@ public class DateUtils {
*/
public static List<String> getHoursListLastDay() {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = cn.hutool.core.date.DateUtil.yesterday();
DateTime beginDate = DateUtil.yesterday();
DateTime endDate = DateTime.now();
long offset = cn.hutool.core.date.DateUtil.between(beginDate, endDate, DateUnit.HOUR);
long offset = DateUtil.between(beginDate, endDate, DateUnit.HOUR);
for (int i = 1; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetHour(beginDate, i), "HH:00"));
rtList.add(DateUtil.format(DateUtil.offsetHour(beginDate, i), "HH:00"));
}
return rtList;
}
@ -557,7 +558,41 @@ public class DateUtils {
return DateUtil.formatDate(DateUtil.offsetDay(DateUtil.parseDate(dayStr), offset));
}
/**
* 获取所有日期列表
*
* @param type 类型
* 10.近12小时,20.近24小时,30.近半天,40.近一天,50.近两天,60.近一周,70.近两周,80.近一个月,90.近半年,93.近一年
* 100.今天,200.昨天,300.本周,400.本月,500.本年,600.去年
* @param pattern 格式 yyyy-MM-dd HH:mm:ss
* @return
*/
public static List<String> getDateStrList(int type, String pattern) {
if (type == 1) {
} else if (type == 90) {
ArrayList<String> rtList = new ArrayList<>();
DateTime endDate = DateTime.now();
DateTime beginDate = DateUtil.offsetMonth(endDate, -6);
long offset = DateUtil.betweenMonth(beginDate, endDate, true);
for (int i = 1; i < offset + 1; i++) {
rtList.add(DateUtil.format(DateUtil.offsetMonth(beginDate, i), pattern));
}
return rtList;
} else if (type == 93) {
ArrayList<String> rtList = new ArrayList<>();
DateTime endDate = DateTime.now();
DateTime beginDate = DateUtil.offsetMonth(endDate, -12);
long offset = DateUtil.betweenMonth(beginDate, endDate, true);
for (int i = 1; i < offset + 1; i++) {
rtList.add(DateUtil.format(DateUtil.offsetMonth(beginDate, i), pattern));
}
return rtList;
}
return null;
}
public static void main(String[] args) {
System.out.println(getDaysBetweenLastHalfMonth());
System.out.println(getDateStrList(93, "yyyy-MM"));
}
}