src/main/kotlin/com/flightfeather/uav/dataprocess/ElectricDailyAnalysis.kt
@@ -6,6 +6,7 @@ import com.flightfeather.uav.lightshare.bean.ElectricDailyInfo import java.time.LocalDateTime import java.time.ZoneId import kotlin.math.round /** * ç¨çµéæ¥åæ @@ -39,24 +40,30 @@ if (dataMap[it.mvStatCode]?.containsKey(day) != true) dataMap[it.mvStatCode]?.put(day, mutableListOf()) val dayList = dataMap[it.mvStatCode]?.get(day)!! dayList.add(it) // æ°æ®å¯¹åºç¶æ val device = deviceMap[it.mvStatCode] val status = getStatus(it, device) // 2.1 æ ¹æ®æ°æ®åæ¢å½å设å¤ç±»å if (!dailyInfoMap.containsKey(day)) dailyInfoMap[day] = ElectricDailyInfo() val dayResult = dailyInfoMap[day]!! dayResult.day = day dayResult.changeType(deviceMap[it.mvStatCode]) dayResult.changeType(device) // 2.2 æ¯æ¥è·åçé¦ä¸ªæ°æ®ï¼å³ä¸ºå½æ¥è¯¥è®¾å¤å¼å¯æ¶é´ if (dayList.size == 1) dayResult.setStartTime(it.mvDataTime) // 2.3 æ¯ä¸ªæ°æ®ä¸ºåéåå¼ï¼æ»æ°ä»£è¡¨å¼å¯æ¶é¿ dayResult.addRunTime(1) // 2.4 ç»è®¡å½æ¥è®¾å¤è¿è¡æ¶æ®µï¼å°æ¶ï¼ // 2.3 æ¯æ¥è·åçé¦ä¸ªä¸ºè¿è¡ç¶æçæ°æ®ï¼å³ä¸ºå½æ¥è¯¥è®¾å¤æ£å¼è¿è¡å¼å§æ¶é´ dayResult.setRunningTime(status, it) // 2.4 æ¯ä¸ªæ°æ®ä¸ºåéåå¼ï¼æ»æ°ä»£è¡¨å¼å¯æ¶é¿ dayResult.addRunTime(status) // 2.5 ç»è®¡å½æ¥è®¾å¤è¿è¡æ¶æ®µï¼å°æ¶ï¼ val hour = LocalDateTime.ofInstant(it.mvDataTime.toInstant(), ZoneId.systemDefault()).hour dayResult.addRunPeriod(hour) } // 2.5 ç»è®¡åå°è®¾å¤æ¯æ¥ç»ææ¶é´ååæç»æ // 2.6 ç»è®¡åå°è®¾å¤æ¯æ¥ç»ææ¶é´ååæç»æ dataMap.forEach { (dCode, dayMap) -> dayMap.forEach { (day, list) -> dailyInfoMap[day]?.apply { changeType(deviceMap[dCode]) setEndTime(list.last().mvDataTime) } @@ -66,4 +73,39 @@ return result } /** * è·å设å¤å½åè¿è¡ç¶æ * @param e 设å¤ç¨çµéçæµæ°æ® * @param d ä¼ä¸è®¾å¤ä¿¡æ¯ * @return æ°æ®å¯¹åºç»æä¿¡æ¯ï¼<ç¶æç¼å·ï¼ç¶ææè¿°ï¼çµæµåå¼> */ fun getStatus(e: ElectricMinuteValue?, d: CompanyDevice?): Triple<String, String, Double> { var values = mutableListOf<Int>().apply { d?.cdLimits?.split(";")?.forEach { it.toIntOrNull()?.let { i -> add(i) } } } var status = d?.cdStatus?.split(";") ?: emptyList() var statusNames = d?.cdStatusName?.split(";") ?: emptyList() if (values.isEmpty()) values = mutableListOf(1, 100) if (status.isEmpty()) status = listOf("0", "2", "3") if (statusNames.isEmpty()) statusNames = listOf("å¾ æº", "è¿è¡", "è¶ è´è·") if (e == null) { return Triple(status.first(), statusNames.first(), .0) } val electricityList = mutableListOf<Double>() electricityList.add(e.mvElectricityA) electricityList.add(e.mvElectricityB) electricityList.add(e.mvElectricityC) val avg = round(electricityList.average() * 100) / 100 for (i in values.indices) { if (avg < values[i]) { return Triple(status[i], statusNames[i], avg) } } return Triple(status.last(), statusNames.last(), avg) } } src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt
@@ -1,6 +1,9 @@ package com.flightfeather.uav.lightshare.bean import com.flightfeather.uav.dataprocess.ElectricDailyAnalysis import com.flightfeather.uav.domain.entity.CompanyDevice import com.flightfeather.uav.domain.entity.ElectricMinuteValue import com.flightfeather.uav.lightshare.eunm.ElectricityStatus import com.flightfeather.uav.lightshare.eunm.ElectricityType import java.util.* @@ -17,8 +20,7 @@ private var plSTime: Date? = null // å¼å¯æ¶é´ private var plRTime: Date? = null // æ£å¼è¿è¡æ¶é´ private var plETime: Date? = null // å ³éæ¶é´ // FIXME: 2021/12/1 ï¼ç¶æä¸ºè¿è¡ãé«è´è·çæ¶é¿ï¼ private var plRunTime: Int = 0 // è¿è¡æ¶é¿ï¼åéï¼ private var plRunTime: Int = 0 // è¿è¡æ¶é¿ï¼åéï¼ï¼ç¶æä¸ºè¿è¡ãé«è´è·çæ¶é¿ï¼ private var plRunPeriod = mutableListOf<Int>()// è¿è¡æ¶æ®µï¼å°æ¶ï¼ /***********åå设å¤Purify, pf********************/ private var pfDCode: String? = null @@ -28,8 +30,12 @@ private var pfRunTime: Int = 0 private var pfRunPeriod = mutableListOf<Int>() // TODO: 2021/12/1 æ£å¼è¿è¡æ¶é´å·® // TODO: 2021/12/1 å ³éæ¶é´å·® private var rTimeDiff:Int = 0 //æ£å¼è¿è¡æ¶é´å·® private var sResult:Boolean = false //设å¤å¼å¯æ¯å¦åè§ private var eTimeDiff: Int = 0 //å ³éæ¶é´å·® private var eResult: Boolean = false //设å¤å ³éæ¯å¦åè§ private var runningTimeDiff = 0 //è¿è¡æ¶é¿å·® private var rResult:Boolean = false //è¿è¡è¿ç¨æ¯å¦åè§ private var dailyResult: String = ""// 彿¥åæç»ææè¿° // å½å设å¤ç±»åï¼ç¨äºæå ¥æ°æ®æ¶å³å®èµå¼å段 @@ -65,18 +71,39 @@ } } fun setRunningTime(date: Date) { /** * 设置æ£å¼è¿è¡æ¶é´ */ fun setRunningTime(s: Triple<String, String, Double>, e:ElectricMinuteValue?) { when (deviceType) { ElectricityType.ProductionLine -> { if (plRTime == null) { if (s.first.toInt() >= ElectricityStatus.C.value) { plRTime = e?.mvDataTime } } } ElectricityType.Purify -> { if (pfRTime == null) { if (s.first.toInt() >= ElectricityStatus.C.value) { pfRTime = e?.mvDataTime } } } else -> Unit } } /** * å¢å è¿è¡æ¶é¿ */ fun addRunTime(min: Int) { when (deviceType) { ElectricityType.ProductionLine -> plRunTime += min ElectricityType.Purify -> pfRunTime += min else -> Unit fun addRunTime(s: Triple<String, String, Double>) { if (s.first.toInt() >= ElectricityStatus.C.value) { when (deviceType) { ElectricityType.ProductionLine -> plRunTime++ ElectricityType.Purify -> pfRunTime++ else -> Unit } } } @@ -95,11 +122,17 @@ * ç»è®¡å¾åºå½æ¥åæç»æ */ fun getResult() { // 1. 设å¤å¼å¯å ³éæ¯å¦åè§ // TODO: 2021/12/1 1. è®¾å¤æ£å¼è¿è¡æ¶é´å·® =ãå¼å¯æ¯å¦åè§ if (pfRTime != null && plRTime != null) { rTimeDiff = ((pfRTime!!.time - plRTime!!.time) / 1000 / 60).toInt() sResult = rTimeDiff > 0 } // TODO: 2021/12/1 2ï¼è®¾å¤å ³éæ¶é´å·® =ãå ³éæ¯å¦åè§ if (pfETime != null && plETime != null) { eTimeDiff = ((pfETime!!.time - plETime!!.time) / 1000 / 60).toInt() } // TODO: 2021/12/1 3. è¿è¡æ¶é¿å·® =ãè¿è¡è¿ç¨æ¯å¦åè§ runningTimeDiff = pfRunTime - plRunTime // TODO: 2021/12/1 4. 综åå¤æç»æ // TODO: 2021/12/1 5. 夿¥æè¦ç»è®¡ï¼è¿è¡å¤©æ°ãåè§å¤©æ°ç src/main/kotlin/com/flightfeather/uav/lightshare/eunm/ElectricityStatus.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.flightfeather.uav.lightshare.eunm /** * @author riku * Date: 2021/12/2 * ç¨çµéçæµç设å¤çè¿è¡ç¶æ */ enum class ElectricityStatus(val value: Int, val des: String) { A(0, "å¾ æº"), B(1, "ä½è´è·è¿è¡æé¢ç"), C(2, "è¿è¡"), D(3, "è¶ è´è·"), } src/main/kotlin/com/flightfeather/uav/lightshare/eunm/ElectricityType.kt
@@ -2,7 +2,8 @@ /** * @author riku * Date: 2019/9/26 * Date: 2021/11/26 * ç¨çµéçæµå¯¹åºçä¼ä¸è®¾å¤ç±»å */ enum class ElectricityType(val value: Int){ //äº§çº¿è®¾å¤ src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/ElectricityServiceImpl.kt
@@ -200,7 +200,7 @@ d1eA = d?.mvElectricityA ?: .0 d1eB = d?.mvElectricityB ?: .0 d1eC = d?.mvElectricityC ?: .0 val s = getStatus(d, d1) val s = ElectricDailyAnalysis.getStatus(d, d1) d1Status = s.first d1StatusName = s.second d1Avg = s.third @@ -238,7 +238,7 @@ d2eA = d?.mvElectricityA ?: .0 d2eB = d?.mvElectricityB ?: .0 d2eC = d?.mvElectricityC ?: .0 val s = getStatus(d, d2) val s = ElectricDailyAnalysis.getStatus(d, d2) d2Status = s.first d2StatusName = s.second d2Avg = s.third @@ -274,41 +274,6 @@ } 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 { it.toIntOrNull()?.let { i -> add(i) } } } var status = d?.cdStatus?.split(";") ?: emptyList() var statusNames = d?.cdStatusName?.split(";") ?: emptyList() if (values.isEmpty()) values = mutableListOf(1, 100) if (status.isEmpty()) status = listOf("0", "2", "3") if (statusNames.isEmpty()) statusNames = listOf("å¾ æº", "è¿è¡", "è¶ è´è·") if (e == null) { return Triple(status.first(), statusNames.first(), .0) } val electricityList = mutableListOf<Double>() electricityList.add(e.mvElectricityA) electricityList.add(e.mvElectricityB) electricityList.add(e.mvElectricityC) val avg = round(electricityList.average() * 100) / 100 for (i in values.indices) { if (avg < values[i]) { return Triple(status[i], statusNames[i], avg) } } return Triple(status.last(), statusNames.last(), avg) } override fun dailyStatistics(cId: String, startTime: String?, endTime: String?): BaseResponse<List<ElectricDailyInfo>> {