From 30d46d06fb4153e48df281d3008ed90935b3c06d Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 19 七月 2022 16:45:08 +0800
Subject: [PATCH] 1. 新增扬尘监测数据超标情况表
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt | 931 ++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 590 insertions(+), 341 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
index db25309..647b09e 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
@@ -1,5 +1,11 @@
package cn.flightfeather.supervision.lightshare.service.impl
+import cn.flightfeather.supervision.business.report.DataSource
+import cn.flightfeather.supervision.business.report.DbMapper
+import cn.flightfeather.supervision.business.report.file.ReportOne
+import cn.flightfeather.supervision.business.report.file.ReportThree
+import cn.flightfeather.supervision.business.report.file.ReportTwo
+import cn.flightfeather.supervision.business.report.template.*
import cn.flightfeather.supervision.common.utils.*
import cn.flightfeather.supervision.domain.ds1.entity.*
import cn.flightfeather.supervision.domain.ds1.mapper.*
@@ -25,28 +31,74 @@
val userinfoMapper: UserinfoMapper,
val subtaskMapper: SubtaskMapper,
val scenseMapper: ScenseMapper,
+ val sceneConstructionSiteMapper: SceneConstructionSiteMapper,
+ val sceneMixingPlantMapper: SceneMixingPlantMapper,
+ val sceneStorageYardMapper: SceneStorageYardMapper,
+ val sceneWharfMapper: SceneWharfMapper,
val problemlistMapper: ProblemlistMapper,
val problemtypeMapper: ProblemtypeMapper,
val townMapper: TownMapper,
val mediafileMapper: MediafileMapper,
val scoreMapper: ScoreMapper,
val inspectionMapper: InspectionMapper,
- val taskMapper: TaskMapper
-): SearchService {
+ val taskMapper: TaskMapper,
+ val monitorobjectversionMapper: MonitorobjectversionMapper,
+ val evaluationruleMapper: EvaluationruleMapper,
+ val evaluationsubruleMapper: EvaluationsubruleMapper2,
+ val evaluationMapper: EvaluationMapper,
+ val itemevaluationMapper: ItemevaluationMapper
+) : SearchService {
private val dateUtil = DateUtil()
- override fun writeToFile(config: ExcelConfigVo) {
- val fileName = "e:/${DateUtil().DateToString(Date(), "yyyy-MM-ddhhmmss")}.xls"
- val out = FileOutputStream(fileName)
- val heads = getTableTitles()
- val contents = getTableContents(config)
- ExcelUtil.write2(out, heads, contents)
+ override fun writeToFile(config: ExcelConfigVo, mode:Int) {
+ val dbMapper = DbMapper(
+ scenseMapper,
+ problemlistMapper,
+ problemtypeMapper,
+ subtaskMapper,
+ monitorobjectversionMapper,
+ sceneConstructionSiteMapper,
+ sceneMixingPlantMapper,
+ sceneStorageYardMapper,
+ sceneWharfMapper,
+ taskMapper,
+ evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper
+ )
+ val dataSource = DataSource(config, dbMapper)
+ val t = when (mode) {
+// //闂涓庢暣鏀硅窡韪眹鎬昏〃
+// 0 -> ProDetailSummary(dataSource)
+// //鍒嗚闀囬棶棰樻暣鏀瑰垎鏋愭眹鎬昏〃
+// 1 -> ProAnalysisSummary(dataSource)
+//
+// //瑙勮寖鎬ц瘎浼拌鎯呰〃
+// 2 -> ScoreDetailSummary(dataSource)
+// //鍒嗚闀囪鑼冩�у垎鏋愯〃
+// 3 -> ScoreAnalysisSummary(dataSource)
+//
+// //闂涓庢暣鏀瑰垎绫荤粺璁¤〃
+// 4 -> ProTypeDetailSummary(dataSource)
+// //闂涓庢暣鏀瑰垎绫绘帓鍚�
+// 5 -> ProTypeRankSummary(dataSource)
+// //鏈堝害涓昏鎴栧吀鍨嬮棶棰樺垎鏋愯〃
+// 6 -> ProTypeRankMainSummary(dataSource)
+// //宸ュ湴鏂藉伐闃舵闂鍒嗙被鍒嗘瀽琛�
+// 7 -> ProTypeStatusSummary(dataSource)
+
+ 8 -> ReportOne(dataSource)
+ 9 -> ReportTwo(dataSource)
+ 10 -> ReportThree(dataSource)
+
+ else -> null
+ }
+// t?.execute()
+ t?.toFile("target/")
}
override fun getExcel(config: ExcelConfigVo, response: HttpServletResponse): HttpServletResponse {
- val fileName = "${DateUtil().DateToString(Date(), "yyyy-MM-dd hh:mm:ss")}.xls"
+ val fileName = "${dateUtil.DateToString(Date(), "yyyy-MM-dd hh:mm:ss")}.xls"
response.apply {
setHeader("Content-Disposition", "attachment;filename=$fileName")
setHeader("fileName", fileName)
@@ -56,18 +108,18 @@
setDateHeader("Expires", 0)
}
- val heads = getTableTitles()
- val contents = getTableContents(config)
-
+// val heads = getTableTitles(config.sceneType, config.districtCode)
+// val contents = getTableContents(config, heads.size)
+ val r = getTable(1, config)
val out = response.outputStream
- ExcelUtil.write2(out, heads, contents)
+ ExcelUtil.write2(out, r.first, r.second)
return response
}
override fun getSubTaskDetail(config: ExcelConfigVo): SubTaskTableVo {
- val titles = getTableTitles2()
- val content = getTableContents2(config)
+ val titles = getTableTitles(config.sceneType, config.districtCode)
+ val content = getTableContents(config, titles.size)
return SubTaskTableVo(titles, content)
}
@@ -94,19 +146,19 @@
}
} else {
createCriteria()
- .andEqualTo("tguid", config.topTaskGuid)
- .andGreaterThanOrEqualTo("planstarttime", config.startTime)
- .andLessThanOrEqualTo("planendtime", config.endTime).apply {
- config.provinceCode?.let {
- andEqualTo("provincecode", it)
- }
- config.cityCode?.let {
- andEqualTo("citycode", it)
- }
- config.districtCode?.let {
- andEqualTo("districtcode", it)
- }
+ .andEqualTo("tguid", config.topTaskGuid)
+ .andGreaterThanOrEqualTo("planstarttime", config.startTime)
+ .andLessThanOrEqualTo("planendtime", config.endTime).apply {
+ config.provinceCode?.let {
+ andEqualTo("provincecode", it)
}
+ config.cityCode?.let {
+ andEqualTo("citycode", it)
+ }
+ config.districtCode?.let {
+ andEqualTo("districtcode", it)
+ }
+ }
}
orderBy("planstarttime")
}
@@ -153,7 +205,7 @@
}
//寤虹珛绗竴灞傜洰褰曪紝鍖呭惈鎵�鏈夌殑浠诲姟
- val time = DateUtil().DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+ val time = dateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
var basePath = Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + "temp" + File.separator + time
var file = File(basePath)
var i = 1
@@ -163,7 +215,7 @@
i++
}
if (file.exists()) {
- FileUtil().delAllFile(basePath)
+ FileUtil.delAllFile(basePath)
} else {
file.mkdirs()
}
@@ -180,7 +232,7 @@
i++
}
if (sFile.exists()) {
- FileUtil().delAllFile(subTaskFilePath)
+ FileUtil.delAllFile(subTaskFilePath)
} else {
sFile.mkdirs()
}
@@ -196,7 +248,7 @@
i++
}
if (pFile.exists()) {
- FileUtil().delAllFile(pPath)
+ FileUtil.delAllFile(pPath)
} else {
pFile.mkdirs()
}
@@ -209,7 +261,7 @@
val fromFile = File(picPath)
val picName = p.problemname + "_" + p.location + "($y).jpg"
val toFile = File(pPath + File.separator + picName)
- FileUtil().copy(fromFile, toFile)
+ FileUtil.copy(fromFile, toFile)
y++
}
}
@@ -241,14 +293,10 @@
return response
}
- override fun downloadPic2(
- sceneType: Int,
- topTaskId: String,
- response: HttpServletResponse
- ): HttpServletResponse {
+ override fun downloadPic2(sceneType: Int, topTaskId: String, response: HttpServletResponse): HttpServletResponse {
//寤虹珛绗竴灞傜洰褰曪紝鍖呭惈鎵�鏈夌殑浠诲姟
val topTask = taskMapper.selectByPrimaryKey(topTaskId)
- val time = DateUtil().DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+ val time = dateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
val basePath = Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + "temp" + File.separator + topTask.name
val file = File(basePath)
if (!file.exists()) {
@@ -281,7 +329,7 @@
i++
}
if (sFile.exists()) {
- FileUtil().delAllFile(subTaskFilePath)
+ FileUtil.delAllFile(subTaskFilePath)
} else {
sFile.mkdirs()
}
@@ -311,7 +359,7 @@
i++
}
if (pFile.exists()) {
- FileUtil().delAllFile(pPath)
+ FileUtil.delAllFile(pPath)
} else {
pFile.mkdirs()
}
@@ -322,7 +370,7 @@
val fromFile = File(picPath)
val picName = f.description
val toFile = File(pPath + File.separator + picName)
- FileUtil().copy(fromFile, toFile)
+ FileUtil.copy(fromFile, toFile)
}
}
}
@@ -381,304 +429,6 @@
return BaseResponse(true, head = DataHead(p.pageNum, p.pages), data = result)
}
-
-
- private fun getTableTitles(): List<String> = listOf(
- "搴忓彿", "浠诲姟", "鍦烘櫙", "缁忓害", "绾害",
- "绫诲瀷",
- "寮�濮嬫椂闂�", "缁撴潫鏃堕棿",
- "鐘舵��", "缁勯暱",
- "缁勫憳", "闂绫诲瀷","闂璇︽儏", "琛楅晣", "瀹℃牳"
- )
-
- /**
- * 鐩告瘮浜巊etTableContents() 锛屽垹鍑忎簡閮ㄥ垎鍒�
- */
- private fun getTableTitles2(): List<String> = listOf(
-// "搴忓彿",
- "浠诲姟",
-// "鍦烘櫙", "缁忓害", "绾害",
- "绫诲瀷",
- "寮�濮嬫椂闂�",
-// "缁撴潫鏃堕棿",
- "鐘舵��", "缁勯暱",
- "缁勫憳", "闂绫诲瀷","闂璇︽儏", "琛楅晣", "瀹℃牳"
- )
-
- private fun getTableContents(config: ExcelConfigVo): List<Array<Any>> {
- val townName = if (config.townCode == null) {
- null
- } else {
- val l = townMapper.selectByExample(Example(Town::class.java).apply {
- createCriteria().andEqualTo("towncode", config.townCode)
- })
- if (l.isNotEmpty()) {
- l[0].townname
- } else {
- null
- }
- }
- val subTaskExample = Example(Subtask::class.java).apply {
- if (config.subTaskIdList != null && config.subTaskIdList.isNotEmpty()) {
- createCriteria().apply {
- config.subTaskIdList.forEach {
- orEqualTo("stguid", it)
- }
- }
- } else {
- createCriteria()
- .andEqualTo("tguid", config.topTaskGuid)
- .andGreaterThanOrEqualTo("planstarttime", config.startTime)
- .andLessThanOrEqualTo("planendtime", config.endTime).apply {
- config.provinceCode?.let {
- andEqualTo("provincecode", it)
- }
- config.cityCode?.let {
- andEqualTo("citycode", it)
- }
- config.districtCode?.let {
- andEqualTo("districtcode", it)
- }
-// config.townCode?.let {
-// andEqualTo("towncode", it)
-// }
- }
- }
- orderBy("planstarttime")
- }
-
- val contents = mutableListOf<Array<Any>>()
-
- val subTasks = mutableListOf<Subtask>()
- var i = 1
- subtaskMapper.selectByExample(subTaskExample).forEach {
- //鏌ヨ璇ヤ换鍔″搴旂殑鍦烘櫙
- val scene = scenseMapper.selectByPrimaryKey(it.scenseid)
-
- //鏍规嵁鍦烘櫙鏉′欢绛涢��
- val need = if (config.sceneType != null) {
- scene.typeid == config.sceneType.toByte()
- } else {
- true
- }
- if (need) {
- //璁板綍鏌ヨ鍒板瓙浠诲姟
- subTasks.add(it)
-
- val problemTypes = mutableListOf<String>()
- val problems = mutableListOf<String>()
- val districts = mutableListOf<String>()
- val checkStatus= mutableListOf<String>()
-
- //鏌ヨ瀛愪换鍔″搴旂殑闂锛屽苟涓旀牴鎹潯浠惰繘琛岀瓫閫�
- val problemlistExample = Example(Problemlist::class.java).apply {
- createCriteria().andEqualTo("stguid", it.stguid).apply {
- config.problemName?.let {p->
- andEqualTo("problemname", p)
- }
- townName?.let {t->
- andLike("location", "%$t%")
- }
- }
- }
-
- var y=1
- problemlistMapper.selectByExample(problemlistExample).forEach problemType@{p->
- val result = problemtypeMapper.selectByPrimaryKey(p.ptguid)
- if (config.problemTypeName != null) {
- if (result.typename != config.problemTypeName) {
- return@problemType
- }
- }
- problemTypes.add(result.typename ?: "")
- problems.add("$y銆�${p.problemname}")
- districts.add(p.location ?: "")
- val status = when (p.extension3) {
- Constant.PROBLEM_UNCHECKED -> "鏈鏍�"
- Constant.PROBLEM_CHECK_PASS-> "閫氳繃"
- Constant.PROBLEM_CHECK_FAIL -> "鏈�氳繃"
- else->"鏈鏍�"
- }
- checkStatus.add(status)
- y++
- }
-
-
- //褰撴湁闂浣滀负绛涢�夋潯浠舵椂锛屽鏋滄病鏈夋壘鍒板搴旈棶棰橈紝鍒欒娆′换鍔″幓闄�
- if ( (config.problemTypeName != null || config.problemName != null || townName != null)
- && (problemTypes.isEmpty() && problems.isEmpty())) {
- return@forEach
- }
-
- val rowContent = arrayOf<Any>(
- "$i", it.name ?: "", it.scensename ?: "", scene.longitude.toString(), scene.latitude.toString(),
- scene.type ?: "",
- DateUtil().DateToString(it.executionstarttime, "yyyy-MM-dd HH:mm:ss") ?: "", DateUtil().DateToString(it.executionendtime, "yyyy-MM-dd hh:mm:ss") ?: "",
- it.status ?: "", it.assessorrealname?.replace("#", "銆�") ?: "",
- it.executorrealtimes?.replace("#", "銆�") ?: "", problemTypes.toTypedArray(), problems.toTypedArray(), districts.toTypedArray(), checkStatus.toTypedArray()
- )
-
- contents.add(rowContent)
- i++
- }
- }
-
- return contents
- }
-
- /**
- * 鐩告瘮浜巊etTableContents() 锛屽垹鍑忎簡閮ㄥ垎鍒�
- */
- private fun getTableContents2(config: ExcelConfigVo): List<Array<Any>> {
- val townName = if (config.townCode == null) {
- null
- } else {
- val l = townMapper.selectByExample(Example(Town::class.java).apply {
- createCriteria().andEqualTo("towncode", config.townCode)
- })
- if (l.isNotEmpty()) {
- l[0].townname
- } else {
- null
- }
- }
- val subTaskExample = Example(Subtask::class.java).apply {
- if (config.subTaskIdList != null && config.subTaskIdList.isNotEmpty()) {
- createCriteria().apply {
- config.subTaskIdList.forEach {
- orEqualTo("stguid", it)
- }
- }
- } else {
- createCriteria()
- .andEqualTo("tguid", config.topTaskGuid)
- .andGreaterThanOrEqualTo("planstarttime", config.startTime)
- .andLessThanOrEqualTo("planendtime", config.endTime).apply {
- config.provinceCode?.let {
- andEqualTo("provincecode", it)
- }
- config.cityCode?.let {
- andEqualTo("citycode", it)
- }
- config.districtCode?.let {
- andEqualTo("districtcode", it)
- }
-// config.townCode?.let {
-// andEqualTo("towncode", it)
-// }
- }
- }
- orderBy("planstarttime")
- }
-
- val contents = mutableListOf<Array<Any>>()
-
- val subTasks = mutableListOf<Subtask>()
- var i = 1
- subtaskMapper.selectByExample(subTaskExample).forEach {
- //鏌ヨ璇ヤ换鍔″搴旂殑鍦烘櫙
- val scene = scenseMapper.selectByPrimaryKey(it.scenseid)
-
- //鏍规嵁鍦烘櫙鏉′欢绛涢��
- val need = if (config.sceneType != null) {
- scene.typeid == config.sceneType.toByte()
- } else {
- true
- }
- if (need) {
- //璁板綍鏌ヨ鍒板瓙浠诲姟
- subTasks.add(it)
-
- val problemTypes = mutableListOf<String>()
- val problems = mutableListOf<String>()
- val districts = mutableListOf<String>()
- val checkStatus= mutableListOf<String>()
-
- //鏌ヨ瀛愪换鍔″搴旂殑闂锛屽苟涓旀牴鎹潯浠惰繘琛岀瓫閫�
- val problemlistExample = Example(Problemlist::class.java).apply {
- createCriteria().andEqualTo("stguid", it.stguid).apply {
- config.problemName?.let {p->
- andEqualTo("problemname", p)
- }
- townName?.let {t->
- andLike("location", "%$t%")
- }
- }
- }
-
- var y=1
- problemlistMapper.selectByExample(problemlistExample).forEach problemType@{p->
- val result = problemtypeMapper.selectByPrimaryKey(p.ptguid)
- if (config.problemTypeName != null) {
- if (result?.typename != config.problemTypeName) {
- return@problemType
- }
- }
- problemTypes.add(result?.typename ?: "")
- problems.add("$y銆�${p.problemname}")
- districts.add(p.location ?: "")
- val status = when (p.extension3) {
- Constant.PROBLEM_UNCHECKED -> "鏈鏍�"
- Constant.PROBLEM_CHECK_PASS-> "閫氳繃"
- Constant.PROBLEM_CHECK_FAIL -> "鏈�氳繃"
- else->"鏈鏍�"
- }
- checkStatus.add(status)
- y++
- }
-
-
- //褰撴湁闂浣滀负绛涢�夋潯浠舵椂锛屽鏋滄病鏈夋壘鍒板搴旈棶棰橈紝鍒欒娆′换鍔″幓闄�
- if ( (config.problemTypeName != null || config.problemName != null || townName != null)
- && (problemTypes.isEmpty() && problems.isEmpty())) {
- return@forEach
- }
-
-// val lineMaxSize =3
-//
-// val leader = it.assessorrealname?.split("#")
-// val leaderStr = StringBuilder()
-// for (t in 0 until (leader?.size ?: 0)) {
-// if (t > 0) {
-// leaderStr.append("銆�")
-// }
-// if (t == lineMaxSize - 1) {
-// leaderStr.append("\r\n")
-// }
-// leaderStr.append(leader?.get(t))
-// }
-//
-// val member = it.executorrealtimes?.split("#")
-// val memberStr = StringBuilder()
-// for (t in 0 until (member?.size ?: 0)) {
-// if (t > 0) {
-// memberStr.append("銆�")
-// }
-// if (t == lineMaxSize - 1) {
-// memberStr.append("\r\n")
-// }
-// memberStr.append(member?.get(t))
-// }
-
- val rowContent = arrayOf<Any>(
-// "$i",
- it.name ?: "",
-// it.scensename ?: "", scene.longitude.toString(), scene.latitude.toString(),
- scene.type ?: "",
- DateUtil().DateToString(it.executionstarttime, "yyyy-MM-dd HH:mm:ss") ?: "",
-// DateUtil().DateToString(it.executionendtime, "yyyy-MM-dd hh:mm:ss") ?: "",
- it.status ?: "", it.assessorrealname?.replace("#", "銆�") ?: "",
- it.executorrealtimes?.replace("#", "銆�") ?: "", problemTypes.toTypedArray(), problems.toTypedArray(), districts.toTypedArray(), checkStatus.toTypedArray()
- )
-
- contents.add(rowContent)
- i++
- }
- }
-
- return contents
- }
-
override fun searchSubTaskByKeyword(userId: String, keyword: String, page: Int, perPage: Int): BaseResponse<List<SubtaskVo>> {
val userInfo = userinfoMapper.selectByPrimaryKey(userId)
if (userInfo.usertypeid?.toInt() == 3) return BaseResponse(false, "浼佷笟鐢ㄦ埛鏃犳煡璇㈡潈闄�")//浼佷笟鐢ㄦ埛鏃犳硶鏌ヨ
@@ -688,7 +438,8 @@
createCriteria().andLike("name", "%${keyword}%")
.apply {
when (userInfo.usertypeid?.toInt()) {
- 0 -> {} //绠$悊鍛樼敤鎴锋煡璇㈡棤鍏朵粬闄愬埗
+ 0 -> {
+ } //绠$悊鍛樼敤鎴锋煡璇㈡棤鍏朵粬闄愬埗
1 -> andLike("executorguids", "%${userId}%")//瀵逛簬涓�鑸殑宸℃煡浜哄憳锛屽彧鑳芥煡璇㈠埌鑷繁鍙備笌鐨勫瓙浠诲姟
2 -> andEqualTo("districtcode", userInfo.dGuid)//姝ゅ瀵逛簬鏀垮簻鐢ㄦ埛锛宒Guid瀛樺偍鐨勬槸鍖哄幙缂栧彿
}
@@ -700,6 +451,504 @@
result.add(vo)
}
- return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages) ,data = result)
+ return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages), data = result)
+ }
+
+
+ private fun getTable(mode: Int, config: ExcelConfigVo): Pair<MutableList<Array<Any>>, MutableList<Array<Any>>> {
+ //鏁版嵁婧�
+ val dataList = getTableDataSource(config)
+ //鐢熸垚琛ㄦ牸
+ val head = mutableListOf<MutableList<Any>>()
+ val contents = mutableListOf<MutableList<Any>>()
+
+ getSceneName(head, contents, dataList)
+
+ when (mode) {
+ // 闂鍒嗗竷
+ 1 -> {
+ getProblemDistribution(head, contents, dataList, config)
+ }
+ 2 -> {
+ getInspectionInfo(head, contents, dataList, config)
+ }
+ 3 -> {
+
+ }
+ }
+ val h = mutableListOf<Array<Any>>()
+ val c = mutableListOf<Array<Any>>()
+ head.forEach { h.add(it.toTypedArray()) }
+ contents.forEach { c.add(it.toTypedArray()) }
+ c.sortBy {
+ it[0] as Int
+ }
+
+ return Pair(h, c)
+ }
+
+ // 琛ㄥご锛氬満鏅悕
+ private fun getSceneName(head: MutableList<MutableList<Any>>, contents: MutableList<MutableList<Any>>, dataList: List<Subtask>) {
+ head.add(mutableListOf(ExcelUtil.MyCell("琛ㄥ崟缂栧彿"), ExcelUtil.MyCell("鍞竴搴忓彿"), ExcelUtil.MyCell("鍦烘櫙鍚嶇О")))
+ dataList.forEach {subtask ->
+ val row = mutableListOf<Any>()
+ //鏌ヨ璇ヤ换鍔″搴旂殑鍦烘櫙
+ val scene = scenseMapper.selectByPrimaryKey(subtask.scenseid)
+ row.apply {
+ add(scene.index ?: -99)
+ add(scene.extension2 ?: "")
+ add(scene.name ?: "")
+ }
+ contents.add(row)
+ }
+ }
+
+ // 琛ㄥご锛氬叿浣撻棶棰樺垎甯�
+ private fun getProblemDistribution(head: MutableList<MutableList<Any>>, contents: MutableList<MutableList<Any>>,
+ dataList: List<Subtask>, config: ExcelConfigVo) {
+ val h1 = mutableListOf<ExcelUtil.MyCell>()
+ val h2 = mutableListOf<Any>()
+ currentProblemType.clear()
+ currentProblemHead.clear()
+
+ // 闂鍒嗕负涓ゅ眰锛屾柊澧炰竴琛岃〃澶�
+ problemtypeMapper.selectByExample(Example(Problemtype::class.java).apply {
+ createCriteria().andEqualTo("scensetypeid", config.sceneType)
+ .andEqualTo("districtcode", config.districtCode)
+ orderBy("extension1")
+ }).forEach {
+ if (!currentProblemHead.contains(it.typename)) {
+ currentProblemHead.add(it.typename ?: "")
+ h1.add(ExcelUtil.MyCell(it.typename ?: "", colSpan = 0))
+ }
+ currentProblemType[it.guid ?: ""] = it.description ?: ""
+ if (currentProblemHead.contains(it.typename)) {
+ h2.add(it.description ?: "")
+ h1.last().colSpan++
+
+ h2.add("鏄惁鏁存敼")
+ h1.last().colSpan++
+ }
+ }
+
+ //闂鍒嗗竷
+ for (i in dataList.indices) {
+ val subtask = dataList[i]
+
+ val pDis = mutableListOf<Any>()//鍏蜂綋闂鍒嗗竷鍙婃暣鏀规儏鍐�
+ repeat(h2.size) { pDis.add("")}
+ if (subtask.stguid != null) {
+ problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
+ createCriteria().andEqualTo("stguid", subtask.stguid)
+ }).forEach problemType@{ p ->
+ val des = currentProblemType[p.ptguid]
+
+ //鍏蜂綋闂鍒嗗竷
+ for (t in h2.indices) {
+ if (des == h2[t]) {
+ //鍏蜂綋闂杩欎竴鍒楁坊鍔犳枃鏈紝琛ㄧず闂瀛樺湪
+ pDis[t] = 1
+ //闂鍒楃殑涓嬩竴鍒楁槸璇ラ棶棰樼殑鏁存敼鎯呭喌
+ pDis[t + 1] = if (p.ischanged == true) 1 else 0
+ break
+ }
+ }
+ }
+ }
+
+ contents[i].addAll(pDis)
+ }
+
+ //鍘熸湁鐨勭涓�琛岃〃澶村鍔�1琛岃璺ㄥ害,鍚屾椂鏂扮殑绗簩琛岃〃澶存坊鍔犵┖浣�
+ head[0].forEach {
+ (it as ExcelUtil.MyCell).rowSpan++
+// h2.add(0, "")
+ }
+ //鍚堝苟琛ㄥご
+ head[0].addAll(h1)
+ head.add(h2)
+ }
+
+ // 琛ㄥご锛氬贰鏌ユ儏鍐靛強闂銆佹暣鏀圭粺璁�
+ private fun getInspectionInfo(head: MutableList<MutableList<Any>>, contents: MutableList<MutableList<Any>>, dataList: List<Subtask>, config: ExcelConfigVo) {
+ val h1 = listOf("鐩戠鏃堕棿", "闂绫诲瀷", "闂鎻忚堪", "闂浣嶇疆", "闂鏁�", "鏁存敼鎯呭喌", "鏁存敼闂", "鏁存敼鏁�", "鏈暣鏀归棶棰�", "鏈暣鏀规暟", "瀹℃牳鎯呭喌")
+
+ for (i in dataList.indices) {
+ val subtask = dataList[i]
+
+ val row = mutableListOf<Any>()
+ if (subtask.stguid == null) {
+ repeat(h1.size) { row.add("")}
+ } else {
+ row.apply {
+ // 琛ㄥご锛氬贰鏌ユ儏鍐靛強闂銆佹暣鏀圭粺璁�
+ add(dateUtil.DateToString(subtask.planstarttime, DateUtil.DateStyle.MM_DD) ?: "")//鐩戠鏃堕棿
+ //鏌ヨ瀛愪换鍔″搴旂殑闂锛屽苟涓旀牴鎹潯浠惰繘琛岀瓫閫�
+ var y = 1
+ var pType = ""//闂绫诲瀷
+ var pDes = ""//闂鎻忚堪
+ var pLoc = ""//闂浣嶇疆
+ var pNum = 0//闂鏁�
+ var pChanged = ""//鏁存敼鎯呭喌
+ var changedProblem = ""//鏁存敼闂
+ var cNum = 0//鏁存敼鏁�
+ var unChangedProblem = ""//鏈暣鏀归棶棰�
+ var unChangeNum = 0//鏈暣鏀规暟
+ var checkStatus = ""//瀹℃牳鎯呭喌
+ problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
+ createCriteria().andEqualTo("stguid", subtask.stguid)
+ }).forEach problemType@{ p ->
+ val problemType = problemtypeMapper.selectByPrimaryKey(p.ptguid)
+ val typeName = if (problemType == null) {
+ val a = ""
+ a
+ } else {
+ problemType.typename
+ }
+ val lr = if (y > 1) "\n" else ""
+ //宸℃煡鎯呭喌鍙婇棶棰樸�佹暣鏀圭粺璁�
+ pType += "${lr}$y銆�${typeName}"
+ pDes += "${lr}$y銆�${p.problemname}"
+ pLoc += "${lr}$y銆�${p.location}"
+ pNum++
+ 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}"
+ y++
+ }
+ addAll(listOf(pType, pDes, pLoc, pNum, pChanged, changedProblem, cNum, unChangedProblem, unChangeNum, checkStatus))
+ }
+ }
+
+ contents[i].addAll(row)
+ }
+
+ head[0].addAll(h1)
+ }
+
+
+
+ private fun getTableTitles(sceneType: Int?, districtCode: String?): List<String> {
+ if (sceneType == null || districtCode == null) return emptyList()
+ val heads = mutableListOf<String>()
+ heads.run {
+ addAll(getSceneName())
+ addAll(getLocation())
+ addAll(getBaseInfo(sceneType))
+ addAll(getContactInfo(sceneType))
+ addAll(getRealTimeStatus(sceneType))
+ addAll(getInspectionInfo(sceneType))
+ addAll(getProblemDistribution(sceneType, districtCode))
+ }
+
+ return heads
+ }
+
+ // 琛ㄥご锛氬満鏅悕
+ private fun getSceneName() = listOf("琛ㄥ崟缂栧彿", "鍞竴搴忓彿", "鍦烘櫙鍚嶇О")
+
+ // 琛ㄥご锛氬満鏅湴鐞嗕綅缃�
+ private fun getLocation(): List<String> = listOf(
+ "琛楅晣", "鍦板潃"
+ )
+
+ // 琛ㄥご锛氬満鏅笓灞炲熀纭�淇℃伅
+ private fun getBaseInfo(sceneType: Int): List<String> = when (sceneType.toString()) {
+ Constant.ScenseType.TYPE1.value -> listOf("涓氫富鍗曚綅", "鏂藉伐鍗曚綅", "寤虹瓚闈㈢Н(m虏)", "鏂藉伐璧峰鏃堕棿", "鏂藉伐缁撴潫鏃堕棿", "鏂藉伐闃舵", "宸ョ▼绫诲瀷")
+ Constant.ScenseType.TYPE2.value -> listOf("涓氫富鍗曚綅", "绉熻祦鍗曚綅", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��", "绫诲瀷")
+ Constant.ScenseType.TYPE3.value -> listOf("涓氫富鍗曚綅", "鏂囨槑鍦虹珯", "缁胯壊鐜繚绔欏巶", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��")
+ Constant.ScenseType.TYPE14.value -> listOf("涓氫富鍗曚綅", "绉熻祦鍗曚綅", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��", "绫诲瀷")
+ else -> listOf()
+ }
+
+ // 琛ㄥご锛氬満鏅仈绯绘柟寮�
+ private fun getContactInfo(sceneType: Int): List<String> = when (sceneType) {
+ else -> listOf("鑱旂郴浜�", "鑱旂郴鏂瑰紡")
+ }
+
+ // 琛ㄥご锛氬満鏅幇鍦烘儏鍐�
+ private fun getRealTimeStatus(sceneType: Int): List<String> = when (sceneType) {
+ else -> listOf()
+ }
+
+ // 琛ㄥご锛氬贰鏌ユ儏鍐靛強闂銆佹暣鏀圭粺璁�
+ private fun getInspectionInfo(sceneType: Int): List<String> = when (sceneType) {
+ else -> listOf("鐩戠鏃堕棿", "闃叉不鑰冩牳璇勫垎", "闃叉不瑙勮寖鎬�", "鎵e垎椤�","闂绫诲瀷", "闂鎻忚堪", "闂浣嶇疆", "闂鏁�", "鏁存敼鎯呭喌", "鏁存敼鏁�", "瀹℃牳鎯呭喌")
+ }
+
+ // 琛ㄥご锛氬叿浣撻棶棰樺垎甯�
+ private val currentProblemType = mutableMapOf<String, String>()
+ private val currentProblemHead = mutableListOf<String>()
+ private fun getProblemDistribution(sceneType: Int, districtCode: String): List<String> {
+ val heads = mutableListOf<String>()
+ currentProblemType.clear()
+ currentProblemHead.clear()
+
+ problemtypeMapper.selectByExample(Example(Problemtype::class.java).apply {
+ createCriteria().andEqualTo("scensetypeid", sceneType)
+ .andEqualTo("districtcode", districtCode)
+ orderBy("typeid")
+ }).forEach {
+ if (!heads.contains(it.typename)) {
+ heads.add(it.typename ?: "")
+ }
+ currentProblemType[it.guid ?: ""] = it.typename ?: ""
+ }
+ currentProblemHead.addAll(heads)
+ return heads
+ }
+
+
+ /**
+ * 鑾峰彇琛ㄦ牸鏁版嵁婧�
+ */
+ private fun getTableDataSource(config: ExcelConfigVo): List<Subtask> {
+ if (config.sceneType == null) return emptyList()
+
+ val result = mutableListOf<Subtask>()
+
+ //1. 鏌ユ壘鐗瑰畾鐨勫贰鏌ヤ换鍔℃垨鑰呮墍鏈夌殑璁″垝宸℃煡浠诲姟
+ var taskSceneIdList = listOf<String>()
+ val subTaskList = if (config.subTaskIdList?.isNotEmpty() == true ||
+ (config.startTime != null || config.endTime != null)
+ ) {
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().apply {
+ if (config.subTaskIdList?.isNotEmpty() == true) {
+ andIn("stguid", config.subTaskIdList)
+ }
+ config.startTime?.let { andGreaterThanOrEqualTo("planstarttime", it) }
+ config.endTime?.let { andLessThanOrEqualTo("planendtime", it) }
+ }
+ })
+ } else {
+ taskSceneIdList = monitorobjectversionMapper.getSceneByType(config.topTaskGuid, config.sceneType)
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().andIn("scenseid", taskSceneIdList)
+ .andEqualTo("tguid", config.topTaskGuid)
+ })
+ }
+
+ if (taskSceneIdList.isNotEmpty()) {
+ taskSceneIdList.forEach {
+ var subtask: Subtask? = null
+ for (s in subTaskList) {
+ if (s.scenseid == it) {
+ subtask = s
+ break
+ }
+ }
+ if (subtask == null) subtask = Subtask().apply { scenseid = it }
+ result.add(subtask)
+ }
+ } else {
+ result.addAll(subTaskList)
+ }
+
+ return result
+ }
+
+ private fun getTableContents(config: ExcelConfigVo, colCounts: Int = 0): List<Array<Any>> {
+ if (config.sceneType == null) return emptyList()
+
+ //1. 鏌ユ壘鐗瑰畾鐨勫贰鏌ヤ换鍔℃垨鑰呮墍鏈夌殑璁″垝宸℃煡浠诲姟
+ var taskSceneIdList = listOf<String>()
+ val subTaskList = if (config.subTaskIdList?.isNotEmpty() == true ||
+ (config.startTime != null || config.endTime != null)
+ ) {
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().apply {
+ if (config.subTaskIdList?.isNotEmpty() == true) {
+ andIn("stguid", config.subTaskIdList)
+ }
+ config.startTime?.let { andGreaterThanOrEqualTo("planstarttime", it) }
+ config.endTime?.let { andLessThanOrEqualTo("planendtime", it) }
+ }
+ })
+ } else {
+ taskSceneIdList = monitorobjectversionMapper.getSceneByType(config.topTaskGuid, config.sceneType)
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().andIn("scenseid", taskSceneIdList)
+ .andEqualTo("tguid", config.topTaskGuid)
+ })
+ }
+
+ val contents = mutableListOf<Array<Any>>()
+ val subTasks = mutableListOf<Subtask>()
+
+ if (taskSceneIdList.isNotEmpty()) {
+ taskSceneIdList.forEach {
+ val rowContent = mutableListOf<Any>()
+
+ var subtask: Subtask? = null
+ for (s in subTaskList) {
+ if (s.scenseid == it) {
+ subtask = s
+ break
+ }
+ }
+ //璇ュ満鏅湭宸℃煡
+ if (subtask == null) {
+ val scene = scenseMapper.selectByPrimaryKey(it)
+ rowContent.apply {
+ add(scene.index?.toString() ?: "")
+ add(scene.extension2 ?: "")
+ add(scene.name ?: "")
+ }
+ val left = colCounts - getSceneName().size
+ repeat(left) {
+ rowContent.add("")
+ }
+ } else {
+ rowContent.addAll(tableContent(subtask))
+ }
+
+ contents.add(rowContent.toTypedArray())
+ }
+ } else {
+ subTaskList.forEach {
+ val c = tableContent(it)
+ contents.add(c)
+ }
+ }
+
+ return contents
+ }
+
+ private fun tableContent(subtask: Subtask): Array<Any> {
+
+ val row = mutableListOf<Any>()
+ //鏌ヨ璇ヤ换鍔″搴旂殑鍦烘櫙
+ val scene = scenseMapper.selectByPrimaryKey(subtask.scenseid)
+
+ row.apply {
+ // 琛ㄥご锛氬満鏅悕
+ add(scene.index?.toString() ?: "")
+ add(scene.extension2 ?: "")
+ add(scene.name ?: "")
+ // 琛ㄥご锛氬満鏅湴鐞嗕綅缃�
+ add(scene.townname ?: "")
+ add(scene.location ?: "")
+ // 琛ㄥご锛氬満鏅笓灞炲熀纭�淇℃伅
+ addAll(when (scene.typeid.toString()) {
+ Constant.ScenseType.TYPE1.value -> {
+// listOf("涓氫富鍗曚綅", "鏂藉伐鍗曚綅", "寤虹瓚闈㈢Н(m虏)", "鏂藉伐璧峰鏃堕棿", "鏂藉伐缁撴潫鏃堕棿", "鏂藉伐闃舵", "宸ョ▼绫诲瀷")
+ var r = listOf("-", "-", "-", "-", "-", "-", "-")
+ sceneConstructionSiteMapper.selectByPrimaryKey(scene.guid)?.let {
+ r = listOf(it.csEmployerUnit?:"", it.csConstructionUnit?:"", it.csFloorSpace?:"",
+ it.csStartTime?:"", it.csEndTime?:"", it.csStatus?:"", it.csProjectType?:"")
+ }
+ r
+ }
+ Constant.ScenseType.TYPE2.value -> {
+// listOf("涓氫富鍗曚綅", "绉熻祦鍗曚綅", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��", "绫诲瀷")
+ var r = listOf("-", "-", "-", "-", "-")
+ sceneWharfMapper.selectByPrimaryKey(scene.guid)?.let {
+ r = listOf(it.getwEmployerUnit()?:"", it.getwRentUnit()?:"", it.getwFloorSpace()?:"", it.getwStatus()?:"",
+ it.getwProjectType()?:"")
+ }
+ r
+ }
+ Constant.ScenseType.TYPE3.value -> {
+// listOf("涓氫富鍗曚綅", "鏂囨槑鍦虹珯", "缁胯壊鐜繚绔欏巶", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��")
+ var r = listOf("-", "-", "-", "-", "-")
+ sceneMixingPlantMapper.selectByPrimaryKey(scene.guid)?.let {
+ r = listOf(
+ it.mpEmployerUnit?:"", if (it.mpCivillyPlant == true) "鏄�" else "鍚�", if (it.mpGreenPlant == true) "鏄�" else "鍚�",
+ it.mpFloorSpace?:"", it.mpStatus?:""
+ )
+ }
+ r
+ }
+ Constant.ScenseType.TYPE14.value -> {
+// listOf("涓氫富鍗曚綅", "绉熻祦鍗曚綅", "鍗犲湴闈㈢Н(m虏)", "钀ヨ繍鐘舵��", "绫诲瀷")
+ var r = listOf("-", "-", "-", "-", "-")
+ sceneStorageYardMapper.selectByPrimaryKey(scene.guid)?.let {
+ r = listOf(it.syEmployerUnit?:"", it.syRentUnit?:"", it.syFloorSpace?:"", it.syStatus?:"", it.syProjectType?:"")
+ }
+ r
+ }
+ else -> listOf()
+ })
+ // 琛ㄥご锛氬満鏅仈绯绘柟寮�
+ add(scene.contacts ?: "")
+ add(scene.contactst ?: "")
+ // 琛ㄥご锛氬満鏅幇鍦烘儏鍐�
+ // TODO: 2022/7/10 鏆傛棤
+ // 琛ㄥご锛氬贰鏌ユ儏鍐靛強闂銆佹暣鏀圭粺璁� 鍜� 琛ㄥご锛氬叿浣撻棶棰樺垎甯�
+ listOf("鐩戠鏃堕棿", "闃叉不鑰冩牳璇勫垎", "闃叉不瑙勮寖鎬�", "鎵e垎椤�","闂绫诲瀷", "闂鎻忚堪", "闂浣嶇疆", "闂鏁�", "鏁存敼鎯呭喌", "鏁存敼鏁�", "瀹℃牳鎯呭喌")
+ add(dateUtil.DateToString(subtask.planstarttime, DateUtil.DateStyle.MM_DD) ?: "")
+ add("")
+ add("")
+ add("")
+ //鏌ヨ瀛愪换鍔″搴旂殑闂锛屽苟涓旀牴鎹潯浠惰繘琛岀瓫閫�
+ var y = 1
+ var pType = ""//闂绫诲瀷
+ var pDes = ""//闂鎻忚堪
+ var pLoc = ""//闂浣嶇疆
+ var pNum = 0//闂鏁�
+ var pChanged = ""//鏁存敼鎯呭喌
+ var cNum = 0//鏁存敼鏁�
+ var checkStatus = ""//瀹℃牳鎯呭喌
+ var pDis = mutableListOf<String>()//鍏蜂綋闂鍒嗗竷
+ repeat(currentProblemHead.size) { pDis.add("")}
+ problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
+ createCriteria().andEqualTo("stguid", subtask.stguid)
+ }).forEach problemType@{ p ->
+ val typeName = currentProblemType[p.ptguid]
+ val lr = if (y > 1) "\n" else ""
+ //宸℃煡鎯呭喌鍙婇棶棰樸�佹暣鏀圭粺璁�
+ pType += "${lr}$y銆�${typeName}"
+ pDes += "${lr}$y銆�${p.problemname}"
+ pLoc += "${lr}$y銆�${p.location}"
+ pNum++
+ pChanged += "${lr}$y銆�${if (p.ischanged == true) "鉁�" else "脳"}"
+ if (p.ischanged == true) cNum++
+ 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}"
+ y++
+
+ //鍏蜂綋闂鍒嗗竷
+ for (t in currentProblemHead.indices) {
+ if (typeName == currentProblemHead[t]) {
+ pDis[t] = if (p.ischanged == true) "1" else "0"
+ break
+ }
+ }
+ }
+ addAll(listOf(pType, pDes, pLoc, pNum, pChanged, cNum, checkStatus))
+ addAll(pDis)
+ }
+
+ return row.toTypedArray()
}
}
\ No newline at end of file
--
Gitblit v1.9.3