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 bbec16d34..ce81993af 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/device/KwMerchantMeterController.java @@ -9,6 +9,8 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.dto.KwMerchantMeterDto; import com.iformall.domain.dto.KwMeterDataDto; 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.EnumMerchantStatus; import com.iformall.service.kw.KwMerchantMeterService; @@ -34,13 +36,15 @@ public class KwMerchantMeterController extends BaseController { @Autowired private KwMerchantMeterService kwMerchantMeterService; + @Autowired + private KwMeterDataService kwMeterDataService; - @ApiOperation("设备列表") + @ApiOperation("商户列表") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", 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) { if (kwMerchantMeterDto == null) kwMerchantMeterDto = new KwMerchantMeterDto(); kwMerchantMeterDto.setTenantId(getTenantId()); @@ -48,6 +52,21 @@ public class KwMerchantMeterController extends BaseController { 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("绑定设备") @PostMapping("bind") @SystemControllerLog(description = "电表设备-绑定设备") @@ -94,6 +113,4 @@ public class KwMerchantMeterController extends BaseController { return new ResultData(); } - - } diff --git a/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java b/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java index 6c933b2ad..3030aa7ef 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/KwMerchantMeterMapper.java @@ -4,12 +4,16 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.dto.KwMerchantMeterDto; import com.iformall.domain.po.KwMerchantMeter; import com.iformall.domain.vo.KwMerchantMeterVo; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface KwMerchantMeterMapper extends CommonMapper { List findListVo(KwMerchantMeterDto param); + + KwMerchantMeterVo getById(@Param("merchantId")Long merchantId); + int unbindBatch(KwMerchantMeter param); } 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 b8388c014..a0c5e37b0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -92,6 +92,7 @@ public class WxChartServiceImpl implements WxChartDataService { KwMeterService kwMeterService; + @Override public ResultData queryData(Map paramsMap) { String tenantId = paramsMap.get("tenantId"); @@ -348,6 +349,59 @@ public class WxChartServiceImpl implements WxChartDataService { 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 @@ -355,31 +409,58 @@ public class WxChartServiceImpl implements WxChartDataService { */ private ResultData getPowerSummery(String tenantId,Map paramsMap){ - Map resultMap = new LinkedMap(); + Map resultMap = new HashMap<>(); KwMeterDataDto kwMeterDataDto = new KwMeterDataDto(); kwMeterDataDto.setStartTime(addDay(-29)); kwMeterDataDto.setEndTime(addDay(1)); kwMeterDataDto.setTenantId(tenantId); kwMeterDataDto.setReportType(EnumMeterDataReportType.DAY.getCode()); - List kwMeterDataVos = kwMeterDataService.findVoList(kwMeterDataDto); + List kwMeterDataVosDaily = kwMeterDataService.findVoList(kwMeterDataDto); List 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 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 kwMeterDataVos = 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(); if (optionalKwMeterDataVo.isPresent()) - monthDailyPower.add(optionalKwMeterDataVo.get()); + yearMonthlyPower.add(optionalKwMeterDataVo.get()); else { KwMeterDataVo kwMeterDataVo = new KwMeterDataVo(); kwMeterDataVo.setReportTime(date); - monthDailyPower.add(kwMeterDataVo); + yearMonthlyPower.add(kwMeterDataVo); } } + resultMap.put("yearMonthlyPower",yearMonthlyPower); - resultMap.put("monthDailyPower",monthDailyPower); kwMeterDataDto.setReportType(EnumMeterDataReportType.BY_HOUR.getCode()); List monthHoursPower = kwMeterDataService.findVoList(kwMeterDataDto); @@ -387,40 +468,51 @@ public class WxChartServiceImpl implements WxChartDataService { resultMap.put("monthHoursPower",monthHoursPower); 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); - 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(); - resultMap.put("totalPowerRate", hb + "%"); + resultMap.put("monthUsedPowerRate", hb + "%"); } 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.setTenantId(tenantId); kwMeter.setStatus(EnumMeterStatus.VALID.getCode()); @@ -2394,28 +2486,6 @@ public class WxChartServiceImpl implements WxChartDataService { 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) { if (a.getStart() != 0 || a.getEnd() != 0) { 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 e00c519d7..a6ce1af21 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/KwMerchantMeterService.java @@ -30,7 +30,7 @@ public interface KwMerchantMeterService { * @param id * @return */ - KwMerchantMeter getById(Long id); + KwMerchantMeterVo getById(Long id); /** * 保存或更新实体 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 d650a4d90..544508e5f 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 @@ -41,8 +41,8 @@ public class KwMerchantMeterServiceImpl implements KwMerchantMeterService { } @Override - public KwMerchantMeter getById(Long id) { - return kwMerchantMeterMapper.selectByPrimaryKey(id); + public KwMerchantMeterVo getById(Long id) { + return kwMerchantMeterMapper.getById(id); } diff --git a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml index 023035aba..c4a71658a 100644 --- a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml @@ -132,6 +132,18 @@ + + update kw_merchant_meter set status = 1 where status = 0