Bläddra i källkod

[电表][修改]:电表商户接口,统计接口

release_toaliyun_real
hupeng 6 år sedan
förälder
incheckning
df474ec4b8
6 ändrade filer med 166 tillägg och 63 borttagningar
  1. +21
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java
  2. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java
  3. +126
    -56
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java
  5. +2
    -2
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMerchantMeterServiceImpl.java
  6. +12
    -0
      mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml

+ 21
- 4
mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java Visa fil

@@ -9,6 +9,8 @@ import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.KwMerchantMeterDto; import com.iformall.domain.dto.KwMerchantMeterDto;
import com.iformall.domain.dto.KwMeterDataDto; import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.KwMerchantMeter; import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.po.KwMeter;
import com.iformall.domain.vo.KwMerchantMeterVo;
import com.iformall.enums.EnumMerchantMeterStatus; import com.iformall.enums.EnumMerchantMeterStatus;
import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumMerchantStatus;
import com.iformall.service.kw.KwMerchantMeterService; import com.iformall.service.kw.KwMerchantMeterService;
@@ -34,13 +36,15 @@ public class KwMerchantMeterController extends BaseController {
@Autowired @Autowired
private KwMerchantMeterService kwMerchantMeterService; private KwMerchantMeterService kwMerchantMeterService;


@Autowired
private KwMeterDataService kwMeterDataService;


@ApiOperation("设备列表")
@ApiOperation("商户列表")
@GetMapping("list") @GetMapping("list")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
@SystemControllerLog(description = "电表设备-设备列表")
@SystemControllerLog(description = "商户列表")
public Result list(@ModelAttribute KwMerchantMeterDto kwMerchantMeterDto, Integer pageNum, Integer pageSize) { public Result list(@ModelAttribute KwMerchantMeterDto kwMerchantMeterDto, Integer pageNum, Integer pageSize) {
if (kwMerchantMeterDto == null) kwMerchantMeterDto = new KwMerchantMeterDto(); if (kwMerchantMeterDto == null) kwMerchantMeterDto = new KwMerchantMeterDto();
kwMerchantMeterDto.setTenantId(getTenantId()); kwMerchantMeterDto.setTenantId(getTenantId());
@@ -48,6 +52,21 @@ public class KwMerchantMeterController extends BaseController {
return new ResultData(kwMerchantMeterService.listVoAsPage(kwMerchantMeterDto, pageNum, pageSize)); return new ResultData(kwMerchantMeterService.listVoAsPage(kwMerchantMeterDto, pageNum, pageSize));
} }


@ApiOperation("商户详情")
@GetMapping("detail")
@SystemControllerLog(description = "商户详情")
public Result detail(@RequestParam Long id) {
if (id == null)
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);
KwMerchantMeterVo kwMerchantMeterVo = kwMerchantMeterService.getById(id);
if (kwMerchantMeterVo == null)
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND);
kwMerchantMeterVo.getMeterList().stream().forEach(m->{
m.setLatestRecord(kwMeterDataService.findLastRecord(m.getId()));
});
return new ResultData(kwMerchantMeterVo);
}

@ApiOperation("绑定设备") @ApiOperation("绑定设备")
@PostMapping("bind") @PostMapping("bind")
@SystemControllerLog(description = "电表设备-绑定设备") @SystemControllerLog(description = "电表设备-绑定设备")
@@ -94,6 +113,4 @@ public class KwMerchantMeterController extends BaseController {
return new ResultData(); return new ResultData();
} }




} }

+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java Visa fil

@@ -4,12 +4,16 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.dto.KwMerchantMeterDto; import com.iformall.domain.dto.KwMerchantMeterDto;
import com.iformall.domain.po.KwMerchantMeter; import com.iformall.domain.po.KwMerchantMeter;
import com.iformall.domain.vo.KwMerchantMeterVo; import com.iformall.domain.vo.KwMerchantMeterVo;
import org.apache.ibatis.annotations.Param;


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


public interface KwMerchantMeterMapper extends CommonMapper<KwMerchantMeter, Long> { public interface KwMerchantMeterMapper extends CommonMapper<KwMerchantMeter, Long> {


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

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

int unbindBatch(KwMerchantMeter param); int unbindBatch(KwMerchantMeter param);


} }

+ 126
- 56
mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java Visa fil

@@ -92,6 +92,7 @@ public class WxChartServiceImpl implements WxChartDataService {
KwMeterService kwMeterService; KwMeterService kwMeterService;





@Override @Override
public ResultData queryData(Map<String, String> paramsMap) { public ResultData queryData(Map<String, String> paramsMap) {
String tenantId = paramsMap.get("tenantId"); String tenantId = paramsMap.get("tenantId");
@@ -348,6 +349,59 @@ public class WxChartServiceImpl implements WxChartDataService {
return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN); return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN);
} }



