|
|
@@ -92,6 +92,7 @@ public class WxChartServiceImpl implements WxChartDataService { |
|
|
KwMeterService kwMeterService; |
|
|
KwMeterService kwMeterService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public ResultData queryData(Map<String, String> paramsMap) { |
|
|
public ResultData queryData(Map<String, String> paramsMap) { |
|
|
String tenantId = paramsMap.get("tenantId"); |
|
|
String tenantId = paramsMap.get("tenantId"); |
|
|
@@ -348,6 +349,59 @@ public class WxChartServiceImpl implements WxChartDataService { |
|
|
return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN); |
|
|
return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Date addDay(int addDayAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.add(Calendar.DATE, addDayAmount); |
|
|
|
|
|
c.set(Calendar.HOUR_OF_DAY, 0); |
|
|
|
|
|
c.set(Calendar.MINUTE, 0); |
|
|
|
|
|
c.set(Calendar.SECOND, 0); |
|
|
|
|
|
c.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
Date date = c.getTime(); |
|
|
|
|
|
return date; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Date addMonth(int addMountAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.add(Calendar.MONTH, addMountAmount); |
|
|
|
|
|
c.set(Calendar.DAY_OF_MONTH, 1); |
|
|
|
|
|
c.set(Calendar.HOUR_OF_DAY, 0); |
|
|
|
|
|
c.set(Calendar.MINUTE, 0); |
|
|
|
|
|
c.set(Calendar.SECOND, 0); |
|
|
|
|
|
c.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
Date date = c.getTime(); |
|
|
|
|
|
return date; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Date addDay(Date date , int addDayAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.setTime(date); |
|
|
|
|
|
c.add(Calendar.DATE, addDayAmount); |
|
|
|
|
|
Date result = c.getTime(); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Date addMonth(Date date, int addMountAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.setTime(date); |
|
|
|
|
|
c.add(Calendar.MONTH, addMountAmount); |
|
|
|
|
|
Date result = c.getTime(); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Date convertDateAndAdd(Date date, int addDayAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.setTime(date); |
|
|
|
|
|
c.add(Calendar.DATE, addDayAmount); |
|
|
|
|
|
c.set(Calendar.HOUR_OF_DAY, 0); |
|
|
|
|
|
c.set(Calendar.MINUTE, 0); |
|
|
|
|
|
c.set(Calendar.SECOND, 0); |
|
|
|
|
|
c.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
Date result = c.getTime(); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 用电分析 |
|
|
* 用电分析 |
|
|
* @param tenantId |
|
|
* @param tenantId |
|
|
@@ -355,31 +409,58 @@ public class WxChartServiceImpl implements WxChartDataService { |
|
|
*/ |
|
|
*/ |
|
|
private ResultData getPowerSummery(String tenantId,Map<String, String> paramsMap){ |
|
|
private ResultData getPowerSummery(String tenantId,Map<String, String> paramsMap){ |
|
|
|
|
|
|
|
|
Map<String,Object> resultMap = new LinkedMap(); |
|
|
|
|
|
|
|
|
Map<String,Object> resultMap = new HashMap<>(); |
|
|
|
|
|
|
|
|
KwMeterDataDto kwMeterDataDto = new KwMeterDataDto(); |
|
|
KwMeterDataDto kwMeterDataDto = new KwMeterDataDto(); |
|
|
kwMeterDataDto.setStartTime(addDay(-29)); |
|
|
kwMeterDataDto.setStartTime(addDay(-29)); |
|
|
kwMeterDataDto.setEndTime(addDay(1)); |
|
|
kwMeterDataDto.setEndTime(addDay(1)); |
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
kwMeterDataDto.setReportType(EnumMeterDataReportType.DAY.getCode()); |
|
|
kwMeterDataDto.setReportType(EnumMeterDataReportType.DAY.getCode()); |
|
|
List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto); |
|
|
|
|
|
|
|
|
List<KwMeterDataVo> kwMeterDataVosDaily = kwMeterDataService.findVoList(kwMeterDataDto); |
|
|
|
|
|
|
|
|
List<KwMeterDataVo> monthDailyPower = new ArrayList<>(); |
|
|
List<KwMeterDataVo> monthDailyPower = new ArrayList<>(); |
|
|
|
|
|
|
|
|
for (int i = 30; i >= 0; i--) { |
|
|
|
|
|
String date = new SimpleDateFormat("yyyy-MM-dd").format(addDay(-i)); |
|
|
|
|
|
|
|
|
if (kwMeterDataVosDaily.size() >= 30) { |
|
|
|
|
|
resultMap.put("monthDailyPower", monthDailyPower); |
|
|
|
|
|
} else { |
|
|
|
|
|
for (int i = 29; i >= 0; i--) { |
|
|
|
|
|
String date = new SimpleDateFormat("yyyy-MM-dd").format(addDay(-i)); |
|
|
|
|
|
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVosDaily.stream().filter(md -> md.getReportTime().equals(date)).findFirst(); |
|
|
|
|
|
if (optionalKwMeterDataVo.isPresent()) |
|
|
|
|
|
monthDailyPower.add(optionalKwMeterDataVo.get()); |
|
|
|
|
|
else { |
|
|
|
|
|
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo(); |
|
|
|
|
|
kwMeterDataVo.setReportTime(date); |
|
|
|
|
|
monthDailyPower.add(kwMeterDataVo); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
resultMap.put("monthDailyPower",monthDailyPower); |
|
|
|
|
|
|
|
|
|
|
|
kwMeterDataDto = new KwMeterDataDto(); |
|
|
|
|
|
kwMeterDataDto.setStartTime(addMonth(-11)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addMonth(1)); |
|
|
|
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
|
|
|
kwMeterDataDto.setReportType(EnumMeterDataReportType.MONTH.getCode()); |
|
|
|
|
|
List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto); |
|
|
|
|
|
|
|
|
|
|
|
List<KwMeterDataVo> yearMonthlyPower = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 11; i >= 0; i--) { |
|
|
|
|
|
String date = new SimpleDateFormat("yyyy-MM").format(addMonth(-i)); |
|
|
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst(); |
|
|
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst(); |
|
|
if (optionalKwMeterDataVo.isPresent()) |
|
|
if (optionalKwMeterDataVo.isPresent()) |
|
|
monthDailyPower.add(optionalKwMeterDataVo.get()); |
|
|
|
|
|
|
|
|
yearMonthlyPower.add(optionalKwMeterDataVo.get()); |
|
|
else { |
|
|
else { |
|
|
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo(); |
|
|
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo(); |
|
|
kwMeterDataVo.setReportTime(date); |
|
|
kwMeterDataVo.setReportTime(date); |
|
|
monthDailyPower.add(kwMeterDataVo); |
|
|
|
|
|
|
|
|
yearMonthlyPower.add(kwMeterDataVo); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
resultMap.put("yearMonthlyPower",yearMonthlyPower); |
|
|
|
|
|
|
|
|
resultMap.put("monthDailyPower",monthDailyPower); |
|
|
|
|
|
|
|
|
|
|
|
kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); |
|
|
kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); |
|
|
List<KwMeterDataVo> monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto); |
|
|
List<KwMeterDataVo> monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto); |
|
|
@@ -387,40 +468,51 @@ public class WxChartServiceImpl implements WxChartDataService { |
|
|
resultMap.put("monthHoursPower",monthHoursPower); |
|
|
resultMap.put("monthHoursPower",monthHoursPower); |
|
|
|
|
|
|
|
|
kwMeterDataDto = new KwMeterDataDto(); |
|
|
kwMeterDataDto = new KwMeterDataDto(); |
|
|
kwMeterDataDto.setStartTime(addDay(-29)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addDay(1)); |
|
|
|
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
|
|
|
KwMeterDataVo currentPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (currentPower.getTotalPower() != null) |
|
|
|
|
|
resultMap.put("totalPower",currentPower.getTotalPower()); |
|
|
|
|
|
if (currentPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("UsedPower",currentPower.getUsedPower()); |
|
|
|
|
|
|
|
|
|
|
|
kwMeterDataDto.setStartTime(addDay(-60)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addDay(-30)); |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
kwMeterDataDto.setStartTime(addDay(0)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addDay(new Date(), 0)); |
|
|
|
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
|
|
|
KwMeterDataVo todayUsedPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (todayUsedPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("todayUsedPower", todayUsedPower.getUsedPower()); |
|
|
|
|
|
|
|
|
|
|
|
kwMeterDataDto.setStartTime(addDay(-1)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addDay(new Date(), -1)); |
|
|
|
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
|
|
|
KwMeterDataVo yesterdayUsedPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (yesterdayUsedPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("yesterdayUsedPower", yesterdayUsedPower.getUsedPower()); |
|
|
|
|
|
|
|
|
|
|
|
if (yesterdayUsedPower.getUsedPower() != null && todayUsedPower.getUsedPower() != null && yesterdayUsedPower.getUsedPower() != 0) { |
|
|
|
|
|
double hbd = (double) (todayUsedPower.getUsedPower() - yesterdayUsedPower.getUsedPower()) / yesterdayUsedPower.getUsedPower() * 100; |
|
|
|
|
|
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
|
|
|
|
|
resultMap.put("todayUsedPowerRate", hb + "%"); |
|
|
|
|
|
} else { |
|
|
|
|
|
resultMap.put("todayUsedPowerRate", "--" + "%"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
kwMeterDataDto.setStartTime(addMonth(0)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addMonth(new Date(),0)); |
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
KwMeterDataVo lastMonthPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (lastMonthPower.getTotalPower() != null) |
|
|
|
|
|
resultMap.put("lastTotalPower",lastMonthPower.getTotalPower()); |
|
|
|
|
|
if (lastMonthPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("lastUsedPower",lastMonthPower.getUsedPower()); |
|
|
|
|
|
|
|
|
KwMeterDataVo thisMonthUsedPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (thisMonthUsedPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("thisMonthUsedPower",thisMonthUsedPower.getUsedPower()); |
|
|
|
|
|
|
|
|
|
|
|
kwMeterDataDto.setStartTime(addMonth(-1)); |
|
|
|
|
|
kwMeterDataDto.setEndTime(addMonth(new Date(),-1)); |
|
|
|
|
|
kwMeterDataDto.setTenantId(tenantId); |
|
|
|
|
|
KwMeterDataVo lastMonthUsedPower = kwMeterDataService.getPower(kwMeterDataDto); |
|
|
|
|
|
if (lastMonthUsedPower.getUsedPower() != null) |
|
|
|
|
|
resultMap.put("yesterdayUsedPower",lastMonthUsedPower.getUsedPower()); |
|
|
|
|
|
|
|
|
if (lastMonthPower.getTotalPower() !=null && currentPower.getTotalPower() != null && lastMonthPower.getTotalPower() !=0) { |
|
|
|
|
|
double hbd = (double) (currentPower.getTotalPower() - lastMonthPower.getTotalPower()) / lastMonthPower.getTotalPower() * 100; |
|
|
|
|
|
|
|
|
if (lastMonthUsedPower.getUsedPower() !=null && thisMonthUsedPower.getUsedPower() != null && lastMonthUsedPower.getUsedPower() !=0) { |
|
|
|
|
|
double hbd = (double) (thisMonthUsedPower.getUsedPower() - lastMonthUsedPower.getUsedPower()) / lastMonthUsedPower.getUsedPower() * 100; |
|
|
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
|
|
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
|
|
resultMap.put("totalPowerRate", hb + "%"); |
|
|
|
|
|
|
|
|
resultMap.put("monthUsedPowerRate", hb + "%"); |
|
|
} else { |
|
|
} else { |
|
|
resultMap.put("totalPowerRate", "--" + "%"); |
|
|
|
|
|
|
|
|
resultMap.put("monthUsedPowerRate", "--" + "%"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (lastMonthPower.getUsedPower() !=null && currentPower.getUsedPower() != null && lastMonthPower.getUsedPower() !=0) { |
|
|
|
|
|
double hbd = (double) (currentPower.getUsedPower() - lastMonthPower.getUsedPower()) / lastMonthPower.getUsedPower() * 100; |
|
|
|
|
|
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
|
|
|
|
|
resultMap.put("usedPowerRate", hb + "%"); |
|
|
|
|
|
} else { |
|
|
|
|
|
resultMap.put("usedPowerRate", "--" + "%"); |
|
|
|
|
|
} |
|
|
|
|
|
KwMeter kwMeter = new KwMeter(); |
|
|
KwMeter kwMeter = new KwMeter(); |
|
|
kwMeter.setTenantId(tenantId); |
|
|
kwMeter.setTenantId(tenantId); |
|
|
kwMeter.setStatus(EnumMeterStatus.VALID.getCode()); |
|
|
kwMeter.setStatus(EnumMeterStatus.VALID.getCode()); |
|
|
@@ -2394,28 +2486,6 @@ public class WxChartServiceImpl implements WxChartDataService { |
|
|
return new ResultData(datamap); |
|
|
return new ResultData(datamap); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private Date addDay(int addDayAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.add(Calendar.DATE, addDayAmount); |
|
|
|
|
|
c.set(Calendar.HOUR_OF_DAY, 0); |
|
|
|
|
|
c.set(Calendar.MINUTE, 0); |
|
|
|
|
|
c.set(Calendar.SECOND, 0); |
|
|
|
|
|
c.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
Date date = c.getTime(); |
|
|
|
|
|
return date; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Date convertDateAndAdd(Date date, int addDayAmount) { |
|
|
|
|
|
Calendar c = Calendar.getInstance(); |
|
|
|
|
|
c.setTime(date); |
|
|
|
|
|
c.add(Calendar.DATE, addDayAmount); |
|
|
|
|
|
c.set(Calendar.HOUR_OF_DAY, 0); |
|
|
|
|
|
c.set(Calendar.MINUTE, 0); |
|
|
|
|
|
c.set(Calendar.SECOND, 0); |
|
|
|
|
|
c.set(Calendar.MILLISECOND, 0); |
|
|
|
|
|
Date result = c.getTime(); |
|
|
|
|
|
return result; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private long getCountByAge(EnumAgeInfo a, Calendar c, WxCUserBasicInfoDto dto) { |
|
|
private long getCountByAge(EnumAgeInfo a, Calendar c, WxCUserBasicInfoDto dto) { |
|
|
if (a.getStart() != 0 || a.getEnd() != 0) { |
|
|
if (a.getStart() != 0 || a.getEnd() != 0) { |
|
|
|