Przeglądaj źródła

[电表][修改]:电表统计接口升级

release_toaliyun_real
hupeng 6 lat temu
rodzic
commit
1e815d329f
6 zmienionych plików z 109 dodań i 24 usunięć
  1. +50
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java
  2. +9
    -3
      mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java
  3. +11
    -6
      mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java
  4. +32
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  5. +6
    -4
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java
  6. +1
    -1
      mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml

+ 50
- 4
mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java Wyświetl plik

@@ -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));
}


}

+ 9
- 3
mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java Wyświetl plik

@@ -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)


+ 11
- 6
mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java Wyświetl plik

@@ -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) {


+ 32
- 6
mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java Wyświetl plik

@@ -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);
}



+ 6
- 4
mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java Wyświetl plik

@@ -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;
}


+ 1
- 1
mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml Wyświetl plik

@@ -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">


Ładowanie…
Anuluj
Zapisz