| @@ -10,6 +10,8 @@ import com.iformall.domain.dto.KwMeterDataDto; | |||
| import com.iformall.domain.po.KwMeterData; | |||
| import com.iformall.domain.vo.KwMeterDataVo; | |||
| import com.iformall.enums.EnumMeterDataReportType; | |||
| import com.iformall.service.kw.KwMeterDataService; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiImplicitParam; | |||
| @@ -20,7 +22,13 @@ import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import java.util.List; | |||
| import java.text.SimpleDateFormat; | |||
| import java.time.LocalDate; | |||
| import java.time.LocalDateTime; | |||
| import java.time.ZoneId; | |||
| import java.time.format.DateTimeFormatter; | |||
| import java.time.temporal.TemporalAdjusters; | |||
| import java.util.*; | |||
| @RestController | |||
| @RequestMapping("kwMeterData") | |||
| @@ -36,14 +44,53 @@ public class KwMeterDataController extends BaseController { | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| @SystemControllerLog(description = "电表设备-设备列表") | |||
| @SystemControllerLog(description = "电表设备-电表数据") | |||
| public Result list(@ModelAttribute KwMeterDataDto kwMeterDataDto, Integer pageNum, Integer pageSize) { | |||
| if (kwMeterDataDto == null) kwMeterDataDto = new KwMeterDataDto(); | |||
| kwMeterDataDto.setTenantId(getTenantId()); | |||
| return new ResultData(kwMeterDataService.listVoAsPage(kwMeterDataDto, pageNum,pageSize)); | |||
| return new ResultData(kwMeterDataService.listVoAsPage(kwMeterDataDto, pageNum, pageSize)); | |||
| } | |||
| @ApiOperation("数据列表") | |||
| @GetMapping("listPower") | |||
| @SystemControllerLog(description = "电表设备-电表数据") | |||
| public Result listPower(@ModelAttribute KwMeterDataDto kwMeterDataDto) { | |||
| if (kwMeterDataDto == null) kwMeterDataDto = new KwMeterDataDto(); | |||
| kwMeterDataDto.setTenantId(getTenantId()); | |||
| List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto); | |||
| 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); | |||
| } | |||
| 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(kwMeterDataVos); | |||
| } | |||
| @ApiOperation("获取电量") | |||
| @GetMapping("getPower") | |||
| @@ -63,5 +110,4 @@ public class KwMeterDataController extends BaseController { | |||
| return new ResultData(kwMeterDataService.getPower(kwMeterDataDto)); | |||
| } | |||
| } | |||
| @@ -171,7 +171,7 @@ public class KwBoxV1Controller extends BaseController { | |||
| Instant instant = deviceTime.toInstant(); | |||
| ZoneId zone = ZoneId.systemDefault(); | |||
| LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); | |||
| if (localDateTime.getYear() == 1980) | |||
| if (localDateTime.getYear() != LocalDateTime.now().getYear()) | |||
| deviceTime = new Date(); | |||
| List<Map<String,String>> metersData = (List<Map<String,String>>)paramMap.get("meters"); | |||
| @@ -230,8 +230,14 @@ public class KwBoxV1Controller extends BaseController { | |||
| Date deviceTime = null; | |||
| try { | |||
| deviceTime=simpleDateFormat.parse(time); | |||
| } catch(Exception e) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||
| } catch(Exception e1) { | |||
| simpleDateFormat=new SimpleDateFormat("yy/MM/dd,HH:mm:ss+00"); | |||
| simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+:00:00")); | |||
| try { | |||
| deviceTime=simpleDateFormat.parse(time); | |||
| } catch(Exception e2) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); | |||
| } | |||
| } | |||
| switch(cmd) | |||
| @@ -60,13 +60,18 @@ public class KwMeterDataDto extends BaseEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "商户ID", name = "merchantId") | |||
| private Long merchantId; | |||
| public static enum Field { | |||
| Id_ASC("`id` ASC"), | |||
| Id_DESC("`id` DESC"), | |||
| DeviceTime_ASC("`device_time` ASC"), | |||
| DeviceTime_DESC("`device_time` DESC"), | |||
| CreateTime_ASC("`create_time` ASC"), | |||
| CreateTime_DESC("`create_time` DESC"); | |||
| RecordStartTime_ASC("`recordStartTime` ASC"), | |||
| RecordStartTime_DESC("`recordStartTime` DESC"), | |||
| RecordEndTime_ASC("`recordEndTime` ASC"), | |||
| RecordEndTime_DESC("`recordEndTime` DESC"), | |||
| UsedPower_ASC("`usedPower` ASC"), | |||
| UsedPower_DESC("`usedPower` DESC"), | |||
| TotalEndTime_ASC("`totalPower` ASC"), | |||
| TotalEndTime_DESC("`totalPower` DESC"), | |||
| ReportTime_ASC("`reportTime` ASC"), | |||
| ReportTime_DESC("`reportTime` DESC"); | |||
| private String value; | |||
| Field(String value) { | |||
| @@ -349,7 +349,7 @@ public class WxChartServiceImpl implements WxChartDataService { | |||
| } | |||
| /** | |||
| * 业态分析 | |||
| * 用电分析 | |||
| * @param tenantId | |||
| * @return | |||
| */ | |||
| @@ -378,6 +378,7 @@ public class WxChartServiceImpl implements WxChartDataService { | |||
| } | |||
| } | |||
| resultMap.put("monthDailyPower",monthDailyPower); | |||
| kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); | |||
| @@ -390,7 +391,36 @@ public class WxChartServiceImpl implements WxChartDataService { | |||
| kwMeterDataDto.setEndTime(addDay(1)); | |||
| kwMeterDataDto.setTenantId(tenantId); | |||
| KwMeterDataVo currentPower = kwMeterDataService.getPower(kwMeterDataDto); | |||
| resultMap.put("currentPower",currentPower); | |||
| 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.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()); | |||
| if (lastMonthPower.getTotalPower() !=null && currentPower.getTotalPower() != null) { | |||
| double hbd = (double) (currentPower.getTotalPower() - lastMonthPower.getTotalPower()) / lastMonthPower.getTotalPower() * 100; | |||
| double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); | |||
| resultMap.put("totalPowerRate", hb + "%"); | |||
| } else { | |||
| resultMap.put("totalPowerRate", "--" + "%"); | |||
| } | |||
| if (lastMonthPower.getUsedPower() !=null && currentPower.getUsedPower() != null) { | |||
| 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.setTenantId(tenantId); | |||
| @@ -409,10 +439,6 @@ public class WxChartServiceImpl implements WxChartDataService { | |||
| int meterMerchantCount = kwMerchantMeterService.selectCount(kwMerchantMeter); | |||
| resultMap.put("meterMerchantCount",meterMerchantCount); | |||
| return new ResultData(resultMap); | |||
| } | |||
| @@ -32,11 +32,15 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||
| @Override | |||
| public PageInfo<KwMeterDataVo> listVoAsPage(KwMeterDataDto kwMeterDataDto, Integer pageIndex, Integer pageSize) { | |||
| if (kwMeterDataDto.getSortColumn() == null) | |||
| kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_DESC); | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwMeterDataMapper.findVoList(kwMeterDataDto)); | |||
| } | |||
| @Override | |||
| public List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto) { | |||
| if (kwMeterDataDto.getSortColumn() == null) | |||
| kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_ASC); | |||
| return kwMeterDataMapper.findVoList(kwMeterDataDto); | |||
| } | |||
| @@ -93,10 +97,8 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||
| if (usedPower.getTotalPower()==null) | |||
| usedPower.setTotalPower(dto.getEndNumber()); | |||
| if (usedPower.getLastTotalPower()==null || usedPower.getTotalPower() == null) | |||
| return null; | |||
| usedPower.setUsedPower(usedPower.getTotalPower() - usedPower.getLastTotalPower()); | |||
| if (usedPower.getLastTotalPower()!=null && usedPower.getTotalPower() != null) | |||
| usedPower.setUsedPower(usedPower.getTotalPower() - usedPower.getLastTotalPower()); | |||
| return usedPower; | |||
| } | |||
| @@ -163,7 +163,7 @@ | |||
| <if test=" null != meterId "> | |||
| ,temp.meter_id | |||
| </if> | |||
| order by temp.reportTime asc | |||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||
| </select> | |||
| <select id="getPower" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap"> | |||