| @@ -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(); | |||
| } | |||
| } | |||
| @@ -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)); | |||
| } | |||
| } | |||
| @@ -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"), | |||
| @@ -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); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -18,4 +18,6 @@ public interface KwMeterDataService { | |||
| List<KwMeterData> findList(KwMeterData kwMeterData); | |||
| int save(List<KwMeterData> recordList); | |||
| KwMeterDataVo getMeterUsedPower(KwMeterDataDto dto); | |||
| } | |||
| @@ -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)); | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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> | |||