From d9a6f3c2503795f074ac602c24467f804417ad76 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期三, 01 十二月 2021 19:41:34 +0800 Subject: [PATCH] 1. 新增用电量日分析功能 --- src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt | 61 ++++++++++++++++++++++++++---- 1 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt index 01496d2..d055539 100644 --- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt +++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt @@ -1,25 +1,26 @@ package com.flightfeather.uav.lightshare.service.impl import com.flightfeather.uav.common.utils.DateUtil +import com.flightfeather.uav.dataprocess.ElectricDailyAnalysis import com.flightfeather.uav.domain.entity.CompanyDevice import com.flightfeather.uav.domain.entity.ElectricMinuteValue import com.flightfeather.uav.domain.entity.toAirData import com.flightfeather.uav.domain.mapper.CompanyDeviceMapper import com.flightfeather.uav.domain.mapper.ElectricMinuteValueMapper -import com.flightfeather.uav.lightshare.bean.BaseResponse -import com.flightfeather.uav.lightshare.bean.DataHead -import com.flightfeather.uav.lightshare.bean.DataVo -import com.flightfeather.uav.lightshare.bean.ElectricVo +import com.flightfeather.uav.lightshare.bean.* import com.flightfeather.uav.lightshare.eunm.ElectricityType import com.flightfeather.uav.lightshare.service.ElectricityService import com.flightfeather.uav.socket.bean.AirData import com.github.pagehelper.PageHelper +import org.springframework.format.annotation.DateTimeFormat import org.springframework.stereotype.Service import tk.mybatis.mapper.entity.Example import java.text.SimpleDateFormat +import java.time.LocalDate import java.time.LocalDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter +import java.time.format.DateTimeParseException import kotlin.math.round @Service @@ -29,11 +30,9 @@ private var dateFormatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") private var dateFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") + private var dateFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") - override fun getMinuteData( - deviceCode: String, startTime: String?, - endTime: String?, page: Int?, perPage: Int? - ): BaseResponse<List<ElectricMinuteValue>> { + override fun getMinuteData(deviceCode: String, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseResponse<List<ElectricMinuteValue>> { val perP = perPage ?: 60 val p = page ?: 1 val sTime = startTime?.let { dateFormatter.parse(it) } @@ -277,6 +276,12 @@ return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages), data = result) } + /** + * 鑾峰彇璁惧褰撳墠杩愯鐘舵�� + * @param e 璁惧鐢ㄧ數閲忕洃娴嬫暟鎹� + * @param d 浼佷笟璁惧淇℃伅 + * @return 鏁版嵁瀵瑰簲缁撴灉淇℃伅锛�<鐘舵�佺紪鍙凤紝鐘舵�佹弿杩帮紝鐢垫祦鍧囧��> + */ private fun getStatus(e: ElectricMinuteValue?, d: CompanyDevice?): Triple<String, String, Double> { var values = mutableListOf<Int>().apply { d?.cdLimits?.split(";")?.forEach { @@ -305,4 +310,44 @@ } return Triple(status.last(), statusNames.last(), avg) } + + override fun dailyStatistics(cId: String, startTime: String?, endTime: String?): BaseResponse<List<ElectricDailyInfo>> { + // 鏍规嵁浼佷笟id鑾峰彇瀵瑰簲璁惧 + val devices = companyDeviceMapper.selectByExample(Example(CompanyDevice::class.java).apply { + createCriteria().andEqualTo("cdCompanyId", cId) + }) + val deviceCodeList = mutableListOf<String>() + devices.forEach { it?.let { deviceCodeList.add(it.cdDeviceCode) }} + + val st:LocalDateTime + val et:LocalDateTime + // 褰撴病鏈夊紑濮嬫垨缁撴潫鏃堕棿鏃讹紝浣跨敤鏈�鏂颁竴鏉℃暟鎹椂闂寸殑褰撳ぉ浣滀负缁熻鏃堕棿 + if (startTime == null || endTime == null) { + val em = electricMinuteValueMapper.selectOneByExample(Example(ElectricMinuteValue::class.java).apply { + createCriteria().andIn("mvStatCode", deviceCodeList) + orderBy("mvDataTime").desc() + }) + val dataTime = LocalDateTime.ofInstant(em?.mvDataTime?.toInstant(), ZoneId.systemDefault()) + st = dataTime.withHour(0).withMinute(0).withSecond(0) + et = dataTime.withHour(23).withMinute(59).withSecond(59) + } + // 褰撴湁寮�濮嬬粨鏉熸椂闂存椂锛屽垽鏂牸寮忔槸鍚︽纭� + else { + try { + st = LocalDateTime.parse(startTime, dateFormatter3).withHour(0).withMinute(0).withSecond(0) + et = LocalDateTime.parse(endTime, dateFormatter3).withHour(23).withMinute(59).withSecond(59) + } catch (e: DateTimeParseException) { + return BaseResponse(false, "鏃堕棿鏍煎紡閿欒锛屽簲涓簓yyy-MM-dd hh:mm:dd") + } + } + + val dataList = electricMinuteValueMapper.selectByExample(Example(ElectricMinuteValue::class.java).apply { + createCriteria().andIn("mvStatCode", deviceCodeList) + .andBetween("mvDataTime", st, et) + orderBy("mvDataTime") + }) + val result = ElectricDailyAnalysis.analysis(devices, dataList) + + return BaseResponse(true, data = result) + } } \ No newline at end of file -- Gitblit v1.9.3