From ae04c5d925b0094e1a1ba1f2ce0bf6da0a6fee04 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 22 一月 2026 17:27:55 +0800
Subject: [PATCH] 2026.1.22 1. 新增台账上传office文档功能; 2. 新增office文档存储原始文档名字功能
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt | 510 ++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 350 insertions(+), 160 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
index f7007b5..a2f7cb1 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
@@ -5,31 +5,33 @@
import cn.flightfeather.supervision.domain.enumeration.AssessmentRuleType
import cn.flightfeather.supervision.domain.enumeration.SceneType
import cn.flightfeather.supervision.domain.mapper.*
+import cn.flightfeather.supervision.domain.repository.EvaluationRep
import cn.flightfeather.supervision.infrastructure.utils.DateUtil
import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
+import cn.flightfeather.supervision.domain.repository.UserConfigRep
import cn.flightfeather.supervision.lightshare.service.EvaluationService
import cn.flightfeather.supervision.lightshare.service.ItemevaluationService
-import cn.flightfeather.supervision.lightshare.vo.AssessmentGradeVo
-import cn.flightfeather.supervision.lightshare.vo.AssessmentSearchCondition
-import cn.flightfeather.supervision.lightshare.vo.CreditInfoVo
-import cn.flightfeather.supervision.lightshare.vo.GradeDetailVo
+import cn.flightfeather.supervision.lightshare.vo.*
import com.github.pagehelper.PageHelper
import org.springframework.stereotype.Service
import tk.mybatis.mapper.entity.Example
+import java.time.LocalDateTime
import java.util.*
import javax.servlet.http.HttpServletResponse
@Service
class EvaluationServiceImpl(
- val evaluationMapper: EvaluationMapper,
- val evaluationruleMapper: EvaluationruleMapper,
- val evaluationsubruleMapper: EvaluationsubruleMapper,
- val userinfoMapper: UserinfoMapper,
- val baseInfoMapper: BaseInfoMapper,
- val companyMapper: CompanyMapper,
- val overallEvaluationMapper: OverallEvaluationMapper,
- val autoScore: AutoScore,
- val itemevaluationService: ItemevaluationService
+ val evaluationMapper: EvaluationMapper,
+ val evaluationruleMapper: EvaluationruleMapper,
+ val evaluationsubruleMapper: EvaluationsubruleMapper,
+ val userinfoMapper: UserinfoMapper,
+ val baseInfoMapper: BaseInfoMapper,
+ val companyMapper: CompanyMapper,
+ val overallEvaluationMapper: OverallEvaluationMapper,
+ val autoScore: AutoScore,
+ val itemevaluationService: ItemevaluationService,
+ private val userConfigRep: UserConfigRep,
+ private val evaluationRep: EvaluationRep,
) : EvaluationService {
override fun findOne(id: String): Evaluation = evaluationMapper.selectByPrimaryKey(id)
@@ -38,7 +40,7 @@
override fun save(evaluation: Evaluation): Int {
updateRank(evaluation, true)
- return evaluationMapper.insert(evaluation)
+ return evaluationMapper.insert(evaluation)
}
override fun update(evaluation: Evaluation): Int {
@@ -48,17 +50,25 @@
override fun delete(id: String): Int = evaluationMapper.deleteByPrimaryKey(id)
- override fun getTotalPoints(userId: String, evaluatorType: Int, startTime: String, endTime: String, sceneTypeId: Int?, erGuid: String?, eId: String?): List<Evaluation> {
+ override fun getTotalPoints(
+ userId: String,
+ evaluatorType: Int,
+ startTime: String,
+ endTime: String,
+ sceneTypeId: Int?,
+ erGuid: String?,
+ eId: String?,
+ ): List<Evaluation> {
val example = Example(Evaluation::class.java)
val criteria = example.createCriteria()
- val startDate = DateUtil().StringToDate(startTime)
- val endDate = DateUtil().StringToDate(endTime)
+ val startDate = DateUtil.StringToDate(startTime)
+ val endDate = DateUtil.StringToDate(endTime)
criteria.andEqualTo("iguid", userId)
- .andBetween("createdate", startDate, endDate)
+ .andBetween("createdate", startDate, endDate)
example.and(example.createCriteria().apply {
if (evaluatorType == 0) {
orEqualTo("evaluatorrealname", evaluatorType.toString())
- .orIsNull("evaluatorrealname")
+ .orIsNull("evaluatorrealname")
} else {
andEqualTo("evaluatorrealname", evaluatorType.toString())
}
@@ -67,24 +77,35 @@
eId?.let { criteria.andEqualTo("guid", eId) }
sceneTypeId?.let {
example.and(example.createCriteria()
- .orEqualTo("scensetypeid", sceneTypeId.toByte())
- .orIsNull("scensetypeid")
+ .orEqualTo("scensetypeid", sceneTypeId.toByte())
+ .orIsNull("scensetypeid")
)
}
return evaluationMapper.selectByExample(example)
}
- override fun getHistoryPoint(userId: String, page: Int, per_page: Int, response: HttpServletResponse): List<AssessmentGradeVo> {
+ override fun getHistoryPoint(
+ userId: String,
+ page: Int,
+ per_page: Int,
+ platform: String?,
+ period: String?,
+ response: HttpServletResponse,
+ ): List<AssessmentGradeVo> {
val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList()
-
+ // FIXME: 2022/11/8 涓存椂娣诲姞杩囧害鍔熻兘锛屾彁渚涘井淇″皬绋嬪簭鍓嶇姹戒慨绫诲瀷鐨勫満鏅崟鐙殑璇勪及娓呭崟 锛屽満鏅被鍨嬩负 -7
+ var sceneType = userInfo.extension2
+ if (platform == "weixin" && sceneType == SceneType.VehicleRepair.value.toString()) {
+ sceneType = "-7"
+ }
//璇勫垎瑙勫垯涓嬬殑鍒嗙骇銆佺瓑绾ч鑹插強绛夌骇璇勮
val pointLevel = mutableListOf<Pair<Int, Int>>()
val evaluateLevel = mutableListOf<String>()
val creditTexts = mutableListOf<String>()
val levelColors = mutableListOf<String>()
val rule = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
- createCriteria().andEqualTo("scensetypeid", userInfo.extension2)
+ createCriteria().andEqualTo("scensetypeid", sceneType)
.andEqualTo("ruletype", "0")
})
if (rule.isNotEmpty()) {
@@ -105,10 +126,15 @@
}
val example = Example(Evaluation::class.java).apply {
createCriteria().andEqualTo("iguid", userId)
- .andEqualTo("ertype", AssessmentRuleType.Total.value.toByte())
+ .andEqualTo("ertype", AssessmentRuleType.Total.value.toByte())
+ .apply {
+ period?.let { andEqualTo("scensename", it) }
+ }
//鏍规嵁璇勪及浜虹殑绫诲瀷杩涜绛涢�夛紝鑷瘎鍜屽畼鏂硅瘎鍒嗗垎寮�鎺掑悕
- and(createCriteria().orIsNull("evaluatorrealname")
- .orEqualTo("evaluatorrealname", 0))
+ and(
+ createCriteria().orIsNull("evaluatorrealname")
+ .orEqualTo("evaluatorrealname", 0)
+ )
orderBy("createdate").desc()
}
val counts = evaluationMapper.selectCountByExample(example)
@@ -124,7 +150,7 @@
resultList.add(AssessmentGradeVo().apply {
this.userId = userId
userRealName = userInfo.realname
- sceneType = userInfo.extension2?.toIntOrNull() ?: SceneType.NoType.value
+ this.sceneType = userInfo.extension2?.toIntOrNull() ?: SceneType.NoType.value
tPGuid = it.guid
tPRuleGuid = it.stguid
totalPoint = it.resultscorebef?.toInt() ?: 0
@@ -134,47 +160,52 @@
creditText = l["creditText"]
rank = it.promissednum ?: 1
updateDate = it.createdate
- period = it.scensename
+ this.period = it.scensename
})
}
return resultList
}
- override fun getCreditInfo(userId: String): CreditInfoVo {
- val userinfo = userinfoMapper.selectByPrimaryKey(userId)
+ override fun getCreditInfo(userId: String, period: String?): CreditInfoVo {
+ val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return CreditInfoVo()
val baseInfo = baseInfoMapper.selectByPrimaryKey(userId)
- val company = companyMapper.selectByPrimaryKey(baseInfo.ciGuid)
-
+ val company = baseInfo?.let { companyMapper.selectByPrimaryKey(it.ciGuid) }
val result = CreditInfoVo(
- userId,
- baseInfo.biName,
- userinfo.extension2?.toIntOrNull() ?: SceneType.NoType.value,
- baseInfo.ciName,
- baseInfo.biManagementCompany,
- baseInfo.biContact,
- baseInfo.biTelephone,
- baseInfo.biAddress,
- district = company.ciDistrictName,
- town = company.ciTownName
+ userId,
+ baseInfo?.biName,
+ userinfo?.extension2?.toIntOrNull() ?: SceneType.NoType.value,
+ baseInfo?.ciName,
+ baseInfo?.biManagementCompany,
+ baseInfo?.biContact,
+ baseInfo?.biTelephone,
+ baseInfo?.biAddress,
+ district = company?.ciDistrictName,
+ town = company?.ciTownName
)
val rule = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
val c = createCriteria()
- userinfo.extension2?.toByteOrNull()?.let {
+ userinfo?.extension2?.toByteOrNull()?.let {
c.andEqualTo("scensetypeid", it)
- .andEqualTo("ruletype", "0")
+ .andEqualTo("ruletype", "0")
}
}).takeIf { it.isNotEmpty() }?.get(0) ?: return result
+ val periodList = DateUtil.getSuitablePeriod(period)
val overallEvaluation = overallEvaluationMapper.selectByExample(Example(OverallEvaluation::class.java).apply {
- createCriteria().andEqualTo("biGuid", baseInfo.biGuid)
+ createCriteria().andEqualTo("biGuid", userinfo?.guid)
+ .apply {
+ if (periodList.isNotEmpty()) {
+ andIn("oePeriod", periodList)
+ }
+ }
orderBy("oePublishTime").desc()
}).takeIf { it.isNotEmpty() }?.get(0) ?: return result
//璇勫垎璁板綍瀵瑰簲 鐨勬墦鍒嗗懆鏈� 锛屾牸寮忎负 YYYY/M-M锛屾煇骞存煇鏈堣嚦鏌愭湀
- val period = overallEvaluation.oePeriod
+// val period = overallEvaluation.oePeriod
//璇勫垎绛夌骇鍒嗘暟鐣岄檺锛屾牸寮忎负 0,59#60,89#90,100锛岃〃绀烘湁涓変釜鍒嗘暟娈�
val levels = rule.extension1?.split("#")?.asReversed()
//璇勫垎绛夌骇瀵瑰簲鐨勬弿杩帮紝鏍煎紡涓� 杈冨樊#涓�鑸�#浼樼锛屽搴斾笁涓垎鏁版鐨勬弿杩�
@@ -206,8 +237,8 @@
else -> null
}
- result.publishTime = DateUtil().DateToString(overallEvaluation.oePublishTime, "YYYY骞碝M鏈�")
- result.updateTime = DateUtil().DateToString(overallEvaluation.oeUpdateTime, "YYYY骞碝M鏈�")
+ result.publishTime = DateUtil.DateToString(overallEvaluation.oePublishTime, "YYYY骞碝M鏈�")
+ result.updateTime = DateUtil.DateToString(overallEvaluation.oeUpdateTime, "YYYY骞碝M鏈�")
result.creditLevel = creditLevel
result.creditLevelDes = creditLevelDes
result.codeLevel = codeLevel
@@ -216,15 +247,51 @@
return result
}
+ override fun getCreditCount(userId: String, condition: UserSearchCondition): BaseResponse<CountVo> {
+ if (condition.sceneTypes.size != 1) return BaseResponse(false, "鍙敮鎸佸崟涓満鏅被鍨嬬殑鏌ヨ")
- override fun getAssessments(userId: String, condition: AssessmentSearchCondition, page: Int, perPage: Int, response: HttpServletResponse): List<AssessmentGradeVo> {
+ val config = userConfigRep.getUserConfigBySubType(userId)
+ val condition2 = UserSearchCondition.fromUserConfig(config, condition)
+
+ // 缁跨爜
+ var level0 = 0
+ // 榛勭爜
+ var level1 = 0
+ // 绾㈢爜
+ var level2 = 0
+ condition2.period = condition2.period
+ ?: overallEvaluationMapper.getLatestPeriod(condition2)
+ ?: return BaseResponse(false, "鏃犺褰�")
+
+ overallEvaluationMapper.getCreditCount(condition2).forEach {
+ when (it.oeCodeLevel?.toInt()) {
+ 0 -> level0++
+ 1 -> level1++
+ 2 -> level2++
+ }
+ }
+ val result = CountVo().apply {
+ tag = condition2.period
+ countList.addAll(listOf(level0, level1, level2))
+ }
+
+ return BaseResponse(true, data = result)
+ }
+
+ override fun getAssessments(
+ userId: String,
+ condition: AssessmentSearchCondition,
+ page: Int,
+ perPage: Int,
+ response: HttpServletResponse,
+ ): List<AssessmentGradeVo> {
val user = userinfoMapper.selectByPrimaryKey(userId)
- val districtName = user.extension1
+ val districtName = user?.extension1
val p = PageHelper.startPage<Evaluation>(page, perPage)
val result = mutableListOf<AssessmentGradeVo>()
- evaluationMapper.getAssessments(districtName?:"", condition.searchText, "", condition.sceneTypes).forEach {
+ evaluationMapper.getAssessments(districtName ?: "", condition.searchText, "", condition.sceneTypes).forEach {
//姝ゅ鐢变簬 PageHelper 鐨勫垎椤垫搷浣滐紝浼氬鑷寸粨鏋滅殑鏁伴噺寮哄埗涓� perPage鐨勫�硷紝鍖呮嫭null
if (it != null) {
result.add(AssessmentGradeVo().apply {
@@ -252,12 +319,23 @@
return response
}
- override fun uploadScore(userId: String, period: String, ruleId: String?, itemList: List<Pair<String, String>>): Boolean {
+ override fun uploadScore(
+ userId: String,
+ period: String,
+ ruleId: String?,
+ itemList: List<Pair<String, String>>,
+ ): Boolean {
val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return false
+ var sceneType = userinfo.extension2
+
+ // FIXME: 2022/11/8 涓存椂娣诲姞杩囧害鍔熻兘锛屾彁渚涘井淇″皬绋嬪簭鍓嶇姹戒慨绫诲瀷鐨勫満鏅崟鐙殑璇勪及娓呭崟 锛屽満鏅被鍨嬩负 -7
+ if (sceneType == SceneType.VehicleRepair.value.toString()) {
+ sceneType = "-7"
+ }
//璇ュ満鏅被鍨嬩笅鐨勬�诲緱鍒嗚鍒�
val tRule = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
- createCriteria().andEqualTo("scensetypeid", userinfo.extension2)
+ createCriteria().andEqualTo("scensetypeid", sceneType)
.andEqualTo("ruletype", AssessmentRuleType.Total.value)
.andIsNull("tasktypeid")
}).takeIf { it.isNotEmpty() }?.get(0)
@@ -265,20 +343,11 @@
var totalPoint = 0
var tEvaluation = Evaluation()
- //涓婁紶鐨勫緱鍒嗚鍒�
-// var rule = Evaluationrule()
-// val subRules:List<Evaluationsubrule> = if (ruleId != null) {
-// rule = evaluationruleMapper.selectByPrimaryKey(ruleId)
-// evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
-// createCriteria().andEqualTo("erguid", ruleId)
-// })
-// }
-
- val ruleList = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
- createCriteria().andEqualTo("scensetypeid", userinfo.extension2)
- .andNotEqualTo("ruletype", AssessmentRuleType.Total.value)
+ evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
+ createCriteria().andEqualTo("scensetypeid", sceneType)
+ .andNotEqualTo("ruletype", AssessmentRuleType.Total.value)
.andIsNull("tasktypeid")
- }).forEach {rule->
+ }).forEach { rule ->
val subRules = evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
createCriteria().andEqualTo("erguid", rule.guid)
})
@@ -290,43 +359,49 @@
//鎬诲緱鍒�
var totalScore = 0
+ //鏍规嵁涓婁紶鐨勯�夋嫨鐨勬潯鐩紝鐢熸垚瀵瑰簲鐨勮瘎鍒嗚褰�
itemList.forEach {
for (s in subRules) {
if (s.guid == it.first) {
var fatherId: String?
var subRule = s
var score = it.second
+ // 鏍规嵁涓婁紶鐨勬潯鐩敓鎴愬搴旂殑璇ユ潯鐩緱鍒嗚褰曚互鍙婂叾鎵�鏈夌殑鐖堕」鏉$洰鐨勫緱鍒嗚褰�
do {
- val result = calculateScore(rule, evaluation.guid!!, userId, subRule, score, itemEvaluationList)
+ val result =
+ calculateScore(rule, evaluation.guid!!, userId, subRule, score, itemEvaluationList)
fatherId = result.first
- for (s in subRules) {
- if (s.guid == fatherId) {
- subRule = s
+ for (s1 in subRules) {
+ if (s1.guid == fatherId) {
+ subRule = s1
score = result.second ?: "0"
break
}
}
} while (fatherId?.isNotBlank() == true)
-
- totalScore += it.second.toInt()
break
}
}
}
- //鎬诲垎
+ //瑙勫垯璁惧畾鐨勬渶澶у垎鍊�
var maxScore = 0
- subRules.forEach subRules@{s ->
- if (s.ertype == 2) {
+ subRules.forEach subRules@{ s ->
+ //璁$畻搴斿緱鎬诲垎锛宐asic_score锛氳〃绀哄熀纭�鍒嗭紝璁$畻鍦ㄥ簲寰楁�诲垎鍐咃紱addition_score琛ㄧず鍔犲垎锛屼笉璁$畻鍦ㄥ唴
+ if (s.ertype == 2 && s.extension1 != "addition_score") {
maxScore += s.maxscore ?: 0
}
//瑙勫垯宸茬粡鎵撳垎瀹屾瘯锛屽垯璺宠繃
- itemEvaluationList.forEach {i ->
+ itemEvaluationList.forEach { i ->
if (i.esrguid == s.guid) {
+ //濡傛灉鏄渶澶х殑2绾ц瘎浼拌鍒欙紝璁$畻宸茶幏寰楃殑鎬诲垎
+ if (s.ertype == 2) {
+ totalScore += i.value?.toInt() ?: 0
+ }
return@subRules
}
}
- //鍚﹀垯鏂板涓�鏉℃湭鎵e垎鐨勮褰�
+ //鍚﹀垯濡傛灉鍓嶇鍏佽涓嶇敤鍏ㄩ儴璇勫垎锛屾柊澧炰竴鏉℃湭璇勫垎鐨勮褰�
itemEvaluationList.add(Itemevaluation().apply {
ieguid = UUIDGenerator.generate16ShortUUID()
iguid = userId
@@ -375,109 +450,168 @@
return true
}
+ override fun updateScore(
+ userId: String,
+ period: String,
+ ruleId: String?,
+ itemList: List<Pair<String, String>>,
+ ): Boolean {
+ TODO("Not yet implemented")
+ }
+
override fun getDetail(userId: String, period: String): GradeDetailVo {
+ val list = period.split("-")
+ var endM = list[1].toInt()
+ val list2 = list[0].split("/")
+ val year = list2[0].toInt()
+ var startM = list2[1].toInt()
+ var st = LocalDateTime.of(year, startM, 1, 0, 0, 0, 0)
+ var et = LocalDateTime.of(year, endM, 1, 0, 0, 0, 0).plusMonths(1)
+
val result = GradeDetailVo()
val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return result
+ var sceneType = SceneType.getByValue(userinfo.extension2?.toIntOrNull())
+ // FIXME: 2022/11/8 涓存椂娣诲姞杩囧害鍔熻兘锛屾彁渚涘井淇″皬绋嬪簭鍓嶇姹戒慨绫诲瀷鐨勫満鏅崟鐙殑璇勪及娓呭崟 锛屽満鏅被鍨嬩负 -7
+ if (sceneType == SceneType.VehicleRepair) {
+ sceneType = SceneType.VehicleRepair
+ }
//璇ュ満鏅被鍨嬩笅鐨勬墍鏈夊緱鍒嗚鍒�
- var rule0: Evaluationrule? = null
- val rule1List = mutableListOf<Evaluationrule>()
- evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
- createCriteria().andEqualTo("scensetypeid", userinfo.extension2)
- and(createCriteria().orIsNull("tasktypeid").orNotEqualTo("tasktypeid", 1))
- }).forEach {
- if (it.ruletype == AssessmentRuleType.Total.value.toString()) {
- rule0 = it
- } else {
- rule1List.add(it)
- }
+ val rule0 = evaluationRep.findRule(sceneType) ?: return result
+ //鑾峰緱寰楀垎瑙勫垯涓畾涔夌殑璇勪及鍛ㄦ湡锛堝崟浣嶏細鏈堬級
+ val rulePeriod = rule0.scensesubtypeid?.toInt() ?: 1
+ DateUtil.getStartMonthByPeriod(startM, rulePeriod)?.let {
+ startM = it
+ endM = startM + rulePeriod - 1
+ st = LocalDateTime.of(year, startM, 1, 0, 0, 0, 0)
+ et = LocalDateTime.of(year, endM, 1, 0, 0, 0, 0).plusMonths(1)
}
- if (rule0 == null) return result
- //寰楀垎瑙h鍜屽緱鍒嗚鎯�
- evaluationMapper.selectByExample(Example(Evaluation::class.java).apply {
+ //鑾峰彇鏈�鏂颁竴鏈熺殑鎬诲垎
+ val latestEva = evaluationRep.findLatest(rule0.guid, userId, period, st, et)
+ //鏍规嵁鎬诲垎鍛ㄦ湡鑾峰彇鐩稿悓鍛ㄦ湡鍐呯殑瀛愯瘎鍒�
+ val latestSubEva = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply {
createCriteria().andEqualTo("iguid", userId)
- .andEqualTo("ertype", AssessmentRuleType.Total.value.toByte())
- .andEqualTo("scensename", period)
- }).takeIf { it.isNotEmpty() }?.get(0)?.let {
- rule0?.apply {
- val pointLevel = mutableListOf<Pair<Int, Int>>()
- val evaluateLevel = mutableListOf<String>()
- val creditTexts = mutableListOf<String>()
- val levelColors = mutableListOf<String>()
- extension1?.split("#")?.forEach {
- val pStr = it.split(",")
- pointLevel.add(Pair(pStr[0].toInt(), pStr[1].toInt()))
- }
- extension2?.split("#")?.forEach {
- evaluateLevel.add(it)
- }
- extension3?.split("#")?.forEach {
- creditTexts.add(it)
- }
- remark?.split(";")?.forEach {
- levelColors.add(it)
- }
+ .andEqualTo("scensename", latestEva?.scensename)
+ .andNotEqualTo("ertype", AssessmentRuleType.Total.value.toByte())
+ })
+ latestEva?.let {
+ latestSubEva.add(it)
+ }
+ latestSubEva.forEach { e ->
+ val rule = evaluationruleMapper.selectByPrimaryKey(e.stguid)
+ //鎬诲垎瑙勫垯锛岀敓鎴愭�讳綋璇勪环
+ if (rule.ruletype == AssessmentRuleType.Total.value.toString()) {
+ rule?.apply {
+ val pointLevel = mutableListOf<Pair<Int, Int>>()
+ val evaluateLevel = mutableListOf<String>()
+ val creditTexts = mutableListOf<String>()
+ val levelColors = mutableListOf<String>()
+ extension1?.split("#")?.forEach {
+ val pStr = it.split(",")
+ pointLevel.add(Pair(pStr[0].toInt(), pStr[1].toInt()))
+ }
+ extension2?.split("#")?.forEach {
+ evaluateLevel.add(it)
+ }
+ extension3?.split("#")?.forEach {
+ creditTexts.add(it)
+ }
+ remark?.split(";")?.forEach {
+ levelColors.add(it)
+ }
- val l = getEvaluationLevel(it.resultscorebef?.toInt()
+ val l = getEvaluationLevel(e.resultscorebef?.toInt()
?: 0, pointLevel, evaluateLevel, creditTexts, levelColors)
- result.apply {
- creditText = l["creditText"]
-
- score = it.resultscorebef?.toInt() ?: 0
- rank = it.promissednum
- level = l["evaluateLevel"]
- this.period = it.scensename
- time = it.createdate
+ result.apply {
+ creditText = l["creditText"]
+ score = e.resultscorebef?.toInt() ?: 0
+ rank = e.promissednum
+ level = l["evaluateLevel"]
+ this.period = latestEva?.scensename
+ time = e.createdate
// color = l["color"]
+ }
}
}
- }
-
- //鍒嗙被鍒殑寰楀垎(姣忎釜璇勫垎琛ㄧ殑璇勫垎澶ч」鐨勫緱鍒�)鍜屽け鍒嗘潯鐩�
- rule1List.forEach {
- val evaluation = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply {
- createCriteria().andEqualTo("iguid", userId)
- .andEqualTo("ertype", it.ruletype)
- .andEqualTo("scensename", period)
- }).takeIf { it.isNotEmpty() }?.get(0)?.let {e ->
+ //鍏蜂綋璇勪及琛�
+ else {
val subRules = evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
- createCriteria().andEqualTo("erguid", it.guid)
+ createCriteria().andEqualTo("erguid", rule.guid)
})
val itemEvaluations = itemevaluationService.getItemEvaluationList(e.guid!!)
-
- itemEvaluations.forEach {item ->
+ val ruleMap = result.loseScore
+ val ruleMap2 = result.scoring
+ //鍒嗙被鍒殑寰楀垎(姣忎釜璇勫垎琛ㄧ殑璇勫垎澶ч」鐨勫緱鍒�)鍜屽け鍒嗘潯鐩�
+ itemEvaluations.sortedBy { it.ertype }.forEach { item ->
+ val value = item.value?.toInt() ?: 0
when (item.ertype) {
//鍒嗙被鍒殑寰楀垎
2 -> {
+ ruleMap[item.name] = mutableMapOf()
+ ruleMap2[item.name] = mutableMapOf()
for (s in subRules) {
if (s.guid == item.esrguid) {
- val score = if ((item.value?.toInt() ?: 0) <= 0) {
- s.maxscore?.plus(item.value?.toInt() ?: 0)
+ val score = if (value <= 0) {
+ s.maxscore?.plus(value)
} else {
- item.value?.toInt() ?: 0
+ value
}
- result.classScore.add(Triple(item.name ?: "", s.maxscore?.toString()?:"0", score.toString()))
+ result.classScore.add(Triple(item.name ?: "",
+ s.maxscore?.toString() ?: "0",
+ score.toString()))
break
}
}
}
- //澶卞垎鏉$洰
- 4 -> {
- if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") {
+ 3 -> {
+ if (value != 0 && item.extension1 == "true") {
+ val map = if (value > 0) ruleMap2 else ruleMap
for (s in subRules) {
if (s.guid == item.esrguid) {
- result.loseScore.add(
+ if (!map.containsKey(s.fathername)) {
+ map[s.fathername] = mutableMapOf()
+ }
+ map[s.fathername]?.put(item.name, mutableListOf())
+ break
+ }
+ }
+ }
+ }
+ //澶卞垎鎴栧緱鍒嗘潯鐩�
+ 4 -> {
+ if (value != 0 && item.extension1 == "true") {
+ val map = if (value > 0) ruleMap2 else ruleMap
+ for (s in subRules) {
+ if (s.guid == item.esrguid) {
+ val d =
Triple(
item.name ?: "",
- if ((item.value?.toInt() ?: 0) < 0) {
- item . value ?: "0"
- } else {
- (item.value?.toInt() ?: 0).minus(s.maxscore ?: 0).toString()
- },
+// if ((item.value?.toInt() ?: 0) < 0) {
+// item.value ?: "0"
+// } else {
+// (item.value?.toInt() ?: 0).minus(s.maxscore ?: 0).toString()
+// },
+ item.value ?: "0",
s.remark ?: ""
)
- )
+ val rule3Name = s.fathername
+ for (s1 in subRules) {
+ if (s1.itemname == rule3Name) {
+ val rule2Name =
+ //鐖秈d涓虹┖锛岃鏄庢4绾ц瘎浼伴」鐩存帴闄勫睘浜�2绾ц瘎浼伴」
+ if (s1.fathername.isNullOrBlank()) {
+ map[rule3Name]?.put(rule3Name, mutableListOf())
+ rule3Name
+ } else {
+ s1.fathername
+ }
+ map[rule2Name]?.get(rule3Name)?.add(d)
+ break
+ }
+ }
+
+ break
}
}
}
@@ -485,13 +619,43 @@
}
}
}
+
}
+
return result
}
+ override fun searchGradeList(
+ userId: String,
+ condition: UserSearchCondition,
+ page: Int,
+ perPage: Int,
+ ): BaseResponse<List<CreditInfoVo>> {
+ if (condition.period == null) return BaseResponse(false, "蹇呴』閫夋嫨鍛ㄦ湡")
+ if (condition.sceneTypes.size > 2) return BaseResponse(false, "鍦烘櫙绫诲瀷鍙敮鎸佷竴绉�")
+
+ val config = userConfigRep.getUserConfigBySubType(userId)
+ val condition2 = UserSearchCondition.fromUserConfig(config, condition)
+
+// val period = condition.period!!
+// val sceneType = condition.sceneTypes[0]
+// var district = condition.districtName
+// val sort = condition.sorts
+//
+// if (district == null) {
+// val userInfo = userinfoMapper.selectByPrimaryKey(userId)
+// district = userInfo?.extension1
+// }
+ val p = PageHelper.startPage<Evaluation>(page, perPage)
+ val result = evaluationMapper.searchGradeList(condition2).onEach {
+ if (it.score == null) it.score = "/"
+ }
+ return BaseResponse(true, head = DataHead(p.pageNum, p.pages, p.total), data = result)
+ }
+
/**
- * 鏍规嵁涓婁紶鐨勫瓙瑙勫垯鎵e垎鎯呭喌锛岀敓浜у瓙椤瑰緱鍒嗚褰�
+ * 鏍规嵁涓婁紶鐨勫瓙瑙勫垯鎵e垎鎯呭喌锛岀敓鎴愬瓙椤瑰緱鍒嗚褰�
* @param rule 鎬昏鍒�
* @param eGuid 鎬诲垎璁板綍id
* @param userId 鐢ㄦ埛id
@@ -500,13 +664,38 @@
* @param itemEvaluationList 寰楀垎璁板綍琛�
* @return 璇勫垎椤圭殑鐖秈d鍜屽緱鍒�
*/
- private fun calculateScore(rule:Evaluationrule, eGuid: String, userId: String, subRule: Evaluationsubrule, score: String, itemEvaluationList: MutableList<Itemevaluation>): Pair<String?, String?> {
+ private fun calculateScore(
+ rule: Evaluationrule,
+ eGuid: String,
+ userId: String,
+ subRule: Evaluationsubrule,
+ score: String,
+ itemEvaluationList: MutableList<Itemevaluation>,
+ ): Pair<String?, String?> {
var result: Pair<String?, String?> = Pair(null, null)
var exist = false
for (i in itemEvaluationList) {
- //璁板綍宸插瓨鍦紝璇存槑鏄埗椤圭殑璇勫垎瑙勫垯涓嬬殑鏌愪釜瀛愰」鐨勪竴閮ㄥ垎鎵e垎锛屾墸鍒嗙疮鍔�
+ //璁板綍宸插瓨鍦紝璇存槑鏄埗椤圭殑璇勫垎瑙勫垯涓嬬殑鏌愪釜瀛愰」鐨勪竴閮ㄥ垎鎵e垎锛屾墸鍒嗙疮鍔�,骞朵笖涓嶈兘瓒呰繃鐖堕」鐨勪笂闄�
if (subRule.guid == i.esrguid) {
- i.value = i.value?.toInt()?.plus(score.toInt())?.toString()
+ val s = i.value?.toInt()?.plus(score.toInt()) ?: 0
+ //鍔犲垎妯″紡
+ if (subRule.extension2 == "add_mode") {
+ if (s > (subRule.maxscore ?: 0)) {
+ i.value = subRule.maxscore?.toString() ?: "0"
+ } else {
+ i.value = s.toString()
+ }
+ }
+ //榛樿鎯呭喌涓哄噺鍒嗘ā寮�
+ else {
+ //鍏佽鎵i櫎鐨勫垎鏁版渶灏忓�硷紙璐熸暟锛�
+ val min = subRule.minscore?.minus(subRule.maxscore ?: 0) ?: 0
+ if (s < min) {
+ i.value = min.toString()
+ } else {
+ i.value = s.toString()
+ }
+ }
result = Pair(subRule.fatherid, i.value)
exist = true
break
@@ -540,11 +729,11 @@
pointLevel: MutableList<Pair<Int, Int>> = mutableListOf(),
evaluateLevel: MutableList<String> = mutableListOf(),
creditTexts: MutableList<String> = mutableListOf(),
- levelColors: MutableList<String> = mutableListOf()
+ levelColors: MutableList<String> = mutableListOf(),
): Map<String, String> {
val result = mutableMapOf<String, String>()
if (pointLevel.isEmpty() || evaluateLevel.isEmpty() || creditTexts.isEmpty() || levelColors.isEmpty()) {
- result["evaluateLevel"] = when (score) {
+ result["evaluateLevel"] = when (score) {
in 0..40 -> "鏋佸樊"
in 41..64 -> "杈冨樊"
in 65..79 -> "涓�鑸�"
@@ -554,7 +743,9 @@
}
} else {
for (i in pointLevel.indices) {
- if (score in pointLevel[i].first..pointLevel[i].second) {
+ if (score in pointLevel[i].first..pointLevel[i].second ||
+ (i == pointLevel.size - 1 && score > pointLevel[i].second)
+ ) {
result["color"] = levelColors[i % levelColors.size]
result["creditText"] = creditTexts[i % creditTexts.size]
result["evaluateLevel"] = evaluateLevel[i % evaluateLevel.size]
@@ -569,12 +760,12 @@
if (evaluation.ertype == AssessmentRuleType.Total.value.toByte()) {
val eList = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply {
createCriteria().andEqualTo("scensename", evaluation.scensename)
- .andIsNotNull("scensename")
+ .andIsNotNull("scensename")
.andEqualTo("ertype", AssessmentRuleType.Total.value)
//鏍规嵁璇勪及浜虹殑绫诲瀷杩涜绛涢�夛紝鑷瘎鍜屽畼鏂硅瘎鍒嗗皝闈㈠紑鎺掑悕
if (evaluation.evaluatorrealname == null || evaluation.evaluatorrealname == "0") {
and(createCriteria().orIsNull("evaluatorrealname")
- .orEqualTo("evaluatorrealname", evaluation.evaluatorrealname))
+ .orEqualTo("evaluatorrealname", evaluation.evaluatorrealname))
} else {
and(createCriteria().andEqualTo("evaluatorrealname", evaluation.evaluatorrealname))
}
@@ -594,10 +785,9 @@
}
val updateList = mutableListOf<Evaluation>()
for (i in eList.indices) {
- if (eList[i].guid == evaluation.guid){
+ if (eList[i].guid == evaluation.guid) {
evaluation.promissednum = i + 1
- }
- else if (eList[i].promissednum != i + 1) {
+ } else if (eList[i].promissednum != i + 1) {
eList[i].promissednum = i + 1
updateList.add(eList[i])
}
--
Gitblit v1.9.3