feiyu02
2022-07-19 b041775dae4438e428d2b70d2b22cfe8c49844fe
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
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("问题整改率"),
        ))
    }
 
    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 checkStatus = ""//审核情况
                var pCheckTime = ""//问题审核时间
                var cCheckTime = ""//整改审核时间
                var changePercent = ""//问题整改率
                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++
                    }
                    val status = when (p.extension3) {
                        Constant.PROBLEM_CHECK_PASS -> "问题审核通过"//
                        Constant.PROBLEM_CHECK_FAIL -> "问题审核未通过"//
                        Constant.PROBLEM_UNCHECKED -> "问题未审核"//
                        Constant.CHANGE_UNCHECKED -> "整改未审核"//
                        Constant.CHANGE_CHECK_PASS -> "整改审核通过"//
                        Constant.CHANGE_CHECK_FAIL -> "整改审核未通过"//
                        else -> "问题未审核"
                    }
                    checkStatus += "${lr}$y、${status}"
                    changePercent = if (pNum == 0) "" else "${(cNum * 100 / pNum)}%"
                    y++
                }
                addAll(
                    listOf(
                        pType, pDes, pLoc, pNum, changeTime, pChanged, changedProblem, cNum,
                        unChangedProblem, unChangeNum, checkStatus, pCheckTime, cCheckTime, changePercent
                    )
                )
            }
        }
        return row
    }
}