package cn.flightfeather.supervision.bgtask
|
|
import cn.flightfeather.supervision.SupervisionApplication
|
import cn.flightfeather.supervision.domain.entity.AvgFumeMinuteValue
|
import cn.flightfeather.supervision.domain.entity.FumeMinuteValue
|
import cn.flightfeather.supervision.domain.mapper.AvgFumeMinuteValueMapper
|
import cn.flightfeather.supervision.domain.mapper.FumeMinuteValueMapper
|
import cn.flightfeather.supervision.infrastructure.utils.DateUtil
|
import org.junit.Test
|
import org.junit.runner.RunWith
|
import org.springframework.beans.BeanUtils
|
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.boot.test.context.SpringBootTest
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner
|
import tk.mybatis.mapper.entity.Example
|
import java.time.LocalDateTime
|
import java.time.ZoneId
|
import java.util.*
|
|
@RunWith(SpringJUnit4ClassRunner::class)
|
@SpringBootTest(classes = [SupervisionApplication::class])
|
class PushFumeTest {
|
|
@Autowired
|
lateinit var pushFume: TaskPushFume
|
|
@Autowired
|
lateinit var fumeMinuteValueMapper: FumeMinuteValueMapper
|
|
@Autowired
|
lateinit var avgFumeMinuteValueMapper: AvgFumeMinuteValueMapper
|
|
@Test
|
fun doTask() {
|
val startTime = LocalDateTime.of(2024, 9, 24, 0, 0, 0)
|
val endTime = LocalDateTime.of(2024, 9, 24, 23, 59, 59)
|
|
pushFume.doTask(TaskPushFume.ZQ, mutableListOf(), startTime, endTime)
|
}
|
|
fun getSection(date: Date):String {
|
val l = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())
|
return when (l.minute) {
|
in 0..9 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:00:00"
|
in 10..19 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:10:00"
|
in 20..29 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:20:00"
|
in 30..39 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:30:00"
|
in 40..49 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:40:00"
|
in 50..59 -> "${l.year}-${l.monthValue}-${l.dayOfMonth} ${l.hour}:50:00"
|
else -> throw IllegalStateException("分钟错误:${l.minute}")
|
}
|
}
|
|
fun getAverage(section:String, list: List<FumeMinuteValue>) {
|
val size = list.size
|
if (size == 0) return
|
|
val fumeMinuteValue = FumeMinuteValue()
|
|
list.forEach {
|
fumeMinuteValue.mvStatCode = it.mvStatCode
|
fumeMinuteValue.mvCreateTime = DateUtil.StringToDate(section)
|
fumeMinuteValue.mvDataTime = DateUtil.StringToDate(section)
|
fumeMinuteValue.mvSignal = it.mvSignal
|
fumeMinuteValue.mvFanStatus = it.mvFanStatus
|
fumeMinuteValue.mvPurifierStatus = it.mvPurifierStatus
|
if (fumeMinuteValue.mvFanElectricity == null) {
|
fumeMinuteValue.mvFanElectricity = 0.0
|
}
|
fumeMinuteValue.mvFanElectricity += it.mvFanElectricity
|
|
if (fumeMinuteValue.mvPurifierElectricity == null) {
|
fumeMinuteValue.mvPurifierElectricity = 0.0
|
}
|
fumeMinuteValue.mvPurifierElectricity += it.mvPurifierElectricity
|
if (it.mvFumeConcentration == -1.0) {
|
fumeMinuteValue.mvFumeConcentration = -1.0
|
} else {
|
if (fumeMinuteValue.mvFumeConcentration == null) {
|
fumeMinuteValue.mvFumeConcentration = 0.0
|
}
|
fumeMinuteValue.mvFumeConcentration += it.mvFumeConcentration
|
}
|
|
if (it.mvFumeConcentration2 == -1.0) {
|
fumeMinuteValue.mvFumeConcentration2 = -1.0
|
} else {
|
if (fumeMinuteValue.mvFumeConcentration2 == null) {
|
fumeMinuteValue.mvFumeConcentration2 = 0.0
|
}
|
fumeMinuteValue.mvFumeConcentration2 += it.mvFumeConcentration2
|
}
|
|
if (fumeMinuteValue.mvPm == null) {
|
fumeMinuteValue.mvPm = 0.0
|
}
|
fumeMinuteValue.mvPm += it.mvPm
|
|
if (fumeMinuteValue.mvNmhc == null) {
|
fumeMinuteValue.mvNmhc = 0.0
|
}
|
fumeMinuteValue.mvNmhc += it.mvNmhc
|
}
|
|
fumeMinuteValue.mvFanElectricity /= size
|
fumeMinuteValue.mvPurifierElectricity /= size
|
if (fumeMinuteValue.mvFumeConcentration > -1) fumeMinuteValue.mvFumeConcentration /= size
|
if (fumeMinuteValue.mvFumeConcentration2 > -1) fumeMinuteValue.mvFumeConcentration2 /= size
|
fumeMinuteValue.mvPm /= size
|
fumeMinuteValue.mvNmhc /= size
|
|
saveValue(fumeMinuteValue)
|
}
|
|
fun saveValue(fumeMinuteValue: FumeMinuteValue) {
|
val avgFumeMinuteValue = AvgFumeMinuteValue()
|
BeanUtils.copyProperties(fumeMinuteValue, avgFumeMinuteValue)
|
avgFumeMinuteValueMapper.insert(avgFumeMinuteValue)
|
}
|
|
@Test
|
fun average10() {
|
val deviceCodeList = listOf(
|
// "31011020175006",
|
"31011020175001",
|
"64480047086409"
|
)
|
|
val end = LocalDateTime.of(2021, 6, 1, 0, 0, 0)
|
|
deviceCodeList.forEach {
|
var startTime = LocalDateTime.of(2021, 3, 1, 0, 0, 0)
|
var endTime = LocalDateTime.of(2021, 3, 1, 23, 59, 59)
|
|
while (endTime.isBefore(end)) {
|
//获取前10分钟的数据
|
val dataList = fumeMinuteValueMapper.selectByExample(Example(FumeMinuteValue::class.java).apply {
|
createCriteria().andEqualTo("mvStatCode", it)
|
.andBetween("mvCreateTime", startTime, endTime)
|
// and(createCriteria().orIsNull("mvUpload")
|
// .orEqualTo("mvUpload", false))
|
orderBy("mvCreateTime")
|
})
|
|
var lastT = ""
|
val sectionDataList = mutableListOf<FumeMinuteValue>()
|
dataList.forEach {
|
val section = getSection(it.mvDataTime)
|
if (lastT != section) {
|
getAverage(lastT, sectionDataList)
|
lastT = section
|
sectionDataList.clear()
|
}
|
sectionDataList.add(it)
|
}
|
if (sectionDataList.isNotEmpty()) {
|
getAverage(lastT, sectionDataList)
|
}
|
|
startTime = startTime.plusDays(1)
|
endTime = endTime.plusDays(1)
|
}
|
}
|
|
}
|
}
|