From 82baf5d28ce79aa4d3b64956207d247596726924 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期二, 10 十二月 2024 11:21:33 +0800
Subject: [PATCH] 1. BgTaskStatus状态属性序列化
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt | 221 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 120 insertions(+), 101 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 d8d8315..e0f8796 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,14 +1,19 @@
package cn.flightfeather.supervision.lightshare.service.impl
+import cn.flightfeather.supervision.business.bgtask.ReportTaskCtrl
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.exception.BizException
import cn.flightfeather.supervision.common.utils.*
import cn.flightfeather.supervision.domain.ds1.entity.*
import cn.flightfeather.supervision.domain.ds1.mapper.*
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper
import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper
import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper
@@ -17,14 +22,13 @@
import cn.flightfeather.supervision.lightshare.vo.*
import com.github.pagehelper.PageHelper
import org.springframework.beans.BeanUtils
+import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import tk.mybatis.mapper.entity.Example
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
-import java.io.OutputStream
import java.net.URLEncoder
-import java.nio.charset.Charset
import java.nio.charset.StandardCharsets
import java.util.*
import javax.servlet.http.HttpServletResponse
@@ -35,80 +39,39 @@
*/
@Service
class SearchServiceImpl(
- 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,
- val monitorobjectversionMapper: MonitorobjectversionMapper,
- val evaluationruleMapper: EvaluationruleMapper,
- val evaluationsubruleMapper: EvaluationsubruleMapper2,
- val evaluationMapper: EvaluationMapper,
- val itemevaluationMapper: ItemevaluationMapper,
- val ledgerSubTypeMapper: LedgerSubTypeMapper,
- val ledgerRecordMapper: LedgerRecordMapper,
- val userMapMapper: UserMapMapper,
- val taskService: TaskService
+ 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,
+ val monitorobjectversionMapper: MonitorobjectversionMapper,
+ val evaluationruleMapper: EvaluationruleMapper,
+ val evaluationsubruleMapper: EvaluationsubruleMapper2,
+ val evaluationMapper: EvaluationMapper,
+ val itemevaluationMapper: ItemevaluationMapper,
+ val ledgerSubTypeMapper: LedgerSubTypeMapper,
+ val ledgerRecordMapper: LedgerRecordMapper,
+ val userMapMapper: UserMapMapper,
+ val taskService: TaskService,
+ private val evaluationRep: EvaluationRep,
+ private val evaluationRuleRep: EvaluationRuleRep,
+ private val sceneRep: SceneRep,
+ @Value("\${filePath}") var filePath: String,
+ @Value("\${imgPath}") var imgPath: String,
+ private val dbMapper: DbMapper,
+ private val reportTaskCtrl: ReportTaskCtrl,
) : SearchService {
- private val dateUtil = DateUtil()
-
- override fun writeToFile(config: ExcelConfigVo, mode:Int) {
- val dbMapper = DbMapper(
- scenseMapper,
- problemlistMapper,
- problemtypeMapper,
- subtaskMapper,
- monitorobjectversionMapper,
- sceneConstructionSiteMapper,
- sceneMixingPlantMapper,
- sceneStorageYardMapper,
- sceneWharfMapper,
- taskMapper,
- evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper,
- ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper
- )
- 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): Boolean {
+ override fun writeToFile(config: ExcelConfigVo, mode: Int) {
val dbMapper = DbMapper(
scenseMapper,
problemlistMapper,
@@ -124,6 +87,19 @@
ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper
)
val dataSource = DataSource(config, dbMapper)
+ val t = when (mode) {
+ 8 -> ReportOne(dataSource)
+ 9 -> ReportTwo(dataSource)
+ 10 -> ReportThree(dataSource)
+
+ else -> null
+ }
+// t?.execute()
+ t?.toFile("target/")
+ }
+
+ override fun getExcel(config: ExcelConfigVo, response: HttpServletResponse): Boolean {
+ val dataSource = DataSource(config, dbMapper)
val t = when (config.mode) {
1 -> ReportOne(dataSource)
2 -> ReportTwo(dataSource)
@@ -132,25 +108,26 @@
else -> ReportOne(dataSource)
}
val fileName = t.getReportName()
- val fName = URLEncoder.encode(fileName, "UTF-8")
- response.apply {
- setHeader("Content-Disposition", "attachment;filename=$fName")
- setHeader("fileName", fName)
- addHeader("Access-Control-Expose-Headers", "fileName")
- contentType = "application/vnd.ms-excel;charset=UTF-8"
- setHeader("Pragma", "no-cache")
- setHeader("Cache-Control", "no-cache")
- setDateHeader("Expires", 0)
- }
-
- val p = Constant.DEFAULT_FILE_PATH + "/files/autoscore/"
+ val p = "$filePath/autoscore/"
val file = File(p + fileName)
if (config.forceUpdate || !file.exists()) {
- t.toFile(p)
+ val downloadUrl = "/autoscore/${fileName}"
+ reportTaskCtrl.startTask(t, downloadUrl)
+ return false
+ } else {
+ val fName = Base64.getEncoder().encodeToString(fileName.toByteArray())
+ response.apply {
+ setHeader("Content-Disposition", "attachment;filename=$fName")
+ setHeader("fileName", fName)
+ addHeader("Access-Control-Expose-Headers", "fileName")
+ contentType = "application/vnd.ms-excel;charset=UTF-8"
+ setHeader("Pragma", "no-cache")
+ setHeader("Cache-Control", "no-cache")
+ setDateHeader("Expires", 0)
+ }
+ response.outputStream.write(file.readBytes())
+ return true
}
- response.outputStream.write(file.readBytes())
-
- return true
}
override fun getSubTaskDetail(config: ExcelConfigVo): SubTaskTableVo {
@@ -269,8 +246,9 @@
}
//寤虹珛绗竴灞傜洰褰曪紝鍖呭惈鎵�鏈夌殑浠诲姟
- 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
+ val time = DateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+ var basePath =
+ imgPath + File.separator + "temp" + File.separator + time
var file = File(basePath)
var i = 1
while (file.exists() && i <= 100) {
@@ -321,7 +299,8 @@
mediafileMapper.selectByExample(Example(Mediafile::class.java).apply {
createCriteria().andEqualTo("businessguid", p.guid)
}).forEach { m ->
- val picPath = Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + m.extension1 + m.guid + ".jpg"
+ val picPath =
+ imgPath + File.separator + m.extension1 + m.guid + ".jpg"
val fromFile = File(picPath)
val picName = p.problemname + "_" + p.location + "($y).jpg"
val toFile = File(pPath + File.separator + picName)
@@ -360,8 +339,9 @@
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 basePath = Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + "temp" + File.separator + topTask.name
+ val time = DateUtil.DateToString(Date(), "yyyy-MM-dd_HH-mm-ss")
+ val basePath =
+ imgPath + File.separator + "temp" + File.separator + topTask.name
val file = File(basePath)
if (!file.exists()) {
file.mkdirs()
@@ -380,7 +360,7 @@
//寤虹珛涓�涓瓙浠诲姟鏂囦欢澶�
var subTaskFilePath = "${basePath}${File.separator}(${
- dateUtil.DateToString(
+ DateUtil.DateToString(
it.planstarttime,
DateUtil.DateStyle.YYYY_MM_DD_CN
)
@@ -430,7 +410,7 @@
u.forEach { f ->
val picPath =
- Constant.DEFAULT_FILE_PATH + File.separator + "images" + File.separator + f.extension1 + f.guid + ".jpg"
+ imgPath + File.separator + f.extension1 + f.guid + ".jpg"
val fromFile = File(picPath)
val picName = f.description
val toFile = File(pPath + File.separator + picName)
@@ -470,7 +450,13 @@
return response
}
- override fun searchScore4JingAn(token: String, year: Int, month: Int, page: Int?, perPage: Int?): BaseResponse<List<ScoreVo>> {
+ override fun searchScore4JingAn(
+ token: String,
+ year: Int,
+ month: Int,
+ page: Int?,
+ perPage: Int?,
+ ): BaseResponse<List<ScoreVo>> {
if (token != "jingan") {
return BaseResponse(false)
}
@@ -493,7 +479,12 @@
return BaseResponse(true, head = DataHead(p.pageNum, p.pages), data = result)
}
- override fun searchSubTaskByKeyword(userId: String, keyword: String, page: Int, perPage: Int): BaseResponse<List<SubtaskVo>> {
+ 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, "浼佷笟鐢ㄦ埛鏃犳煡璇㈡潈闄�")//浼佷笟鐢ㄦ埛鏃犳硶鏌ヨ
val result = mutableListOf<SubtaskVo>()
@@ -535,10 +526,12 @@
evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper,
ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper
)
- val task = taskService.getByDistrictCode(config.districtCode, config.startTime)?.takeIf { it.isNotEmpty() }?.get(0)
+ val task =
+ taskService.getByDistrictCode(config.districtCode, config.startTime).takeIf { it.isNotEmpty() }?.get(0)
config.topTaskGuid = task?.tguid ?: ""
+ config.allScene = false
val dataSource = mutableListOf<DataSource>()
- config.sceneType = Constant.ScenseType.TYPE1.value.toInt()
+// config.sceneType = Constant.SceneType.TYPE1.value.toInt()
dataSource.add(DataSource(config, dbMapper))
// val config2 = config.copy(sceneType = Constant.ScenseType.TYPE2.value.toInt())
@@ -556,4 +549,30 @@
return BaseTableVo(result.first, result.second)
}
+
+ override fun getScoreDetail(subTaskId: String): ScoreDetail {
+ //鍦烘櫙淇℃伅
+ val scene = sceneRep.findBySubTask(subTaskId)
+ //鎬诲垎
+ val evaluation = evaluationRep.findBySubtask(subTaskId)
+ //瀛愯鍒欓�愭潯寰楀垎
+ val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
+ if (subRuleScores.isEmpty()) throw BizException("鏃犺瘎浼拌褰�")
+ //璇勫垎鎬昏鍒�
+ val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("鏈壘鍒扮浉鍏宠嚜鍔ㄨ瘎浼拌鍒�")
+ //鎬昏鍒欏搴旂殑璇勫垎瀛愯鍒�
+ val subRules = evaluationRuleRep.findSubRule(rule.guid)
+ //鏌ヨ缁撴灉
+ val result = ScoreDetail()
+ result.status = if (scene?.extension1.equals("1")) "鍦ㄥ缓" else "瀹屽伐"
+
+ result.updateTime = evaluation?.updatedate
+ subRules.forEach {
+ it.ertype ?: return@forEach
+ result.addDetail(result.details, it, it.ertype!! - 1, subRuleScores, true)
+ }
+ result.calScore()
+
+ return result
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3