package com.finance.web.controller.api; import com.finance.common.basic.PageDTO; import com.finance.common.core.domain.R; import com.finance.common.exception.ServiceException; import com.finance.common.utils.BeanUtils; import com.finance.common.utils.DateUtils; import com.finance.system.constants.QuarterConstant; import com.finance.system.domain.TbQuestion; import com.finance.system.dto.QuestionDTO; import com.finance.system.dto.update.BasicDataUpdDTO; import com.finance.system.dto.update.QuestionUpdDTO; import com.finance.system.query.CurrentFieldsQuery; import com.finance.system.query.QuestionQuery; import com.finance.system.query.ScoreCalculateDetailQuery; import com.finance.system.query.ScoreCalculateQuery; import com.finance.system.service.ISysUserService; import com.finance.system.service.TbBasicDataService; import com.finance.system.service.TbQuestionService; import com.finance.system.service.TbScoreService; import com.finance.system.vo.CurrentFieldsAllVO; import com.finance.system.vo.CurrentFieldsDetailVO; import com.finance.system.vo.CurrentFieldsVO; import com.finance.system.vo.DeptVO; import com.finance.system.vo.QuestionVO; import com.finance.system.vo.ScoreCalculateDetailVO; import com.finance.system.vo.ScoreCalculateVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; 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/3/19 */ @Slf4j @RestController @RequestMapping("/current-quarter") @RequiredArgsConstructor @Api(tags = "当前季度数据相关接口") public class CurrentQuarterController { private final TbBasicDataService tbBasicDataService; private final TbQuestionService tbQuestionService; private final TbScoreService tbScoreService; private final ISysUserService sysUserService; /** * 字段统计 * * @return R> */ @ApiOperation(value = "字段统计", notes = "字段统计") @PostMapping("/fields-statics") public R> fieldsStatics( @Validated @RequestBody CurrentFieldsQuery dto) { try { String previousQuarter = DateUtils.getPreviousQuarter(); previousQuarter = QuarterConstant.CURRENT_QUARTER; dto.setQuarter(previousQuarter); return tbBasicDataService.fieldsStatics(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(); } } /** * 字段统计-保存数据 * * @param dto * @return */ @PostMapping("/save-basic-data") @ApiOperation("字段统计-保存数据") public R editBasicData(@RequestBody BasicDataUpdDTO dto) { try { tbBasicDataService.editBasicData(dto); } catch (Exception e) { if (e instanceof ServiceException) { return R.fail(e.getMessage()); } log.error("保存数据异常", e); return R.fail(); } return R.ok(); } /** * 查看全部 * * @return R */ @GetMapping("/fields-statics-all") @ApiOperation(value = "字段统计-查看全部", notes = "字段统计") public R fieldsStaticsAll() { try { return R.ok(tbBasicDataService.fieldsStaticsAll()); } 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 @RequestBody ScoreCalculateQuery query) { try { String previousQuarter = DateUtils.getPreviousQuarter(); previousQuarter = QuarterConstant.CURRENT_QUARTER; query.setQuarter(previousQuarter); return R.ok(tbBasicDataService.scoreCalculatePage(query)); } catch (Exception e) { log.error("获取得分计算异常", e); return R.fail(); } } /** * 得分计算查看详情 * * @param query 得分计算详情条件查询对象 * @return R */ @PostMapping("/score-calculate-detail") @ApiOperation("得分计算-查看详情") public R scoreCalculateDetail( @Validated @RequestBody ScoreCalculateDetailQuery query) { try { return R.ok(tbScoreService.scoreCalculateDetail(query)); } catch (Exception e) { throw new RuntimeException(e); } } /** * 添加问题 * * @param dto 发现问题数据传输对象 * @return R */ @PostMapping("add-question") @ApiOperation(value = "发现问题-添加问题", notes = "发现问题") public R addQuestion(@Validated @RequestBody QuestionDTO dto) { try { tbQuestionService.addQuestion(dto); return R.ok(); } catch (Exception e) { if (e instanceof ServiceException) { return R.fail(e.getMessage()); } log.error("添加问题异常", e); return R.fail(); } } /** * 编辑问题 * * @param dto 发现问题编辑数据传输对象 * @return R */ @PostMapping("/edit-question") @ApiOperation(value = "发现问题-编辑问题", notes = "发现问题") public R editQuestion(@Validated @RequestBody QuestionUpdDTO dto) { try { tbQuestionService.editQuestion(dto); return R.ok(); } catch (Exception e) { if (e instanceof ServiceException) { return R.fail(e.getMessage()); } log.error("编辑问题异常", e); return R.fail(); } } /** * 分页查询问题 * * @param dto 发现问题分页数据传输对象 * @return R> */ @PostMapping("/page-question") @ApiOperation(value = "发现问题-分页查询问题", notes = "发现问题") public R> pageQuestion(@Validated @RequestBody QuestionQuery dto) { return R.ok(tbQuestionService.pageQuestion(dto)); } /** * 问题详情 * * @param id id * @return R */ @GetMapping("/detail-question") @ApiOperation(value = "发现问题-问题详情", notes = "发现问题") public R detailQuestion(@RequestParam("id") Long id) { TbQuestion question = tbQuestionService.getById(id); return R.ok(BeanUtils.copyBean(question, QuestionVO.class)); } /** * 删除问题 * * @param id 问题id * @return R */ @DeleteMapping("/delete") @ApiOperation(value = "发现问题-删除问题", notes = "发现问题") public R delete(@RequestParam("id") Long id) { tbQuestionService.delete(id); return R.ok(); } @GetMapping(value = {"/dept/list/{deptName}", "/dept/list"}) @ApiOperation(value = "发现问题-获取部门列表", notes = "发现问题") public R> deptList( @ApiParam(value = "部门名称", required = false) @PathVariable(value = "deptName", required = false) String deptName) { return R.ok(sysUserService.queryDeptListByName(deptName)); } }