From ba421d977e745d18a6264353c739bcaaf44c40d6 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 08 四月 2024 18:39:41 +0800 Subject: [PATCH] 历史数据模块接口 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java | 82 +++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbScoreMapper.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java | 242 +++++++---- ruoyi-system/src/main/java/com/ruoyi/system/service/TbScoreService.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java | 3 ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java | 11 ruoyi-admin/src/main/resources/mybatis-config.xml | 4 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java | 9 ruoyi-system/src/main/resources/mapper/system/TbBasicDataMapper.xml | 43 +- ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateQuery.java | 33 + ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateVO.java | 28 + ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml | 19 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java | 25 + ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml | 44 + ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateDetailVO.java | 22 + ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreDetailVO.java | 19 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbScoreServiceImpl.java | 32 + ruoyi-admin-dept/src/main/resources/mybatis-config.xml | 5 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml | 2 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | 98 ++-- ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryDataQuery.java | 31 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataMapper.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java | 12 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/query/QuestionQuery.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java | 8 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryFieldsQuery.java | 17 ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java | 5 ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml | 2 ruoyi-common/src/main/java/com/ruoyi/common/validate/HistoryGroup.java | 8 ruoyi-admin/src/main/resources/application.yml | 8 ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsVO.java | 5 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java | 2 /dev/null | 31 - ruoyi-admin-dept/src/main/resources/application.yml | 8 ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java | 11 ruoyi-system/src/main/java/com/ruoyi/system/query/CurrentFieldsQuery.java | 18 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java | 142 +++++++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/vo/QuestionVO.java | 4 ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml | 62 +- 48 files changed, 839 insertions(+), 304 deletions(-) diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java index 99a5d3e..f1b72e4 100644 --- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java +++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java @@ -12,6 +12,7 @@ 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 org.springframework.web.multipart.MultipartFile; @@ -21,7 +22,7 @@ */ @Slf4j @RestController -@RequestMapping("/current-quarter") +@RequestMapping("/current-quarter-dept") @RequiredArgsConstructor @Api(tags = "当前季度数据相关接口") public class CurrentQuarterController { @@ -107,7 +108,7 @@ */ @PostMapping("/page-score") @ApiOperation("得分计算分页查询") - public R<PageDTO<ScoreVO>> pageScore(@RequestBody ScoreQuery query) { + public R<PageDTO<ScoreVO>> pageScore(@Validated @RequestBody ScoreQuery query) { try { return R.ok(tbBasicDataService.pageScore(query)); } catch (Exception e) { diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java index b20c23a..edad794 100644 --- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java +++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java @@ -7,7 +7,7 @@ import com.ruoyi.common.enums.ReportingStatusEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.TbBasicData; -import com.ruoyi.system.dto.HistoryDataQueryDTO; +import com.ruoyi.system.query.HistoryDataQuery; import com.ruoyi.system.query.HistoryScoreQuery; import com.ruoyi.system.service.TbBasicDataService; import com.ruoyi.system.service.TbFieldService; @@ -20,6 +20,7 @@ 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.*; /** @@ -28,7 +29,7 @@ */ @Slf4j @RestController -@RequestMapping("/history-data") +@RequestMapping("/history-data-dept") @RequiredArgsConstructor @Api(tags = "历史数据相关接口") public class HistoryDataController { @@ -45,7 +46,7 @@ */ @PostMapping("/list") @ApiOperation("历史数据分页查询") - public R<PageDTO<BasicDataVO>> list(HistoryDataQueryDTO dto) { + public R<PageDTO<BasicDataVO>> list(@Validated @RequestBody HistoryDataQuery dto) { String areaCode = SecurityUtils.getLoginUser().getUser().getAreaCode(); Page<TbBasicData> page = tbBasicDataService.lambdaQuery().eq(TbBasicData::getDeptAreaCode, areaCode) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) @@ -58,7 +59,7 @@ * @param id 基础数据id * @return R<BasicDataFieldVO> */ - @GetMapping("/history-fields") + @GetMapping("/fields") @ApiOperation("字段查看") @ApiImplicitParam(name = "id", value = "基础数据id", required = true, dataType = "int", paramType = "query", dataTypeClass = Long.class) public R<BasicDataFieldVO> getHistoryFields(@RequestParam("id") Long id) { @@ -70,7 +71,7 @@ * @param query 得分计算条件查询对象 * @return R<PageDTO < ScoreVO>> */ - @PostMapping("/history-score") + @PostMapping("/score") @ApiOperation("得分计算") public R<PageDTO<ScoreVO>> getHistoryScore(@RequestBody HistoryScoreQuery query) { return R.ok(tbScoreService.getHistoryScore(query)); diff --git a/ruoyi-admin-dept/src/main/resources/application.yml b/ruoyi-admin-dept/src/main/resources/application.yml index 86cae4f..6c2ec50 100644 --- a/ruoyi-admin-dept/src/main/resources/application.yml +++ b/ruoyi-admin-dept/src/main/resources/application.yml @@ -122,12 +122,18 @@ mybatis-plus: # 此处在多数据源中生效 - config-location: classpath:/mybatis-config.xml + # config-location: classpath:/mybatis-config.xml global-config: banner: false db-config: logic-not-delete-value: 0 logic-delete-value: 1 + configuration: + map-underscore-to-camel-case: true + default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + cache-enabled: true + local-cache-scope: statement type-aliases-package: com.ruoyi.**.domain,com.ruoyi.**.vo # 指定Mapper文件位置 mapper-locations: classpath*:mapper/**/*.xml diff --git a/ruoyi-admin-dept/src/main/resources/mybatis-config.xml b/ruoyi-admin-dept/src/main/resources/mybatis-config.xml index c9af85f..f7a8772 100644 --- a/ruoyi-admin-dept/src/main/resources/mybatis-config.xml +++ b/ruoyi-admin-dept/src/main/resources/mybatis-config.xml @@ -10,7 +10,7 @@ <setting name="cacheEnabled" value="true"/> <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false --> <!-- <setting name="lazyLoadingEnabled" value="true"/> --> - <setting name="mapUnderscoreToCamelCase" value="false"/><!--是否将map下划线方式转为驼峰式命名--> + <setting name="mapUnderscoreToCamelCase" value="true"/><!--是否将map下划线方式转为驼峰式命名--> <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖--> <!-- <setting name="aggressiveLazyLoading" value="false"/>--> <!-- Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST --> @@ -20,7 +20,8 @@ <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 --> <!--<setting name="localCacheScope" value="STATEMENT"/>--> <setting name="localCacheScope" value="STATEMENT"/> - <setting name="mapUnderscoreToCamelCase" value="true" /> + <!--开启枚举类自动转换--> + <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </settings> </configuration> diff --git a/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml index 1e19c83..68a75af 100644 --- a/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml @@ -15,8 +15,6 @@ <setting name="logImpl" value="SLF4J" /> <!-- 使用驼峰命名法转换字段 --> <!-- <setting name="mapUnderscoreToCamelCase" value="true"/>--> - <!--开启枚举类自动转换--> - <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </settings> </configuration> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java index 978b174..bb27d80 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java @@ -4,17 +4,18 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.TbQuestion; -import com.ruoyi.system.dto.CurrentFieldsQueryDTO; import com.ruoyi.system.dto.QuestionDTO; -import com.ruoyi.system.dto.QuestionQueryDTO; import com.ruoyi.system.dto.QuestionUpdDto; +import com.ruoyi.system.query.CurrentFieldsQuery; +import com.ruoyi.system.query.QuestionQuery; +import com.ruoyi.system.query.ScoreCalculateDetailQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.service.TbBasicDataService; import com.ruoyi.system.service.TbQuestionService; -import com.ruoyi.system.vo.CurrentFieldsAllVO; -import com.ruoyi.system.vo.CurrentFieldsDetailVO; -import com.ruoyi.system.vo.CurrentFieldsVO; -import com.ruoyi.system.vo.QuestionVO; +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; @@ -36,16 +37,18 @@ private final TbBasicDataService tbBasicDataService; private final TbQuestionService tbQuestionService; + private final TbScoreService tbScoreService; /** - * 获取基础数据填报相关信息 + * 字段统计 * - * @return R<BasicDataReportingVO> + * @return R<PageDTO < CurrentFieldsVO>> */ @ApiOperation(value = "字段统计", notes = "字段统计") @PostMapping("/fields-statics") - public R<PageDTO<CurrentFieldsVO>> fieldsStatics(@Validated @RequestBody CurrentFieldsQueryDTO dto) { + public R<PageDTO<CurrentFieldsVO>> fieldsStatics(@Validated @RequestBody CurrentFieldsQuery dto) { try { + dto.setQuarter(DateUtils.getNowQuarter()); return tbBasicDataService.fieldsStatics(dto); } catch (Exception e) { log.error("获取字段统计相关信息异常", e); @@ -54,13 +57,13 @@ } /** - * 查看详情 + * 字段统计查看详情 * * @param id 基础数据id * @return R<CurrentFieldsDetailVO> */ @GetMapping("/fields-details") - @ApiOperation(value = "查看详情", notes = "字段统计") + @ApiOperation(value = "字段统计-查看详情", notes = "字段统计") @ApiImplicitParam(name = "id", value = "基础数据id", required = true, dataType = "int", paramType = "query", dataTypeClass = Long.class) public R<CurrentFieldsDetailVO> fieldsDetails(@RequestParam("id") Long id) { try { @@ -80,7 +83,7 @@ * @return R<CurrentFieldsAllVO> */ @GetMapping("/fields-statics-all") - @ApiOperation(value = "查看全部", notes = "字段统计") + @ApiOperation(value = "字段统计-查看全部", notes = "字段统计") public R<CurrentFieldsAllVO> fieldsStaticsAll() { try { return R.ok(tbBasicDataService.fieldsStaticsAll()); @@ -94,13 +97,44 @@ } /** + * 得分计算 + * + * @param query 当前季度/历史 数据 得分计算条件查询对象 + * @return R<PageDTO < ScoreCalculateVO>> + */ + @PostMapping("/score-calculate") + @ApiOperation("得分计算") + public R<PageDTO<ScoreCalculateVO>> scoreCalculate(@Validated @RequestBody ScoreCalculateQuery query) { + try { + query.setQuarter(DateUtils.getNowQuarter()); + return R.ok(tbBasicDataService.scoreCalculatePage(query)); + } catch (Exception e) { + log.error("获取得分计算异常", e); + return R.fail(); + } + } + + /** + * 得分计算查看详情 + * + * @param query 得分计算详情条件查询对象 + * @return R<ScoreCalculateDetailVO> + */ + @PostMapping("/score-calculate-detail") + @ApiOperation("得分计算-查看详情") + @ApiImplicitParam(name = "areaName", value = "部门名称", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class) + public R<ScoreCalculateDetailVO> scoreCalculateDetail(@Validated @RequestBody ScoreCalculateDetailQuery query) { + return R.ok(tbScoreService.scoreCalculateDetail(query)); + } + + /** * 添加问题 * * @param dto 发现问题数据传输对象 * @return R<Void> */ @PostMapping("add-question") - @ApiOperation(value = "添加问题", notes = "发现问题") + @ApiOperation(value = "发现问题-添加问题", notes = "发现问题") public R<Void> addQuestion(@Validated @RequestBody QuestionDTO dto) { try { tbQuestionService.addQuestion(dto); @@ -114,8 +148,14 @@ } } + /** + * 编辑问题 + * + * @param dto 发现问题编辑数据传输对象 + * @return R<Void> + */ @PostMapping("/edit-question") - @ApiOperation(value = "编辑问题", notes = "发现问题") + @ApiOperation(value = "发现问题-编辑问题", notes = "发现问题") public R<Void> editQuestion(@Validated @RequestBody QuestionUpdDto dto) { try { tbQuestionService.editQuestion(dto); @@ -136,8 +176,8 @@ * @return R<PageDTO < QuestionVO>> */ @PostMapping("/page-question") - @ApiOperation(value = "分页查询问题", notes = "发现问题") - public R<PageDTO<QuestionVO>> pageQuestion(@RequestBody QuestionQueryDTO dto) { + @ApiOperation(value = "发现问题-分页查询问题", notes = "发现问题") + public R<PageDTO<QuestionVO>> pageQuestion(@Validated @RequestBody QuestionQuery dto) { return R.ok(tbQuestionService.pageQuestion(dto)); } @@ -148,14 +188,20 @@ * @return R<QuestionDTO> */ @GetMapping("/detail-question") - @ApiOperation(value = "问题详情", notes = "发现问题") + @ApiOperation(value = "发现问题-问题详情", notes = "发现问题") public R<QuestionDTO> detailQuestion(@RequestParam("id") Long id) { TbQuestion question = tbQuestionService.getById(id); return R.ok(BeanUtils.copyBean(question, QuestionDTO.class)); } + /** + * 删除问题 + * + * @param id 问题id + * @return R<Void> + */ @DeleteMapping("/delete") - @ApiOperation(value = "删除问题", notes = "发现问题") + @ApiOperation(value = "发现问题-删除问题", notes = "发现问题") public R<Void> delete(@RequestParam("id") Long id) { tbQuestionService.removeById(id); return R.ok(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java new file mode 100644 index 0000000..a7b738b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java @@ -0,0 +1,142 @@ +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<PageDTO < BasicDataVO>> + */ + @PostMapping("/page-data") + @ApiOperation("历史数据分页查询") + public R<PageDTO<BasicDataVO>> pageData(@Validated @RequestBody HistoryDataQuery dto) { + Date startTime = dto.getStartTime(); + Date endTime = dto.getEndTime(); + boolean flag = Objects.nonNull(startTime) && Objects.nonNull(endTime); + Page<TbBasicData> 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<PageDTO < CurrentFieldsVO>> + */ + @ApiOperation(value = "字段统计", notes = "字段统计") + @PostMapping("/fields-statics") + public R<PageDTO<CurrentFieldsVO>> 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<CurrentFieldsDetailVO> + */ + @GetMapping("/fields-details") + @ApiOperation(value = "查看详情", notes = "字段统计") + @ApiImplicitParam(name = "id", value = "基础数据id", required = true, dataType = "int", paramType = "query", dataTypeClass = Long.class) + public R<CurrentFieldsDetailVO> 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<CurrentFieldsAllVO> + */ + @GetMapping("/fields-statics-all") + @ApiOperation(value = "查看全部", notes = "字段统计") + @ApiImplicitParam(name = "quarter", value = "季度", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class) + public R<CurrentFieldsAllVO> 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<PageDTO < ScoreVO>> + */ + @PostMapping("/score-calculate") + @ApiOperation("得分计算") + public R<PageDTO<ScoreCalculateVO>> scoreCalculate(@Validated({HistoryGroup.class}) @RequestBody ScoreCalculateQuery query) { + return R.ok(tbBasicDataService.scoreCalculatePage(query)); + } + + /** + * 得分计算查看详情 + * + * @param query 得分计算详情条件查询对象 + * @return R<ScoreCalculateDetailVO> + */ + @PostMapping("/score-calculate-detail") + @ApiOperation("得分计算-查看详情") + public R<ScoreCalculateDetailVO> scoreCalculateDetail(@Validated @RequestBody ScoreCalculateDetailQuery query) { + return R.ok(tbScoreService.scoreCalculateDetail(query)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java index 8fca721..ff94666 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java @@ -144,7 +144,7 @@ */ @PostMapping("/page") @ApiOperation("分页条件查询") - public R<PageDTO<BasicDataCategoryVO>> page(@RequestBody BasicDataCategoryQuery query) { + public R<PageDTO<BasicDataCategoryVO>> page(@Validated @RequestBody BasicDataCategoryQuery query) { try { return R.ok(tbBasicDataCategoryService.queryPage(query)); } catch (Exception e) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java index 8d79f06..a095d17 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java @@ -169,7 +169,7 @@ */ @PostMapping("/page") @ApiOperation("分页条件查询") - public R<PageDTO<BasicDataConfigVO>> page(@RequestBody BasicDataConfigQuery query) { + public R<PageDTO<BasicDataConfigVO>> page(@Validated @RequestBody BasicDataConfigQuery query) { try { PageDTO<BasicDataConfigVO> basicDataConfigVOPageDTO = tbBasicDataConfigService.queryPage(query); return R.ok(basicDataConfigVOPageDTO); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java index 3c05ff9..4454b26 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java @@ -22,6 +22,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -101,7 +102,7 @@ */ @PostMapping("/page") @ApiOperation("分页条件查询") - public R<PageDTO<DeptVO>> page(@RequestBody DeptQuery query) { + public R<PageDTO<DeptVO>> page(@Validated @RequestBody DeptQuery query) { try { return R.ok(tbDeptService.queryPage(query)); } catch (Exception e) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java index 7205de3..96dd3dd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java @@ -82,7 +82,7 @@ */ @PostMapping("/page") @ApiOperation("分页条件查询") - public R<PageDTO<FieldCategoryVO>> page(@RequestBody FieldCategoryQuery query) { + public R<PageDTO<FieldCategoryVO>> page(@Validated @RequestBody FieldCategoryQuery query) { try { return R.ok(tbFieldCategoryService.queryPage(query)); } catch (Exception e) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java index f927e35..a2472cc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java @@ -140,7 +140,7 @@ */ @PostMapping("/page") @ApiOperation("分页条件查询") - public R<PageDTO<FieldVO>> page(@RequestBody FieldQuery query) { + public R<PageDTO<FieldVO>> page(@Validated @RequestBody FieldQuery query) { try { return R.ok(tbFieldService.queryPage(query)); } catch (Exception e) { diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 1fc858d..821b2c5 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -122,7 +122,13 @@ mybatis-plus: # 此处在多数据源中生效 - config-location: classpath:/mybatis-config.xml + # config-location: classpath:/mybatis-config.xml + configuration: + map-underscore-to-camel-case: true + default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + cache-enabled: true + local-cache-scope: statement global-config: banner: false db-config: diff --git a/ruoyi-admin/src/main/resources/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis-config.xml index 7d487eb..f7a8772 100644 --- a/ruoyi-admin/src/main/resources/mybatis-config.xml +++ b/ruoyi-admin/src/main/resources/mybatis-config.xml @@ -10,7 +10,7 @@ <setting name="cacheEnabled" value="true"/> <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false --> <!-- <setting name="lazyLoadingEnabled" value="true"/> --> - <setting name="mapUnderscoreToCamelCase" value="false"/><!--是否将map下划线方式转为驼峰式命名--> + <setting name="mapUnderscoreToCamelCase" value="true"/><!--是否将map下划线方式转为驼峰式命名--> <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖--> <!-- <setting name="aggressiveLazyLoading" value="false"/>--> <!-- Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST --> @@ -20,6 +20,8 @@ <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 --> <!--<setting name="localCacheScope" value="STATEMENT"/>--> <setting name="localCacheScope" value="STATEMENT"/> + <!--开启枚举类自动转换--> + <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </settings> </configuration> diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml index 9a8c670..10cf6b0 100644 --- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml @@ -15,8 +15,6 @@ <setting name="logImpl" value="SLF4J" /> <!-- 使用驼峰命名法转换字段 --> <setting name="mapUnderscoreToCamelCase" value="true"/> - <!--开启枚举类自动转换--> - <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </settings> </configuration> diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java index 300eb79..369136a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CalculateUtil.java @@ -12,7 +12,7 @@ * @date 2024/3/27 */ public class CalculateUtil { - public static Map<String,Integer> getFieldsAndValue(String rule) { + public static Map<String, Integer> getFieldsAndValue(String rule) { // 正则表达式模式,匹配形如 "fieldName:value" 的字符串 Pattern pattern = Pattern.compile("\\b(\\w+)_(\\d+)\\b"); Matcher matcher = pattern.matcher(rule); @@ -21,11 +21,12 @@ while (matcher.find()) { String fieldName = matcher.group(1); int value = Integer.parseInt(matcher.group(2)); - map.put(fieldName+"_"+value, value); + map.put(fieldName + "_" + value, value); } return map; } - public static double calculate(String expression,Map<String,Object> value) { + + public static double calculate(String expression, Map<String, Object> value) { expression = formatExpression(expression); // 创建 JEXL 引擎 JexlEngine jexl = new JexlBuilder().create(); @@ -35,7 +36,7 @@ // 创建上下文 JexlContext context = new MapContext(); for (Map.Entry<String, Object> stringObjectEntry : value.entrySet()) { - context.set(stringObjectEntry.getKey(),stringObjectEntry.getValue()); + context.set(stringObjectEntry.getKey(), stringObjectEntry.getValue()); } // 执行计算 Object result = exp.evaluate(context); @@ -51,7 +52,7 @@ .replaceAll("÷", "/") .replaceAll("(", "(") .replaceAll(")", ")") - .replaceAll("+","+") + .replaceAll("+", "+") .replaceAll("-", "-"); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 01b986b..bee7671 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -1,5 +1,7 @@ package com.ruoyi.common.utils; +import org.apache.commons.lang3.time.DateFormatUtils; + import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -10,15 +12,12 @@ import java.util.HashMap; import java.util.Map; -import org.apache.commons.lang3.time.DateFormatUtils; - /** * 时间工具类 - * + * * @author ruoyi */ -public class DateUtils extends org.apache.commons.lang3.time.DateUtils -{ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String YYYY = "yyyy"; public static String YYYY_MM = "yyyy-MM"; @@ -30,63 +29,52 @@ public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; private static String[] parsePatterns = { - "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; /** * 获取当前Date型日期 - * + * * @return Date() 当前日期 */ - public static Date getNowDate() - { + public static Date getNowDate() { return new Date(); } /** * 获取当前日期, 默认格式为yyyy-MM-dd - * + * * @return String */ - public static String getDate() - { + public static String getDate() { return dateTimeNow(YYYY_MM_DD); } - public static final String getTime() - { + public static final String getTime() { return dateTimeNow(YYYY_MM_DD_HH_MM_SS); } - public static final String dateTimeNow() - { + public static final String dateTimeNow() { return dateTimeNow(YYYYMMDDHHMMSS); } - public static final String dateTimeNow(final String format) - { + public static final String dateTimeNow(final String format) { return parseDateToStr(format, new Date()); } - public static final String dateTime(final Date date) - { + public static final String dateTime(final Date date) { return parseDateToStr(YYYY_MM_DD, date); } - public static final String parseDateToStr(final String format, final Date date) - { + public static final String parseDateToStr(final String format, final Date date) { return new SimpleDateFormat(format).format(date); } - public static final Date dateTime(final String format, final String ts) - { - try - { + public static final Date dateTime(final String format, final String ts) { + try { return new SimpleDateFormat(format).parse(ts); - } - catch (ParseException e) - { + } catch (ParseException e) { throw new RuntimeException(e); } } @@ -94,8 +82,7 @@ /** * 日期路径 即年/月/日 如2018/08/08 */ - public static final String datePath() - { + public static final String datePath() { Date now = new Date(); return DateFormatUtils.format(now, "yyyy/MM/dd"); } @@ -103,8 +90,7 @@ /** * 日期路径 即年/月/日 如20180808 */ - public static final String dateTime() - { + public static final String dateTime() { Date now = new Date(); return DateFormatUtils.format(now, "yyyyMMdd"); } @@ -112,18 +98,13 @@ /** * 日期型字符串转化为日期 格式 */ - public static Date parseDate(Object str) - { - if (str == null) - { + public static Date parseDate(Object str) { + if (str == null) { return null; } - try - { + try { return parseDate(str.toString(), parsePatterns); - } - catch (ParseException e) - { + } catch (ParseException e) { return null; } } @@ -131,8 +112,7 @@ /** * 获取服务器启动时间 */ - public static Date getServerStartDate() - { + public static Date getServerStartDate() { long time = ManagementFactory.getRuntimeMXBean().getStartTime(); return new Date(time); } @@ -140,20 +120,18 @@ /** * 计算相差天数 */ - public static int differentDaysByMillisecond(Date date1, Date date2) - { + public static int differentDaysByMillisecond(Date date1, Date date2) { return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); } /** * 计算时间差 * - * @param endDate 最后时间 + * @param endDate 最后时间 * @param startTime 开始时间 * @return 时间差(天/小时/分钟) */ - public static String timeDistance(Date endDate, Date startTime) - { + public static String timeDistance(Date endDate, Date startTime) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; @@ -174,8 +152,7 @@ /** * 增加 LocalDateTime ==> Date */ - public static Date toDate(LocalDateTime temporalAccessor) - { + public static Date toDate(LocalDateTime temporalAccessor) { ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } @@ -183,8 +160,7 @@ /** * 增加 LocalDate ==> Date */ - public static Date toDate(LocalDate temporalAccessor) - { + public static Date toDate(LocalDate temporalAccessor) { LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); @@ -250,6 +226,7 @@ calendar.setTime(date); return calendar.get(Calendar.MONTH) / 3 + 1; } + /** * 指定日期所在季度的第一天/最后一天时间 * @@ -374,4 +351,19 @@ return LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd")); } + /** + * 获取当前季度字符串 + * + * @return + * @throws Exception + */ + public static String getNowQuarter() throws Exception { + //当前所在季度 + Date date = new Date(); + int quarterOfYear = getQuarterOfYear(date); + String quarterOfYearStr = null; + quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); + LocalDate now = LocalDate.now(); + return String.format("%s年%s季度", now.getYear(), quarterOfYearStr); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/validate/HistoryGroup.java b/ruoyi-common/src/main/java/com/ruoyi/common/validate/HistoryGroup.java new file mode 100644 index 0000000..1ac9397 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/validate/HistoryGroup.java @@ -0,0 +1,8 @@ +package com.ruoyi.common.validate; + +/** + * @author mitao + * @date 2024/4/8 + */ +public interface HistoryGroup { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java index 81c05b5..f3aa3aa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbQuestion.java @@ -37,6 +37,10 @@ @TableField("content") private String content; + @ApiModelProperty(value = "季度") + @TableField("quarter") + private String quarter; + @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableField("del_flag") @TableLogic diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/HistoryDataQueryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/HistoryDataQueryDTO.java deleted file mode 100644 index 6c3c98f..0000000 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/HistoryDataQueryDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ruoyi.system.dto; - -import com.ruoyi.common.core.domain.BasePage; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -/** - * @author mitao - * @date 2024/4/3 - */ -@Data -@ApiModel(value = "历史数据查询传输对象") -@EqualsAndHashCode(callSuper = true) -public class HistoryDataQueryDTO extends BasePage { - - private static final long serialVersionUID = -4384424407387142261L; - - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty("开始时间") - private Date startTime; - - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty("结束时间") - private Date endTime; -} - diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java index ce20c7a..35e7d83 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java @@ -1,7 +1,11 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.TbBasicDataConfig; +import com.ruoyi.system.query.ScoreCalculateQuery; +import com.ruoyi.system.vo.ScoreCalculateVO; +import org.apache.ibatis.annotations.Param; /** * <p> @@ -13,4 +17,5 @@ */ public interface TbBasicDataConfigMapper extends BaseMapper<TbBasicDataConfig> { + Page<ScoreCalculateVO> scoreCalculatePage(@Param("query") ScoreCalculateQuery query, @Param("page") Page<ScoreCalculateVO> page); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataMapper.java index ee6f9fe..6203e47 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataMapper.java @@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.TbBasicData; -import com.ruoyi.system.dto.CurrentFieldsQueryDTO; +import com.ruoyi.system.query.CurrentFieldsQuery; import com.ruoyi.system.vo.CurrentFieldsVO; import org.apache.ibatis.annotations.Param; @@ -17,5 +17,5 @@ */ public interface TbBasicDataMapper extends BaseMapper<TbBasicData> { - Page<CurrentFieldsVO> fieldsStatics(@Param("page") Page<CurrentFieldsVO> page, @Param("dto") CurrentFieldsQueryDTO dto, @Param("nowQuarter") String nowQuarter); + Page<CurrentFieldsVO> fieldsStatics(@Param("page") Page<CurrentFieldsVO> page, @Param("dto") CurrentFieldsQuery dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbScoreMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbScoreMapper.java index cc895cd..d8c74aa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbScoreMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbScoreMapper.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.TbScore; +import com.ruoyi.system.query.ScoreCalculateDetailQuery; import com.ruoyi.system.query.ScoreQuery; +import com.ruoyi.system.vo.ScoreDetailVO; import com.ruoyi.system.vo.ScoreVO; import org.apache.ibatis.annotations.Param; @@ -18,4 +20,6 @@ public interface TbScoreMapper extends BaseMapper<TbScore> { Page<ScoreVO> pageScore(@Param("query") ScoreQuery query, @Param("page") Page<ScoreVO> page); + + Page<ScoreDetailVO> scoreCalculateDetail(@Param("query") ScoreCalculateDetailQuery query, @Param("page") Page<ScoreDetailVO> page); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/CurrentFieldsQuery.java similarity index 61% copy from ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java copy to ruoyi-system/src/main/java/com/ruoyi/system/query/CurrentFieldsQuery.java index 3bf01f3..c4e2ae9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/CurrentFieldsQuery.java @@ -1,11 +1,14 @@ -package com.ruoyi.system.dto; +package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import com.ruoyi.common.enums.ReportingStatusEnum; +import com.ruoyi.common.validate.HistoryGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; /** * @author mitao @@ -13,15 +16,24 @@ */ @Data @EqualsAndHashCode(callSuper = true) -@ApiModel(value = "当前季度字段统计查询数据传输对象") -public class CurrentFieldsQueryDTO extends BasePage { +@ApiModel(value = "字段统计查询数据传输对象") +public class CurrentFieldsQuery extends BasePage { + private static final long serialVersionUID = 3808984599047049282L; + + @ApiModelProperty(value = "季度", notes = "当前季度数据不传,历史数据必传") + @NotBlank(message = "季度不能为空", groups = {HistoryGroup.class}) + private String quarter; + @ApiModelProperty(value = "填报部门") private String areaName; + @ApiModelProperty(value = "状态") private ReportingStatusEnum status; + @ApiModelProperty(value = "负责人姓名") private String personInCharge; + @ApiModelProperty(value = "负责人联系电话)") private String phoneNumber; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryDataQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryDataQuery.java new file mode 100644 index 0000000..a9681c6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryDataQuery.java @@ -0,0 +1,31 @@ +package com.ruoyi.system.query; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * @author mitao + * @date 2024/4/3 + */ +@Data +@ApiModel(value = "历史数据条件查询对象") +@EqualsAndHashCode(callSuper = true) +public class HistoryDataQuery extends BasePage { + + private static final long serialVersionUID = -4384424407387142261L; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("开始时间") + private Date startTime; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("结束时间") + private Date endTime; +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryFieldsQuery.java similarity index 69% rename from ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java rename to ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryFieldsQuery.java index 3bf01f3..dde1032 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryFieldsQuery.java @@ -1,4 +1,4 @@ -package com.ruoyi.system.dto; +package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import com.ruoyi.common.enums.ReportingStatusEnum; @@ -7,21 +7,32 @@ import lombok.Data; import lombok.EqualsAndHashCode; +import javax.validation.constraints.NotBlank; + /** * @author mitao * @date 2024/4/7 */ @Data @EqualsAndHashCode(callSuper = true) -@ApiModel(value = "当前季度字段统计查询数据传输对象") -public class CurrentFieldsQueryDTO extends BasePage { +@ApiModel(value = "历史数据字段统计条件查询对象") +public class HistoryFieldsQuery extends BasePage { + private static final long serialVersionUID = 3808984599047049282L; + + @ApiModelProperty(value = "季度") + @NotBlank(message = "季度不能为空") + private String quarter; + @ApiModelProperty(value = "填报部门") private String areaName; + @ApiModelProperty(value = "状态") private ReportingStatusEnum status; + @ApiModelProperty(value = "负责人姓名") private String personInCharge; + @ApiModelProperty(value = "负责人联系电话)") private String phoneNumber; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/QuestionQueryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/QuestionQuery.java similarity index 74% rename from ruoyi-system/src/main/java/com/ruoyi/system/dto/QuestionQueryDTO.java rename to ruoyi-system/src/main/java/com/ruoyi/system/query/QuestionQuery.java index 66d08ad..3d87273 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/QuestionQueryDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/QuestionQuery.java @@ -1,4 +1,4 @@ -package com.ruoyi.system.dto; +package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; import io.swagger.annotations.ApiModel; @@ -12,8 +12,8 @@ */ @Data @EqualsAndHashCode(callSuper = true) -@ApiModel(value = "发现问题分页数据传输对象") -public class QuestionQueryDTO extends BasePage { +@ApiModel(value = "发现问题分页条件查询对象") +public class QuestionQuery extends BasePage { private static final long serialVersionUID = -7645166269898895715L; @ApiModelProperty("问题标题") private String title; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java new file mode 100644 index 0000000..af6a8b0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/4/8 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("得分计算详情条件查询对象") +public class ScoreCalculateDetailQuery extends BasePage { + + private static final long serialVersionUID = -4875926880229775128L; + + @ApiModelProperty(value = "计算类型id") + private Long id; + + @ApiModelProperty(value = "部门名称") + private String areaName; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateQuery.java new file mode 100644 index 0000000..48fc202 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateQuery.java @@ -0,0 +1,33 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import com.ruoyi.common.enums.FieldTypeEnum; +import com.ruoyi.common.validate.HistoryGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +/** + * @author mitao + * @date 2024/3/27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("得分计算条件查询对象") +public class ScoreCalculateQuery extends BasePage { + + private static final long serialVersionUID = -1055887500656271053L; + + @ApiModelProperty(value = "季度", notes = "当前季度数据不传,历史数据必传") + @NotBlank(message = "季度不能为空", groups = {HistoryGroup.class}) + private String quarter; + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "计算方式") + private FieldTypeEnum type; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java index 8b44716..f0310c4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/SysUserQuery.java @@ -9,6 +9,8 @@ @ApiModel(value = "账户列表query") public class SysUserQuery extends BasePage { + private static final long serialVersionUID = 3174324251882921880L; + @ApiModelProperty(value = "姓名") private String nickName; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java index 6078ba6..8aa6f57 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java @@ -1,5 +1,6 @@ package com.ruoyi.system.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbBasicDataConfig; @@ -7,8 +8,10 @@ import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.BasicDataConfigUpdateDTO; import com.ruoyi.system.query.BasicDataConfigQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.vo.BasicDataConfigDetailVO; import com.ruoyi.system.vo.BasicDataConfigVO; +import com.ruoyi.system.vo.ScoreCalculateVO; /** * <p> @@ -31,4 +34,6 @@ PageDTO<BasicDataConfigVO> queryPage(BasicDataConfigQuery query); void showHide(ShowHideDTO dto); + + Page<ScoreCalculateVO> scoreCalculatePage(ScoreCalculateQuery query, Page<ScoreCalculateVO> page); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java index 86bbc69..4756baa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java @@ -5,7 +5,8 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.domain.TbBasicData; import com.ruoyi.system.dto.BasicDataDTO; -import com.ruoyi.system.dto.CurrentFieldsQueryDTO; +import com.ruoyi.system.query.CurrentFieldsQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.query.ScoreQuery; import com.ruoyi.system.vo.*; import org.springframework.web.multipart.MultipartFile; @@ -32,8 +33,13 @@ R<CurrentFieldsDetailVO> fieldsDetails(Long id); - R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQueryDTO dto); + R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQuery dto) throws Exception; - CurrentFieldsAllVO fieldsStaticsAll(); + CurrentFieldsAllVO fieldsStaticsAll() throws Exception; + R<PageDTO<CurrentFieldsVO>> historyFieldsStatics(CurrentFieldsQuery dto); + + PageDTO<ScoreCalculateVO> scoreCalculatePage(ScoreCalculateQuery query); + + CurrentFieldsAllVO fieldsStaticsAll(String quarter); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java index fdf7f5f..1c90d7d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbQuestionService.java @@ -4,8 +4,8 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbQuestion; import com.ruoyi.system.dto.QuestionDTO; -import com.ruoyi.system.dto.QuestionQueryDTO; import com.ruoyi.system.dto.QuestionUpdDto; +import com.ruoyi.system.query.QuestionQuery; import com.ruoyi.system.vo.QuestionVO; /** @@ -18,9 +18,9 @@ */ public interface TbQuestionService extends IService<TbQuestion> { - void addQuestion(QuestionDTO dto); + void addQuestion(QuestionDTO dto) throws Exception; void editQuestion(QuestionUpdDto dto); - PageDTO<QuestionVO> pageQuestion(QuestionQueryDTO dto); + PageDTO<QuestionVO> pageQuestion(QuestionQuery dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbScoreService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbScoreService.java index d5a6f47..4044bcc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbScoreService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbScoreService.java @@ -5,7 +5,9 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbScore; import com.ruoyi.system.query.HistoryScoreQuery; +import com.ruoyi.system.query.ScoreCalculateDetailQuery; import com.ruoyi.system.query.ScoreQuery; +import com.ruoyi.system.vo.ScoreCalculateDetailVO; import com.ruoyi.system.vo.ScoreVO; /** @@ -21,4 +23,6 @@ Page<ScoreVO> pageScore(ScoreQuery query, Page<ScoreVO> page); PageDTO<ScoreVO> getHistoryScore(HistoryScoreQuery query); + + ScoreCalculateDetailVO scoreCalculateDetail(ScoreCalculateDetailQuery query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java index 5a7ece4..c47c155 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java @@ -21,11 +21,13 @@ import com.ruoyi.system.mapper.TbBasicDataConfigMapper; import com.ruoyi.system.mapper.TbFieldMapper; import com.ruoyi.system.query.BasicDataConfigQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.service.TbBasicDataConfigDetailService; import com.ruoyi.system.service.TbBasicDataConfigService; import com.ruoyi.system.vo.BasicDataConfigDetailVO; import com.ruoyi.system.vo.BasicDataConfigVO; import com.ruoyi.system.vo.CalculateVO; +import com.ruoyi.system.vo.ScoreCalculateVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -158,6 +160,11 @@ throw new ServiceException(String.format("字段“%s”已被隐藏,请重新配置后再次操作!", fieldNames)); } } - this.lambdaUpdate().set( TbBasicDataConfig::getStatus, dto.getStatus()).eq(TbBasicDataConfig::getId, dto.getId()).update(); + this.lambdaUpdate().set(TbBasicDataConfig::getStatus, dto.getStatus()).eq(TbBasicDataConfig::getId, dto.getId()).update(); + } + + @Override + public Page<ScoreCalculateVO> scoreCalculatePage(ScoreCalculateQuery query, Page<ScoreCalculateVO> page) { + return baseMapper.scoreCalculatePage(query, page); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java index cbb4220..0100e39 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java @@ -15,12 +15,13 @@ import com.ruoyi.common.utils.*; import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.BasicDataDTO; -import com.ruoyi.system.dto.CurrentFieldsQueryDTO; import com.ruoyi.system.handler.CustomerHandler; import com.ruoyi.system.handler.SelectedSheetWriteHandler; import com.ruoyi.system.listener.BasicDataListener; import com.ruoyi.system.mapper.TbBasicDataMapper; import com.ruoyi.system.mapper.TbDeptMapper; +import com.ruoyi.system.query.CurrentFieldsQuery; +import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.query.ScoreQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.utils.FieldBuildUtil; @@ -84,10 +85,7 @@ if (Objects.isNull(dept)) { throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode)); } - //当前所在季度 Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); Map<String, Date> quarterDate = DateUtils.getQuarterDate(date); //当前季度开始 Date quarterStart = quarterDate.get("first"); @@ -98,16 +96,16 @@ LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(15); LocalDate now = LocalDate.now(); - vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setQuarter(DateUtils.getNowQuarter()); vo.setStatus(ReportingStatusEnum.UNFILLED); //如果当前时间不在规定范围内:季度初1-15号 if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) { - return R.ok(vo,"请于季度初1-15号上传季度数据。"); + return R.ok(vo, "请于季度初1-15号上传季度数据。"); } //查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery() .eq(TbBasicData::getDeptAreaCode, dept.getAreaCode()) - .between(TbBasicData::getCreateTime, quarterStart,quarterEnd)); + .between(TbBasicData::getCreateTime, quarterStart, quarterEnd)); //查询需要填写的字段 List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); List<FieldsTreeVO> roots = new ArrayList<>(); @@ -122,7 +120,7 @@ roots.add(fieldsTreeVO); roots.add(fieldsTreeVO2); if (CollUtils.isNotEmpty(list)) { - FieldBuildUtil.buildTreeFromTbFieldList(list,roots); + FieldBuildUtil.buildTreeFromTbFieldList(list, roots); FieldsTreeVO remark = new FieldsTreeVO(); remark.setId(-3L); remark.setName("备注"); @@ -130,10 +128,10 @@ vo.setFields(roots); } if (Objects.isNull(basicData)) { - vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setQuarter(DateUtils.getNowQuarter()); vo.setStatus(ReportingStatusEnum.UNFILLED); return R.ok(vo); - }else { + } else { vo.setStatus(basicData.getStatus()); //查询已填报数据 包含数据缺失和已填报 List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery() @@ -197,7 +195,7 @@ Set<Long> fieldIds = fieldList.stream().map(TbField::getId).collect(Collectors.toSet()); //用户填写的动态字段 Set<Long> deptFieldIds = tbBasicDataFields.stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); - boolean flag = deptFieldIds.containsAll(fieldIds) && (StringUtils.isNotEmpty(dto.getTransferPaymentScale())&& StringUtils.isNotEmpty(dto.getCurrentGdp())); + boolean flag = deptFieldIds.containsAll(fieldIds) && (StringUtils.isNotEmpty(dto.getTransferPaymentScale()) && StringUtils.isNotEmpty(dto.getCurrentGdp())); if (flag) { tbBasicData.setStatus(ReportingStatusEnum.FILLED); this.updateById(tbBasicData); @@ -241,7 +239,8 @@ /** * 根据字段名获取该字段下标 - * @param list 表头 + * + * @param list 表头 * @param value 字段名 * @return 下标 */ @@ -257,10 +256,6 @@ private List<List<Object>> dataList(List<TbField> list) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String areaName = loginUser.getUser().getAreaName(); - - //当前所在季度 - int quarterOfYear = DateUtils.getQuarterOfYear(new Date()); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); List<List<Object>> excellist = new ArrayList<List<Object>>(); List<List<String>> head = head(list); List<Object> columnNo = Lists.newArrayList("栏号"); @@ -268,7 +263,7 @@ columnNo.add(String.valueOf(i)); } excellist.add(columnNo); - excellist.add(Lists.newArrayList(areaName, String.format("%s季度",quarterOfYearStr))); + excellist.add(Lists.newArrayList(areaName, DateUtils.getNowQuarter())); return excellist; } @@ -279,12 +274,12 @@ headTitles.add(Lists.newArrayList("填报季度")); headTitles.add(Lists.newArrayList("转移支付规模")); headTitles.add(Lists.newArrayList("当期GDP")); - list.forEach(item ->{ + list.forEach(item -> { String levelOneCategory = item.getLevelOneCategory(); String levelTwoCategory = item.getLevelTwoCategory(); String levelThreeCategory = item.getLevelThreeCategory(); String fieldName = item.getFieldName(); - headTitles.add(Lists.newArrayList(levelOneCategory,StringUtils.isBlank(levelTwoCategory) ? fieldName : levelTwoCategory, StringUtils.isBlank(levelThreeCategory) ? fieldName : levelThreeCategory, fieldName)); + headTitles.add(Lists.newArrayList(levelOneCategory, StringUtils.isBlank(levelTwoCategory) ? fieldName : levelTwoCategory, StringUtils.isBlank(levelThreeCategory) ? fieldName : levelThreeCategory, fieldName)); }); headTitles.add(Lists.newArrayList("备注")); return headTitles; @@ -297,9 +292,9 @@ String areaCode = loginUser.getUser().getAreaCode(); //查询需要填写的动态字段 List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); - EasyExcel.read(file.getInputStream(), new BasicDataListener(this,fieldList, - tbFieldService,areaCode,tbBasicDataFieldService,tbBasicDataConfigService, - tbBasicDataConfigDetailService,tbScoreService)).sheet().doRead(); + EasyExcel.read(file.getInputStream(), new BasicDataListener(this, fieldList, + tbFieldService, areaCode, tbBasicDataFieldService, tbBasicDataConfigService, + tbBasicDataConfigDetailService, tbScoreService)).sheet().doRead(); } private void calculateScore(TbBasicData tbBasicData) { @@ -388,13 +383,13 @@ //查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) - .between(TbBasicData::getCreateTime, quarterStart,quarterEnd)); + .between(TbBasicData::getCreateTime, quarterStart, quarterEnd)); if (Objects.isNull(basicData)) { return PageDTO.empty(page); } query.setBasicDataId(basicData.getId()); //查询对应的基础数据配置 - Page<ScoreVO> pageVO = tbScoreService.pageScore(query,page); + Page<ScoreVO> pageVO = tbScoreService.pageScore(query, page); return PageDTO.of(pageVO); } @@ -457,25 +452,14 @@ } @Override - public R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQueryDTO dto) { + public R<PageDTO<CurrentFieldsVO>> fieldsStatics(CurrentFieldsQuery dto) throws Exception { Page<CurrentFieldsVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); - //当前所在季度 - Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - String quarterOfYearStr = null; - try { - quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); - LocalDate now = LocalDate.now(); - String nowQuarter = String.format("%s年%s季度", now.getYear(), quarterOfYearStr); - return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto, nowQuarter))); - } catch (Exception e) { - log.error("查询失败", e); - return R.fail("查询失败"); - } + String nowQuarter = DateUtils.getNowQuarter(); + return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto))); } @Override - public CurrentFieldsAllVO fieldsStaticsAll() { + public CurrentFieldsAllVO fieldsStaticsAll() throws Exception { CurrentFieldsAllVO vo = new CurrentFieldsAllVO(); List<FieldsTreeVO> roots = new ArrayList<>(); //获取表头 @@ -492,61 +476,147 @@ currentGdp.setName("当期GDP"); roots.add(area); roots.add(quarter); + roots.add(transferPaymentScale); roots.add(currentGdp); + //查询当前季度填写字段 + List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + FieldsTreeVO remark = new FieldsTreeVO(); + remark.setCategory(Boolean.FALSE); + remark.setName("备注"); + roots.add(remark); + vo.setFields(roots); + String nowQuarter = DateUtils.getNowQuarter(); + //查询上报的基础数据 + List<TbBasicData> basicDataList = this.lambdaQuery() + .eq(TbBasicData::getQuarter, nowQuarter) + .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) + .list(); + if (CollUtils.isNotEmpty(basicDataList)) { + Set<String> areaCodeList = basicDataList.stream() + .map(TbBasicData::getDeptAreaCode) + .collect(Collectors.toSet()); + Map<String, SysUser> userMap = sysUserService.lambdaQuery() + .in(SysUser::getAreaCode, areaCodeList) + .list() + .stream() + .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); + Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); + Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() + .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() + .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); + //值 + List<Object> result = new ArrayList<>(); + for (TbBasicData tbBasicData : basicDataList) { + SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); + List<String> item = new ArrayList<>(); + item.add(Objects.nonNull(user) ? user.getAreaName() : ""); + item.add(tbBasicData.getQuarter()); + item.add(tbBasicData.getTransferPaymentScale()); + item.add(tbBasicData.getCurrentGdp()); + for (TbField tbField : fieldList) { + TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); + item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); + } + item.add(tbBasicData.getRemark()); + result.add(item); + } + vo.setValue(result); + } + return vo; + } + + @Override + public R<PageDTO<CurrentFieldsVO>> historyFieldsStatics(CurrentFieldsQuery dto) { + Page<CurrentFieldsVO> page = new Page<>(dto.getPageNum(), dto.getPageSize()); //当前所在季度 - Date date = new Date(); - int quarterOfYear = DateUtils.getQuarterOfYear(date); - try { - //查询当前季度填写字段 - List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); - FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + return R.ok(PageDTO.of(baseMapper.fieldsStatics(page, dto))); + } + + @Override + public PageDTO<ScoreCalculateVO> scoreCalculatePage(ScoreCalculateQuery query) { + Page<ScoreCalculateVO> page = new Page<>(query.getPageNum(), query.getPageSize()); + Page<ScoreCalculateVO> pageVO = tbBasicDataConfigService.scoreCalculatePage(query, page); + return PageDTO.of(pageVO); + } + + @Override + public CurrentFieldsAllVO fieldsStaticsAll(String quarterStr) { + CurrentFieldsAllVO vo = new CurrentFieldsAllVO(); + List<FieldsTreeVO> roots = new ArrayList<>(); + //获取表头 + FieldsTreeVO area = new FieldsTreeVO(); + area.setCategory(Boolean.FALSE); + area.setName("地区"); + FieldsTreeVO quarter = new FieldsTreeVO(); + quarter.setCategory(Boolean.FALSE); + quarter.setName("填报季度"); + FieldsTreeVO transferPaymentScale = new FieldsTreeVO(); + transferPaymentScale.setName("转移支付规模"); + FieldsTreeVO currentGdp = new FieldsTreeVO(); + currentGdp.setCategory(Boolean.FALSE); + currentGdp.setName("当期GDP"); + roots.add(area); + roots.add(quarter); + roots.add(transferPaymentScale); + roots.add(currentGdp); + List<TbBasicData> basicDataList = this.lambdaQuery() + .eq(TbBasicData::getQuarter, quarterStr) + .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) + .list(); + if (CollUtils.isNotEmpty(basicDataList)) { + throw new ServiceException("非法参数"); + } + Long basicDataId = basicDataList.get(0).getId(); + Set<Long> fieldIds = tbBasicDataFieldService.lambdaQuery() + .eq(TbBasicDataField::getBasicDataId, basicDataId) + .ne(TbBasicDataField::getFieldId, -1L) + .ne(TbBasicDataField::getFieldId, -2L) + .list().stream().map(TbBasicDataField::getFieldId).collect(Collectors.toSet()); + List<TbField> fieldList = tbFieldService.lambdaQuery().in(TbField::getId, fieldIds).list(); + if (CollUtils.isEmpty(fieldList)) { FieldsTreeVO remark = new FieldsTreeVO(); remark.setCategory(Boolean.FALSE); remark.setName("备注"); roots.add(remark); vo.setFields(roots); - String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); - String nowQuarter = String.format("%s年%s季度", LocalDate.now().getYear(), quarterOfYearStr); - //查询上报的基础数据 - List<TbBasicData> basicDataList = this.lambdaQuery() - .eq(TbBasicData::getQuarter, nowQuarter) - .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) - .list(); - if (CollUtils.isNotEmpty(basicDataList)) { - Set<String> areaCodeList = basicDataList.stream() - .map(TbBasicData::getDeptAreaCode) - .collect(Collectors.toSet()); - Map<String, SysUser> userMap = sysUserService.lambdaQuery() - .in(SysUser::getAreaCode, areaCodeList) - .list() - .stream() - .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); - Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); - Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() - .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() - .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); - //值 - List<Object> result = new ArrayList<>(); - for (TbBasicData tbBasicData : basicDataList) { - SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); - List<String> item = new ArrayList<>(); - item.add(Objects.nonNull(user) ? user.getAreaName() : ""); - item.add(tbBasicData.getQuarter()); - item.add(tbBasicData.getTransferPaymentScale()); - item.add(tbBasicData.getCurrentGdp()); - for (TbField tbField : fieldList) { - TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); - item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); - } - item.add(tbBasicData.getRemark()); - result.add(item); - } - vo.setValue(result); - } return vo; - } catch (Exception e) { - log.error("查询失败", e); - throw new ServiceException("查询失败"); } + FieldBuildUtil.buildTreeFromTbFieldList(fieldList, roots); + FieldsTreeVO remark = new FieldsTreeVO(); + remark.setCategory(Boolean.FALSE); + remark.setName("备注"); + roots.add(remark); + vo.setFields(roots); + Set<String> areaCodeList = basicDataList.stream() + .map(TbBasicData::getDeptAreaCode) + .collect(Collectors.toSet()); + Map<String, SysUser> userMap = sysUserService.lambdaQuery() + .in(SysUser::getAreaCode, areaCodeList) + .list() + .stream() + .collect(Collectors.toMap(SysUser::getAreaCode, e -> e)); + Set<Long> basicDataIds = basicDataList.stream().map(TbBasicData::getId).collect(Collectors.toSet()); + Map<Long, TbBasicDataField> basicDataFieldMap = tbBasicDataFieldService.lambdaQuery() + .in(TbBasicDataField::getBasicDataId, basicDataIds).list().stream() + .collect(Collectors.toMap(TbBasicDataField::getFieldId, e -> e)); + //值 + List<Object> result = new ArrayList<>(); + for (TbBasicData tbBasicData : basicDataList) { + SysUser user = userMap.get(tbBasicData.getDeptAreaCode()); + List<String> item = new ArrayList<>(); + item.add(Objects.nonNull(user) ? user.getAreaName() : ""); + item.add(tbBasicData.getQuarter()); + item.add(tbBasicData.getTransferPaymentScale()); + item.add(tbBasicData.getCurrentGdp()); + for (TbField tbField : fieldList) { + TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); + item.add(Objects.nonNull(tbBasicDataField) ? FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue()) : ""); + } + item.add(tbBasicData.getRemark()); + result.add(item); + } + vo.setValue(result); + return vo; } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java index d66f98e..761ed2e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbQuestionServiceImpl.java @@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbQuestion; import com.ruoyi.system.dto.QuestionDTO; -import com.ruoyi.system.dto.QuestionQueryDTO; import com.ruoyi.system.dto.QuestionUpdDto; import com.ruoyi.system.mapper.TbQuestionMapper; +import com.ruoyi.system.query.QuestionQuery; import com.ruoyi.system.service.TbQuestionService; import com.ruoyi.system.vo.QuestionVO; import org.springframework.stereotype.Service; @@ -26,8 +27,9 @@ public class TbQuestionServiceImpl extends ServiceImpl<TbQuestionMapper, TbQuestion> implements TbQuestionService { @Override - public void addQuestion(QuestionDTO dto) { + public void addQuestion(QuestionDTO dto) throws Exception { TbQuestion tbQuestion = BeanUtils.copyBean(dto, TbQuestion.class); + tbQuestion.setQuarter(DateUtils.getNowQuarter()); this.save(tbQuestion); } @@ -38,7 +40,7 @@ } @Override - public PageDTO<QuestionVO> pageQuestion(QuestionQueryDTO dto) { + public PageDTO<QuestionVO> pageQuestion(QuestionQuery dto) { Page<TbQuestion> page = this.lambdaQuery() .like(StringUtils.isNotBlank(dto.getTitle()), TbQuestion::getTitle, dto.getTitle()) .page(new Page<>(dto.getPageNum(), dto.getPageSize())); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbScoreServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbScoreServiceImpl.java index 1b5cf69..0a9446b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbScoreServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbScoreServiceImpl.java @@ -3,14 +3,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.system.domain.TbBasicDataConfig; import com.ruoyi.system.domain.TbScore; import com.ruoyi.system.mapper.TbScoreMapper; import com.ruoyi.system.query.HistoryScoreQuery; +import com.ruoyi.system.query.ScoreCalculateDetailQuery; import com.ruoyi.system.query.ScoreQuery; +import com.ruoyi.system.service.TbBasicDataConfigService; import com.ruoyi.system.service.TbScoreService; +import com.ruoyi.system.vo.ScoreCalculateDetailVO; +import com.ruoyi.system.vo.ScoreDetailVO; import com.ruoyi.system.vo.ScoreVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.util.Objects; /** * <p> @@ -20,12 +30,15 @@ * @author mitao * @since 2024-03-13 */ +@Slf4j @Service +@RequiredArgsConstructor public class TbScoreServiceImpl extends ServiceImpl<TbScoreMapper, TbScore> implements TbScoreService { + private final TbBasicDataConfigService basicDataConfigService; @Override public Page<ScoreVO> pageScore(ScoreQuery query, Page<ScoreVO> page) { - return baseMapper.pageScore(query,page); + return baseMapper.pageScore(query, page); } @Override @@ -34,4 +47,21 @@ Page<ScoreVO> scoreVOPage = baseMapper.pageScore(scoreQuery, new Page<>(query.getPageNum(), query.getPageSize())); return PageDTO.of(scoreVOPage); } + + @Override + public ScoreCalculateDetailVO scoreCalculateDetail(ScoreCalculateDetailQuery query) { + //查询计算类型 + TbBasicDataConfig config = basicDataConfigService.getById(query.getId()); + if (Objects.isNull(config)) { + throw new ServiceException("非法参数"); + } + ScoreCalculateDetailVO vo = new ScoreCalculateDetailVO(); + vo.setTypeName(config.getTypeName()); + vo.setCalculateType(config.getCalculateType()); + Page<ScoreDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize()); + + Page<ScoreDetailVO> pageVO = baseMapper.scoreCalculateDetail(query, page); + vo.setVo(PageDTO.of(pageVO)); + return vo; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java index 3a74279..7af6de8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java @@ -1,6 +1,7 @@ package com.ruoyi.system.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; import com.ruoyi.common.enums.ReportingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -31,6 +32,7 @@ @ApiModelProperty(value = "填报时间") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + @JsonInclude(JsonInclude.Include.ALWAYS) private Date createTime; @ApiModelProperty(value = "状态") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsVO.java index 1fc2bba..d60c4c6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsVO.java @@ -1,6 +1,7 @@ package com.ruoyi.system.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; import com.ruoyi.common.enums.ReportingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -14,12 +15,13 @@ * @date 2024/4/7 */ @Data -@ApiModel(value = "当前季度数据-字段统计视图对象") +@ApiModel(value = "当前季度/历史 数据-字段统计视图对象") public class CurrentFieldsVO implements Serializable { private static final long serialVersionUID = 8678843789669990102L; @ApiModelProperty(value = "基础数据id") + @JsonInclude(JsonInclude.Include.ALWAYS) private Long id; @ApiModelProperty(value = "季度") @@ -36,6 +38,7 @@ @ApiModelProperty(value = "填报时间") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + @JsonInclude(JsonInclude.Include.ALWAYS) private Date createTime; @ApiModelProperty(value = "状态") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/QuestionVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/QuestionVO.java index c5f5188..87eb6b9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/QuestionVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/QuestionVO.java @@ -1,7 +1,9 @@ package com.ruoyi.system.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.io.Serializable; import java.util.Date; @@ -10,6 +12,8 @@ * @author mitao * @date 2024/4/7 */ +@Data +@ApiModel(value = "问题视图对象") public class QuestionVO implements Serializable { private static final long serialVersionUID = -7560198211729183682L; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateDetailVO.java new file mode 100644 index 0000000..617868c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateDetailVO.java @@ -0,0 +1,22 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.enums.CalculateTypeEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author mitao + * @date 2024/4/8 + */ +@Data +@ApiModel(value = "问题视图对象") +public class ScoreCalculateDetailVO { + @ApiModelProperty("得分记录") + PageDTO<ScoreDetailVO> vo; + @ApiModelProperty("类型名称") + private String typeName; + @ApiModelProperty("计算方式") + private CalculateTypeEnum calculateType; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateVO.java new file mode 100644 index 0000000..4c7cb39 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateVO.java @@ -0,0 +1,28 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.CalculateTypeEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author mitao + * @date 2024/4/8 + */ +@Data +@ApiModel(value = "得分计算视图对象") +public class ScoreCalculateVO implements Serializable { + + private static final long serialVersionUID = -3494443292552087083L; + + @ApiModelProperty(value = "计算类型id") + private Long id; + + @ApiModelProperty("类型名称") + private String typeName; + + @ApiModelProperty("计算方式") + private CalculateTypeEnum calculateType; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreDetailVO.java new file mode 100644 index 0000000..5372844 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreDetailVO.java @@ -0,0 +1,19 @@ +package com.ruoyi.system.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ScoreDetailVO { + @ApiModelProperty(value = "填报部门") + private String areaName; + + @ApiModelProperty(value = "负责人姓名") + private String personInCharge; + + @ApiModelProperty(value = "负责人联系电话)") + private String phoneNumber; + + @ApiModelProperty("得分") + private Double score; +} diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml index a18d386..7944fab 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml @@ -4,24 +4,42 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbBasicDataConfig"> - <id column="id" property="id" /> - <result column="basic_data_category_id" property="basicDataCategoryId" /> - <result column="type_name" property="typeName" /> - <result column="field_description" property="fieldDescription" /> - <result column="calculate_type" property="calculateType" /> - <result column="number_calculate_formula" property="numberCalculateFormula" /> - <result column="field_id_str" property="fieldIdStr" /> - <result column="status" property="status" /> - <result column="del_flag" property="delFlag" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> + <id column="id" property="id"/> + <result column="basic_data_category_id" property="basicDataCategoryId"/> + <result column="type_name" property="typeName"/> + <result column="field_description" property="fieldDescription"/> + <result column="calculate_type" property="calculateType"/> + <result column="number_calculate_formula" property="numberCalculateFormula"/> + <result column="field_id_str" property="fieldIdStr"/> + <result column="status" property="status"/> + <result column="del_flag" property="delFlag"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, basic_data_category_id, type_name, field_description, calculate_type, number_calculate_formula, field_id_str, status, del_flag, create_by, create_time, update_by, update_time </sql> + <select id="scoreCalculatePage" resultType="com.ruoyi.system.vo.ScoreCalculateVO"> + SELECT tdc.id, + tdc.type_name, + tdc.calculate_type + FROM tb_score ts + LEFT JOIN tb_basic_data tbd ON ts.basic_data_id = tbd.id + LEFT JOIN tb_basic_data_config tdc ON ts.basic_data_config_id = tdc.id + <where> + tbd.`quarter` = #{query.quarter} + <if test="query.typeName !=null and query.typeName != ''"> + AND tdc.type_name LIKE CONCAT('%',#{query.typeName},'%') + </if> + <if test="query.type !=null"> + AND tdc.calculate_type LIKE CONCAT('%',#{query.type},'%') + </if> + </where> + GROUP BY tdc.type_name + </select> </mapper> diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataMapper.xml index b3738eb..3e4e7d0 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataMapper.xml @@ -4,18 +4,18 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbBasicData"> - <id column="id" property="id" /> - <result column="quarter" property="quarter" /> - <result column="dept_area_code" property="deptAreaCode" /> - <result column="transfer_payment_scale" property="transferPaymentScale" /> - <result column="current_gdp" property="currentGdp" /> - <result column="remark" property="remark" /> - <result column="status" property="status" /> - <result column="del_flag" property="delFlag" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> + <id column="id" property="id"/> + <result column="quarter" property="quarter"/> + <result column="dept_area_code" property="deptAreaCode"/> + <result column="transfer_payment_scale" property="transferPaymentScale"/> + <result column="current_gdp" property="currentGdp"/> + <result column="remark" property="remark"/> + <result column="status" property="status"/> + <result column="del_flag" property="delFlag"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> </resultMap> <!-- 通用查询结果列 --> @@ -24,6 +24,7 @@ </sql> <select id="fieldsStatics" resultType="com.ruoyi.system.vo.CurrentFieldsVO"> SELECT + tbd.id, su.area_name, IF(tbd.`quarter` IS NULL, CONCAT(YEAR(NOW()), '年', CASE @@ -37,24 +38,22 @@ tbd.create_time, COALESCE(tbd.`status`, 1) AS `status` FROM - (SELECT * FROM sys_user WHERE user_type = 2) su + (SELECT * FROM sys_user WHERE user_type = 2) AS su LEFT JOIN - (SELECT * FROM tb_basic_data WHERE `quarter` = #{nowQuarter}) tbd ON su.area_code = tbd.dept_area_code + (SELECT * FROM tb_basic_data WHERE `quarter` = #{dto.quarter}) AS tbd ON su.area_code = tbd.dept_area_code <where> - <if test="nowQuarter != null and nowQuarter !=''"> - tbd.quarter LIKE CONCAT('%',#{nowQuarter},'%') - </if> + tbd.quarter = #{dto.quarter} <if test="dto.areaName != null and dto.areaName !=''"> - su.area_name LIKE CONCAT('%',#{dto.areaName},'%') + AND su.area_name LIKE CONCAT('%',#{dto.areaName},'%') </if> - <if test="dto.status != null and dto.status !=''"> - tbd.status = #{dto.status} + <if test="dto.status != null"> + AND tbd.status = #{dto.status} </if> <if test="dto.personInCharge != null and dto.personInCharge !=''"> - su.person_in_charge LIKE CONCAT('%',#{dto.personInCharge},'%') + AND su.person_in_charge LIKE CONCAT('%',#{dto.personInCharge},'%') </if> <if test="dto.phoneNumber != null and dto.phoneNumber != ''"> - su.phone_number LIKE CONCAT('%',#{dto.phoneNumber},'%') + AND su.phone_number LIKE CONCAT('%',#{dto.phoneNumber},'%') </if> </where> </select> diff --git a/ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml index 48e10cd..2ac0c79 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbQuestionMapper.xml @@ -4,19 +4,20 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbQuestion"> - <id column="id" property="id" /> - <result column="title" property="title" /> - <result column="content" property="content" /> - <result column="del_flag" property="delFlag" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> + <id column="id" property="id"/> + <result column="title" property="title"/> + <result column="content" property="content"/> + <result column="del_flag" property="delFlag"/> + <result column="quarter" property="quarter"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, title, content, del_flag, create_by, create_time, update_by, update_time + id, title, content, del_flag,`quarter`, create_by, create_time, update_by, update_time </sql> </mapper> diff --git a/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml index da9b730..c2766c7 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbScoreMapper.xml @@ -4,15 +4,15 @@ <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbScore"> - <id column="id" property="id" /> - <result column="basic_data_config_id" property="basicDataConfigId" /> - <result column="basic_data_id" property="basicDataId" /> - <result column="score" property="score" /> - <result column="del_flag" property="delFlag" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> + <id column="id" property="id"/> + <result column="basic_data_config_id" property="basicDataConfigId"/> + <result column="basic_data_id" property="basicDataId"/> + <result column="score" property="score"/> + <result column="del_flag" property="delFlag"/> + <result column="create_by" property="createBy"/> + <result column="create_time" property="createTime"/> + <result column="update_by" property="updateBy"/> + <result column="update_time" property="updateTime"/> </resultMap> <!-- 通用查询结果列 --> @@ -21,23 +21,39 @@ </sql> <select id="pageScore" resultType="com.ruoyi.system.vo.ScoreVO"> SELECT - tbdc.type_name, - tbdc.calculate_type, - ts.score + tbdc.type_name, + tbdc.calculate_type, + ts.score FROM - tb_score ts - LEFT JOIN tb_basic_data tbd ON ts.basic_data_id = tbd.id - LEFT JOIN tb_basic_data_config tbdc ON ts.basic_data_config_id = tbdc.id + tb_score ts + LEFT JOIN tb_basic_data tbd ON ts.basic_data_id = tbd.id + LEFT JOIN tb_basic_data_config tbdc ON ts.basic_data_config_id = tbdc.id WHERE - 1=1 - AND tbd.id = #{query.basicDataId} - <if test="query.typeName !=null and query.typeName!=''"> - AND tbdc.type_name like Concat('%',#{query.typeName},'%') - </if> - <if test="query.typeName !=null and query.typeName!=''"> - AND tbdc.calculate_type = #{query.type} - </if> + 1=1 + AND tbd.id = #{query.basicDataId} + <if test="query.typeName !=null and query.typeName!=''"> + AND tbdc.type_name like Concat('%',#{query.typeName},'%') + </if> + <if test="query.typeName !=null and query.typeName!=''"> + AND tbdc.calculate_type = #{query.type} + </if> </select> + <select id="scoreCalculateDetail" resultType="com.ruoyi.system.vo.ScoreDetailVO"> + SELECT + su.area_name, + ts.score, + su.person_in_charge, + su.phone_number + FROM tb_score ts + LEFT JOIN tb_basic_data tbd ON ts.basic_data_id = tbd.id + LEFT JOIN sys_user su ON tbd.dept_area_code = su.area_code + <where> + ts.basic_data_config_id = #{query.id} + <if test="query.areaName != null and query.areaName != ''"> + AND su.area_name LIKE CONCAT('%',#{query.areaName},'%') + </if> + </where> + </select> </mapper> -- Gitblit v1.7.1