From 604d00f67ddcf25a9d079ceddd1c668b2a4e5288 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 19 四月 2024 15:08:22 +0800 Subject: [PATCH] bug修复 --- ruoyi-admin-dept/src/main/resources/application-prod.yml | 12 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java | 22 + ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataUpdDTO.java | 36 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java | 4 ruoyi-admin/src/main/resources/application-test.yml | 238 ++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java | 179 ++++++++- pom.xml | 7 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java | 16 ruoyi-system/src/main/java/com/ruoyi/system/utils/FieldBuildUtil.java | 27 + ruoyi-system/src/main/java/com/ruoyi/system/dto/update/RiskLevelUpdDTO.java | 13 /dev/null | 64 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 191 ++++----- ruoyi-admin-dept/src/main/resources/application-test.yml | 235 ++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/HistoryDataController.java | 20 ruoyi-admin/src/main/resources/application-prod.yml | 12 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java | 13 ruoyi-system/src/main/java/com/ruoyi/system/vo/CurrentFieldsDetailVO.java | 5 ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml | 4 ruoyi-admin-dept/src/main/resources/application-dev.yml | 4 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldsTreeVO.java | 15 ruoyi-admin/src/main/resources/application-dev.yml | 4 23 files changed, 890 insertions(+), 236 deletions(-) diff --git a/pom.xml b/pom.xml index 5320158..52749bc 100644 --- a/pom.xml +++ b/pom.xml @@ -263,5 +263,12 @@ <logging.level>warn</logging.level> </properties> </profile> + <profile> + <id>test</id> + <properties> + <profiles.active>test</profiles.active> + <logging.level>warn</logging.level> + </properties> + </profile> </profiles> </project> \ No newline at end of file diff --git a/ruoyi-admin-dept/src/main/resources/application-dev.yml b/ruoyi-admin-dept/src/main/resources/application-dev.yml index 927bbff..44e406c 100644 --- a/ruoyi-admin-dept/src/main/resources/application-dev.yml +++ b/ruoyi-admin-dept/src/main/resources/application-dev.yml @@ -102,9 +102,9 @@ druid: # 主库数据源 master: - url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://1.95.13.179:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: 123456 + password: Si8bnm5KPGSZkF3F # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 # username: root # password: shms#123~ diff --git a/ruoyi-admin-dept/src/main/resources/application-druid.yml b/ruoyi-admin-dept/src/main/resources/application-druid.yml deleted file mode 100644 index 494a05a..0000000 --- a/ruoyi-admin-dept/src/main/resources/application-druid.yml +++ /dev/null @@ -1,64 +0,0 @@ -# 数据源配置 -spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - druid: - # 主库数据源 - master: - url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: 123456 - # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 - # username: root - # password: shms#123~ - # 从库数据源 - slave: - # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: - # 初始连接数 - initialSize: 5 - # 最小连接池数量 - minIdle: 10 - # 最大连接池数量 - maxActive: 20 - # 配置获取连接等待超时的时间 - maxWait: 60000 - # 配置连接超时时间 - connectTimeout: 30000 - # 配置网络超时时间 - socketTimeout: 60000 - # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - timeBetweenEvictionRunsMillis: 60000 - # 配置一个连接在池中最小生存的时间,单位是毫秒 - minEvictableIdleTimeMillis: 300000 - # 配置一个连接在池中最大生存的时间,单位是毫秒 - maxEvictableIdleTimeMillis: 900000 - # 配置检测连接是否有效 - validationQuery: SELECT 1 FROM DUAL - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - webStatFilter: - enabled: true - statViewServlet: - enabled: true - # 设置白名单,不填则允许所有访问 - allow: - url-pattern: /druid/* - # 控制台管理用户名和密码 - login-username: ruoyi - login-password: 123456 - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true \ No newline at end of file diff --git a/ruoyi-admin-dept/src/main/resources/application-prod.yml b/ruoyi-admin-dept/src/main/resources/application-prod.yml index 1b7a4cf..5624aa1 100644 --- a/ruoyi-admin-dept/src/main/resources/application-prod.yml +++ b/ruoyi-admin-dept/src/main/resources/application-prod.yml @@ -18,7 +18,7 @@ # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8082 + port: 8002 servlet: # 应用的访问路径 context-path: / @@ -75,11 +75,11 @@ # 地址 host: 127.0.0.1 # 端口,默认为6379 - port: 6379 + port: 16379 # 数据库索引 - database: 0 + database: 6 # 密码 - password: 123456 + password: mPMHThYzlT8DWgl8HLqwPEyPOiHDPPB5 # 连接超时时间 timeout: 10s lettuce: @@ -102,9 +102,9 @@ druid: # 主库数据源 master: - url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://1.95.13.179:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: 123456 + password: Si8bnm5KPGSZkF3F # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 # username: root # password: shms#123~ diff --git a/ruoyi-admin-dept/src/main/resources/application-test.yml b/ruoyi-admin-dept/src/main/resources/application-test.yml new file mode 100644 index 0000000..48089fe --- /dev/null +++ b/ruoyi-admin-dept/src/main/resources/application-test.yml @@ -0,0 +1,235 @@ +# 项目相关配置 +ruoyi: + # 名称 + name: RuoYi + # 版本 + version: 3.8.6 + # 版权年份 + copyrightYear: 2023 + # 实例演示开关 + demoEnabled: true + # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) + profile: D:/ruoyi/uploadPath + # 获取ip地址开关 + addressEnabled: false + # 验证码类型 math 数字计算 char 字符验证 + captchaType: math + +# 开发环境配置 +server: + # 服务器的HTTP端口,默认为8080 + port: 8082 + servlet: + # 应用的访问路径 + context-path: / + tomcat: + # tomcat的URI编码 + uri-encoding: UTF-8 + # 连接数满后的排队数,默认为100 + accept-count: 1000 + threads: + # tomcat最大线程数,默认为200 + max: 800 + # Tomcat启动初始化的线程数,默认值10 + min-spare: 100 + +# 日志配置 +logging: + level: + com.ruoyi: debug + org.springframework: warn + +# 用户配置 +user: + password: + # 密码最大错误次数 + maxRetryCount: 5 + # 密码锁定时间(默认10分钟) + lockTime: 10 + +# Spring配置 +spring: + main: + allow-bean-definition-overriding: true + # 资源信息 + messages: + # 国际化资源文件路径 + basename: i18n/messages + config: + activate: + on-profile: prod + # 文件上传 + servlet: + multipart: + # 单个文件大小 + max-file-size: 500MB + # 设置总上传的文件大小 + max-request-size: 2000MB + # 服务模块 + devtools: + restart: + # 热部署开关 + enabled: true + # redis 配置 + redis: + # 地址 + host: 127.0.0.1 + # 端口,默认为6379 + port: 6379 + # 数据库索引 + database: 6 + # 密码 + password: mPMHThYzlT8DWgl8HLqwPEyPOiHDPPB5 + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 0 + # 连接池中的最大空闲连接 + max-idle: 8 + # 连接池的最大数据库连接数 + max-active: 8 + # #连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + jackson: + default-property-inclusion: non_null + deserialization: + read-unknown-enum-values-as-null: true + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: Si8bnm5KPGSZkF3F + # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 + # username: root + # password: shms#123~ + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: ruoyi + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true +# token配置 +token: + # 令牌自定义标识 + header: Authorization + # 令牌密钥 + secret: abcdefghijklmnopqrstuvwxyz + # 令牌有效期(默认30分钟) + expireTime: 120 + +# MyBatis配置 +#mybatis: +# # 搜索指定包别名 +# typeAliasesPackage: com.ruoyi.**.domain +# # 配置mapper的扫描,找到所有的mapper.xml映射文件 +# mapperLocations: classpath*:mapper/**/*Mapper.xml +# # 加载全局的配置文件 +# configLocation: classpath:mybatis/mybatis-config.xml + +# PageHelper分页插件 +#pagehelper: +# helperDialect: mysql +# supportMethodsArguments: true +# params: count=countSql + +mybatis-plus: + # 此处在多数据源中生效 + # 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 +# Swagger配置 +swagger: + # 是否开启swagger + enabled: true + # 请求前缀 + pathMapping: / + +# 防止XSS攻击 +xss: + # 过滤开关 + enabled: true + # 排除链接(多个用逗号分隔) + excludes: /system/notice + # 匹配链接 + urlPatterns: /system/*,/monitor/*,/tool/* +file: + upload: + location: /file/ + qrLocation: /file/qrCode/ + accessPath: /file/ + allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF +wx: + config: + appId: wxc3985a05da7d86dc + secret: 5cca42633c25439613b328c08ef20cc9 +#OSS及短信配置 +code: + config: + templateCodeTest: "SMS_154950909" + signNameTest: "阿里云短信测试" + accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt + accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8 + signName: "四川金达通信工程" + templateCode: "SMS_293985284" \ No newline at end of file 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 c010d2b..3f239a2 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 @@ -7,6 +7,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.TbQuestion; import com.ruoyi.system.dto.QuestionDTO; +import com.ruoyi.system.dto.update.BasicDataUpdDTO; import com.ruoyi.system.dto.update.QuestionUpdDTO; import com.ruoyi.system.query.CurrentFieldsQuery; import com.ruoyi.system.query.QuestionQuery; @@ -90,6 +91,27 @@ } /** + * 字段统计-保存数据 + * + * @param dto + * @return + */ + @PostMapping("/save-basic-data") + @ApiOperation("字段统计-保存数据") + public R<Void> editBasicData(@RequestBody BasicDataUpdDTO dto) { + try { + tbBasicDataService.editBasicData(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("保存数据异常", e); + return R.fail(); + } + return R.ok(); + } + + /** * 查看全部 * * @return R<CurrentFieldsAllVO> 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 index 09b5b0b..95c7592 100644 --- 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 @@ -9,6 +9,7 @@ import com.ruoyi.common.enums.ReportingStatusEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.domain.TbBasicData; +import com.ruoyi.system.dto.update.BasicDataUpdDTO; import com.ruoyi.system.query.CurrentFieldsQuery; import com.ruoyi.system.query.HistoryDataQuery; import com.ruoyi.system.query.QuestionQuery; @@ -74,7 +75,7 @@ tbBasicDataService .lambdaQuery() .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED) - .between(flag, TbBasicData::getCreateTime, startTime, endTime) + .between(flag, TbBasicData::getReportingTime, startTime, endTime) .groupBy(TbBasicData::getQuarter) .orderByDesc(TbBasicData::getReportingTime) .page(new Page<>(dto.getPageNum(), dto.getPageSize())); @@ -105,7 +106,7 @@ * @return R<CurrentFieldsDetailVO> */ @GetMapping("/fields-details") - @ApiOperation(value = "查看详情", notes = "字段统计") + @ApiOperation(value = "字段统计-查看详情", notes = "字段统计") @ApiImplicitParam( name = "id", value = "基础数据id", @@ -125,6 +126,21 @@ } } + @PostMapping("/save-basic-data") + @ApiOperation("字段统计-保存数据") + public R<Void> editBasicData(@RequestBody BasicDataUpdDTO dto) { + try { + tbBasicDataService.editBasicData(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("保存数据异常", e); + return R.fail(); + } + return R.ok(); + } + /** * 查看全部 * diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 45a3ea1..f74fe5f 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -103,9 +103,9 @@ druid: # 主库数据源 master: - url: jdbc:mysql://192.168.110.188:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true + url: jdbc:mysql://1.95.13.179:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true username: root - password: 123456 + password: Si8bnm5KPGSZkF3F # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 # username: root # password: shms#123~ diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml deleted file mode 100644 index bcdd861..0000000 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ /dev/null @@ -1,64 +0,0 @@ -# 数据源配置 -spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - druid: - # 主库数据源 - master: - url: jdbc:mysql://192.168.110.188:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: 123456 -# url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 -# username: root -# password: shms#123~ - # 从库数据源 - slave: - # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: - # 初始连接数 - initialSize: 5 - # 最小连接池数量 - minIdle: 10 - # 最大连接池数量 - maxActive: 20 - # 配置获取连接等待超时的时间 - maxWait: 60000 - # 配置连接超时时间 - connectTimeout: 30000 - # 配置网络超时时间 - socketTimeout: 60000 - # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - timeBetweenEvictionRunsMillis: 60000 - # 配置一个连接在池中最小生存的时间,单位是毫秒 - minEvictableIdleTimeMillis: 300000 - # 配置一个连接在池中最大生存的时间,单位是毫秒 - maxEvictableIdleTimeMillis: 900000 - # 配置检测连接是否有效 - validationQuery: SELECT 1 FROM DUAL - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - webStatFilter: - enabled: true - statViewServlet: - enabled: true - # 设置白名单,不填则允许所有访问 - allow: - url-pattern: /druid/* - # 控制台管理用户名和密码 - login-username: ruoyi - login-password: 123456 - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index ea77975..5da0e95 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -18,7 +18,7 @@ # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8081 + port: 8001 servlet: # 应用的访问路径 context-path: / @@ -76,11 +76,11 @@ # 地址 host: 127.0.0.1 # 端口,默认为6379 - port: 6379 + port: 16379 # 数据库索引 - database: 0 + database: 6 # 密码 - password: 123456 + password: mPMHThYzlT8DWgl8HLqwPEyPOiHDPPB5 # 连接超时时间 timeout: 10s lettuce: @@ -103,9 +103,9 @@ druid: # 主库数据源 master: - url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true + url: jdbc:mysql://1.95.13.179:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true username: root - password: 123456 + password: Si8bnm5KPGSZkF3F # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 # username: root # password: shms#123~ diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml new file mode 100644 index 0000000..ac75bba --- /dev/null +++ b/ruoyi-admin/src/main/resources/application-test.yml @@ -0,0 +1,238 @@ +# 项目相关配置 +ruoyi: + # 名称 + name: mitao + # 版本 + version: 3.8.6 + # 版权年份 + copyrightYear: 2023 + # 实例演示开关 + demoEnabled: true + # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) + profile: D:/ruoyi/uploadPath + # 获取ip地址开关 + addressEnabled: true + # 验证码类型 math 数字计算 char 字符验证 + captchaType: math + +# 开发环境配置 +server: + # 服务器的HTTP端口,默认为8080 + port: 8001 + servlet: + # 应用的访问路径 + context-path: / + tomcat: + # tomcat的URI编码 + uri-encoding: UTF-8 + # 连接数满后的排队数,默认为100 + accept-count: 1000 + threads: + # tomcat最大线程数,默认为200 + max: 800 + # Tomcat启动初始化的线程数,默认值10 + min-spare: 100 + +# 日志配置 +logging: + level: + com.ruoyi: debug + org.springframework: warn + +# 用户配置 +user: + password: + # 密码最大错误次数 + maxRetryCount: 5 + # 密码锁定时间(默认10分钟) + lockTime: 10 + +# Spring配置 +spring: + main: + allow-bean-definition-overriding: true + # 资源信息 + messages: + # 国际化资源文件路径 + basename: i18n/messages + config: + activate: + on-profile: + - prod + # 文件上传 + servlet: + multipart: + # 单个文件大小 + max-file-size: 500MB + # 设置总上传的文件大小 + max-request-size: 2000MB + # 服务模块 + devtools: + restart: + # 热部署开关 + enabled: true + # redis 配置 + redis: + # 地址 + host: 127.0.0.1 + # 端口,默认为6379 + port: 6379 + # 数据库索引 + database: 6 + # 密码 + password: mPMHThYzlT8DWgl8HLqwPEyPOiHDPPB5 + # 连接超时时间 + timeout: 10s + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 0 + # 连接池中的最大空闲连接 + max-idle: 8 + # 连接池的最大数据库连接数 + max-active: 8 + # #连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + jackson: + default-property-inclusion: non_null + deserialization: + read-unknown-enum-values-as-null: true + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://localhost:3306/financialdb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true + username: root + password: 123456 + # url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 + # username: root + # password: shms#123~ + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置连接超时时间 + connectTimeout: 30000 + # 配置网络超时时间 + socketTimeout: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: ruoyi + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true +# token配置 +token: + # 令牌自定义标识 + header: Authorization + # 令牌密钥 + secret: abcdefghijklmnopqrstuvwxyz + # 令牌有效期(默认30分钟) + expireTime: 120 + +# MyBatis配置 +#mybatis: +# # 搜索指定包别名 +# typeAliasesPackage: com.ruoyi.**.domain +# # 配置mapper的扫描,找到所有的mapper.xml映射文件 +# mapperLocations: classpath*:mapper/**/*Mapper.xml +# # 加载全局的配置文件 +# configLocation: classpath:mybatis/mybatis-config.xml + +# PageHelper分页插件 +#pagehelper: +# helperDialect: mysql +# supportMethodsArguments: true +# params: count=countSql + +mybatis-plus: + # 此处在多数据源中生效 + # 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: + logic-not-delete-value: 0 + logic-delete-value: 1 + logic-delete-field: del_flag + type-aliases-package: com.ruoyi.**.domain,com.ruoyi.**.vo + # 指定Mapper文件位置 + mapper-locations: classpath*:mapper/**/*.xml +# Swagger配置 +swagger: + # 是否开启swagger + enabled: true + # 请求前缀 + pathMapping: / + +# 防止XSS攻击 +xss: + # 过滤开关 + enabled: true + # 排除链接(多个用逗号分隔) + excludes: /system/notice + # 匹配链接 + urlPatterns: /system/*,/monitor/*,/tool/* +# file upload +file: + upload: + location: /file/ + qrLocation: /file/qrCode/ + accessPath: /file/ + allowExt: .jpg|.png|.gif|.jpeg|.doc|.docx|.apk|.MP4|.mp4|.pdf|.PDF +wx: + config: + appId: wxc3985a05da7d86dc + secret: 5cca42633c25439613b328c08ef20cc9 +#OSS及短信配置 +code: + config: + templateCodeTest: "SMS_154950909" + signNameTest: "阿里云短信测试" + accessKeyId: LTAI5tAdba8HtT1C6UqtSxBt + accessKeySecret: 0SRb6XGkciQDPWn2rYqbJtq2qRMDY8 + signName: "四川金达通信工程" + templateCode: "SMS_293985284" diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 306fd18..58e6d88 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -8,7 +8,11 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.exception.user.*; +import com.ruoyi.common.exception.user.BlackListException; +import com.ruoyi.common.exception.user.CaptchaException; +import com.ruoyi.common.exception.user.CaptchaExpireException; +import com.ruoyi.common.exception.user.UserNotExistsException; +import com.ruoyi.common.exception.user.UserPasswordNotMatchException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.StringUtils; @@ -19,6 +23,7 @@ import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.TbDeptService; +import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; @@ -27,17 +32,15 @@ import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * 登录校验方法 - * + * * @author ruoyi */ @Slf4j @Component -public class SysLoginService -{ +public class SysLoginService { + @Autowired private TokenService tokenService; @@ -46,7 +49,7 @@ @Autowired private RedisCache redisCache; - + @Autowired private ISysUserService userService; @@ -59,24 +62,23 @@ /** * 登录验证 - * + * * @param username 用户名 * @param password 密码 - * @param code 验证码 - * @param uuid 唯一标识 + * @param code 验证码 + * @param uuid 唯一标识 * @return 结果 */ - public LoginUser login(String username, String password, String code, String uuid) - { + public LoginUser login(String username, String password, String code, String uuid) { // 验证码校验 - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 登录前置校验 loginPreCheck(username, password); // 用户验证 Authentication authentication = null; // 用户验证 SysUser user = userService.selectPlatUserByUserName(username); - if (StringUtils.isNull(user)){ + if (StringUtils.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new ServiceException(MessageUtils.message("user.not.exists")); } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { @@ -86,31 +88,29 @@ log.info("登录用户:{} 已被停用.", username); throw new ServiceException(MessageUtils.message("user.blocked")); } - try - { - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + try { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( + username, password); AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); - } - catch (Exception e) - { - if (e instanceof BadCredentialsException) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + } catch (Exception e) { + if (e instanceof BadCredentialsException) { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); - } - else - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); + } else { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + e.getMessage())); throw new ServiceException(e.getMessage()); } - } - finally - { + } finally { AuthenticationContextHolder.clearContext(); } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, + MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); // 生成token @@ -121,21 +121,20 @@ * 登录验证 * * @param username 用户名 - * @param code 验证码 + * @param code 验证码 * @return 结果 */ - public LoginUser loginCode(String username,String code) - { - + public LoginUser loginCode(String username, String code) { // 登录前置校验 - if (StringUtils.isEmpty(username)){ - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); + if (StringUtils.isEmpty(username)) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("not.null"))); throw new UserNotExistsException(); } // 用户验证 SysUser user = userService.selectUserByUserName(username); - if (StringUtils.isNull(user)){ + if (StringUtils.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new ServiceException(MessageUtils.message("user.not.exists")); } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { @@ -145,18 +144,20 @@ log.info("登录用户:{} 已被停用.", username); throw new ServiceException(MessageUtils.message("user.blocked")); } - if(user.isAdmin()){ + if (user.isAdmin()) { log.info("登录用户:{} 不可用短信验证码登录.", username); throw new ServiceException("不可用短信验证码登录"); } // 校验验证码 Object cacheObject = redisCache.getCacheObject(user.getPhoneNumber()); - if(!code.equals(String.valueOf(cacheObject))){ - log.info("登录用户:{} 短信验证码错误{}", username,code); + if (!code.equals(String.valueOf(cacheObject))) { + log.info("登录用户:{} 短信验证码错误{}", username, code); throw new ServiceException("短信验证码错误"); } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); - LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user)); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, + MessageUtils.message("user.login.success"))); + LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, + permissionService.getMenuPermission(user)); recordLoginInfo(loginUser.getUserId()); // 生成token return loginUser; @@ -165,80 +166,77 @@ /** * 登录验证 * - * @param username 用户名 - * @param password 密码 - * @param uuid uuid - + * @param username 用户名 + * @param password 密码 + * @param uuid uuid * @return 结果 */ - public LoginUser loginPwd(String username, String password, String code, String uuid) - { + public LoginUser loginPwd(String username, String password, String code, String uuid) { // 验证码校验 - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 登录前置校验 loginPreCheck(username, password); // 用户验证 Authentication authentication = null; // 用户验证 SysUser user = userService.selectDeptUserByUserName(username); - if (StringUtils.isNull(user)){ + if (StringUtils.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new ServiceException(MessageUtils.message("user.not.exists")); } - try - { - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + try { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( + username, password); AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); - } - catch (Exception e) - { - if (e instanceof BadCredentialsException) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + } catch (Exception e) { + if (e instanceof BadCredentialsException) { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); - } - else - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); + } else { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + e.getMessage())); throw new ServiceException(e.getMessage()); } - } - finally - { + } finally { AuthenticationContextHolder.clearContext(); } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, + MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); // 生成token return loginUser; } + /** * 校验验证码 - * + * * @param username 用户名 - * @param code 验证码 - * @param uuid 唯一标识 + * @param code 验证码 + * @param uuid 唯一标识 * @return 结果 */ - public void validateCaptcha(String username, String code, String uuid) - { + public void validateCaptcha(String username, String code, String uuid) { boolean captchaEnabled = configService.selectCaptchaEnabled(); - if (captchaEnabled) - { + if (captchaEnabled) { String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); String captcha = redisCache.getCacheObject(verifyKey); redisCache.deleteObject(verifyKey); - if (captcha == null) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); + if (captcha == null) { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.jcaptcha.expire"))); throw new CaptchaExpireException(); } - if (!code.equalsIgnoreCase(captcha)) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); + if (!code.equalsIgnoreCase(captcha)) { + AsyncManager.me().execute( + AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.jcaptcha.error"))); throw new CaptchaException(); } } @@ -246,36 +244,36 @@ /** * 登录前置校验 + * * @param username 用户名 * @param password 用户密码 */ - public void loginPreCheck(String username, String password) - { + public void loginPreCheck(String username, String password) { // 用户名或密码为空 错误 - if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"))); + if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("not.null"))); throw new UserNotExistsException(); } // 密码如果不在指定范围内 错误 if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); } // 用户名不在指定范围内 错误 if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); } // IP黑名单校验 String blackStr = configService.selectConfigByKey("sys.login.blackIPList"); - if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) - { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked"))); + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, + MessageUtils.message("login.blocked"))); throw new BlackListException(); } } @@ -285,8 +283,7 @@ * * @param userId 用户ID */ - public void recordLoginInfo(Long userId) - { + public void recordLoginInfo(Long userId) { SysUser sysUser = new SysUser(); sysUser.setUserId(userId); sysUser.setLoginIp(IpUtils.getIpAddr()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataUpdDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataUpdDTO.java new file mode 100644 index 0000000..524f265 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataUpdDTO.java @@ -0,0 +1,36 @@ +package com.ruoyi.system.dto.update; + +import com.ruoyi.system.dto.BasicDataFieldDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author mitao + * @date 2024/3/21 + */ +@Data +@ApiModel(value = "基础数据数据传输对象") +public class BasicDataUpdDTO implements Serializable { + + private static final long serialVersionUID = -519305267336964392L; + @ApiModelProperty(value = "基础数据id") + @NotNull(message = "基础数据id不能为空") + private Long id; + + @ApiModelProperty(value = "转移支付规模") + private String transferPaymentScale; + + @ApiModelProperty(value = "当期GDP") + private String currentGdp; + + @ApiModelProperty(value = "动态字段") + private List<BasicDataFieldDTO> fields = new ArrayList<>(); + + @ApiModelProperty(value = "备注") + private String remark; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/RiskLevelUpdDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/RiskLevelUpdDTO.java index 7180019..5df2fba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/RiskLevelUpdDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/RiskLevelUpdDTO.java @@ -40,8 +40,17 @@ private String noRisk; public boolean areRiskLevelsDistinct() { - return !highRisk.equals(mediumRisk) && !highRisk.equals(lowRisk) && !highRisk.equals(noRisk) - && !mediumRisk.equals(lowRisk) && !mediumRisk.equals(noRisk) && !lowRisk.equals( + return highRisk.equals(mediumRisk) || highRisk.equals(lowRisk) || highRisk.equals(noRisk) + || mediumRisk.equals(lowRisk) || mediumRisk.equals(noRisk) || lowRisk.equals( noRisk); } + + public static void main(String[] args) { + RiskLevelUpdDTO riskLevelUpdDTO = new RiskLevelUpdDTO(); + riskLevelUpdDTO.setNoRisk("0_10"); + riskLevelUpdDTO.setLowRisk("10_20"); + riskLevelUpdDTO.setMediumRisk("20_30"); + riskLevelUpdDTO.setHighRisk("30_40"); + System.out.println(riskLevelUpdDTO.areRiskLevelsDistinct()); + } } 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 index 5aecc71..af6a8b0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ScoreCalculateDetailQuery.java @@ -21,5 +21,5 @@ private Long id; @ApiModelProperty(value = "部门名称") - private String areaCode; + private String areaName; } 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 84c89aa..5a3e298 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 @@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.domain.TbBasicData; import com.ruoyi.system.dto.BasicDataDTO; +import com.ruoyi.system.dto.update.BasicDataUpdDTO; import com.ruoyi.system.query.CurrentFieldsQuery; import com.ruoyi.system.query.ScoreCalculateQuery; import com.ruoyi.system.query.ScoreQuery; @@ -57,4 +58,6 @@ String quarter); List<FieldAndScoreDataVO> selectBasicDataFieldsConfig(String areaCode, String nowQuarter); + + void editBasicData(BasicDataUpdDTO dto) throws Exception; } 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 a6cbaee..f92b9d1 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 @@ -38,7 +38,6 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -import java.util.stream.IntStream; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -101,12 +100,19 @@ } } - public boolean hasConsecutiveDuplicates(List<CalculateItemDTO> calculateItemList) { - return IntStream.range(1, calculateItemList.size()) - .anyMatch(i -> calculateItemList.get(i - 1).getValueType() - .equals(calculateItemList.get(i).getValueType())); + public static boolean hasConsecutiveDuplicates(List<CalculateItemDTO> calculateItemList) { + for (int i = 0; i < calculateItemList.size() - 1; i++) { + if (calculateItemList.get(i).getValueType() + .equals(calculateItemList.get(i + 1).getValueType()) && !calculateItemList.get( + i + 1) + .getContent().equals("(")) { + return true; + } + } + return false; } + private String getFieldIdStr(List<CalculateItemDTO> calculateItemList, TbBasicDataConfig tbBasicDataConfig) { if (CollUtils.isEmpty(calculateItemList)) { 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 ae579a5..5668a77 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 @@ -1,5 +1,6 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; @@ -15,6 +16,8 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.CalculateTypeEnum; import com.ruoyi.common.enums.DataScreenConfigEnum; +import com.ruoyi.common.enums.FieldInputTypeEnum; +import com.ruoyi.common.enums.FieldTypeEnum; import com.ruoyi.common.enums.ReportingStatusEnum; import com.ruoyi.common.enums.ShowStatusEnum; import com.ruoyi.common.enums.UserTypeEnum; @@ -38,6 +41,7 @@ import com.ruoyi.system.dto.BasicDataDTO; import com.ruoyi.system.dto.BasicDataFieldDTO; import com.ruoyi.system.dto.CalculateItemDTO; +import com.ruoyi.system.dto.update.BasicDataUpdDTO; import com.ruoyi.system.handler.CustomCellWriteHandler; import com.ruoyi.system.listener.BasicDataListener; import com.ruoyi.system.listener.HistoryDataListener; @@ -118,7 +122,7 @@ TbBasicDataField tbBasicDataField = fieldMap.get(field.getId()); if (tbBasicDataField != null) { field.setValue( - FieldBuildUtil.formatNumberWithCommas(tbBasicDataField.getFieldValue())); + tbBasicDataField.getFieldValue()); } if (field.getChildren() != null && !field.getChildren().isEmpty()) { setFieldValues(field.getChildren(), fieldMap); @@ -139,12 +143,8 @@ throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode)); } Date date = new Date(); - Map<String, Date> quarterDate = DateUtils.getQuarterDate(date); - // 当前季度开始 - Date quarterStart = quarterDate.get("first"); - // 当前季度结束 - Date quarterEnd = quarterDate.get("last"); - // 判断当前时间是否在季度初1-15号 + Date quarterStart = DateUtil.beginOfQuarter(date); + Date quarterEnd = DateUtil.endOfQuarter(date); Instant instant = quarterStart.toInstant(); LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14); @@ -229,6 +229,7 @@ TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); if (basicDataOpt.isPresent()) { tbBasicData.setId(basicDataOpt.get().getId()); + tbBasicData.setDeptAreaCode(areaCode); this.updateById(tbBasicData); //查询该基础数据的动态字端 List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() @@ -244,15 +245,44 @@ this.save(tbBasicData); } // 保存基础数据动态字段数据 - List<TbBasicDataField> tbBasicDataFields = + List<TbBasicDataField> tbBasicDataFieldsOrg = BeanUtils.copyList(dto.getFields(), TbBasicDataField.class); - + List<TbBasicDataField> tbBasicDataFields = tbBasicDataFieldsOrg.stream() + .filter(item -> Objects.nonNull(item.getFieldValue())).collect( + Collectors.toList()); tbBasicDataFields.forEach( item -> { item.setBasicDataId(tbBasicData.getId()); TbField tbField = fieldMap.get(item.getFieldId()); if (Objects.nonNull(tbField)) { item.setFieldName(tbField.getFieldName()); + } + Integer numMax = tbField.getNumMax(); + Integer numMin = tbField.getNumMin(); + Integer textMaxNum = tbField.getTextMaxNum(); + Integer textMinNum = tbField.getTextMinNum(); + if (FieldTypeEnum.NUMBER.equals(tbField.getFieldType()) && Objects.nonNull( + numMax) && Objects.nonNull(numMin)) { + double fieldValue = Double.parseDouble(item.getFieldValue()); + if (fieldValue < numMin || fieldValue > numMax) { + throw new ServiceException( + String.format("字段%s的值不在范围%d-%d内", + tbField.getFieldName(), + numMin, numMax)); + } + } + if (FieldTypeEnum.TEXT.equals(tbField.getFieldType()) + && FieldInputTypeEnum.MANUAL_INPUT.equals( + tbField.getTextInputType()) + && Objects.nonNull( + textMaxNum) && Objects.nonNull(textMinNum)) { + String fieldValue = item.getFieldValue(); + if (fieldValue.length() < numMin || fieldValue.length() > numMax) { + throw new ServiceException( + String.format("字段%s的值的长度不在范围%d-%d内", + tbField.getFieldName(), + textMinNum, textMaxNum)); + } } }); // 添加固定字段 转移支付规模、当期GDP @@ -412,10 +442,15 @@ private static void wrapOperLog(LoginUser loginUser, TbBasicData tbBasicData, String before, String after, List<TbOperLog> tbOperlogList, String fieldName) { + SysUser user = loginUser.getUser(); TbOperLog tbOperLog = new TbOperLog(); tbOperLog.setOperation(tbBasicData.getQuarter()); - tbOperLog.setStaffName(loginUser.getUser().getNickName()); - tbOperLog.setAreaName(loginUser.getUser().getAreaName()); + tbOperLog.setStaffName( + user.getUserType() == UserTypeEnum.PLATFORM ? user + .getUserName() + : user.getNickName()); + tbOperLog.setAreaName( + user.getUserType() == UserTypeEnum.PLATFORM ? "平台" : user.getAreaName()); tbOperLog.setFieldName(fieldName); tbOperLog.setBusinessType(BusinessType.UPDBASICDATA.ordinal()); tbOperLog.setBeforeEdit(before); @@ -425,17 +460,15 @@ @Override public void importBasicData(MultipartFile file) throws Exception { - Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date()); - // 当前季度开始 - Date quarterStart = quarterDate.get("first"); - // 当前季度结束 - Date quarterEnd = quarterDate.get("last"); + Date date = new Date(); + Date quarterStart = DateUtil.beginOfQuarter(date); + Date quarterEnd = DateUtil.endOfQuarter(date); // 判断当前时间是否在季度初1-15号 Instant instant = quarterStart.toInstant(); LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(14); LocalDate now = LocalDate.now(); - //todo + //TODO /* if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) { throw new ServiceException("请于季度初1-15号上传季度数据。"); }*/ @@ -553,17 +586,15 @@ Page<ScoreVO> page = new Page<>(query.getPageNum(), query.getPageSize()); SysUser user = SecurityUtils.getLoginUser().getUser(); String areaCode = user.getAreaCode(); - Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date()); - // 当前季度开始 - Date quarterStart = quarterDate.get("first"); - // 当前季度结束 - Date quarterEnd = quarterDate.get("last"); + Date date = new Date(); + Date quarterStart = DateUtil.beginOfQuarter(date); + Date quarterEnd = DateUtil.endOfQuarter(date); // 查询是否有当前季度的填报记录 TbBasicData basicData = this.getOne( Wrappers.<TbBasicData>lambdaQuery() .eq(TbBasicData::getDeptAreaCode, areaCode) - .between(TbBasicData::getCreateTime, quarterStart, quarterEnd)); + .between(TbBasicData::getReportingTime, quarterStart, quarterEnd)); if (Objects.isNull(basicData)) { return PageDTO.empty(page); } @@ -581,6 +612,7 @@ throw new ServiceException("非法参数"); } CurrentFieldsDetailVO vo = BeanUtils.copyBean(basicData, CurrentFieldsDetailVO.class); + vo.setId(basicData.getId()); // 查询用户信息 sysUserService .lambdaQuery() @@ -727,8 +759,7 @@ TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); item.add( Objects.nonNull(tbBasicDataField) - ? FieldBuildUtil.formatNumberWithCommas( - tbBasicDataField.getFieldValue()) + ? tbBasicDataField.getFieldValue() : ""); } item.add(tbBasicData.getRemark()); @@ -835,8 +866,7 @@ TbBasicDataField tbBasicDataField = basicDataFieldMap.get(tbField.getId()); item.add( Objects.nonNull(tbBasicDataField) - ? FieldBuildUtil.formatNumberWithCommas( - tbBasicDataField.getFieldValue()) + ? tbBasicDataField.getFieldValue() : ""); } item.add(tbBasicData.getRemark()); @@ -1030,4 +1060,99 @@ return baseMapper.selectBasicDataFieldsConfig(areaCode, nowQuarter); } + @Override + @Transactional(rollbackFor = Exception.class) + public void editBasicData(BasicDataUpdDTO dto) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 数据校验 + if (Objects.isNull(dto)) { + return; + } + //查询基础数据 + TbBasicData basicData = this.getById(dto.getId()); + if (Objects.isNull(basicData)) { + throw new ServiceException("非法参数"); + } + String nowQuarter = DateUtils.getNowQuarter(); + this.updateById(basicData); + //查询该基础数据的动态字端 + List<TbBasicDataField> originFields = tbBasicDataFieldService.lambdaQuery() + .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); + Set<Long> fieldIdList = originFields.stream().map(TbBasicDataField::getFieldId) + .collect(Collectors.toSet()); + Map<Long, TbField> fieldMap = tbFieldService.lambdaQuery().in(TbField::getId, fieldIdList) + .list().stream().collect(Collectors.toMap(TbField::getId, e -> e)); + CompletableFuture.runAsync( + () -> saveExchangeLog(loginUser, basicData, originFields, + BeanUtils.copyBean(dto, BasicDataDTO.class), + fieldMap)); + TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); + + // 保存基础数据动态字段数据 + List<TbBasicDataField> tbBasicDataFields = + BeanUtils.copyList(dto.getFields(), TbBasicDataField.class); + + for (TbBasicDataField item : tbBasicDataFields) { + TbField tbField = fieldMap.get(item.getFieldId()); + Integer numMax = tbField.getNumMax(); + Integer numMin = tbField.getNumMin(); + Integer textMaxNum = tbField.getTextMaxNum(); + Integer textMinNum = tbField.getTextMinNum(); + if (FieldTypeEnum.NUMBER.equals(tbField.getFieldType()) && Objects.nonNull( + numMax) && Objects.nonNull(numMin)) { + double fieldValue = Double.parseDouble(item.getFieldValue()); + if (fieldValue < numMin || fieldValue > numMax) { + throw new ServiceException( + String.format("字段%s的值不在范围%d-%d内", tbField.getFieldName(), + numMin, numMax)); + } + } + if (FieldTypeEnum.TEXT.equals(tbField.getFieldType()) + && FieldInputTypeEnum.MANUAL_INPUT.equals(tbField.getTextInputType()) + && Objects.nonNull( + textMaxNum) && Objects.nonNull(textMinNum)) { + String fieldValue = item.getFieldValue(); + if (fieldValue.length() < numMin || fieldValue.length() > numMax) { + throw new ServiceException( + String.format("字段%s的值的长度不在范围%d-%d内", tbField.getFieldName(), + textMinNum, textMaxNum)); + } + } + } + tbBasicDataFields.forEach( + item -> { + item.setBasicDataId(tbBasicData.getId()); + TbField tbField = fieldMap.get(item.getFieldId()); + if (Objects.nonNull(tbField)) { + item.setFieldName(tbField.getFieldName()); + } + }); + // 添加固定字段 转移支付规模、当期GDP + TbBasicDataField transferPaymentScale = new TbBasicDataField(); + transferPaymentScale.setBasicDataId(tbBasicData.getId()); + transferPaymentScale.setFieldId(-1L); + transferPaymentScale.setFieldValue(tbBasicData.getTransferPaymentScale()); + tbBasicDataFields.add(transferPaymentScale); + TbBasicDataField currentGdp = new TbBasicDataField(); + currentGdp.setBasicDataId(tbBasicData.getId()); + currentGdp.setFieldId(-2L); + currentGdp.setFieldValue(tbBasicData.getCurrentGdp()); + tbBasicDataFields.add(currentGdp); + TbBasicDataField remark = new TbBasicDataField(); + remark.setBasicDataId(tbBasicData.getId()); + remark.setFieldId(-3L); + remark.setFieldValue(tbBasicData.getRemark()); + tbBasicDataFields.add(remark); + // 将该基础数据的动态字段数据全部删除 + tbBasicDataFieldService.remove( + Wrappers.<TbBasicDataField>lambdaQuery() + .eq(TbBasicDataField::getBasicDataId, tbBasicData.getId())); + tbBasicDataFieldService.saveBatch(tbBasicDataFields); + if (ReportingStatusEnum.FILLED.equals(tbBasicData.getStatus())) { + CompletableFuture.runAsync(() -> { + calculateScore(tbBasicData, tbBasicDataFields); + calculateScreenScore(tbBasicData, tbBasicDataFields); + }); + } + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java index 485f241..8ac304a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDataScreenConfigServiceImpl.java @@ -60,9 +60,9 @@ @Override @Transactional(rollbackFor = Exception.class) public DataScreenConfigVO editRiskLevel(RiskLevelUpdDTO dto) { - /* if (dto.areRiskLevelsDistinct()) { + if (dto.areRiskLevelsDistinct()) { throw new ServiceException("得分范围不能重叠"); - }*/ + } //查询是否有该指标配置 TbDataScreenConfig tbDataScreenConfig = this.lambdaQuery() .eq(TbDataScreenConfig::getType, DataScreenConfigEnum.RISK_LEVEL) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java index bfd29a2..cd9ab07 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java @@ -3,6 +3,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; @@ -13,7 +14,6 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; -import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbBasicData; @@ -35,7 +35,6 @@ import java.util.Date; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -145,11 +144,9 @@ @Override public R<Void> reportingMessage() { - Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date()); - //当前季度开始 - Date quarterStart = quarterDate.get("first"); - //当前季度结束 - Date quarterEnd = quarterDate.get("last"); + Date date = new Date(); + Date quarterStart = DateUtil.beginOfQuarter(date); + Date quarterEnd = DateUtil.endOfQuarter(date); //判断当前时间是否在季度初1-15号 Instant instant = quarterStart.toInstant(); LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); @@ -164,7 +161,7 @@ .collect(Collectors.toSet()); //查询当前季度填报了数据的部门 List<TbBasicData> filledBasicData = tbBasicDataService.lambdaQuery() - .between(TbBasicData::getCreateTime, quarterStartLocalDate, fifteenDaysLimit) + .between(TbBasicData::getReportingTime, quarterStartLocalDate, fifteenDaysLimit) .eq(TbBasicData::getStatus, ReportingStatusEnum.FILLED).list(); Set<String> filledDeptCodes = filledBasicData.stream().map(TbBasicData::getDeptAreaCode) .collect(Collectors.toSet()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/FieldBuildUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/FieldBuildUtil.java index ccd45b3..11e3494 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/FieldBuildUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/FieldBuildUtil.java @@ -1,10 +1,11 @@ package com.ruoyi.system.utils; +import com.ruoyi.common.enums.FieldInputTypeEnum; +import com.ruoyi.common.enums.FieldTypeEnum; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbBasicDataField; import com.ruoyi.system.domain.TbField; import com.ruoyi.system.vo.FieldsTreeVO; - import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; @@ -15,6 +16,7 @@ * @date 2024/4/3 */ public class FieldBuildUtil { + /** * 构建基础数据字段树形层级 * @@ -22,7 +24,8 @@ * @param fieldMap 字段Map * @param roots 返回的vo */ - public static void buildTreeStructure(List<TbBasicDataField> basicDataFields, Map<Long, TbField> fieldMap, List<FieldsTreeVO> roots) { + public static void buildTreeStructure(List<TbBasicDataField> basicDataFields, + Map<Long, TbField> fieldMap, List<FieldsTreeVO> roots) { Map<String, FieldsTreeVO> levelTwoMap = new HashMap<>(); Map<String, FieldsTreeVO> levelThreeMap = new HashMap<>(); @@ -34,12 +37,18 @@ String levelThreeCategory = tbField.getLevelThreeCategory(); Long id = tbField.getId(); String fieldName = tbField.getFieldName(); - String fieldValue = formatNumberWithCommas(item.getFieldValue()); + String fieldValue = item.getFieldValue(); FieldsTreeVO field = new FieldsTreeVO(); field.setId(id); field.setName(fieldName); field.setValue(fieldValue); field.setCategory(Boolean.FALSE); + field.setFieldType(tbField.getFieldType()); + if (tbField.getFieldType().equals(FieldTypeEnum.TEXT) && tbField.getTextInputType() + .equals(FieldInputTypeEnum.FIXED_CONTENT)) { + field.setDropdown(tbField.getTextContent()); + field.setDropdownState(Boolean.TRUE); + } FieldsTreeVO levelOneField = null; for (FieldsTreeVO root : roots) { if (root.getName().equals(levelOneCategory)) { @@ -63,7 +72,8 @@ } if (StringUtils.isNotBlank(levelThreeCategory)) { - FieldsTreeVO levelThreeField = levelThreeMap.getOrDefault(levelThreeCategory, null); + FieldsTreeVO levelThreeField = levelThreeMap.getOrDefault( + levelThreeCategory, null); if (levelThreeField == null) { levelThreeField = new FieldsTreeVO(); levelThreeField.setName(levelThreeCategory); @@ -86,7 +96,8 @@ * * @param tbFieldList 字段列表 */ - public static void buildTreeFromTbFieldList(List<TbField> tbFieldList, List<FieldsTreeVO> roots) { + public static void buildTreeFromTbFieldList(List<TbField> tbFieldList, + List<FieldsTreeVO> roots) { Map<String, FieldsTreeVO> levelOneMap = new HashMap<>(); Map<String, FieldsTreeVO> levelTwoMap = new HashMap<>(); @@ -100,6 +111,12 @@ field.setId(id); field.setName(fieldName); field.setCategory(Boolean.FALSE); + field.setFieldType(tbField.getFieldType()); + if (tbField.getFieldType().equals(FieldTypeEnum.TEXT) && + tbField.getTextInputType().equals(FieldInputTypeEnum.FIXED_CONTENT)) { + field.setDropdown(tbField.getTextContent()); + field.setDropdownState(Boolean.TRUE); + } FieldsTreeVO levelOneField = null; for (FieldsTreeVO root : roots) { if (root.getName().equals(levelOneCategory)) { 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 7af6de8..b700281 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 @@ -5,11 +5,10 @@ import com.ruoyi.common.enums.ReportingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - import java.io.Serializable; import java.util.Date; import java.util.List; +import lombok.Data; /** * @author mitao @@ -20,6 +19,8 @@ public class CurrentFieldsDetailVO implements Serializable { private static final long serialVersionUID = -4453903771078396720L; + @ApiModelProperty(value = "基础数据id") + private Long id; @ApiModelProperty(value = "填报部门") private String areaName; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldsTreeVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldsTreeVO.java index a03ed3b..f4f5dba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldsTreeVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldsTreeVO.java @@ -1,19 +1,19 @@ package com.ruoyi.system.vo; +import com.ruoyi.common.enums.FieldTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import lombok.Data; /** * @author mitao * @date 2024/4/3 */ @Data -@ApiModel(value="字段树形层级视图对象") +@ApiModel(value = "字段树形层级视图对象") public class FieldsTreeVO implements Serializable { private static final long serialVersionUID = -3825263999732477730L; @@ -30,6 +30,15 @@ @ApiModelProperty(value = "是否为分类") private Boolean category = Boolean.TRUE; + @ApiModelProperty(value = "字段类型") + private FieldTypeEnum fieldType; + + @ApiModelProperty(value = "下拉参数") + private String dropdown; + + @ApiModelProperty(value = "是否为下拉参数 true =是 false 否") + private Boolean dropdownState; + @ApiModelProperty(value = "字段列表") private List<FieldsTreeVO> children = new ArrayList<>(); diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml index 3e63b49..8b44023 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml @@ -42,7 +42,7 @@ </if> </where> GROUP BY tdc.type_name - + </select> <select id="queryPage" resultType="com.ruoyi.system.vo.BasicDataConfigVO"> SELECT tbdc.id,tbdc.type_name,tbdc.calculate_type,tbdc.status,tbdc2.basic_data_category_name AS @@ -52,7 +52,7 @@ <where> tbdc.del_flag = 0 AND tbdc2.del_flag = 0 <if test="query.typeName != null and query.typeName !=''"> - AND tbdc.type_name LIKE CONCAT('%',#{typeName},'%') + AND tbdc.type_name LIKE CONCAT('%',#{query.typeName},'%') </if> <if test="query.status !=null"> AND tbdc.status = #{query.status} -- Gitblit v1.7.1