private Date addDay(int addDayAmount) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date date = c.getTime();
return date;
}

private Date addMonth(int addMountAmount) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, addMountAmount);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date date = c.getTime();
return date;
}

private Date addDay(Date date , int addDayAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, addDayAmount);
Date result = c.getTime();
return result;
}

private Date addMonth(Date date, int addMountAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, addMountAmount);
Date result = c.getTime();
return result;
}

private Date convertDateAndAdd(Date date, int addDayAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date result = c.getTime();
return result;
}


/** /**
* 用电分析 * 用电分析
* @param tenantId * @param tenantId
@@ -355,31 +409,58 @@ public class WxChartServiceImpl implements WxChartDataService {
*/ */
private ResultData getPowerSummery(String tenantId,Map<String, String> paramsMap){ private ResultData getPowerSummery(String tenantId,Map<String, String> paramsMap){


Map<String,Object> resultMap = new LinkedMap();
Map<String,Object> resultMap = new HashMap<>();


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


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


for (int i = 30; i >= 0; i--) {
String date = new SimpleDateFormat("yyyy-MM-dd").format(addDay(-i));
if (kwMeterDataVosDaily.size() >= 30) {
resultMap.put("monthDailyPower", monthDailyPower);
} else {
for (int i = 29; i >= 0; i--) {
String date = new SimpleDateFormat("yyyy-MM-dd").format(addDay(-i));
Optional<KwMeterDataVo> optionalKwMeterDataVo = kwMeterDataVosDaily.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);
}
}
}

resultMap.put("monthDailyPower",monthDailyPower);

kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setStartTime(addMonth(-11));
kwMeterDataDto.setEndTime(addMonth(1));
kwMeterDataDto.setTenantId(tenantId);
kwMeterDataDto.setReportType(EnumMeterDataReportType.MONTH.getCode());
List<KwMeterDataVo> kwMeterDataVos = 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 = kwMeterDataVos.stream().filter(md->md.getReportTime().equals(date)).findFirst();
if (optionalKwMeterDataVo.isPresent()) if (optionalKwMeterDataVo.isPresent())
monthDailyPower.add(optionalKwMeterDataVo.get());
yearMonthlyPower.add(optionalKwMeterDataVo.get());
else { else {
KwMeterDataVo kwMeterDataVo = new KwMeterDataVo(); KwMeterDataVo kwMeterDataVo = new KwMeterDataVo();
kwMeterDataVo.setReportTime(date); kwMeterDataVo.setReportTime(date);
monthDailyPower.add(kwMeterDataVo);
yearMonthlyPower.add(kwMeterDataVo);
} }
} }


resultMap.put("yearMonthlyPower",yearMonthlyPower);


resultMap.put("monthDailyPower",monthDailyPower);


kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode());
List<KwMeterDataVo> monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto); List<KwMeterDataVo> monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto);
@@ -387,40 +468,51 @@ public class WxChartServiceImpl implements WxChartDataService {
resultMap.put("monthHoursPower",monthHoursPower); resultMap.put("monthHoursPower",monthHoursPower);


kwMeterDataDto = new KwMeterDataDto(); kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setStartTime(addDay(-29));
kwMeterDataDto.setEndTime(addDay(1));
kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo currentPower = kwMeterDataService.getPower(kwMeterDataDto);
if (currentPower.getTotalPower() != null)
resultMap.put("totalPower",currentPower.getTotalPower());
if (currentPower.getUsedPower() != null)
resultMap.put("UsedPower",currentPower.getUsedPower());

kwMeterDataDto.setStartTime(addDay(-60));
kwMeterDataDto.setEndTime(addDay(-30));
{
kwMeterDataDto.setStartTime(addDay(0));
kwMeterDataDto.setEndTime(addDay(new Date(), 0));
kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo todayUsedPower = kwMeterDataService.getPower(kwMeterDataDto);
if (todayUsedPower.getUsedPower() != null)
resultMap.put("todayUsedPower", todayUsedPower.getUsedPower());

kwMeterDataDto.setStartTime(addDay(-1));
kwMeterDataDto.setEndTime(addDay(new Date(), -1));
kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo yesterdayUsedPower = kwMeterDataService.getPower(kwMeterDataDto);
if (yesterdayUsedPower.getUsedPower() != null)
resultMap.put("yesterdayUsedPower", yesterdayUsedPower.getUsedPower());

if (yesterdayUsedPower.getUsedPower() != null && todayUsedPower.getUsedPower() != null && yesterdayUsedPower.getUsedPower() != 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 + "%");
} else {
resultMap.put("todayUsedPowerRate", "--" + "%");
}
}
kwMeterDataDto.setStartTime(addMonth(0));
kwMeterDataDto.setEndTime(addMonth(new Date(),0));
kwMeterDataDto.setTenantId(tenantId); kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo lastMonthPower = kwMeterDataService.getPower(kwMeterDataDto);
if (lastMonthPower.getTotalPower() != null)
resultMap.put("lastTotalPower",lastMonthPower.getTotalPower());
if (lastMonthPower.getUsedPower() != null)
resultMap.put("lastUsedPower",lastMonthPower.getUsedPower());
KwMeterDataVo thisMonthUsedPower = kwMeterDataService.getPower(kwMeterDataDto);
if (thisMonthUsedPower.getUsedPower() != null)
resultMap.put("thisMonthUsedPower",thisMonthUsedPower.getUsedPower());


