feiyu02
2022-07-28 e844ef2fdab88508e7dff4bb9e7b1632fcce15b2
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
141
142
143
144
145
146
package cn.flightfeather.supervision.business.report.cols
 
import cn.flightfeather.supervision.business.report.BaseCols
import cn.flightfeather.supervision.business.report.DataSource
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.DateUtil
import cn.flightfeather.supervision.common.utils.ExcelUtil
 
//监管详情
class ColInspectionInfo() : BaseCols() {
    override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> {
        return mutableListOf(mutableListOf(
                ExcelUtil.MyCell("监管时间"),
                ExcelUtil.MyCell("巡查人员"),
                ExcelUtil.MyCell("问题类型"),
                ExcelUtil.MyCell("问题描述"),
                ExcelUtil.MyCell("问题位置"),
                ExcelUtil.MyCell("问题数"),
                ExcelUtil.MyCell("整改时间"),
                ExcelUtil.MyCell("整改情况"),
                ExcelUtil.MyCell("整改问题"),
                ExcelUtil.MyCell("整改数"),
                ExcelUtil.MyCell("未整改问题"),
                ExcelUtil.MyCell("未整改数"),
                ExcelUtil.MyCell("问题整改率"),
                ExcelUtil.MyCell("审核情况"),
                ExcelUtil.MyCell("问题审核时间"),
                ExcelUtil.MyCell("整改审核时间"),
                ExcelUtil.MyCell("问题审核数"),
                ExcelUtil.MyCell("问题审核占比"),
                ExcelUtil.MyCell("整改审核数"),
                ExcelUtil.MyCell("整改审核占比"),
        ))
    }
 
    override fun onOneRow(rowData: DataSource.RowData): List<Any> {
        val dateUtil = DateUtil()
        val row = mutableListOf<Any>()
        if (rowData.noRecord()) {
            repeat(heads.last().size) { row.add(("")) }
        } else {
            row.apply {
                // 表头:巡查情况及问题、整改统计
                //监管时间
                add(dateUtil.DateToString(rowData.subTask?.planstarttime, DateUtil.DateStyle.MM_DD) ?: "")
                //巡查人员
                add(rowData.subTask?.executorrealtimes?.replace("#", "、") ?: "")
                //查询子任务对应的问题,并且根据条件进行筛选
                var y = 1
                var pType = ""//问题类型
                var pDes = ""//问题描述
                var pLoc = ""//问题位置
                var pNum = 0//问题数
                var changeTime = ""//整改时间
                var pChanged = ""//整改情况
                var changedProblem = ""//整改问题
                var cNum = 0//整改数
                var unChangedProblem = ""//未整改问题
                var unChangeNum = 0//未整改数
                var changePercent: Any = ""//问题整改率
 
                var checkStatus = ""//审核情况
                var pCheckTime = ""//问题审核时间
                var cCheckTime = ""//整改审核时间
                var pCheckNum = 0//问题审核数
                var pCheckPer: Any = ""//问题审核占比
                var cCheckNum = 0//整改审核数
                var cCheckPer: Any = ""//整改审核占比F
                rowData.problems.forEach { p ->
                    var typeName = ""
                    for (t in rowData.problemTypes) {
                        if (t.guid == p.ptguid) {
                            typeName = t.typename ?: ""
                            break
                        }
                    }
                    val lr = if (y > 1) "\n" else ""
                    //巡查情况及问题、整改统计
                    pType += "${lr}$y、${typeName}"
                    pDes += "${lr}$y、${p.problemname}"
                    pLoc += "${lr}$y、${p.location}"
                    pNum++
                    changeTime += "${lr}$y、${dateUtil.DateToString(p.changedtime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_CN)}"
                    pChanged += "${lr}$y、${if (p.ischanged == true) "✓" else "×"}"
                    if (p.ischanged == true) {
                        if (changedProblem.isNotBlank()) {
                            changedProblem += "\n"
                        }
                        changedProblem += "$y、${p.problemname}"
                        cNum++
                    } else {
                        if (unChangedProblem.isNotBlank()) {
                            unChangedProblem += "\n"
                        }
                        unChangedProblem += "$y、${p.problemname}"
                        unChangeNum++
                    }
                    changePercent = if (pNum == 0) "" else ExcelUtil.MyCell((cNum.toDouble() / pNum).toString(), isPercent = true)
 
                    val status = when (p.extension3) {
                        Constant.PROBLEM_UNCHECKED -> "问题未审核"//
                        Constant.PROBLEM_CHECK_PASS -> {
                            pCheckNum++
                            "问题审核通过"
                        }//
                        Constant.PROBLEM_CHECK_FAIL -> {
                            pCheckNum++
                            "问题审核未通过"
                        }//
                        Constant.CHANGE_UNCHECKED -> {
                            pCheckNum++
                            "整改未审核"
                        }//
                        Constant.CHANGE_CHECK_PASS -> {
                            pCheckNum++
                            cCheckNum++
                            "整改审核通过"
                        }//
                        Constant.CHANGE_CHECK_FAIL -> {
                            pCheckNum++
                            cCheckNum++
                            "整改审核未通过"
                        }//
                        else -> "问题未审核"
                    }
                    checkStatus += "${lr}$y、${status}"
                    pCheckTime += "${lr}$y、/"
                    cCheckTime += "${lr}$y、/"
                    pCheckPer = if (pNum == 0) "" else ExcelUtil.MyCell((pCheckNum.toDouble() / pNum).toString(), isPercent = true)
                    cCheckPer = if (cNum == 0) "" else ExcelUtil.MyCell((cCheckNum.toDouble() / cNum).toString(), isPercent = true)
 
 
                    y++
                }
                addAll(
                    listOf(
                        pType, pDes, pLoc, pNum, changeTime, pChanged, changedProblem, cNum,
                        unChangedProblem, unChangeNum, changePercent, checkStatus, pCheckTime, cCheckTime,
                            pCheckNum, pCheckPer, cCheckNum, cCheckPer
                    )
                )
            }
        }
        return row
    }
}