| @@ -10,6 +10,8 @@ import com.iformall.domain.dto.KwMeterDataDto; | |||||
| import com.iformall.domain.po.KwMeterData; | import com.iformall.domain.po.KwMeterData; | ||||
| import com.iformall.domain.vo.KwMeterDataVo; | |||||
| import com.iformall.enums.EnumMeterDataReportType; | |||||
| import com.iformall.service.kw.KwMeterDataService; | import com.iformall.service.kw.KwMeterDataService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -20,7 +22,13 @@ import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | 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 | @RestController | ||||
| @RequestMapping("kwMeterData") | @RequestMapping("kwMeterData") | ||||
| @@ -36,14 +44,53 @@ public class KwMeterDataController extends BaseController { | |||||
| @ApiImplicitParams({ | @ApiImplicitParams({ | ||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | ||||
| @ApiImplicitParam(name = "pageSize", 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) { | public Result list(@ModelAttribute KwMeterDataDto kwMeterDataDto, Integer pageNum, Integer pageSize) { | ||||
| if (kwMeterDataDto == null) kwMeterDataDto = new KwMeterDataDto(); | if (kwMeterDataDto == null) kwMeterDataDto = new KwMeterDataDto(); | ||||
| kwMeterDataDto.setTenantId(getTenantId()); | 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("获取电量") | @ApiOperation("获取电量") | ||||
| @GetMapping("getPower") | @GetMapping("getPower") | ||||
| @@ -63,5 +110,4 @@ public class KwMeterDataController extends BaseController { | |||||
| return new ResultData(kwMeterDataService.getPower(kwMeterDataDto)); | return new ResultData(kwMeterDataService.getPower(kwMeterDataDto)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -171,7 +171,7 @@ public class KwBoxV1Controller extends BaseController { | |||||
| Instant instant = deviceTime.toInstant(); | Instant instant = deviceTime.toInstant(); | ||||
| ZoneId zone = ZoneId.systemDefault(); | ZoneId zone = ZoneId.systemDefault(); | ||||
| LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); | LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); | ||||
| if (localDateTime.getYear() == 1980) | |||||
| if (localDateTime.getYear() != LocalDateTime.now().getYear()) | |||||
| deviceTime = new Date(); | deviceTime = new Date(); | ||||
| List<Map<String,String>> metersData = (List<Map<String,String>>)paramMap.get("meters"); | List<Map<String,String>> metersData = (List<Map<String,String>>)paramMap.get("meters"); | ||||
| @@ -230,8 +230,14 @@ public class KwBoxV1Controller extends BaseController { | |||||
| Date deviceTime = null; | Date deviceTime = null; | ||||
| try { | try { | ||||
| deviceTime=simpleDateFormat.parse(time); | 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) | switch(cmd) | ||||
| @@ -60,13 +60,18 @@ public class KwMeterDataDto extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "商户ID", name = "merchantId") | @io.swagger.annotations.ApiModelProperty(value = "商户ID", name = "merchantId") | ||||
| private Long merchantId; | private Long merchantId; | ||||
| public static enum Field { | 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; | private String value; | ||||
| Field(String value) { | Field(String value) { | ||||
| @@ -349,7 +349,7 @@ public class WxChartServiceImpl implements WxChartDataService { | |||||
| } | } | ||||
| /** | /** | ||||
| * 业态分析 | |||||
| * 用电分析 | |||||
| * @param tenantId | * @param tenantId | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| @@ -378,6 +378,7 @@ public class WxChartServiceImpl implements WxChartDataService { | |||||
| } | } | ||||
| } | } | ||||
| resultMap.put("monthDailyPower",monthDailyPower); | resultMap.put("monthDailyPower",monthDailyPower); | ||||
| kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); | kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); | ||||
| @@ -390,7 +391,36 @@ public class WxChartServiceImpl implements WxChartDataService { | |||||
| kwMeterDataDto.setEndTime(addDay(1)); | kwMeterDataDto.setEndTime(addDay(1)); | ||||
| kwMeterDataDto.setTenantId(tenantId); | kwMeterDataDto.setTenantId(tenantId); | ||||
| KwMeterDataVo currentPower = kwMeterDataService.getPower(kwMeterDataDto); | 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 kwMeter = new KwMeter(); | ||||
| kwMeter.setTenantId(tenantId); | kwMeter.setTenantId(tenantId); | ||||
| @@ -409,10 +439,6 @@ public class WxChartServiceImpl implements WxChartDataService { | |||||
| int meterMerchantCount = kwMerchantMeterService.selectCount(kwMerchantMeter); | int meterMerchantCount = kwMerchantMeterService.selectCount(kwMerchantMeter); | ||||
| resultMap.put("meterMerchantCount",meterMerchantCount); | resultMap.put("meterMerchantCount",meterMerchantCount); | ||||
| return new ResultData(resultMap); | return new ResultData(resultMap); | ||||
| } | } | ||||
| @@ -32,11 +32,15 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||||
| @Override | @Override | ||||
| public PageInfo<KwMeterDataVo> listVoAsPage(KwMeterDataDto kwMeterDataDto, Integer pageIndex, Integer pageSize) { | 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)); | return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwMeterDataMapper.findVoList(kwMeterDataDto)); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto) { | public List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto) { | ||||
| if (kwMeterDataDto.getSortColumn() == null) | |||||
| kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_ASC); | |||||
| return kwMeterDataMapper.findVoList(kwMeterDataDto); | return kwMeterDataMapper.findVoList(kwMeterDataDto); | ||||
| } | } | ||||
| @@ -93,10 +97,8 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||||
| if (usedPower.getTotalPower()==null) | if (usedPower.getTotalPower()==null) | ||||
| usedPower.setTotalPower(dto.getEndNumber()); | 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; | return usedPower; | ||||
| } | } | ||||
| @@ -163,7 +163,7 @@ | |||||
| <if test=" null != meterId "> | <if test=" null != meterId "> | ||||
| ,temp.meter_id | ,temp.meter_id | ||||
| </if> | </if> | ||||
| order by temp.reportTime asc | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </select> | </select> | ||||
| <select id="getPower" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap"> | <select id="getPower" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap"> | ||||