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

[电表][新增]:电能统计接口

release_toaliyun_real
hupeng 6 лет назад
Родитель
Сommit
714735e651
10 измененных файлов: 116 добавлений и 56 удалений
  1. +3
    -3
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterDataController.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumChart.java
  3. +2
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumMeterDataReportType.java
  4. +62
    -15
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java
  6. +1
    -1
      mallinkService/src/main/java/com/iformall/service/kw/KwMeterService.java
  7. +0
    -1
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java
  8. +1
    -2
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java
  9. +5
    -1
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterServiceImpl.java
  10. +40
    -30
      mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml

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

@@ -46,8 +46,8 @@ public class KwMeterDataController extends BaseController {


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

if (kwMeterDataDto == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
@@ -60,7 +60,7 @@ public class KwMeterDataController extends BaseController {
if (kwMeterDataDto.getEndTime() == null && kwMeterDataDto.getEndNumber() == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

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




+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumChart.java Просмотреть файл

@@ -64,7 +64,7 @@ public enum EnumChart {

BUSINESS(54,"业态分析"),

POWER_SUMMERY(54,"电能分析"),
POWER_SUMMERY(55,"电能分析"),
;

public static EnumChart getEnum(Integer code) {


+ 2
- 1
mallinkService/src/main/java/com/iformall/enums/EnumMeterDataReportType.java Просмотреть файл

@@ -8,7 +8,8 @@ public enum EnumMeterDataReportType {
VALID(0, "全量"),
HOUR(1, "时"),
DAY(2, "日"),
MONTH(3, "月");
MONTH(3, "月"),
BY_HOUR(4, "时分");
public static EnumMeterDataReportType getEnum(Integer code) {
for (EnumMeterDataReportType value : values()) {
if (value.getCode().equals(code)) {


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

@@ -16,7 +16,9 @@ import com.iformall.service.MarkingDataReportService;
import com.iformall.service.WxBusinessService;
import com.iformall.service.WxChartDataService;
import com.iformall.service.WxCouponService;
import com.iformall.service.kw.KwMerchantMeterService;
import com.iformall.service.kw.KwMeterDataService;
import com.iformall.service.kw.KwMeterService;
import com.iformall.utils.DateUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
@@ -84,6 +86,11 @@ public class WxChartServiceImpl implements WxChartDataService {

@Autowired
KwMeterDataService kwMeterDataService;
@Autowired
KwMerchantMeterService kwMerchantMeterService;
@Autowired
KwMeterService kwMeterService;


@Override
public ResultData queryData(Map<String, String> paramsMap) {
@@ -347,26 +354,66 @@ public class WxChartServiceImpl implements WxChartDataService {
* @return
*/
private ResultData getPowerSummery(String tenantId,Map<String, String> paramsMap){
/*
Map<String,Long> resultMap = new LinkedMap();
Map<String,Object> resultMap = new LinkedMap();

KwMeterDataDto kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setStartTime();
kwMeterDataDto.setEndTime();
kwMeterDataDto.setStartTime(addDay(-29));
kwMeterDataDto.setEndTime(addDay(1));
kwMeterDataDto.setTenantId(tenantId);
kwMeterDataDto.setReportType(EnumMeterDataReportType.DAY.getCode());
List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(new WxBusiness());

Map<String,Object> query = new HashedMap();
query.put("tenantId",tenantId);
query.put("id",paramsMap.get("id"));
query.put("buildingId",paramsMap.get("buildingId"));
List<Map<String,Object>> mapList = wxMerchantMapper.findBusByFloorId(query);
for (Map<String,Object> map:mapList) {
resultMap.put((String)map.get("btitle"),(Long)map.get("count"));
List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto);

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

for (int i = 30; i >= 0; i--) {
String date = new SimpleDateFormat("yyyy-MM-dd").format(addDay(-i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst();
if (optionalKwMeterDataVo.isPresent())
monthDailyPower.add(optionalKwMeterDataVo.get());
else {
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo();
kwMeterDataVo.setReportTime(date);
monthDailyPower.add(kwMeterDataVo);
}
}
*/
return new ResultData();

resultMap.put("monthDailyPower",monthDailyPower);

kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode());
List<KwMeterDataVo> monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto);

resultMap.put("monthHoursPower",monthHoursPower);

kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setStartTime(addDay(-29));
kwMeterDataDto.setEndTime(addDay(1));
kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo currentPower = kwMeterDataService.getPower(kwMeterDataDto);
resultMap.put("currentPower",currentPower);

KwMeter kwMeter = new KwMeter();
kwMeter.setTenantId(tenantId);
kwMeter.setStatus(EnumMeterStatus.VALID.getCode());
int meterCount = kwMeterService.selectCount(kwMeter);

kwMeter.setBindStatus(EnumMeterBindStatus.BIND.getCode());
int meterBindCount = kwMeterService.selectCount(kwMeter);

resultMap.put("meterCount",meterCount);
resultMap.put("meterBindCount",meterBindCount);

KwMerchantMeter kwMerchantMeter = new KwMerchantMeter();
kwMerchantMeter.setTenantId(tenantId);
kwMerchantMeter.setStatus(EnumMerchantMeterStatus.VALID.getCode());
int meterMerchantCount = kwMerchantMeterService.selectCount(kwMerchantMeter);
resultMap.put("meterMerchantCount",meterMerchantCount);





return new ResultData(resultMap);
}




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

@@ -19,5 +19,5 @@ public interface KwMeterDataService {

int save(List<KwMeterData> recordList);

KwMeterDataVo getMeterUsedPower(KwMeterDataDto dto);
KwMeterDataVo getPower(KwMeterDataDto dto);
}

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

@@ -55,5 +55,5 @@ public interface KwMeterService {
*/
List<KwMeter> findList(KwMeter record);

int selectCount(KwMeter record);
}

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

@@ -86,5 +86,4 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService {
return kwMerchantMeterMapper.unbindBatch(record);
}


}

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

@@ -56,7 +56,7 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {
}

@Override
public KwMeterDataVo getMeterUsedPower(KwMeterDataDto dto)
public KwMeterDataVo getPower(KwMeterDataDto dto)
{
KwMeterDataVo usedPower = new KwMeterDataVo();
usedPower.setMeterId(dto.getMeterId());
@@ -100,5 +100,4 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {

return usedPower;
}

}

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

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.KwMeter;
import com.iformall.domain.po.KwMeterData;
import com.iformall.mapper.KwMeterMapper;
import com.iformall.service.kw.KwMeterService;
import org.slf4j.Logger;
@@ -60,5 +61,8 @@ public class KwMeterServiceImpl implements KwMeterService {
return kwMeterMapper.findList(record);
}


@Override
public int selectCount(KwMeter record) {
return kwMeterMapper.selectCount(record);
}
}

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

@@ -95,19 +95,22 @@
<if test=" null != startTime and null != endTime ">
and `create_time` between #{startTime} and #{endTime}
</if>

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

</sql>


@@ -115,10 +118,12 @@
select
temp.tenant_id,
temp.reportTime,
min(temp.recordStartTime) as recordStartTime,
max(temp.recordEndTime) as recordEndTime,
sum(temp.totalPower) as totalPower,
sum(temp.lastTotalPower) as lastTotalPower,
<if test="4 != reportType ">
min(temp.recordStartTime) as recordStartTime,
max(temp.recordEndTime) as recordEndTime,
sum(temp.totalPower) as totalPower,
sum(temp.lastTotalPower) as lastTotalPower,
</if>
sum(temp.usedPower) as usedPower
from
(SELECT
@@ -126,19 +131,24 @@
<if test=" null == reportType">
create_time as reportTime,
</if>
<if test=" null != reportType and 1 == reportType ">
<if test="1 == reportType ">
date_format(create_time, '%Y-%m-%d %H:00') as reportTime,
</if>
<if test=" null != reportType and 2 == reportType ">
<if test="2 == reportType ">
date_format(create_time, '%Y-%m-%d') as reportTime,
</if>
<if test=" null != reportType and 3 == reportType ">
<if test="3 == reportType ">
date_format(create_time, '%Y-%m') as reportTime,
</if>
min(last_device_time) as recordStartTime,
min(last_total_power) as lastTotalPower,
max(device_time) as recordEndTime,
max(total_power) as totalPower,
<if test="4 == reportType ">
date_format(create_time, '%H:00') as reportTime,
</if>
<if test="4 != reportType ">
min(last_device_time) as recordStartTime,
min(last_total_power) as lastTotalPower,
max(device_time) as recordEndTime,
max(total_power) as totalPower,
</if>
sum(used_power) as usedPower
FROM kw_meter_data
<include refid="dynamicWhereConditionsVo"/>
@@ -158,27 +168,27 @@

<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,
now() as reportTime,
</if>
<if test=" null != reportType and 1 == reportType ">
<if test=" 1 == reportType ">
date_format(create_time, '%Y-%m-%d %H:00') as reportTime,
</if>
<if test=" null != reportType and 2 == reportType ">
<if test=" 2 == reportType ">
date_format(create_time, '%Y-%m-%d') as reportTime,
</if>
<if test=" null != reportType and 3 == reportType ">
<if test=" 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
min(total_power) as totalPower,
</if>
<if test=" null != endTime">
max(device_time) as recordEndTime,
max(total_power) as totalPower
max(total_power) as totalPower,
</if>
tenant_id,box_id,meter_id
FROM kw_meter_data
where 1 = 1
<if test=" null != tenantId ">
@@ -193,30 +203,30 @@

<if test=" null != startTime">
<if test=" null == reportType">
and create_time = #{startTime}
and create_time &gt; #{startTime}
</if>
<if test=" null != reportType and 1 == reportType ">
<if test=" 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 ">
<if test=" 2 == reportType ">
and date_format(create_time, '%Y-%m-%d') = date_format(#{startTime}, '%Y-%m-%d')
</if>
<if test=" null != reportType and 3 == reportType ">
<if test=" 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}
and create_time &lt; #{endTime}
</if>
<if test=" null != reportType and 1 == reportType ">
<if test=" 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 ">
<if test=" 2 == reportType ">
and date_format(create_time, '%Y-%m-%d') = date_format(#{endTime}, '%Y-%m-%d')
</if>
<if test=" null != reportType and 3 == reportType ">
<if test=" 3 == reportType ">
and date_format(create_time, '%Y-%m') = date_format(#{endTime}, '%Y-%m')
</if>
</if>


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