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

[电表][修改]:增加电表电量获取接口

release_toaliyun_real
hupeng 6 лет назад
Родитель
Сommit
bcc1a61995
9 измененных файлов: 178 добавлений и 1 удалений
  1. +7
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java
  2. +22
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java
  3. +9
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java
  5. +2
    -0
      mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java
  6. +2
    -0
      mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java
  7. +10
    -0
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java
  8. +52
    -0
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java
  9. +72
    -1
      mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml

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

@@ -6,10 +6,12 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;

import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.enums.EnumMerchantMeterStatus;
import com.iformall.enums.EnumMerchantStatus;
import com.iformall.service.kw.KwMerchantMeterService;
import com.iformall.service.kw.KwMeterDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -31,6 +33,8 @@ public class KwMerchantMeterController extends BaseController {
@Autowired
private KwMerchantMeterService kwMerchantMeterService;

@Autowired
private KwMeterDataService kwMeterDataService;

@ApiOperation("设备列表")
@GetMapping("list")
@@ -89,4 +93,7 @@ public class KwMerchantMeterController extends BaseController {

return new ResultData();
}



}

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

@@ -2,6 +2,7 @@ package com.iformall.controller.device;

import com.iformall.annotation.SystemControllerLog;

import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
@@ -42,4 +43,25 @@ public class KwMeterDataController extends BaseController {
return new ResultData(kwMeterDataService.listVoAsPage(kwMeterDataDto, pageNum,pageSize));
}



