| | |
| | | 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 |
| | |
| | | |
| | | @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) |
| | |
| | | |
| | | override fun save(evaluation: Evaluation): Int { |
| | | updateRank(evaluation, true) |
| | | return evaluationMapper.insert(evaluation) |
| | | return evaluationMapper.insert(evaluation) |
| | | } |
| | | |
| | | override fun update(evaluation: Evaluation): Int { |
| | |
| | | |
| | | 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) |
| | | 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()) |
| | | } |
| | |
| | | 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, platform:String?, 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 |
| | |
| | | } |
| | | 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) |
| | |
| | | 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) |
| | | ?: return CreditInfoVo( |
| | | userId, userinfo.realname,userinfo.extension2?.toIntOrNull() ?: SceneType.NoType.value) |
| | | 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() |
| | | //评分等级对应的描述,格式为 较差#一般#优秀,对应三个分数段的描述 |
| | |
| | | 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 { |
| | |
| | | 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 |
| | | |
| | |
| | | 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 { |
| | | evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply { |
| | | createCriteria().andEqualTo("scensetypeid", sceneType) |
| | | .andNotEqualTo("ruletype", AssessmentRuleType.Total.value) |
| | | .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) |
| | | }) |
| | |
| | | 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 |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | //总分 |
| | | //规则设定的最大分值 |
| | | var maxScore = 0 |
| | | subRules.forEach subRules@{s -> |
| | | subRules.forEach subRules@{ s -> |
| | | //计算应得总分,basic_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) { |
| | |
| | | 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("-") |
| | | val endM = list[1].toInt() |
| | | var endM = list[1].toInt() |
| | | val list2 = list[0].split("/") |
| | | val year = list2[0].toInt() |
| | | val startM = list2[1].toInt() |
| | | val st = LocalDateTime.of(year, startM, 1, 0, 0, 0, 0) |
| | | val et = LocalDateTime.of(year, endM, 1, 0, 0, 0, 0).plusMonths(1) |
| | | 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 = userinfo.extension2 |
| | | var sceneType = SceneType.getByValue(userinfo.extension2?.toIntOrNull()) |
| | | // FIXME: 2022/11/8 临时添加过度功能,提供微信小程序前端汽修类型的场景单独的评估清单 ,场景类型为 -7 |
| | | if (sceneType == SceneType.VehicleRepair.value.toString()) { |
| | | sceneType = "-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", sceneType) |
| | | // 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 { |
| | | 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) |
| | | } |
| | | //获取最新一期的总分 |
| | | 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()) |
| | | and( |
| | | createCriteria().orEqualTo("scensename", period) |
| | | .orBetween("createdate", st, et) |
| | | ) |
| | | }).forEach {e -> |
| | | .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()) { |
| | |
| | | } |
| | | |
| | | val l = getEvaluationLevel(e.resultscorebef?.toInt() |
| | | ?: 0, pointLevel, evaluateLevel, creditTexts, levelColors) |
| | | ?: 0, pointLevel, evaluateLevel, creditTexts, levelColors) |
| | | result.apply { |
| | | creditText = l["creditText"] |
| | | score = e.resultscorebef?.toInt() ?: 0 |
| | | rank = e.promissednum |
| | | level = l["evaluateLevel"] |
| | | this.period = period |
| | | this.period = latestEva?.scensename |
| | | time = e.createdate |
| | | // color = l["color"] |
| | | } |
| | |
| | | }) |
| | | val itemEvaluations = itemevaluationService.getItemEvaluationList(e.guid!!) |
| | | val ruleMap = result.loseScore |
| | | val ruleMap2 = result.scoring |
| | | //分类别的得分(每个评分表的评分大项的得分)和失分条目 |
| | | itemEvaluations.sortedBy { it.ertype }.forEach {item -> |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | | 3 -> { |
| | | if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") { |
| | | if (value != 0 && item.extension1 == "true") { |
| | | val map = if (value > 0) ruleMap2 else ruleMap |
| | | for (s in subRules) { |
| | | if (s.guid == item.esrguid) { |
| | | if (!ruleMap.containsKey(s.fathername)) { |
| | | ruleMap[s.fathername] = mutableMapOf() |
| | | if (!map.containsKey(s.fathername)) { |
| | | map[s.fathername] = mutableMapOf() |
| | | } |
| | | ruleMap[s.fathername]?.put(item.name, mutableListOf()) |
| | | map[s.fathername]?.put(item.name, mutableListOf()) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //失分条目 |
| | | //失分或得分条目 |
| | | 4 -> { |
| | | if ((item.value?.toInt() ?: 0) != 0 && item.extension1 == "true") { |
| | | 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 ?: "", |
| | | Triple( |
| | | item.name ?: "", |
| | | // if ((item.value?.toInt() ?: 0) < 0) { |
| | | // item.value ?: "0" |
| | | // } else { |
| | | // (item.value?.toInt() ?: 0).minus(s.maxscore ?: 0).toString() |
| | | // }, |
| | | item.value ?: "0", |
| | | s.remark ?: "" |
| | | ) |
| | | item.value ?: "0", |
| | | s.remark ?: "" |
| | | ) |
| | | val rule3Name = s.fathername |
| | | for (s1 in subRules) { |
| | | if (s1.itemname == rule3Name) { |
| | | val rule2Name = |
| | | //父id为空,说明此4级评估项直接附属于2级评估项 |
| | | if (s1.fathername.isNullOrBlank()) { |
| | | ruleMap[rule3Name]?.put(rule3Name, mutableListOf()) |
| | | rule3Name |
| | | } else { |
| | | s1.fathername |
| | | } |
| | | ruleMap[rule2Name]?.get(rule3Name)?.add(d) |
| | | //父id为空,说明此4级评估项直接附属于2级评估项 |
| | | if (s1.fathername.isNullOrBlank()) { |
| | | map[rule3Name]?.put(rule3Name, mutableListOf()) |
| | | rule3Name |
| | | } else { |
| | | s1.fathername |
| | | } |
| | | map[rule2Name]?.get(rule3Name)?.add(d) |
| | | break |
| | | } |
| | | } |
| | |
| | | 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) |
| | | } |
| | | |
| | | /** |
| | | * 根据上传的子规则扣分情况,生成子项得分记录 |
| | | * @param rule 总规则 |
| | |
| | | * @param itemEvaluationList 得分记录表 |
| | | * @return 评分项的父id和得分 |
| | | */ |
| | | 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) { |
| | |
| | | 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 -> "一般" |
| | |
| | | } else { |
| | | for (i in pointLevel.indices) { |
| | | if (score in pointLevel[i].first..pointLevel[i].second || |
| | | (i == pointLevel.size - 1 && score > 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] |
| | |
| | | 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)) |
| | | } |
| | |
| | | } |
| | | 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]) |
| | | } |