diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java b/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java index ce81993af..cc4268b77 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java @@ -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)); } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDataDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDataDto.java new file mode 100644 index 000000000..09bf87601 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDataDto.java @@ -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; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java index f36fd4c5d..5a938b871 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/KwMerchantMeterDto.java @@ -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; diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java index e9911fc69..54d79d173 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/KwMeterDataDto.java @@ -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"), diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/KwMerchantMeterDataVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/KwMerchantMeterDataVo.java new file mode 100644 index 000000000..cc89b2965 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/KwMerchantMeterDataVo.java @@ -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; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java b/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java index 3030aa7ef..7500d700b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java @@ -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 { - List findListVo(KwMerchantMeterDto param); + List findVoList(KwMerchantMeterDto param); + + List findDataVoList(KwMerchantMeterDataDto param); KwMerchantMeterVo getById(@Param("merchantId")Long merchantId); diff --git a/mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java b/mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java index 0e1748ca8..1342d65fe 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/KwMeterDataMapper.java @@ -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; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java index dc1d50d4b..e5db7c637 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -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 kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto); + List kwMeterDataVosMonthly = kwMeterDataService.findVoList(kwMeterDataDto); List yearMonthlyPower = new ArrayList<>(); for (int i = 11; i >= 0; i--) { String date = new SimpleDateFormat("yyyy-MM").format(addMonth(-i)); - Optional optionalKwMeterDataVo = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst(); + Optional 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 kwMeterDataVosHourly = kwMeterDataService.findVoList(kwMeterDataDto); + + List todayHourlyPower = new ArrayList<>(); + + for (int i = 0; i <= 23; i++) { + String date = new SimpleDateFormat("HH:mm").format(addHour(i)); + Optional 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 merchantTop10 = kwMerchantMeterService.findDataVoList(kwMerchantMeterDataDto); + resultMap.put("merchantTop10",merchantTop10); + + kwMerchantMeterDataDto.setMerchantId(null); + kwMerchantMeterDataDto.setBusinessId(0); + kwMerchantMeterDataDto.setLimitCount(null); + List businessPower = kwMerchantMeterService.findDataVoList(kwMerchantMeterDataDto); + + List businessList = wxBusinessService.findListAll(tenantId,null); + businessList.stream().forEach(b->{ + Optional 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); } diff --git a/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java b/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java index a6ce1af21..98e300cc8 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java @@ -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 findListVo(KwMerchantMeterDto record); + List findVoList(KwMerchantMeterDto record); + List findDataVoList(KwMerchantMeterDataDto record); + int selectCount(KwMerchantMeter record); int unbindBatch(KwMerchantMeter record); diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java index 544508e5f..2e0df06a4 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java @@ -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 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 findListVo(KwMerchantMeterDto record) { - return kwMerchantMeterMapper.findListVo(record); + public List findVoList(KwMerchantMeterDto record) { + return kwMerchantMeterMapper.findVoList(record); + } + + @Override + public List findDataVoList(KwMerchantMeterDataDto record) { + return kwMerchantMeterMapper.findDataVoList(record); } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java index 403a88a11..b5f55522e 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java @@ -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 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 findVoList(KwMeterDataDto kwMeterDataDto) { if (kwMeterDataDto.getSortColumn() == null) kwMeterDataDto.setSortColumns(KwMeterDataDto.Field.ReportTime_ASC); + kwMeterDataDto.setStatus(EnumMeterStatus.VALID.getCode()); return kwMeterDataMapper.findVoList(kwMeterDataDto); } diff --git a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml index 4d92dd519..6435ab1f7 100644 --- a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml @@ -111,12 +111,11 @@ `id`, `tenant_id`, `merchant_id`, `status`, `name`, `link_phone` - select from ( select merchant_id from kw_merchant_meter where `status` = 0 - and `tenant_id` = #{tenantId} @@ -130,8 +129,115 @@ , wx_merchant where temp.merchant_id = id + + and `name` like concat('%', #{merchantName},'%') + + + + and `link_phone` like concat('%', #{linkPhone},'%') + + + + and `status` = #{merchantStatus} + + + + and `business_id` = #{businessId} + + + + + where 1 = 1 + + + and `tenant_id` = #{tenantId} + + + + and `box_id` = #{boxId} + + + + and `meter_id` = #{meterId} + + + + and `address` = #{address} + + + + and `create_time` between #{startTime} and #{endTime} + + + + + + + + + + + + + + + + + + + + + + + select temp.tenant_id, @@ -183,7 +182,10 @@ FROM kw_meter_data group by reportTime,meter_id - ) as temp + ) as temp join kw_meter on id = temp.meter_id + + and `status` = #{status} + group by temp.reportTime, temp.tenant_id