package com.finance.web.controller.api; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.finance.common.basic.PageDTO; import com.finance.common.core.domain.R; import com.finance.common.enums.ReportingStatusEnum; import com.finance.common.utils.SecurityUtils; import com.finance.system.domain.TbBasicData; import com.finance.system.query.HistoryDataQuery; import com.finance.system.query.HistoryScoreQuery; import com.finance.system.service.TbBasicDataService; import com.finance.system.service.TbFieldService; import com.finance.system.service.TbScoreService; import com.finance.system.vo.BasicDataFieldVO; import com.finance.system.vo.BasicDataVO; import com.finance.system.vo.ScoreVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import java.util.Objects; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author mitao * @date 2024/4/1 */ @Slf4j @RestController @RequestMapping("/history-data-dept") @RequiredArgsConstructor @Api(tags = "历史数据相关接口") public class HistoryDataController { private final TbBasicDataService tbBasicDataService; private final TbFieldService tbFieldService; private final TbScoreService tbScoreService; /** * 历史数据分页查询 * * @param dto 历史数据查询传输对象 * @return R> */ @PostMapping("/list") @ApiOperation("历史数据分页查询") public R> list(@Validated @RequestBody HistoryDataQuery dto) { String areaCode = SecurityUtils.getLoginUser().getUser().getAreaCode(); Page page = tbBasicDataService.lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) .between(Objects.nonNull(dto.getStartTime()) && Objects.nonNull(dto.getEndTime()), TbBasicData::getReportingTime, dto.getStartTime(), dto.getEndTime()) .page(new Page<>(dto.getPageNum(), dto.getPageSize())); return R.ok(PageDTO.of(page, BasicDataVO.class)); } /** * 字段查看 * * @param id 基础数据id * @return R */ @GetMapping("/fields") @ApiOperation("字段查看") @ApiImplicitParam(name = "id", value = "基础数据id", required = true, dataType = "int", paramType = "query", dataTypeClass = Long.class) public R getHistoryFields(@RequestParam("id") Long id) { return R.ok(tbFieldService.getHistoryFields(id)); } /** * 得分计算 * * @param query 得分计算条件查询对象 * @return R> */ @PostMapping("/score") @ApiOperation("得分计算") public R> getHistoryScore(@RequestBody HistoryScoreQuery query) { return R.ok(tbScoreService.getHistoryScore(query)); } }