package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.ReportingStatusEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.validate.HistoryGroup; import com.ruoyi.system.domain.TbBasicData; import com.ruoyi.system.query.CurrentFieldsQuery; import com.ruoyi.system.query.HistoryDataQuery; import com.ruoyi.system.query.ScoreCalculateDetailQuery; import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.service.TbBasicDataService; import com.ruoyi.system.service.TbScoreService; import com.ruoyi.system.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.Objects; /** * @author mitao * @date 2024/4/8 */ @Slf4j @RestController @RequestMapping("/history-data") @RequiredArgsConstructor @Api(tags = "历史数据相关接口") public class HistoryDataController { private final TbBasicDataService tbBasicDataService; private final TbScoreService tbScoreService; /** * 历史数据分页查询 * * @param dto 历史数据查询传输对象 * @return R> */ @PostMapping("/page-data") @ApiOperation("历史数据分页查询") public R> pageData(@Validated @RequestBody HistoryDataQuery dto) { Date startTime = dto.getStartTime(); Date endTime = dto.getEndTime(); boolean flag = Objects.nonNull(startTime) && Objects.nonNull(endTime); Page page = tbBasicDataService.lambdaQuery() .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .between(flag, TbBasicData::getCreateTime, startTime, endTime) .groupBy(TbBasicData::getQuarter) .orderByDesc(TbBasicData::getCreateTime) .page(new Page<>(dto.getPageNum(), dto.getPageSize())); return R.ok(PageDTO.of(page, BasicDataVO.class)); } /** * 字段统计 * * @return R> */ @ApiOperation(value = "字段统计", notes = "字段统计") @PostMapping("/fields-statics") public R> historyFieldsStatics(@Validated({HistoryGroup.class}) @RequestBody CurrentFieldsQuery dto) { try { return tbBasicDataService.historyFieldsStatics(dto); } catch (Exception e) { log.error("获取字段统计相关信息异常", e); return R.fail(); } } /** * 查看详情 * * @param id 基础数据id * @return R */ @GetMapping("/fields-details") @ApiOperation(value = "查看详情", notes = "字段统计") @ApiImplicitParam(name = "id", value = "基础数据id", required = true, dataType = "int", paramType = "query", dataTypeClass = Long.class) public R fieldsDetails(@RequestParam("id") Long id) { try { return tbBasicDataService.fieldsDetails(id); } catch (Exception e) { if (e instanceof ServiceException) { return R.fail(e.getMessage()); } log.error("保存当前季度数据异常", e); return R.fail(); } } /** * 查看全部 * * @return R */ @GetMapping("/fields-statics-all") @ApiOperation(value = "查看全部", notes = "字段统计") @ApiImplicitParam(name = "quarter", value = "季度", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class) public R fieldsStaticsAll(@RequestParam("quarter") String quarter) { try { return R.ok(tbBasicDataService.fieldsStaticsAll(quarter)); } catch (Exception e) { if (e instanceof ServiceException) { return R.fail(e.getMessage()); } log.error("查看全部异常", e); return R.fail(); } } /** * 得分计算 * * @param query 得分计算条件查询对象 * @return R> */ @PostMapping("/score-calculate") @ApiOperation("得分计算") public R> scoreCalculate(@Validated({HistoryGroup.class}) @RequestBody ScoreCalculateQuery query) { return R.ok(tbBasicDataService.scoreCalculatePage(query)); } /** * 得分计算查看详情 * * @param query 得分计算详情条件查询对象 * @return R */ @PostMapping("/score-calculate-detail") @ApiOperation("得分计算-查看详情") public R scoreCalculateDetail(@Validated @RequestBody ScoreCalculateDetailQuery query) { return R.ok(tbScoreService.scoreCalculateDetail(query)); } }