src/main/kotlin/cn/flightfeather/supervision/domain/entity/LedgerRecord.java
@@ -43,7 +43,7 @@ private Byte lrEasubmitkind; @Column(name = "LR_VerifierID") private Integer lrVerifierid; private String lrVerifierid; @Column(name = "LR_VerifierRealName") private String lrVerifierrealname; @@ -243,14 +243,14 @@ /** * @return LR_VerifierID */ public Integer getLrVerifierid() { public String getLrVerifierid() { return lrVerifierid; } /** * @param lrVerifierid */ public void setLrVerifierid(Integer lrVerifierid) { public void setLrVerifierid(String lrVerifierid) { this.lrVerifierid = lrVerifierid; } src/main/kotlin/cn/flightfeather/supervision/lightshare/service/EvaluationService.kt
@@ -4,6 +4,7 @@ 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 javax.servlet.http.HttpServletResponse @@ -27,4 +28,8 @@ fun getAssessments(userId: String, condition: AssessmentSearchCondition, page: Int, perPage: Int, response: HttpServletResponse): List<AssessmentGradeVo> fun autoScore(year: Int, month: Int, sceneType: Int, response: HttpServletResponse): HttpServletResponse fun uploadScore(userId: String, period: String, ruleId: String?, itemList: List<Pair<String, String>>): Boolean fun getDetail(userId: String, period: String): GradeDetailVo } src/main/kotlin/cn/flightfeather/supervision/lightshare/service/EvaluationsubruleService.kt
@@ -1,6 +1,7 @@ package cn.flightfeather.supervision.lightshare.service import cn.flightfeather.supervision.domain.entity.Evaluationsubrule import cn.flightfeather.supervision.lightshare.vo.EvaluationVo interface EvaluationsubruleService { @@ -16,4 +17,6 @@ fun findByRuleId(erguid: String): List<Evaluationsubrule> fun getScore(userId:String, time: String):List<EvaluationVo> } src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationServiceImpl.kt
@@ -1,18 +1,18 @@ package cn.flightfeather.supervision.lightshare.service.Impl import cn.flightfeather.supervision.common.score.AutoScore import cn.flightfeather.supervision.domain.entity.Company import cn.flightfeather.supervision.domain.entity.Evaluation import cn.flightfeather.supervision.domain.entity.Evaluationrule import cn.flightfeather.supervision.domain.entity.OverallEvaluation import cn.flightfeather.supervision.domain.entity.* import cn.flightfeather.supervision.domain.enumeration.AssessmentRuleType import cn.flightfeather.supervision.domain.enumeration.SceneType import cn.flightfeather.supervision.domain.mapper.* import cn.flightfeather.supervision.infrastructure.utils.DateUtil import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator 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 com.github.pagehelper.PageHelper import org.springframework.stereotype.Service import tk.mybatis.mapper.entity.Example @@ -23,11 +23,13 @@ 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 autoScore: AutoScore, val itemevaluationService: ItemevaluationService ) : EvaluationService { override fun findOne(id: String): Evaluation = evaluationMapper.selectByPrimaryKey(id) @@ -75,13 +77,39 @@ override fun getHistoryPoint(userId: String, page: Int, per_page: Int, response: HttpServletResponse): List<AssessmentGradeVo> { val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList() //è¯åè§åä¸çå级ãç级é¢è²åç级è¯è¯ 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) .andEqualTo("ruletype", "0") }) if (rule.isNotEmpty()) { val r = rule[0] r.extension1?.split("#")?.forEach { val pStr = it.split(",") pointLevel.add(Pair(pStr[0].toInt(), pStr[1].toInt())) } r.extension2?.split("#")?.forEach { evaluateLevel.add(it) } r.extension3?.split("#")?.forEach { creditTexts.add(it) } r.remark?.split(";")?.forEach { levelColors.add(it) } } val example = Example(Evaluation::class.java).apply { createCriteria().andEqualTo("iguid", userId) .andEqualTo("ertype", AssessmentRuleType.Total.value.toByte()) //æ ¹æ®è¯ä¼°äººçç±»åè¿è¡çéï¼èªè¯å宿¹è¯åå弿å and(createCriteria().orIsNull("evaluatorrealname") .orEqualTo("evaluatorrealname", 0)) orderBy("updatedate").desc() orderBy("createdate").desc() } val counts = evaluationMapper.selectCountByExample(example) val totalPage = Math.ceil(counts.toDouble() / per_page.toDouble()).toInt() @@ -100,9 +128,13 @@ tPGuid = it.guid tPRuleGuid = it.stguid totalPoint = it.resultscorebef?.toInt() ?: 0 level = getEvaluationLevel(tPRuleGuid, totalPoint) val l = getEvaluationLevel(totalPoint, pointLevel, evaluateLevel, creditTexts, levelColors) level = l["evaluateLevel"] color = l["color"] creditText = l["creditText"] rank = it.promissednum ?: 1 updateDate = it.updatedate updateDate = it.createdate period = it.scensename }) } @@ -202,7 +234,7 @@ tPGuid = it["tPGuid"] as String? tPRuleGuid = it["tPRuleGuid"] as String? totalPoint = (it["totalPoint"] as String?)?.toIntOrNull() ?: 0 level = getEvaluationLevel(tPRuleGuid, totalPoint) level = getEvaluationLevel(totalPoint)["evaluateLevel"] rank = (it["rank"] as Int?) ?: -1 updateDate = it["updateDate"] as Date? }) @@ -220,11 +252,299 @@ return response } override fun uploadScore(userId: String, period: String, ruleId: String?, itemList: List<Pair<String, String>>): Boolean { val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return false //è¯¥åºæ¯ç±»åä¸çæ»å¾åè§å val tRule = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply { createCriteria().andEqualTo("scensetypeid", userinfo.extension2) .andEqualTo("ruletype", AssessmentRuleType.Total.value) .andIsNull("tasktypeid") }).takeIf { it.isNotEmpty() }?.get(0) 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) .andIsNull("tasktypeid") }).forEach {rule-> val subRules = evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply { createCriteria().andEqualTo("erguid", rule.guid) }) if (subRules.isEmpty()) return@forEach //æ»åè®°å½ val evaluation = Evaluation().apply { guid = UUIDGenerator.generate16ShortUUID() } //å ·ä½é¡¹å¾åè®°å½ val itemEvaluationList = mutableListOf<Itemevaluation>() //æ»å¾å 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) fatherId = result.first for (s in subRules) { if (s.guid == fatherId) { subRule = s 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) { maxScore += s.maxscore ?: 0 } //è§åå·²ç»æå宿¯ï¼åè·³è¿ itemEvaluationList.forEach {i -> if (i.esrguid == s.guid) { return@subRules } } //å¦åæ°å¢ä¸æ¡æªæ£åçè®°å½ itemEvaluationList.add(Itemevaluation().apply { ieguid = UUIDGenerator.generate16ShortUUID() iguid = userId sguid = evaluation.guid erguid = rule.guid rulename = rule.rulename ruletype = rule.ruletype?.toInt() ertype = s.ertype esrguid = s.guid name = s.itemname value = "0" extension1 = "false" }) } //è®¡ç®æ»å evaluation.apply { iguid = userId stguid = rule.guid scensetypeid = userinfo.extension2?.toByte() ertype = rule.ruletype?.toByte() scensename = period evaluatorguid = userId evaluatorusername = userinfo.acountname evaluatorrealname = "0" resultscorebef = (maxScore + totalScore).toString() createdate = Date() updatedate = Date() } save(evaluation) itemevaluationService.savelist(itemEvaluationList) tEvaluation = evaluation totalPoint += evaluation.resultscorebef?.toInt() ?: 0 } //è®¡ç®ææè¡¨çæ»å tRule?.let { tEvaluation.apply { guid = UUIDGenerator.generate16ShortUUID() stguid = it.guid ertype = it.ruletype?.toByte() resultscorebef = totalPoint.toString() } save(tEvaluation) } return true } override fun getDetail(userId: String, period: String): GradeDetailVo { val result = GradeDetailVo() val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return result //è¯¥åºæ¯ç±»åä¸çææå¾åè§å 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) } } if (rule0 == null) return result //å¾å解读åå¾å详æ 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) } val l = getEvaluationLevel(it.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 // 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 -> val subRules = evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply { createCriteria().andEqualTo("erguid", it.guid) }) val itemEvaluations = itemevaluationService.getItemEvaluationList(e.guid!!) itemEvaluations.forEach {item -> when (item.ertype) { //åç±»å«çå¾å 2 -> { for (s in subRules) { if (s.guid == item.esrguid) { val score = if ((item.value?.toInt() ?: 0) <= 0) { s.maxscore?.plus(item.value?.toInt() ?: 0) } else { item.value?.toInt() ?: 0 } result.classScore.add(Triple(item.name ?: "", s.maxscore?.toString()?:"0", score.toString())) break } } } //å¤±åæ¡ç® 4 -> { if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") { for (s in subRules) { if (s.guid == item.esrguid) { result.loseScore.add( Triple( item.name ?: "", if ((item.value?.toInt() ?: 0) < 0) { item . value ?: "0" } else { (item.value?.toInt() ?: 0).minus(s.maxscore ?: 0).toString() }, s.remark ?: "" ) ) } } } } } } } } return result } /** * æ ¹æ®ä¸ä¼ çåè§åæ£åæ åµï¼ç产å项å¾åè®°å½ * @param rule æ»è§å * @param eGuid æ»åè®°å½id * @param userId ç¨æ·id * @param subRule æ£åçè§å * @param score æ£å * @param itemEvaluationList å¾åè®°å½è¡¨ * @return è¯å项çç¶idåå¾å */ 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) { //è®°å½å·²åå¨ï¼è¯´ææ¯ç¶é¡¹çè¯åè§åä¸çæä¸ªå项çä¸é¨åæ£åï¼æ£åç´¯å if (subRule.guid == i.esrguid) { i.value = i.value?.toInt()?.plus(score.toInt())?.toString() result = Pair(subRule.fatherid, i.value) exist = true break } } //è®°å½ä¸å卿¶ï¼è¯´ææ¯åé¡¹ç¬¬ä¸æ¬¡æ£åï¼æ°å¢ä¸æ¡è®°å½ if (!exist) { itemEvaluationList.add(Itemevaluation().apply { ieguid = UUIDGenerator.generate16ShortUUID() iguid = userId sguid = eGuid erguid = rule.guid rulename = rule.rulename ruletype = rule.ruletype?.toInt() ertype = subRule.ertype esrguid = subRule.guid name = subRule.itemname value = score extension1 = "true" }) result = Pair(subRule.fatherid, score) } return result } /** * æ ¹æ®åæ°è·åç级 */ private fun getEvaluationLevel(ruleId:String?, score: Int): String { return when (score) { private fun getEvaluationLevel( score: Int, pointLevel: MutableList<Pair<Int, Int>> = mutableListOf(), evaluateLevel: MutableList<String> = mutableListOf(), creditTexts: 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) { in 0..40 -> "æå·®" in 41..64 -> "è¾å·®" in 65..79 -> "ä¸è¬" @@ -232,6 +552,17 @@ in 95..Int.MAX_VALUE -> "ä¼ç§" else -> "æå·®" } } else { for (i in pointLevel.indices) { if (score in pointLevel[i].first..pointLevel[i].second) { result["color"] = levelColors[i % levelColors.size] result["creditText"] = creditTexts[i % creditTexts.size] result["evaluateLevel"] = evaluateLevel[i % evaluateLevel.size] } } } return result } private fun updateRank(evaluation: Evaluation, isInsert: Boolean) { @@ -239,6 +570,7 @@ val eList = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply { createCriteria().andEqualTo("scensename", evaluation.scensename) .andIsNotNull("scensename") .andEqualTo("ertype", AssessmentRuleType.Total.value) //æ ¹æ®è¯ä¼°äººçç±»åè¿è¡çéï¼èªè¯å宿¹è¯åå°é¢å¼æå if (evaluation.evaluatorrealname == null || evaluation.evaluatorrealname == "0") { and(createCriteria().orIsNull("evaluatorrealname") src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/EvaluationsubruleServiceImpl.kt
@@ -1,13 +1,25 @@ package cn.flightfeather.supervision.lightshare.service.Impl import cn.flightfeather.supervision.domain.entity.Evaluation import cn.flightfeather.supervision.domain.entity.Evaluationrule import cn.flightfeather.supervision.domain.entity.Evaluationsubrule import cn.flightfeather.supervision.domain.mapper.EvaluationsubruleMapper import cn.flightfeather.supervision.domain.entity.Itemevaluation import cn.flightfeather.supervision.domain.mapper.* import cn.flightfeather.supervision.lightshare.service.EvaluationsubruleService import cn.flightfeather.supervision.lightshare.vo.EvaluationVo import cn.flightfeather.supervision.lightshare.vo.SubEvaluationVo import cn.flightfeather.supervision.lightshare.vo.ThirdEvaluationVo import org.springframework.stereotype.Service import tk.mybatis.mapper.entity.Example @Service class EvaluationsubruleServiceImpl (val evaluationsubruleMapper: EvaluationsubruleMapper):EvaluationsubruleService { class EvaluationsubruleServiceImpl( val evaluationsubruleMapper: EvaluationsubruleMapper, private val userinfoMapper: UserinfoMapper, private val evaluationruleMapper: EvaluationruleMapper, private val evaluationMapper: EvaluationMapper, private val itemevaluationMapper: ItemevaluationMapper ):EvaluationsubruleService { override fun findOne(id: String): Evaluationsubrule = evaluationsubruleMapper.selectByPrimaryKey(id) @@ -25,4 +37,135 @@ criteria.andEqualTo("erguid", erguid) return evaluationsubruleMapper.selectByExample(example) } override fun getScore(userId: String, time: String): List<EvaluationVo> { val userinfo = userinfoMapper.selectByPrimaryKey(userId) ?: return emptyList() val sceneType = userinfo.extension2 //è¯åæ»è§å val rules = evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply { createCriteria().andEqualTo("scensetypeid", sceneType) // .andEqualTo("ruletype", "1") .andIsNull("tasktypeid") }) if (rules.isEmpty()) return emptyList() val rIdList = mutableListOf<String?>() rules.forEach { rIdList.add(it.guid) } //æ»è§å对åºçè¯ååè§å val subRules = mutableListOf<Evaluationsubrule>() val sr = evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply { createCriteria().andIn("erguid", rIdList) orderBy("ertype") orderBy("displayid") }) subRules.addAll(sr) //æ»è§åçå¾å val ruleScore = evaluationMapper.selectByExample(Example(Evaluation::class.java).apply { createCriteria().andIn("stguid", rIdList)//è§åid .andEqualTo("evaluatorguid", userId)//ç¨æ·id .andEqualTo("scensename", time)//è¯ä¼°å¨æï¼ä¾ï¼2020/6-6 }) //åè§åéæ¡å¾å val subRuleScores = if (ruleScore.isEmpty()) { mutableListOf<Itemevaluation>() } else { val scoreIds = mutableListOf<String?>() ruleScore.forEach { scoreIds.add(it.guid) } itemevaluationMapper.selectByExample(Example(Itemevaluation::class.java).apply { createCriteria().andIn("sguid", scoreIds) }) } val resultList = mutableListOf<EvaluationVo>() var _group = 0 subRules.forEach { when (it.ertype) { 2 -> resultList.add(EvaluationVo().apply { id = it.guid title1 = it.itemname score = it.minscore?.minus(it.maxscore ?: 0) ?: 0 //妿æå¾åè®°å½ï¼åæ¹åç¶æä¸ºéä¸ for (s in subRuleScores) { if (it.guid == s.esrguid) { select = s.extension1 == "true" break } } }) 3 -> { for (r in resultList) { if (it.fatherid == r.id) { r.sub1.add(SubEvaluationVo().apply { id = it.guid title2 = it.itemname score = it.minscore?.minus(it.maxscore ?: 0) ?: 0 group = _group++ //妿æå¾åè®°å½ï¼åæ¹åç¶æä¸ºéä¸ for (s in subRuleScores) { if (it.guid == s.esrguid) { select = s.extension1 == "true" break } } }) break } } } 4 -> { resultList.forEach{ r -> if (r.id == it.fatherid) { if (r.sub1.isEmpty()) { r.sub1.add(SubEvaluationVo().apply { placeholder = true id = it.guid title2 = r.title1 score = r.score group = _group++ }) } r.sub1[0].sub2.add(ThirdEvaluationVo().apply { id = it.guid content = it.itemname score = r.score.plus(it.maxscore ?: 0) //妿æå¾åè®°å½ï¼åæ¹åç¶æä¸ºéä¸ for (s in subRuleScores) { if (it.guid == s.esrguid) { select = s.extension1 == "true" break } } }) } else { r.sub1.forEach { sr -> if (sr.id == it.fatherid){ sr.sub2.add(ThirdEvaluationVo().apply { id = it.guid content = it.itemname score = sr.score.plus(it.maxscore ?: 0) //妿æå¾åè®°å½ï¼åæ¹åç¶æä¸ºéä¸ for (s in subRuleScores) { if (it.guid == s.esrguid) { select = s.extension1 == "true" break } } }) } } } } } } } return resultList } } src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/LedgerServiceImpl.kt
@@ -13,8 +13,7 @@ import cn.flightfeather.supervision.infrastructure.utils.FileUtil import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator import cn.flightfeather.supervision.lightshare.service.LedgerService import cn.flightfeather.supervision.lightshare.vo.LedgerSubTypeVo import cn.flightfeather.supervision.lightshare.vo.LedgerVo import cn.flightfeather.supervision.lightshare.vo.* import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.databind.ObjectMapper import com.github.pagehelper.PageHelper @@ -72,13 +71,18 @@ it.getlTypename(), needUpdate = it.getlNeedupdate(), sceneType = it.getlScenetype(), iconUrl = it.getlIconurl() iconUrl = it.getlIconurl(), realTime = it.getlRealTime() ) for (r in records) { if (l.ledgerSubTypeId == r.lsSubtypeid) { l.ledgerFinished = true l.upLoad = true l.checkStatus = r.lrVerifyrst?.toIntOrNull() ?: LedgerCheckStatus.UnCheck.value // l.checkStatus = r.lrVerifyrst?.toIntOrNull() ?: LedgerCheckStatus.UnCheck.value l.verified l.verifierName = r.lrVerifierrealname l.verified = r.lrIsverify l.verifyRst = l.verifyRst break } } @@ -373,4 +377,86 @@ return records } override fun copyLedger(userId: String, time: String, copyLedgerList: List<CopyLedgerVo>): BaseResponse<String> { val year = time.split("-")[0] val month = time.split("-")[1] copyLedgerList.forEach { //å»é夿 val r = ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply { createCriteria().andEqualTo("lrSubmitid", userId) .andEqualTo("lsSubtypeid", it.subTypeId) .andEqualTo("lrYear", year) .andEqualTo("lrMonth", month) }) if (r.size > 0) { return@forEach } val y = it.time?.split("-")?.get(0) ?: return@forEach val m = it.time?.split("-")?.get(1) ?: return@forEach ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply { createCriteria().andEqualTo("lrSubmitid", userId) .andEqualTo("lsSubtypeid", it.subTypeId) .andEqualTo("lrYear", y) .andEqualTo("lrMonth", m) }).forEach record@ {lr -> //è·åè®°å½å¯¹åºçæä»¶ä¿¡æ¯ val fileList = ledgerMediaFileMapper.selectByExample(Example(LedgerMediaFile::class.java).apply { createCriteria().andEqualTo("lrGuid", lr.lrGuid) }) if (fileList.size == 0) return@record val file = fileList[0] ?: return@record //ä¿®æ¹è®°å½ä¿¡æ¯ï¼å¤å¶ä¸ºæ°çå°è´¦ lr.lrGuid = UUIDGenerator.generate16ShortUUID() lr.lrYear = year.toInt() lr.lrMonth = month.toByte() lr.lrIssubmitontime = true lr.lrSubmitdate = Date() lr.lrExtension2 = "copy"//è¡¨ææ¯å¤å¶çå°è´¦ ledgerRecordMapper.insert(lr) //ä¿®æ¹å¯¹åºçæä»¶ä¿¡æ¯ file.apply { mfGuid = UUIDGenerator.generate16ShortUUID() lrGuid = lr.lrGuid mfSavetime = Date() } ledgerMediaFileMapper.insert(file) } } return BaseResponse(true) } override fun checkLedger(verifierId: String, remark: String?, recordList: List<LedgerCheckVo>): BaseResponse<Boolean> { val recordIdList = mutableListOf<String?>() recordList.forEach { recordIdList.add(it.recordId) } val records = ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply { createCriteria().andIn("lrGuid", recordIdList) .andIsNotNull("lrGuid") }) return if (records.isEmpty()) { BaseResponse(false, "æéè®°å½ä¸åå¨") } else { records.forEach { for (r in recordList) { if (r.recordId == it.lrGuid) { it.lrVerifierid = verifierId it.lrVerifierrealname it.lrVerifydate = Date() it.lrIsverify = r.result it.lrVerifyrst = r.remark it.lrAiverifytime = if (it.lrAiverifytime == null) 0 else it.lrAiverifytime++ it.lrIsai = false ledgerRecordMapper.updateByPrimaryKey(it) continue } } } BaseResponse(true) } } } src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/UserinfoServiceImpl.kt
@@ -54,6 +54,7 @@ override fun delete(id: String): Int = userinfoMapper.deleteByPrimaryKey(id) override fun login(loginRequestVo: LoginRequestVo): AccessToken { if (loginRequestVo.userName.isNullOrEmpty() || loginRequestVo.password.isNullOrEmpty()) return AccessToken() val example = Example(Userinfo::class.java) val criteria = example.createCriteria() criteria.andEqualTo("acountname", loginRequestVo.userName) src/main/kotlin/cn/flightfeather/supervision/lightshare/service/LedgerService.kt
@@ -1,7 +1,6 @@ package cn.flightfeather.supervision.lightshare.service import cn.flightfeather.supervision.lightshare.vo.LedgerSubTypeVo import cn.flightfeather.supervision.lightshare.vo.LedgerVo import cn.flightfeather.supervision.lightshare.vo.* import org.springframework.http.client.MultipartBodyBuilder import org.springframework.web.multipart.MultipartFile import java.util.* @@ -24,4 +23,7 @@ fun getLedgerImgs(userId: String, ledgerType: List<Int>): List<LedgerVo> fun copyLedger(userId: String, time: String, copyLedgerList: List<CopyLedgerVo>): BaseResponse<String> fun checkLedger(verifierId: String, remark: String?, recordList: List<LedgerCheckVo>):BaseResponse<Boolean> } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AssessmentGradeVo.kt
@@ -16,8 +16,11 @@ var tPRuleGuid: String? = null var totalPoint: Int = 0 var level: String? = null var color: String? = null var creditText: String? = null var rank: Int = 1 var updateDate: Date? = null var period: String? = null var subGradeList: List<SubGradeVo> = emptyList() } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/CopyLedgerVo.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package cn.flightfeather.supervision.lightshare.vo import com.fasterxml.jackson.annotation.JsonInclude import java.math.BigDecimal /** * éè¦å¤å¶çå°è´¦ä¿¡æ¯ */ @JsonInclude(JsonInclude.Include.NON_NULL) class CopyLedgerVo { var subTypeId: String? = null //YYYY-MM var time: String? = null } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ package cn.flightfeather.supervision.lightshare.vo /** * è¯åè§ååå¾å */ class EvaluationVo { //è§åid var id: String? = null //è§åæè¿° var title1: String? = null //åå¼ var score: Int = 0 //æ¯å¦éä¸ var select: Boolean = false //äºçº§åè§å var sub1: MutableList<SubEvaluationVo> = mutableListOf() } class SubEvaluationVo { //ææ¶åä¸çº§çè§åä¸é¢ç´æ¥æ¯ä¸çº§è§åï¼æ²¡æäºçº§è§åï¼å æ¤æ¤æ¶çäºçº§è§ååªæ¯ä¸ºäºç»æå®æ´æ§èåºç°ç var placeholder: Boolean = false //è§åid var id: String? = null //è§åæè¿° var title2: String? = null //åå¼ var score: Int = 0 //æ¯å¦éä¸ var select: Boolean = false //äºçº§è§ååç» var group: Int? = null //ä¸çº§åè§å var sub2: MutableList<ThirdEvaluationVo> = mutableListOf() } class ThirdEvaluationVo { //è§åid var id: String? = null //è§åæè¿° var content: String? = null //åå¼ var score: Int = 0 //æ¯å¦éä¸ var select: Boolean = false } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/GradeDetailVo.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package cn.flightfeather.supervision.lightshare.vo import java.util.* /** * æµè¯è¯¦æ */ class GradeDetailVo { //å¾å解读 var creditText: String? = null //èæ ¸å¾å var score: Int = 0 //é£é©æå var rank: Int? = null //é£é©ç级 var level: String? = null //èæ ¸å¨æ var period: String? = null //èªè¯æ¶é´ var time: Date? = null //åç±»å¾å var classScore: MutableList<Triple<String, String, String>> = mutableListOf() //失åé¡¹ç® var loseScore: MutableList<Triple<String, String, String>> = mutableListOf() } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LedgerCheckVo.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package cn.flightfeather.supervision.lightshare.vo import com.fasterxml.jackson.annotation.JsonInclude import java.math.BigDecimal /** * å°è´¦å®¡æ ¸ç»æä¿¡æ¯ */ @JsonInclude(JsonInclude.Include.NON_NULL) class LedgerCheckVo { //å®¡æ ¸çå°è´¦è®°å½id var recordId: String? = null //å®¡æ ¸ç»æ var result: Boolean = false //å®¡æ ¸å¤æ³¨ var remark: String? = null } src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LedgerSubTypeVo.kt
@@ -25,9 +25,19 @@ //å°è´¦æ¯å¦éè¦ä¸ä¼ var needUpdate: Boolean = true, //å°è´¦å®¡æ ¸ç¶æï¼0ï¼æªå®¡æ ¸ï¼1ï¼éè¿ï¼2ï¼æªéè¿ï¼ var checkStatus: Int = LedgerCheckStatus.UnCheck.value, // var checkStatus: Int = LedgerCheckStatus.UnCheck.value, var sceneType: Int = SceneType.Restaurant.value, //å°è´¦å¾æ var iconUrl: String? = null var iconUrl: String? = null, //å°è´¦æ¯å¦æå®æ¶æ§è¦æ± var realTime: Boolean = false, //å®¡æ ¸äººid var verifierId: String? = null, //å®¡æ ¸äººåç§° var verifierName: String? = null, //å®¡æ ¸ç»æãnullï¼æªå®¡æ ¸ï¼falseï¼å®¡æ ¸ä¸éè¿ï¼trueï¼å®¡æ ¸éè¿ var verified: Boolean? = null, //å®¡æ ¸å¤æ³¨ var verifyRst: String? = null ) src/main/kotlin/cn/flightfeather/supervision/lightshare/web/EvaluationController.kt
@@ -78,4 +78,21 @@ @RequestParam("sceneType") sceneType: Int, response: HttpServletResponse ) = evaluationService.autoScore(year, month, sceneType, response) @ApiOperation(value = "ä¸ä¼ èªè¯å¾å") @PostMapping("/upload") fun uploadScore( @ApiParam(value = "ç¨æ·id") @RequestParam("userId") userId: String, @ApiParam(value = "è¯å卿") @RequestParam("period") period: String, @ApiParam(value = "è¯åè§åid") @RequestParam(value = "ruleId", required = false) ruleId: String?, @ApiParam(value = "å ·ä½æ£åæ¡ç®") @RequestBody itemList: List<Pair<String, String>>, ) = evaluationService.uploadScore(userId, period, ruleId, itemList) @ApiOperation(value = "è·åæµè¯è¯¦æ ") @GetMapping("/detail") fun getDetail( @ApiParam(value = "ç¨æ·id") @RequestParam("userId") userId: String, @ApiParam(value = "è¯å卿") @RequestParam("period") period: String, ) = evaluationService.getDetail(userId, period) } src/main/kotlin/cn/flightfeather/supervision/lightshare/web/EvaluationsubruleController.kt
@@ -33,5 +33,10 @@ @DeleteMapping("/{id}") fun delete (@PathVariable id: String) = evaluationsubruleService.delete(id) @ApiOperation(value = "æ¥æ¾è¯åè§åå项表以å对åºçå ·ä½å¾å") @GetMapping("/score") fun getScore( @ApiParam(value = "ç¨æ·id") @RequestParam("userId") userId:String, @ApiParam(value = "è¯ä¼°å¨æ", example = "yyyy/M-M") @RequestParam("time") time:String, ) = evaluationsubruleService.getScore(userId, time) } src/main/kotlin/cn/flightfeather/supervision/lightshare/web/LedgerController.kt
@@ -1,6 +1,8 @@ package cn.flightfeather.supervision.lightshare.web import cn.flightfeather.supervision.lightshare.service.LedgerService import cn.flightfeather.supervision.lightshare.vo.CopyLedgerVo import cn.flightfeather.supervision.lightshare.vo.LedgerCheckVo import cn.flightfeather.supervision.lightshare.vo.LedgerVo import io.swagger.annotations.Api import io.swagger.annotations.ApiOperation @@ -75,4 +77,20 @@ @ApiParam("ç¨æ·id") @PathVariable userId: String, @ApiParam("å°è´¦ç±»åidæ°ç»") @RequestParam("ledgerTypes") ledgerTypes: List<Int> ) = ledgerService.getLedgerImgs(userId, ledgerTypes) @ApiOperation("å¤å¶åºæ¯çå°è´¦") @PostMapping("/copy") fun copyLedger( @RequestParam("userId") userId: String, @RequestParam("time") time: String, @RequestBody copyLedgerList: List<CopyLedgerVo> ) = ledgerService.copyLedger(userId, time, copyLedgerList) @ApiOperation("å®¡æ ¸å°è´¦") @PostMapping("/check") fun checkLedger( @RequestParam("verifierId") verifierId: String, @RequestParam(value = "remark", required = false) remark: String?, @RequestBody recordList: List<LedgerCheckVo> ) = ledgerService.checkLedger(verifierId, remark, recordList) } src/main/resources/application.yml
@@ -12,14 +12,14 @@ # password: 123456 #-TestEnd- # url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false # username: ledger # password: ledger_fxxchackxr url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false username: ledger password: ledger_fxxchackxr # å¼åè¿ç¨æå¡å¨ url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false username: remoteU1 password: eSoF8DnzfGTlhAjE # url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false # username: remoteU1 # password: eSoF8DnzfGTlhAjE initialSize: 5 minIdle: 5 src/main/resources/mapper/LedgerRecordMapper.xml
@@ -14,7 +14,7 @@ <result column="CI_GUID" property="ciGuid" jdbcType="VARCHAR" /> <result column="CI_Name" property="ciName" jdbcType="VARCHAR" /> <result column="LR_EASubmitKind" property="lrEasubmitkind" jdbcType="TINYINT" /> <result column="LR_VerifierID" property="lrVerifierid" jdbcType="INTEGER" /> <result column="LR_VerifierID" property="lrVerifierid" jdbcType="VARCHAR" /> <result column="LR_VerifierRealName" property="lrVerifierrealname" jdbcType="VARCHAR" /> <result column="LR_VerifyDate" property="lrVerifydate" jdbcType="TIMESTAMP" /> <result column="LR_IsVerify" property="lrIsverify" jdbcType="BIT" /> src/main/resources/mapper/LedgerSubTypeMapper.xml
@@ -22,44 +22,4 @@ LS_SubTypeId, LS_Name, L_TypeId, L_TypeName, L_IconUrl, L_SceneType, L_NeedUpdate, L_Period, L_Real_Time </sql> <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.LedgerSubType"> <!-- WARNING - @mbg.generated --> <id column="LS_SubTypeId" jdbcType="INTEGER" property="lsSubtypeid" /> <result column="LS_Name" jdbcType="VARCHAR" property="lsName" /> <result column="L_TypeId" jdbcType="INTEGER" property="lTypeid" /> <result column="L_TypeName" jdbcType="VARCHAR" property="lTypename" /> <result column="L_IconUrl" jdbcType="VARCHAR" property="lIconurl" /> <result column="L_SceneType" jdbcType="INTEGER" property="lScenetype" /> <result column="L_NeedUpdate" jdbcType="BIT" property="lNeedupdate" /> <result column="L_Period" jdbcType="INTEGER" property="lPeriod" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated --> LS_SubTypeId, LS_Name, L_TypeId, L_TypeName, L_IconUrl, L_SceneType, L_NeedUpdate, L_Period </sql> <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.entity.LedgerSubType"> <!-- WARNING - @mbg.generated --> <id column="LS_SubTypeId" jdbcType="INTEGER" property="lsSubtypeid" /> <result column="LS_Name" jdbcType="VARCHAR" property="lsName" /> <result column="L_TypeId" jdbcType="INTEGER" property="lTypeid" /> <result column="L_TypeName" jdbcType="VARCHAR" property="lTypename" /> <result column="L_IconUrl" jdbcType="VARCHAR" property="lIconurl" /> <result column="L_SceneType" jdbcType="INTEGER" property="lScenetype" /> <result column="L_NeedUpdate" jdbcType="BIT" property="lNeedupdate" /> <result column="L_Period" jdbcType="INTEGER" property="lPeriod" /> </resultMap> <sql id="Base_Column_List"> <!-- WARNING - @mbg.generated --> LS_SubTypeId, LS_Name, L_TypeId, L_TypeName, L_IconUrl, L_SceneType, L_NeedUpdate, L_Period </sql> </mapper>