Просмотр исходного кода

[电表][修复]:状态更新逻辑错误

release_toaliyun_real
hupeng 6 лет назад
Родитель
Сommit
ff601033cc
3 измененных файлов: 41 добавлений и 23 удалений
  1. +34
    -22
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java
  3. +6
    -0
      mallinkService/src/main/resources/mapper/KwMeterMapper.xml

+ 34
- 22
mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java Просмотреть файл

@@ -63,32 +63,44 @@ public class KwMeterDataController extends BaseController {

List<KwMeterDataVo> monthDailyPower = new ArrayList<>();

if (kwMeterDataDto.getReportTime() != null
&& kwMeterDataDto.getReportType().equals(EnumMeterDataReportType.DAY.getCode())) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM").parse(kwMeterDataDto.getReportTime());
} catch (Exception e) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}
if (kwMeterDataDto.getReportTime() != null){

if (kwMeterDataDto.getReportType().equals(EnumMeterDataReportType.DAY.getCode())) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM").parse(kwMeterDataDto.getReportTime());
} catch (Exception e) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
}

LocalDate localDate= LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).toLocalDate();
int days = localDate.lengthOfMonth();
LocalDate firstDate = localDate.with(TemporalAdjusters.firstDayOfMonth());
for (int i = 0; i < days; i++) {
String dateStr = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(firstDate.plusDays(i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md -> md.getReportTime().equals(dateStr)).findFirst();
if (optionalKwMeterDataVo.isPresent())
monthDailyPower.add(optionalKwMeterDataVo.get());
else {
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo();
kwMeterDataVo.setReportTime(dateStr);
monthDailyPower.add(kwMeterDataVo);
LocalDate localDate= LocalDateTime.ofInstant(date.toInstant(),ZoneId.systemDefault()).toLocalDate();
int days = localDate.lengthOfMonth();
LocalDate firstDate = localDate.with(TemporalAdjusters.firstDayOfMonth());
for (int i = 0; i < days; i++) {
String dateStr = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(firstDate.plusDays(i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md -> md.getReportTime().equals(dateStr)).findFirst();
if (optionalKwMeterDataVo.isPresent())
monthDailyPower.add(optionalKwMeterDataVo.get());
else {
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo();
kwMeterDataVo.setReportTime(dateStr);
monthDailyPower.add(kwMeterDataVo);
}
}
return new ResultData(monthDailyPower);
}
return new ResultData(monthDailyPower);
}

if (kwMeterDataDto.getReportType().equals(EnumMeterDataReportType.HOUR.getCode())){

}
if (kwMeterDataDto.getReportType().equals(EnumMeterDataReportType.MONTH.getCode())){

}
if (kwMeterDataDto.getReportType().equals(EnumMeterDataReportType.BY_HOUR.getCode())){

}

}
return new ResultData(kwMeterDataVos);
}



+ 1
- 1
mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java Просмотреть файл

@@ -146,7 +146,7 @@ public class KwBoxServiceImpl implements KwBoxService {
List<Long> offlines = kwMeterDataList.stream().filter(md->md.getTotalPower()==null).map(KwMeterData::getMeterId).collect(Collectors.toList());
if (offlines.size() > 0) {
KwMeter kwMeter = new KwMeter();
kwMeter.setIds(onlines);
kwMeter.setIds(offlines);
kwMeter.setOnlineStatus(EnumMeterOnlineStatus.OFFLINE.getCode());
kwMeter.setUpdateTime(new Date());
kwMeterService.updateBatch(kwMeter);


+ 6
- 0
mallinkService/src/main/resources/mapper/KwMeterMapper.xml Просмотреть файл

@@ -89,6 +89,12 @@
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
<if test=" 1 = onlineStatus ">
and `online_status` = 0
</if>
<if test=" 0 = onlineStatus ">
and `online_status` = 1
</if>
</update>

</mapper>

Загрузка…
Отмена
Сохранить