kwMeterDataDto.setStartTime(addMonth(-1));
kwMeterDataDto.setEndTime(addMonth(new Date(),-1));
kwMeterDataDto.setTenantId(tenantId);
KwMeterDataVo lastMonthUsedPower = kwMeterDataService.getPower(kwMeterDataDto);
if (lastMonthUsedPower.getUsedPower() != null)
resultMap.put("yesterdayUsedPower",lastMonthUsedPower.getUsedPower());


if (lastMonthPower.getTotalPower() !=null && currentPower.getTotalPower() != null && lastMonthPower.getTotalPower() !=0) {
double hbd = (double) (currentPower.getTotalPower() - lastMonthPower.getTotalPower()) / lastMonthPower.getTotalPower() * 100;
if (lastMonthUsedPower.getUsedPower() !=null && thisMonthUsedPower.getUsedPower() != null && lastMonthUsedPower.getUsedPower() !=0) {
double hbd = (double) (thisMonthUsedPower.getUsedPower() - lastMonthUsedPower.getUsedPower()) / lastMonthUsedPower.getUsedPower() * 100;
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
resultMap.put("totalPowerRate", hb + "%");
resultMap.put("monthUsedPowerRate", hb + "%");
} else { } else {
resultMap.put("totalPowerRate", "--" + "%");
resultMap.put("monthUsedPowerRate", "--" + "%");
} }


if (lastMonthPower.getUsedPower() !=null && currentPower.getUsedPower() != null && lastMonthPower.getUsedPower() !=0) {
double hbd = (double) (currentPower.getUsedPower() - lastMonthPower.getUsedPower()) / lastMonthPower.getUsedPower() * 100;
double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
resultMap.put("usedPowerRate", hb + "%");
} else {
resultMap.put("usedPowerRate", "--" + "%");
}
KwMeter kwMeter = new KwMeter(); KwMeter kwMeter = new KwMeter();
kwMeter.setTenantId(tenantId); kwMeter.setTenantId(tenantId);
kwMeter.setStatus(EnumMeterStatus.VALID.getCode()); kwMeter.setStatus(EnumMeterStatus.VALID.getCode());
@@ -2394,28 +2486,6 @@ public class WxChartServiceImpl implements WxChartDataService {
return new ResultData(datamap); return new ResultData(datamap);
} }


private Date addDay(int addDayAmount) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date date = c.getTime();
return date;
}

private Date convertDateAndAdd(Date date, int addDayAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date result = c.getTime();
return result;
}


private long getCountByAge(EnumAgeInfo a, Calendar c, WxCUserBasicInfoDto dto) { private long getCountByAge(EnumAgeInfo a, Calendar c, WxCUserBasicInfoDto dto) {
if (a.getStart() != 0 || a.getEnd() != 0) { if (a.getStart() != 0 || a.getEnd() != 0) {


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

@@ -30,7 +30,7 @@ public interface KwMerchantMeterService {
* @param id * @param id
* @return * @return
*/ */
KwMerchantMeter getById(Long id);
KwMerchantMeterVo getById(Long id);


/** /**
* 保存或更新实体 * 保存或更新实体


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

@@ -41,8 +41,8 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService {
} }


@Override @Override
public KwMerchantMeter getById(Long id) {
return kwMerchantMeterMapper.selectByPrimaryKey(id);
public KwMerchantMeterVo getById(Long id) {
return kwMerchantMeterMapper.getById(id);
} }






+ 12
- 0
mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml Visa fil

@@ -132,6 +132,18 @@


</select> </select>


<select id="getById" parameterType="java.lang.Long" resultMap="BaseResultMapVo">
select <include refid="allColumnsVo"/>
from (
select merchant_id from kw_merchant_meter
where `status` = 0
and `merchant_id` = #{merchantId}
group by merchant_id
) temp
, wx_merchant
where temp.merchant_id = id
</select>

<update id="unbindBatch" parameterType="com.iformall.domain.po.KwMerchantMeter"> <update id="unbindBatch" parameterType="com.iformall.domain.po.KwMerchantMeter">
update kw_merchant_meter set status = 1 update kw_merchant_meter set status = 1
where status = 0 where status = 0


Laddar…
Avbryt
Spara