|
@@ -5,17 +5,14 @@ import com.bizmatics.model.HtAnalogData;
|
|
|
import com.bizmatics.persistence.mapper.HtAnalogDataMapper;
|
|
|
import com.bizmatics.service.HtAnalogDataService;
|
|
|
import com.bizmatics.common.mvc.base.AbstractCrudService;
|
|
|
+import com.bizmatics.service.util.Arith;
|
|
|
import com.bizmatics.service.util.SessionLocal;
|
|
|
import com.bizmatics.service.vo.CommonIcoVO;
|
|
|
-import com.bizmatics.service.vo.HadCountVO;
|
|
|
+import com.bizmatics.service.vo.CommonTotalVO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import javax.xml.crypto.Data;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -32,58 +29,183 @@ public class HtAnalogDataServiceImpl extends AbstractCrudService<HtAnalogDataMap
|
|
|
private HtAnalogDataMapper htAnalogDataMapper;
|
|
|
|
|
|
@Override
|
|
|
- public HadCountVO selectCount() {
|
|
|
+ public List<CommonTotalVO> selectCount() {
|
|
|
Integer userId = SessionLocal.getUserId();
|
|
|
Date date = new Date();
|
|
|
- //日用电量
|
|
|
+ List<CommonTotalVO> list = new ArrayList<>();
|
|
|
+ list.add(CommonTotalVO.builder().name("day")
|
|
|
+ .objectData(getElectricity(userId,null,DateUtils.getDayStartTime(date),date)).build());
|
|
|
+ list.add(CommonTotalVO.builder().name("month")
|
|
|
+ .objectData(getElectricity(userId,null,DateUtils.getFirstDayOfMonth(date),date)).build());
|
|
|
+ list.add(CommonTotalVO.builder().name("year")
|
|
|
+ .objectData(getElectricity(userId,null,DateUtils.getBeginDayOfYear(date),date)).build());
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CommonIcoVO> selectTrendByDate(Date date,Integer siteId) {
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ List<CommonIcoVO> list = new ArrayList<>();
|
|
|
+ list.add(CommonIcoVO.builder().name("today").list(getByDate(userId,siteId,date)).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("yesterday").list(getByDate(userId,siteId,DateUtils.addDays(date,-1))).build());
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CommonTotalVO> getCountBySite(Integer siteId) {
|
|
|
+ Date date = new Date();
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ //当日开始时间
|
|
|
Date firstDayOfDate = DateUtils.getDayStartTime(date);
|
|
|
- Date lastDayOfDate = DateUtils.getDayEndTime(date);
|
|
|
- HtAnalogData startDateHad = htAnalogDataMapper.selectByStartTime(firstDayOfDate, null, userId);
|
|
|
- HtAnalogData endDateHad = htAnalogDataMapper.selectByEndTime(lastDayOfDate, null, userId);
|
|
|
- //月用电量
|
|
|
+ //当月开始时间
|
|
|
Date firstDayOfMonth = DateUtils.getFirstDayOfMonth(date);
|
|
|
- Date lastDayOfMonth = DateUtils.getLastDayOfMonth(date);
|
|
|
- HtAnalogData startMonthHad = htAnalogDataMapper.selectByStartTime(firstDayOfMonth, null, userId);
|
|
|
- HtAnalogData endMonthHad = htAnalogDataMapper.selectByEndTime(lastDayOfMonth, null, userId);
|
|
|
- //年用电量
|
|
|
+ //当年开始时间
|
|
|
Date firstDayOfYear = DateUtils.getBeginDayOfYear(date);
|
|
|
- Date lastDayOfYear= DateUtils.getEndDayOfYear(date);
|
|
|
- HtAnalogData startYearHad = htAnalogDataMapper.selectByStartTime(firstDayOfYear, null, userId);
|
|
|
- HtAnalogData endYearHad = htAnalogDataMapper.selectByEndTime(lastDayOfYear, null, userId);
|
|
|
-
|
|
|
- HadCountVO hadCountVo = new HadCountVO();
|
|
|
- hadCountVo.setDayCount(endDateHad.getEpp() - startDateHad.getEpp());
|
|
|
- hadCountVo.setDayCount(endMonthHad.getEpp() - startMonthHad.getEpp());
|
|
|
- hadCountVo.setDayCount(endYearHad.getEpp() - startYearHad.getEpp());
|
|
|
- return hadCountVo;
|
|
|
+ Double dayCount = getElectricity(userId,siteId,firstDayOfDate,date);
|
|
|
+ Double monthCount = getElectricity(userId,siteId,firstDayOfMonth,date);
|
|
|
+ Double yearCount = getElectricity(userId,siteId,firstDayOfYear,date);
|
|
|
+ Double lastDayCount = getElectricity(userId,siteId,DateUtils.addDays(firstDayOfDate, -1),DateUtils.addDays(date, -1));
|
|
|
+ Double lastMonthCount = getElectricity(userId,siteId,DateUtils.addMonths(firstDayOfMonth, -1),DateUtils.addMonths(date, -1));
|
|
|
+ Double lastYearCount = getElectricity(userId,siteId,DateUtils.addYears(firstDayOfYear, -1),DateUtils.addYears(date, -1));
|
|
|
+
|
|
|
+ List<CommonTotalVO> list = new ArrayList<>();
|
|
|
+
|
|
|
+ list.add(CommonTotalVO.builder().name("day")
|
|
|
+ .objectData(dayCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("month")
|
|
|
+ .objectData(monthCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("year")
|
|
|
+ .objectData(yearCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("lastDay")
|
|
|
+ .objectData(lastDayCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("lastMonth")
|
|
|
+ .objectData(lastMonthCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("lastYear")
|
|
|
+ .objectData(lastYearCount)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("dayRadio")
|
|
|
+ .objectData(Arith.div(lastDayCount,dayCount))
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("monthRadio")
|
|
|
+ .objectData(Arith.div(lastMonthCount,monthCount))
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("yearRadio")
|
|
|
+ .objectData(Arith.div(lastYearCount,yearCount))
|
|
|
+ .build());
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<CommonIcoVO> selectTrendByDate(Date startTime) {
|
|
|
+ public List<CommonTotalVO> getTimeShare(Integer siteId,Date date) {
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ //高峰
|
|
|
+ Double peakStart = getElectricity(userId, siteId, DateUtils.setHours(date, 8), DateUtils.setHours(date, 12));
|
|
|
+ Double peakEnd = getElectricity(userId, siteId, DateUtils.setHours(date, 16), DateUtils.setHours(date, 20));
|
|
|
+ //平
|
|
|
+ Double flatStart = getElectricity(userId, siteId, DateUtils.setHours(date, 6), DateUtils.setHours(date, 8));
|
|
|
+ Double flatCentre = getElectricity(userId, siteId, DateUtils.setHours(date, 12), DateUtils.setHours(date, 16));
|
|
|
+ Double flatEnd = getElectricity(userId, siteId, DateUtils.setHours(date, 20), DateUtils.setHours(date, 22));
|
|
|
+ List<CommonTotalVO> list = new ArrayList<>();
|
|
|
+
|
|
|
+ list.add(CommonTotalVO.builder().name("need")
|
|
|
+ .objectData(getElectricity(userId,siteId,DateUtils.setHours(date,9),DateUtils.setHours(date,12)))
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("peak")
|
|
|
+ .objectData(peakStart+peakEnd)
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("grain")
|
|
|
+ .objectData(getElectricity(userId, siteId, DateUtils.setHours(date, 22), DateUtils.setHours(DateUtils.addDays(date,1), 6)))
|
|
|
+ .build());
|
|
|
+ list.add(CommonTotalVO.builder().name("flat")
|
|
|
+ .objectData(flatStart+flatCentre+flatEnd)
|
|
|
+ .build());
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CommonIcoVO> getDemandIco(Integer siteId) {
|
|
|
+ Date date = DateUtils.getLastDayOfMonth(new Date());
|
|
|
+ List<Object> maxList = new ArrayList<>();
|
|
|
+ List<Object> minList = new ArrayList<>();
|
|
|
+ List<Object> avgList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < Integer.parseInt(DateUtils.getDay(date)); i++) {
|
|
|
+ Date setDays = DateUtils.setDays(date, i);
|
|
|
+ Date dayStartTime = DateUtils.getDayStartTime(setDays);
|
|
|
+ Date dayEndTime = DateUtils.getDayEndTime(setDays);
|
|
|
+ Map<String, Double> map = baseMapper.selectMaxAndMinAndAvg(siteId, dayStartTime,dayEndTime);
|
|
|
+ maxList.add(map.get("demandMax"));
|
|
|
+ minList.add(map.get("demandMin"));
|
|
|
+ avgList.add(map.get("demandAvd"));
|
|
|
+ }
|
|
|
+ List<CommonIcoVO> list = new ArrayList<>();
|
|
|
+ list.add(CommonIcoVO.builder().name("MAX").list(maxList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("MIN").list(minList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("AVG").list(avgList).build());
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CommonIcoVO> getElectricIco(Integer siteId, Date date) {
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ List<Object> iaList = new ArrayList<>();
|
|
|
+ List<Object> ibList = new ArrayList<>();
|
|
|
+ List<Object> icList = new ArrayList<>();
|
|
|
+ List<Object> uaList = new ArrayList<>();
|
|
|
+ List<Object> ubList = new ArrayList<>();
|
|
|
+ List<Object> ucList = new ArrayList<>();
|
|
|
+ for (int i = 2; i < 24 ; i+=2) {
|
|
|
+ //结束时间
|
|
|
+ Date endTime = DateUtils.addHours(date, i);
|
|
|
+ HtAnalogData htAnalogData = htAnalogDataMapper.selectByEndTime(endTime, siteId, userId);
|
|
|
+ iaList.add(htAnalogData.getIa());
|
|
|
+ ibList.add(htAnalogData.getIb());
|
|
|
+ icList.add(htAnalogData.getIc());
|
|
|
+ uaList.add(htAnalogData.getUa());
|
|
|
+ ubList.add(htAnalogData.getUb());
|
|
|
+ ucList.add(htAnalogData.getUc());
|
|
|
+ date = endTime;
|
|
|
+ }
|
|
|
List<CommonIcoVO> list = new ArrayList<>();
|
|
|
- CommonIcoVO commonIcoVoToady = new CommonIcoVO();
|
|
|
- commonIcoVoToady.setName("today");
|
|
|
- commonIcoVoToady.setList(getByDate(startTime));
|
|
|
- CommonIcoVO commonIcoVoYesterday = new CommonIcoVO();
|
|
|
- commonIcoVoYesterday.setName("yesterday");
|
|
|
- commonIcoVoYesterday.setList(getByDate(DateUtils.addDays(startTime,-1)));
|
|
|
- list.add(commonIcoVoToady);
|
|
|
- list.add(commonIcoVoYesterday);
|
|
|
+ list.add(CommonIcoVO.builder().name("IA").list(iaList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("IB").list(ibList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("IC").list(icList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("UA").list(uaList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("UB").list(ubList).build());
|
|
|
+ list.add(CommonIcoVO.builder().name("UC").list(ucList).build());
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- public List<Object> getByDate(Date date){
|
|
|
+
|
|
|
+ public List<Object> getByDate(Integer userId,Integer siteId,Date date){
|
|
|
List<Object> objects = new ArrayList<>();
|
|
|
objects.add(0);
|
|
|
for (int i = 2; i < 24 ; i+=2) {
|
|
|
//结束时间
|
|
|
Date endTime = DateUtils.addHours(date, i);
|
|
|
- HtAnalogData endHad = htAnalogDataMapper.selectByEndTime(endTime, null, SessionLocal.getUserId());
|
|
|
- HtAnalogData startHad = htAnalogDataMapper.selectByStartTime(date, null, SessionLocal.getUserId());
|
|
|
- objects.add(endHad.getEpp() - startHad.getEpp());
|
|
|
+ objects.add(getElectricity(userId,siteId,date,endTime));
|
|
|
date = endTime;
|
|
|
}
|
|
|
return objects;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取用电量
|
|
|
+ * @param userId
|
|
|
+ * @param siteId
|
|
|
+ * @param startTime
|
|
|
+ * @param endTime
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Double getElectricity(Integer userId,Integer siteId,Date startTime,Date endTime){
|
|
|
+ HtAnalogData startHad = htAnalogDataMapper.selectByStartTime(startTime, siteId, userId);
|
|
|
+ HtAnalogData endHad = htAnalogDataMapper.selectByEndTime(endTime, siteId, userId);
|
|
|
+ return Arith.sub(startHad.getEpp(),endHad.getEpp());
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|