Bläddra i källkod

[电表][修复]:业态统计,商户电量top10

release_toaliyun_real
hupeng 6 år sedan
förälder
incheckning
2bcc63f344
13 ändrade filer med 268 tillägg och 23 borttagningar
  1. +0
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java
  2. +27
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDataDto.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java
  4. +2
    -3
      mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java
  5. +28
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/KwMerchantMeterDataVo.java
  6. +5
    -1
      mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java
  7. +0
    -1
      mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java
  8. +73
    -7
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  9. +6
    -1
      mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java
  10. +10
    -3
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java
  11. +3
    -0
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java
  12. +108
    -2
      mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml
  13. +4
    -2
      mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml

+ 0
- 1
mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java Visa fil

@@ -48,7 +48,6 @@ public class KwMerchantMeterController extends BaseController {
public Result list(@ModelAttribute KwMerchantMeterDto kwMerchantMeterDto, Integer pageNum, Integer pageSize) {
if (kwMerchantMeterDto == null) kwMerchantMeterDto = new KwMerchantMeterDto();
kwMerchantMeterDto.setTenantId(getTenantId());
kwMerchantMeterDto.setStatus(EnumMerchantMeterStatus.VALID.getCode());
return new ResultData(kwMerchantMeterService.listVoAsPage(kwMerchantMeterDto, pageNum, pageSize));
}



+ 27
- 0
mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDataDto.java Visa fil

@@ -0,0 +1,27 @@
package com.iformall.domain.dto;

import com.iformall.domain.po.BaseEntity;
import lombok.Data;

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

/**
* @author gongbiao
*/
@Data
public class KwMerchantMeterDataDto extends KwMeterDataDto {

@io.swagger.annotations.ApiModelProperty(value="状态1使用0停用",name="merchantStatus")
private Integer merchantStatus;

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

@io.swagger.annotations.ApiModelProperty(value = "业态ID", name = "businessId")
private Integer businessId;

@io.swagger.annotations.ApiModelProperty(value = "获取个数", name = "limitCount")
private Integer limitCount;
}

+ 2
- 2
mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java Visa fil

@@ -31,8 +31,8 @@ public class KwMerchantMeterDto extends BaseEntity {
@io.swagger.annotations.ApiModelProperty(value="子业态",name="subBusinessId")
private Integer subBusinessId;

@io.swagger.annotations.ApiModelProperty(value="状态1使用0停用",name="status")
private Integer status;
@io.swagger.annotations.ApiModelProperty(value="状态1使用0停用",name="merchantStatus")
private Integer merchantStatus;

protected String sortColumns;



+ 2
- 3
mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java Visa fil

@@ -57,9 +57,8 @@ public class KwMeterDataDto extends BaseEntity {
@io.swagger.annotations.ApiModelProperty(value = "结束电量", name = "endNumber")
private Integer endNumber;

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

@io.swagger.annotations.ApiModelProperty(value = "电表状态", name = "status")
private Integer status;

public static enum Field {
RecordStartTime_ASC("`recordStartTime` ASC"),


+ 28
- 0
mallinkService/src/main/java/com/iformall/domain/vo/KwMerchantMeterDataVo.java Visa fil

@@ -0,0 +1,28 @@
package com.iformall.domain.vo;

import com.iformall.domain.po.BaseEntity;
import lombok.Data;

import java.util.Date;

/**
* @author gongbiao
*/
@Data
public class KwMerchantMeterDataVo extends KwMeterDataVo {

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

@io.swagger.annotations.ApiModelProperty(value="商户名",name="name")
private String merchantName;

@io.swagger.annotations.ApiModelProperty(value="商户联系方式",name="linkPhone")
private String merchantLinkPhone;

@io.swagger.annotations.ApiModelProperty(value = "业态ID", name = "businessId")
private Integer businessId;

@io.swagger.annotations.ApiModelProperty(value = "业态名称", name = "businessTitle")
private String businessTitle;
}

+ 5
- 1
mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java Visa fil

@@ -1,8 +1,10 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.KwMerchantMeterDataDto;
import com.iformall.domain.dto.KwMerchantMeterDto;
import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterDataVo;
import com.iformall.domain.vo.KwMerchantMeterVo;
import org.apache.ibatis.annotations.Param;

@@ -10,7 +12,9 @@ import java.util.List;

public interface KwMerchantMeterMapper extends CommonMapper<KwMerchantMeter, Long> {

List<KwMerchantMeterVo> findListVo(KwMerchantMeterDto param);
List<KwMerchantMeterVo> findVoList(KwMerchantMeterDto param);

List<KwMerchantMeterDataVo> findDataVoList(KwMerchantMeterDataDto param);

KwMerchantMeterVo getById(@Param("merchantId")Long merchantId);



+ 0
- 1
mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java Visa fil

@@ -4,7 +4,6 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMeterData;
import com.iformall.domain.vo.KwMeterDataVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;



+ 73
- 7
mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java Visa fil

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.KwMerchantMeterDataDto;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.dto.MarkingCouponDataReportDto;
import com.iformall.domain.dto.WxCUserBasicInfoDto;
@@ -24,6 +25,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.collections.map.LinkedMap;
import org.apache.commons.lang3.StringUtils;
import org.flowable.common.engine.impl.calendar.BusinessCalendar;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -349,6 +351,15 @@ public class WxChartServiceImpl implements WxChartDataService {
return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN);
}

private Date addHour(int addHourAmount) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, addHourAmount);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date date = c.getTime();
return date;
}

private Date addDay(int addDayAmount) {
Calendar c = Calendar.getInstance();
@@ -449,13 +460,13 @@ public class WxChartServiceImpl implements WxChartDataService {
kwMeterDataDto.setEndTime(addMonth(1));
kwMeterDataDto.setTenantId(tenantId);
kwMeterDataDto.setReportType(EnumMeterDataReportType.MONTH.getCode());
List<KwMeterDataVo> kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto);
List<KwMeterDataVo> kwMeterDataVosMonthly = kwMeterDataService.findVoList(kwMeterDataDto);

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

for (int i = 11; i >= 0; i--) {
String date = new SimpleDateFormat("yyyy-MM").format(addMonth(-i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst();
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVosMonthly.stream().filter(md->md.getReportTime().equals(date)).findFirst();
if (optionalKwMeterDataVo.isPresent())
yearMonthlyPower.add(optionalKwMeterDataVo.get());
else {
@@ -468,6 +479,29 @@ public class WxChartServiceImpl implements WxChartDataService {
resultMap.put("yearMonthlyPower",yearMonthlyPower);


kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setStartTime(addDay(0));
kwMeterDataDto.setEndTime(addDay(1));
kwMeterDataDto.setTenantId(tenantId);
kwMeterDataDto.setReportType(EnumMeterDataReportType.HOUR.getCode());
List<KwMeterDataVo> kwMeterDataVosHourly = kwMeterDataService.findVoList(kwMeterDataDto);

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

for (int i = 0; i <= 23; i++) {
String date = new SimpleDateFormat("HH:mm").format(addHour(i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVosHourly.stream().filter(md->md.getReportTime().contains(date)).findFirst();
if (optionalKwMeterDataVo.isPresent()) {
optionalKwMeterDataVo.get().setReportTime(date);
todayHourlyPower.add(optionalKwMeterDataVo.get());
}
else {
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo();
kwMeterDataVo.setReportTime(date);
todayHourlyPower.add(kwMeterDataVo);
}
}
resultMap.put("todayHourlyPower",todayHourlyPower);

kwMeterDataDto = new KwMeterDataDto();

@@ -487,7 +521,9 @@ public class WxChartServiceImpl implements WxChartDataService {
if (yesterdayUsedPower.getUsedPower() != null)
resultMap.put("yesterdayUsedPower", yesterdayUsedPower.getUsedPower());

if (yesterdayUsedPower.getUsedPower() != null && todayUsedPower.getUsedPower() != null && yesterdayUsedPower.getUsedPower() != 0) {
if (yesterdayUsedPower.getUsedPower() != null
&& todayUsedPower.getUsedPower() != null
&& !yesterdayUsedPower.getUsedPower().equals(0)) {
double hbd = (double) (todayUsedPower.getUsedPower() - yesterdayUsedPower.getUsedPower()) / yesterdayUsedPower.getUsedPower() * 100;
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
resultMap.put("todayUsedPowerRate", hb + "%");
@@ -523,16 +559,46 @@ public class WxChartServiceImpl implements WxChartDataService {
int meterCount = kwMeterService.selectCount(kwMeter);

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

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

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

KwMerchantMeterDataDto kwMerchantMeterDataDto = new KwMerchantMeterDataDto();
kwMerchantMeterDataDto.setStartTime(addMonth(0));
kwMerchantMeterDataDto.setEndTime(addMonth(new Date(),0));
kwMerchantMeterDataDto.setSortColumns(KwMerchantMeterDataDto.Field.UsedPower_DESC);

kwMerchantMeterDataDto.setMerchantId(0L);
kwMerchantMeterDataDto.setLimitCount(10);
List <KwMerchantMeterDataVo> merchantTop10 = kwMerchantMeterService.findDataVoList(kwMerchantMeterDataDto);
resultMap.put("merchantTop10",merchantTop10);

kwMerchantMeterDataDto.setMerchantId(null);
kwMerchantMeterDataDto.setBusinessId(0);
kwMerchantMeterDataDto.setLimitCount(null);
List <KwMerchantMeterDataVo> businessPower = kwMerchantMeterService.findDataVoList(kwMerchantMeterDataDto);

List <WxBusiness> businessList = wxBusinessService.findListAll(tenantId,null);
businessList.stream().forEach(b->{
Optional<KwMerchantMeterDataVo> businessData = businessPower.stream().filter(bd->bd.getBusinessId().equals(b.getId())).findAny();
if (businessData.isPresent()) {
businessData.get().setBusinessTitle(b.getTitle());
} else {
KwMerchantMeterDataVo newBusinessData = new KwMerchantMeterDataVo();
newBusinessData.setBusinessId(b.getId());
newBusinessData.setBusinessTitle(b.getTitle());
businessPower.add(newBusinessData);
}
});

resultMap.put("businessPower",businessPower);

return new ResultData(resultMap);
}


+ 6
- 1
mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java Visa fil

@@ -3,8 +3,10 @@ package com.iformall.service.kw;

import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.KwMerchantMeterDataDto;
import com.iformall.domain.dto.KwMerchantMeterDto;
import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterDataVo;
import com.iformall.domain.vo.KwMerchantMeterVo;


@@ -44,9 +46,12 @@ public interface KwMerchantMeterService {
* 根据实体查询分页列表
*
* @param record
*
* @return
*/
List<KwMerchantMeterVo> findListVo(KwMerchantMeterDto record);
List<KwMerchantMeterVo> findVoList(KwMerchantMeterDto record);
List<KwMerchantMeterDataVo> findDataVoList(KwMerchantMeterDataDto record);

int selectCount(KwMerchantMeter record);
int unbindBatch(KwMerchantMeter record);


+ 10
- 3
mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java Visa fil

@@ -5,9 +5,11 @@ 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.KwMerchantMeterDataDto;
import com.iformall.domain.dto.KwMerchantMeterDto;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterDataVo;
import com.iformall.domain.vo.KwMerchantMeterVo;
import com.iformall.domain.vo.KwMeterDataVo;
import com.iformall.enums.EnumMerchantMeterStatus;
@@ -37,7 +39,7 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService {

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

@Override
@@ -61,8 +63,13 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService {
}

@Override
public List<KwMerchantMeterVo> findListVo(KwMerchantMeterDto record) {
return kwMerchantMeterMapper.findListVo(record);
public List<KwMerchantMeterVo> findVoList(KwMerchantMeterDto record) {
return kwMerchantMeterMapper.findVoList(record);
}

@Override
public List<KwMerchantMeterDataVo> findDataVoList(KwMerchantMeterDataDto record) {
return kwMerchantMeterMapper.findDataVoList(record);
}

@Override


+ 3
- 0
mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java Visa fil

@@ -9,6 +9,7 @@ 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.enums.EnumMeterStatus;
import com.iformall.mapper.KwMeterDataMapper;
import com.iformall.service.kw.KwMeterDataService;
import io.swagger.annotations.ApiOperation;
@@ -34,6 +35,7 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {
public PageInfo<KwMeterDataVo> listVoAsPage(KwMeterDataDto kwMeterDataDto, Integer pageIndex, Integer pageSize) {
if (kwMeterDataDto.getSortColumn() == null)
kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_DESC);
kwMeterDataDto.setStatus(EnumMeterStatus.VALID.getCode());
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwMeterDataMapper.findVoList(kwMeterDataDto));
}

@@ -41,6 +43,7 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {
public List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto) {
if (kwMeterDataDto.getSortColumn() == null)
kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_ASC);
kwMeterDataDto.setStatus(EnumMeterStatus.VALID.getCode());
return kwMeterDataMapper.findVoList(kwMeterDataDto);
}



+ 108
- 2
mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml Visa fil

@@ -111,12 +111,11 @@
`id`, `tenant_id`, `merchant_id`, `status`, `name`, `link_phone`
</sql>

<select id="findListVo" parameterType="com.iformall.domain.dto.KwMerchantMeterDto" resultMap="BaseResultMapVo">
<select id="findVoList" parameterType="com.iformall.domain.dto.KwMerchantMeterDto" resultMap="BaseResultMapVo">
select <include refid="allColumnsVo"/>
from (
select merchant_id from kw_merchant_meter
where `status` = 0

<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
@@ -130,8 +129,115 @@
, wx_merchant
where temp.merchant_id = id

<if test=" null != merchantName and ''!=merchantName ">
and `name` like concat('%', #{merchantName},'%')
</if>

<if test=" null != linkPhone and ''!=linkPhone ">
and `link_phone` like concat('%', #{linkPhone},'%')
</if>

<if test=" null != merchantStatus ">
and `status` = #{merchantStatus}
</if>

<if test=" null != businessId ">
and `business_id` = #{businessId}
</if>

</select>


<sql id="dynamicWhereConditionsVo">
where 1 = 1

<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>

<if test=" null != boxId ">
and `box_id` = #{boxId}
</if>

<if test=" null != meterId ">
and `meter_id` = #{meterId}
</if>

<if test=" null != address ">
and `address` = #{address}
</if>

<if test=" null != startTime and null != endTime ">
and `create_time` between #{startTime} and #{endTime}
</if>

</sql>

<resultMap id="DataVoResultMap" type="com.iformall.domain.vo.KwMerchantMeterDataVo">
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
<result column="totalPower" jdbcType="INTEGER" property="totalPower"/>
<result column="lastTotalPower" jdbcType="INTEGER" property="lastTotalPower"/>
<result column="usedPower" jdbcType="INTEGER" property="usedPower"/>
<result column="reportTime" jdbcType="VARCHAR" property="reportTime"/>
<result column="recordStartTime" jdbcType="TIMESTAMP" property="recordStartTime"/>
<result column="recordEndTime" jdbcType="TIMESTAMP" property="recordEndTime"/>
<result column="merchantId" jdbcType="BIGINT" property="merchantId"/>
<result column="merchantName" jdbcType="VARCHAR" property="merchantName"/>
<result column="merchantLinkPhone" jdbcType="VARCHAR" property="merchantLinkPhone"/>
<result column="businessId" jdbcType="INTEGER" property="businessId"/>
<result column="businessTitle" jdbcType="VARCHAR" property="businessTitle"/>
</resultMap>

<select id="findDataVoList" parameterType="com.iformall.domain.dto.KwMerchantMeterDataDto" resultMap="DataVoResultMap">
select
temp.tenant_id,
<if test=" null != merchantId ">
mm.merchant_id as merchantId,
m.name as merchantName,
m.link_phone as merchantLinkPhone,
</if>
<if test=" null != businessId ">
m.business_id as businessId,
</if>
min(temp.recordStartTime) as recordStartTime,
max(temp.recordEndTime) as recordEndTime,
sum(temp.totalPower) as totalPower,
sum(temp.lastTotalPower) as lastTotalPower,
sum(temp.usedPower) as usedPower
from
kw_merchant_meter mm,
(SELECT
tenant_id,box_id,meter_id,
min(last_device_time) as recordStartTime,
min(last_total_power) as lastTotalPower,
max(device_time) as recordEndTime,
max(total_power) as totalPower,
sum(used_power) as usedPower
FROM kw_meter_data
<include refid="dynamicWhereConditionsVo"/>
group by meter_id
) as temp,
wx_merchant m
where mm.status = 0
and mm.meter_id = temp.meter_id
and mm.merchant_id = m.id
<if test=" null != merchantStatus ">
and m`status` = #{merchantStatus}
</if>
group by
temp.tenant_id
<if test=" null != merchantId ">
,merchantId
</if>
<if test=" null != businessId ">
,businessId
</if>
<if test=" null != limitCount">limit #{limitCount}</if>
<if test=" null != sortColumns">order by ${sortColumns}</if>
</select>



<select id="getById" parameterType="java.lang.Long" resultMap="BaseResultMapVo">
select <include refid="allColumnsVo"/>
from (


+ 4
- 2
mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml Visa fil

@@ -143,7 +143,6 @@

</sql>


<select id="findVoList" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap">
select
temp.tenant_id,
@@ -183,7 +182,10 @@
FROM kw_meter_data
<include refid="dynamicWhereConditionsVo"/>
group by reportTime,meter_id
) as temp
) as temp join kw_meter on id = temp.meter_id
<if test=" null != status ">
and `status` = #{status}
</if>
group by
temp.reportTime,
temp.tenant_id


Laddar…
Avbryt
Spara