feiyu02
2021-12-02 74ffc8ebf3a25d2e3cee758954ce6efc163cb864
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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.*
 
/**
 * 用电量日分析结果
 * Date 2021/12/1 15:23
 * Created by feiyu
 */
class ElectricDailyInfo {
    var day: String = ""
 
    /***********产线设备ProductionLine, pl************/
    private var plDCode: String? = null  // 设备编号
    private var plSTime: Date? = null    // 开启时间
    private var plRTime: Date? = null    // 正式运行时间
    private var plETime: Date? = null    // 关闭时间
    private var plRunTime: Int = 0    // 运行时长(分钟)(状态为运行、高负荷的时长)
    private var plRunPeriod = mutableListOf<Int>()// 运行时段(小时)
    /***********净化设备Purify, pf********************/
    private var pfDCode: String? = null
    private var pfSTime: Date? = null
    private var pfRTime: Date? = null
    private var pfETime: Date? = null
    private var pfRunTime: Int = 0
    private var pfRunPeriod = mutableListOf<Int>()
 
    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 = ""// 当日分析结果描述
 
    // 当前设备类型,用于插入数据时决定赋值字段
    private var deviceType: ElectricityType = ElectricityType.ProductionLine
 
    fun changeType(d: CompanyDevice?) {
        deviceType = when (d?.cdType) {
            ElectricityType.ProductionLine.value -> {
                plDCode = d.cdDeviceCode
                ElectricityType.ProductionLine
            }
            ElectricityType.Purify.value -> {
                pfDCode = d.cdDeviceCode
                ElectricityType.Purify
            }
            else -> ElectricityType.UnKnow
        }
    }
 
    fun setStartTime(date: Date) {
        when (deviceType) {
            ElectricityType.ProductionLine -> plSTime = date
            ElectricityType.Purify -> pfSTime = date
            else -> Unit
        }
    }
 
    fun setEndTime(date: Date) {
        when (deviceType) {
            ElectricityType.ProductionLine -> plETime = date
            ElectricityType.Purify -> pfETime = date
            else -> Unit
        }
    }
 
    /**
     * 设置正式运行时间
     */
    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(s: Triple<String, String, Double>) {
        if (s.first.toInt() >= ElectricityStatus.C.value) {
            when (deviceType) {
                ElectricityType.ProductionLine -> plRunTime++
                ElectricityType.Purify -> pfRunTime++
                else -> Unit
            }
        }
    }
 
    /**
     * 添加运行时段(小时)
     */
    fun addRunPeriod(hour: Int) {
        when (deviceType) {
            ElectricityType.ProductionLine -> if (!plRunPeriod.contains(hour)) plRunPeriod += hour
            ElectricityType.Purify -> if (!pfRunPeriod.contains(hour)) pfRunPeriod += hour
            else -> Unit
        }
    }
 
    /**
     * 统计得出当日分析结果
     */
    fun getResult() {
        // 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. 多日摘要统计,运行天数、合规天数等
    }
}