src/main/kotlin/cn/flightfeather/supervision/lightshare/web/EvaluationController.kt
@@ -1,51 +1,114 @@
package cn.flightfeather.supervision.lightshare.web
import cn.flightfeather.supervision.config.IgnoreResponseAdvice
import cn.flightfeather.supervision.domain.ds1.entity.Evaluation
import cn.flightfeather.supervision.lightshare.service.EvaluationService
import cn.flightfeather.supervision.lightshare.vo.AreaVo
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import io.swagger.annotations.ApiParam
import org.springframework.web.bind.annotation.*
import org.springframework.web.multipart.MultipartFile
import springfox.documentation.annotations.ApiIgnore
import javax.servlet.http.HttpServletResponse
@Api(tags = ["EvaluationController"], description = "评估总分API接口")
@RestController
@RequestMapping("/evaluation")
class EvaluationController(val evaluationService: EvaluationService) {
    @IgnoreResponseAdvice
    @GetMapping
    fun getAll() = evaluationService.findAll()
    @IgnoreResponseAdvice
    @PutMapping
    fun add(@RequestBody evaluation: Evaluation) = evaluationService.save(evaluation)
    @IgnoreResponseAdvice
    @PostMapping
    fun update(@RequestBody evaluation: Evaluation) = evaluationService.update(evaluation)
    @IgnoreResponseAdvice
    @GetMapping("/{id}")
    fun getById(@PathVariable id: String) = evaluationService.findOne(id)
    @IgnoreResponseAdvice
    @DeleteMapping("/{id}")
    fun delete(@PathVariable id: String) = evaluationService.delete(id)
    @IgnoreResponseAdvice
    @GetMapping("/rankofscense")
    fun getRankOfScense(@RequestParam(value = "tguid", required = true) tguid: String,
                        @RequestParam(value = "scensetypeid", required = false) scensetypeid: String?,
                        @RequestParam(value = "ruletypeid", required = false) ruletypeid: ByteArray?) = evaluationService.getRankOfSense(tguid, scensetypeid, ruletypeid)
    fun getRankOfScense(
        @RequestParam(value = "tguid", required = true) tguid: String,
        @RequestParam(value = "scensetypeid", required = false) scensetypeid: String?,
        @RequestParam(value = "ruletypeid", required = false) ruletypeid: ByteArray?,
    ) = evaluationService.getRankOfSense(tguid, scensetypeid, ruletypeid)
    @IgnoreResponseAdvice
    @GetMapping("/rankoftown")
    fun getRankOfTown(@RequestParam(value = "tguid", required = true) tguid: String,
                      @RequestParam(value = "scensetypeid", required = false) scensetypeid: String?) = evaluationService.getRankOfTown(tguid, scensetypeid)
    fun getRankOfTown(
        @RequestParam(value = "tguid", required = true) tguid: String,
        @RequestParam(value = "scensetypeid", required = false) scensetypeid: String?,
    ) = evaluationService.getRankOfTown(tguid, scensetypeid)
    @IgnoreResponseAdvice
    @GetMapping("/autoScore")
    fun autoScore(@RequestParam(value = "districtCode") districtCode: String,
                  @RequestParam(value = "time") time: String) = evaluationService.autoScore(districtCode, time)
    fun autoScore(
        @RequestParam(value = "districtCode") districtCode: String,
        @RequestParam(value = "time") time: String,
    ) = evaluationService.autoScore(districtCode, time)
    @IgnoreResponseAdvice
    @GetMapping("/autoScore3")
    fun autoScore3(
        @RequestParam(value = "topTaskId") tGuid: String,
        @RequestParam(value = "sceneTypeId") sceneTypeId: String
        @RequestParam(value = "sceneTypeId") sceneTypeId: String,
    ) = evaluationService.autoScore3(tGuid, sceneTypeId)
    @IgnoreResponseAdvice
    @PostMapping("/autoScore")
    fun autoScore2(@RequestParam(value = "subTaskId") subTaskId: String) = evaluationService.autoScore2(subTaskId)
    @IgnoreResponseAdvice
    @GetMapping("/byInspection")
    fun findByInspectionId(@RequestParam("inspectionId") inspectionId: String) = evaluationService.findByInspectionId(inspectionId)
    fun findByInspectionId(@RequestParam("inspectionId") inspectionId: String) =
        evaluationService.findByInspectionId(inspectionId)
    @ApiOperation(value = "根据场景ID查询评估结果")
    @GetMapping("/byScene")
    fun findBySceneId(
        @ApiParam("场景主键id") @RequestParam sceneId: String,
        @ApiParam("页码") @RequestParam page: Int,
        @ApiParam("每页数量") @RequestParam pageSize: Int,
    ) = evaluationService.findBySceneId(sceneId, page, pageSize)
    @ApiOperation(value = "根据区域范围自动评估")
    @PostMapping("/auto")
    fun autoEvaluate(@RequestBody areaVo: AreaVo) = evaluationService.autoEvaluate(areaVo)
    @ApiOperation(value = "根据区域范围获取自动评估历史记录")
    @PostMapping("/auto/record")
    fun findAutoEvaluation(@RequestBody areaVo: AreaVo) = evaluationService.findAutoEvaluation(areaVo)
    @ApiOperation(value = "下载自动评估结果")
    @PostMapping("/auto/record/download")
    fun downloadAutoEvaluation(
        @ApiParam("区域条件信息") @RequestBody areaVo: AreaVo,
        @ApiParam("是否强制生成新的报告") @RequestParam forceUpdate: Boolean,
        @ApiIgnore response: HttpServletResponse,
    ) = evaluationService.downloadAutoEvaluation(areaVo, forceUpdate, response)
    @ApiOperation(value = "下载自动评估结果导入模板")
    @PostMapping("/auto/record/template")
    fun downloadAutoEvaTemplate(
        @ApiParam("区域条件信息") @RequestBody areaVo: AreaVo,
        @ApiIgnore response: HttpServletResponse,
    ) = evaluationService.downloadAutoEvaTemplate(areaVo, response)
    @ApiOperation(value = "上传自动评估结果")
    @PutMapping("/auto/record/upload")
    fun uploadAutoEvaluation(
        @ApiParam("区域条件信息") @RequestBody areaVo: AreaVo,
        @ApiParam("excel文件") @RequestPart("excel") file: MultipartFile,
    ) = evaluationService.uploadAutoEvaluation(areaVo, file)
}