@ApiOperation("获取电量")
@GetMapping("getMeterUsedPower")
public Result getMeterUsedPower(@ModelAttribute KwMeterDataDto kwMeterDataDto) {

if (kwMeterDataDto == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
if (kwMeterDataDto.getMeterId() == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

if (kwMeterDataDto.getStartTime() == null && kwMeterDataDto.getStartNumber() == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

if (kwMeterDataDto.getEndTime() == null && kwMeterDataDto.getEndNumber() == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

return new ResultData(kwMeterDataService.getMeterUsedPower(kwMeterDataDto));
}


}

+ 9
- 0
mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java Просмотреть файл

@@ -48,6 +48,15 @@ public class KwMeterDataDto extends BaseEntity {

private Integer reportType;

@io.swagger.annotations.ApiModelProperty(value = "开始电量", name = "startNumber")
private Integer startNumber;

@io.swagger.annotations.ApiModelProperty(value = "结束电量", name = "endNumber")
private Integer endNumber;

@io.swagger.annotations.ApiModelProperty(value = "商户ID", name = "merchantId")
private Long merchantId;

public static enum Field {
Id_ASC("`id` ASC"),
Id_DESC("`id` DESC"),


+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java Просмотреть файл

@@ -12,4 +12,6 @@ public interface KwMeterDataMapper extends CommonMapper<KwMeterData, Long> {
List<KwMeterData> findList(KwMeterData param);

List<KwMeterDataVo> findVoList(KwMeterDataDto param);

List<KwMeterDataVo> getPower(KwMeterDataDto param);
}

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

@@ -7,6 +7,7 @@ import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterVo;



import java.util.List;

public interface KwMerchantMeterService {
@@ -48,4 +49,5 @@ public interface KwMerchantMeterService {
List<KwMerchantMeterVo> findListVo(KwMerchantMeter record);
int selectCount(KwMerchantMeter record);
int unbindBatch(KwMerchantMeter record);

}

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

@@ -18,4 +18,6 @@ public interface KwMeterDataService {
List<KwMeterData> findList(KwMeterData kwMeterData);

int save(List<KwMeterData> recordList);

KwMeterDataVo getMeterUsedPower(KwMeterDataDto dto);
}

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

@@ -2,17 +2,24 @@ package com.iformall.service.kw.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterVo;
import com.iformall.domain.vo.KwMeterDataVo;
import com.iformall.enums.EnumMerchantMeterStatus;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.KwMerchantMeterMapper;
import com.iformall.mapper.KwMeterDataMapper;
import com.iformall.service.kw.KwMerchantMeterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@@ -24,6 +31,9 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService {
@Autowired
KwMerchantMeterMapper kwMerchantMeterMapper;

@Autowired
KwMeterDataMapper kwMeterDataMapper;

@Override
public PageInfo<KwMerchantMeterVo> listAsPage(KwMerchantMeter record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwMerchantMeterMapper.findListVo(record));


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

@@ -2,18 +2,24 @@ package com.iformall.service.kw.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMeterData;
import com.iformall.domain.vo.KwMeterDataVo;
import com.iformall.mapper.KwMeterDataMapper;
import com.iformall.service.kw.KwMeterDataService;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;

import java.util.Date;
import java.util.List;


@@ -49,4 +55,50 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {
return kwMeterDataMapper.insertList(recordList);
}

@Override
public KwMeterDataVo getMeterUsedPower(KwMeterDataDto dto)
{
KwMeterDataVo usedPower = new KwMeterDataVo();
usedPower.setMeterId(dto.getMeterId());
usedPower.setTenantId(dto.getTenantId());
usedPower.setReportTime(new Date().toString());
if (dto.getStartTime() != null) {
KwMeterDataDto param = new KwMeterDataDto();
param.setTenantId(dto.getTenantId());
param.setMeterId(dto.getMeterId());
param.setReportType(dto.getReportType());
param.setStartTime(dto.getStartTime());
List<KwMeterDataVo> startPower = kwMeterDataMapper.getPower(param);

if (startPower.size() > 0) {
usedPower.setRecordStartTime(startPower.get(0).getRecordStartTime());
usedPower.setLastTotalPower(startPower.get(0).getTotalPower());
}
}
if (dto.getEndTime() != null) {
KwMeterDataDto param = new KwMeterDataDto();
param.setTenantId(dto.getTenantId());
param.setMeterId(dto.getMeterId());
param.setReportType(dto.getReportType());
param.setEndTime(dto.getEndTime());
List<KwMeterDataVo> endPower = kwMeterDataMapper.getPower(param);

if (endPower.size() > 0) {
usedPower.setRecordEndTime(endPower.get(0).getRecordEndTime());
usedPower.setTotalPower(endPower.get(0).getTotalPower());
}
}
if (usedPower.getLastTotalPower()==null)
usedPower.setLastTotalPower(dto.getStartNumber());
if (usedPower.getTotalPower()==null)
usedPower.setTotalPower(dto.getEndNumber());

if (usedPower.getLastTotalPower()==null || usedPower.getTotalPower() == null)
return null;

usedPower.setUsedPower(usedPower.getTotalPower() - usedPower.getLastTotalPower());

return usedPower;
}

}

+ 72
- 1
mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml Просмотреть файл

@@ -130,7 +130,7 @@
sum(used_power) as usedPower
FROM kw_meter_data
where
<include refid="dynamicWhereConditions"/>
<include refid="dynamicWhereConditionsVo"/>
group by reportTime,meter_id
) as temp
group by
@@ -145,4 +145,75 @@
order by reportTime desc
</select>

<select id="getPower" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap">
SELECT
tenant_id,box_id,meter_id,
<if test=" null == reportType">
create_time as reportTime,
</if>
<if test=" null != reportType and 1 == reportType ">
date_format(create_time, '%Y-%m-%d %H:00') as reportTime,
</if>
<if test=" null != reportType and 2 == reportType ">
date_format(create_time, '%Y-%m-%d') as reportTime,
</if>
<if test=" null != reportType and 3 == reportType ">
date_format(create_time, '%Y-%m') as reportTime,
</if>
<if test=" null != startTime">
min(device_time) as recordStartTime,
min(total_power) as totalPower
</if>
<if test=" null != endTime">
max(device_time) as recordEndTime,
max(total_power) as totalPower
</if>
FROM kw_meter_data
where 1 = 1
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != meterId ">
and `meter_id` = #{meterId}
</if>
<if test=" null != address ">
and `address` = #{address}
</if>

<if test=" null != startTime">
<if test=" null == reportType">
and create_time = #{startTime}
</if>
<if test=" null != reportType and 1 == reportType ">
and date_format(create_time, '%Y-%m-%d %H:00') = date_format(#{startTime}, '%Y-%m-%d %H:00')
</if>
<if test=" null != reportType and 2 == reportType ">
and date_format(create_time, '%Y-%m-%d') = date_format(#{startTime}, '%Y-%m-%d')
</if>
<if test=" null != reportType and 3 == reportType ">
and date_format(create_time, '%Y-%m') = date_format(#{startTime}, '%Y-%m')
</if>
</if>

<if test=" null != endTime">
<if test=" null == reportType">
and create_time = #{endTime}
</if>
<if test=" null != reportType and 1 == reportType ">
and date_format(create_time, '%Y-%m-%d %H:00') = date_format(#{endTime}, '%Y-%m-%d %H:00')
</if>
<if test=" null != reportType and 2 == reportType ">
and date_format(create_time, '%Y-%m-%d') = date_format(#{endTime}, '%Y-%m-%d')
</if>
<if test=" null != reportType and 3 == reportType ">
and date_format(create_time, '%Y-%m') = date_format(#{endTime}, '%Y-%m')
</if>
</if>

group by reportTime
<if test=" null != meterId ">
,meter_id
</if>
</select>

</mapper>

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