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) { 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)); 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 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> 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> 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(); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java
New file @@ -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)); } } 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) { 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); 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) { 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) { 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) { 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: 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> 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> 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("-", "-"); } } 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); } } ruoyi-common/src/main/java/com/ruoyi/common/validate/HistoryGroup.java
New file @@ -0,0 +1,8 @@ package com.ruoyi.common.validate; /** * @author mitao * @date 2024/4/8 */ public interface HistoryGroup { } 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 ruoyi-system/src/main/java/com/ruoyi/system/dto/HistoryDataQueryDTO.java
File was deleted 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); } 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); } 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); } ruoyi-system/src/main/java/com/ruoyi/system/query/CurrentFieldsQuery.javacopy 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
File was copied from ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.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; } ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryDataQuery.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/query/HistoryFieldsQuery.java
File was renamed from ruoyi-system/src/main/java/com/ruoyi/system/dto/CurrentFieldsQueryDTO.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; } ruoyi-system/src/main/java/com/ruoyi/system/query/QuestionQuery.java
File was renamed from ruoyi-system/src/main/java/com/ruoyi/system/dto/QuestionQueryDTO.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; ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateQuery.java
New file @@ -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; } 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; 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); } 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); } 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); } 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); } 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); } } 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; } } 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())); 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; } } 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 = "状态") 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 = "状态") 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; ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateDetailVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreCalculateVO.java
New file @@ -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; } ruoyi-system/src/main/java/com/ruoyi/system/vo/ScoreDetailVO.java
New file @@ -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; } 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> 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> 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> 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>