diff --git a/.beagle.yml b/.beagle.yml index f2f1eff3aa2d17640120ced7b36e91002a8a8b9c..f4bbca661552b9b524bf5a292d9a5e8e8cc2a712 100644 --- a/.beagle.yml +++ b/.beagle.yml @@ -27,9 +27,8 @@ steps: secret_key: from_secret: SECRET_KEY_MINIO - - name: build - image: hub.wodcloud.com/base/devops-maven:3.8-openjdk-17 + image: registry.cn-qingdao.aliyuncs.com/wod/devops-maven:3.8-openjdk-11 commands: - mvn clean install -Dmaven.test.skip=true @@ -46,74 +45,74 @@ steps: from_secret: ACCESS_KEY_MINIO secret_key: from_secret: SECRET_KEY_MINIO - # - name: docker-system-amd64 - # image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 - # volumes: - # - name: docker-sock - # path: /var/run/docker.sock - # settings: - # base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 - # dockerfile: .beagle/dockerfile.system - # repo: zjk/system - # version: "1.0" - # channel: amd64 - # args: "TARGETOS=linux,TARGETARCH=amd64" - # registry: hub.wodcloud.com - # registry_user: - # from_secret: REGISTRY_USER - # registry_password: - # from_secret: REGISTRY_PASSWORD - # - name: docker-auth-amd64 - # image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 - # volumes: - # - name: docker-sock - # path: /var/run/docker.sock - # settings: - # base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 - # dockerfile: .beagle/dockerfile.auth - # repo: zjk/auth - # version: "1.0" - # channel: amd64 - # args: "TARGETOS=linux,TARGETARCH=amd64" - # registry: hub.wodcloud.com - # registry_user: - # from_secret: REGISTRY_USER - # registry_password: - # from_secret: REGISTRY_PASSWORD - # - name: docker-resource-amd64 - # image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 - # volumes: - # - name: docker-sock - # path: /var/run/docker.sock - # settings: - # base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 - # dockerfile: .beagle/dockerfile.resource - # repo: zjk/resource - # version: "1.0" - # channel: amd64 - # args: "TARGETOS=linux,TARGETARCH=amd64" - # registry: hub.wodcloud.com - # registry_user: - # from_secret: REGISTRY_USER - # registry_password: - # from_secret: REGISTRY_PASSWORD - # - name: docker-zjkapi-amd64 - # image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 - # volumes: - # - name: docker-sock - # path: /var/run/docker.sock - # settings: - # base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 - # dockerfile: .beagle/dockerfile.zjkapi - # repo: zjk/zjk-api - # version: "1.0" - # channel: amd64 - # args: "TARGETOS=linux,TARGETARCH=amd64" - # registry: hub.wodcloud.com - # registry_user: - # from_secret: REGISTRY_USER - # registry_password: - # from_secret: REGISTRY_PASSWORD +# - name: docker-system-amd64 +# image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 +# volumes: +# - name: docker-sock +# path: /var/run/docker.sock +# settings: +# base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 +# dockerfile: .beagle/dockerfile.system +# repo: zjk/system +# version: "1.0" +# channel: amd64 +# args: "TARGETOS=linux,TARGETARCH=amd64" +# registry: hub.wodcloud.com +# registry_user: +# from_secret: REGISTRY_USER +# registry_password: +# from_secret: REGISTRY_PASSWORD +# - name: docker-auth-amd64 +# image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 +# volumes: +# - name: docker-sock +# path: /var/run/docker.sock +# settings: +# base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 +# dockerfile: .beagle/dockerfile.auth +# repo: zjk/auth +# version: "1.0" +# channel: amd64 +# args: "TARGETOS=linux,TARGETARCH=amd64" +# registry: hub.wodcloud.com +# registry_user: +# from_secret: REGISTRY_USER +# registry_password: +# from_secret: REGISTRY_PASSWORD +# - name: docker-resource-amd64 +# image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 +# volumes: +# - name: docker-sock +# path: /var/run/docker.sock +# settings: +# base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 +# dockerfile: .beagle/dockerfile.resource +# repo: zjk/resource +# version: "1.0" +# channel: amd64 +# args: "TARGETOS=linux,TARGETARCH=amd64" +# registry: hub.wodcloud.com +# registry_user: +# from_secret: REGISTRY_USER +# registry_password: +# from_secret: REGISTRY_PASSWORD +# - name: docker-zjkapi-amd64 +# image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 +# volumes: +# - name: docker-sock +# path: /var/run/docker.sock +# settings: +# base: registry.cn-qingdao.aliyuncs.com/wod/openjdk:11.0-jdk-amd64 # 基础镜像 +# dockerfile: .beagle/dockerfile.zjkapi +# repo: zjk/zjk-api +# version: "1.0" +# channel: amd64 +# args: "TARGETOS=linux,TARGETARCH=amd64" +# registry: hub.wodcloud.com +# registry_user: +# from_secret: REGISTRY_USER +# registry_password: +# from_secret: REGISTRY_PASSWORD - name: docker-zjkapi-arm64 image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 diff --git a/.beagle/Dockerfile b/.beagle/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..58d4e1e13aed505418bbe64f55bdf4863f6597e7 --- /dev/null +++ b/.beagle/Dockerfile @@ -0,0 +1,16 @@ +# 使用基础镜像作为构建起点 +ARG BASE +FROM ${BASE} + +# 设置时区 +RUN echo "Asia/Shanghai" > /etc/timezone + +# 拷贝 .service 和 .job 的 jar 包到容器中 +COPY ../jtjxx-service/target/jtjxx-service-0.0.1-SNAPSHOT.jar /app/jtjxx-service.jar +COPY ../jtjxx-job/powerjob-server/powerjob-server-starter/target/jtjxx-job-service.jar /app/jtjxx-job-service.jar + +# 暴露两个服务所需的端口 +EXPOSE 8091 7700 + +# 启动脚本:同时启动两个 Java 服务 +ENTRYPOINT ["sh", "-c", "java -jar /app/jtjxx-service.jar -Duser.timezone=Asia/Shanghai & java -jar /app/jtjxx-job-service.jar -Duser.timezone=Asia/Shanghai"] diff --git a/.beagle/dockerfile.maven b/.beagle/dockerfile.maven deleted file mode 100644 index 2857806b017afa3f80c32f39bc17caaf5ff4f80b..0000000000000000000000000000000000000000 --- a/.beagle/dockerfile.maven +++ /dev/null @@ -1,21 +0,0 @@ -FROM hub.wodcloud.com/base/openjdk17:17-jdk-slim - -# 安装 Maven -ARG MAVEN_VERSION=3.8.6 -ARG USER_HOME_DIR="/root" -ARG SHA=c704d082a11eca8344b68347029f51ad59588714ded9078f61393e505064ac0263390717454071242948aa1b390604529512033750907819f032220151745cf7 -ARG BASE_URL=https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries - -RUN mkdir -p /usr/share/maven /usr/share/maven/ref \ - && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \ - && echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ - && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \ - && rm -f /tmp/apache-maven.tar.gz \ - && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn - -ENV MAVEN_HOME /usr/share/maven -ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2" - - -# 创建 .m2 目录 -RUN mkdir -p $USER_HOME_DIR/.m2 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d5c8205b22083fb9537a0e28bf2a1ec5b6cfdf01 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 RuoYi-Cloud-Plus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/nacos/ruoyi-monitor.yml b/config/nacos/ruoyi-monitor.yml index 92ca04163c995875e0cfb9ecabffeaee0c1fbe80..e3879baa0e8f3f2891f7c14889fff41929e65228 100644 --- a/config/nacos/ruoyi-monitor.yml +++ b/config/nacos/ruoyi-monitor.yml @@ -7,7 +7,7 @@ spring: boot: admin: ui: - title: RuoYi-Cloud-Plus服务监控中心 + title: 专家库服务监控中心 discovery: # seata 不具有健康检查的能力 防止报错排除掉 ignored-services: ruoyi-seata-server diff --git "a/deploy/20251210/\346\225\260\346\215\256\345\272\223\346\226\260\345\242\236\350\204\232\346\234\254.sql" "b/deploy/20251210/\346\225\260\346\215\256\345\272\223\346\226\260\345\242\236\350\204\232\346\234\254.sql" new file mode 100644 index 0000000000000000000000000000000000000000..da064c271862c8314f9812e3b13e3a59a121fc6b --- /dev/null +++ "b/deploy/20251210/\346\225\260\346\215\256\345\272\223\346\226\260\345\242\236\350\204\232\346\234\254.sql" @@ -0,0 +1,6 @@ +ALTER TABLE "zjk_expert" + ADD COLUMN "scope_of_activity" varchar(255), + ADD COLUMN "is_classified" tinyint DEFAULT 0; + +COMMENT ON COLUMN "zjk_expert"."scope_of_activity" IS '活动范围'; +COMMENT ON COLUMN "zjk_expert"."is_classified" IS '是否涉密'; diff --git "a/deploy/20251210/\346\270\205\345\272\223\350\204\232\346\234\254.sql" "b/deploy/20251210/\346\270\205\345\272\223\350\204\232\346\234\254.sql" new file mode 100644 index 0000000000000000000000000000000000000000..5d15100828da9d5e042fb9495559df58f87a93d8 --- /dev/null +++ "b/deploy/20251210/\346\270\205\345\272\223\350\204\232\346\234\254.sql" @@ -0,0 +1,26 @@ + +delete from zjk_expert where expert_id in (select expert_id from zjk_expert where to_date(create_time, 'YYYY-MM-DD')< '2025-12-10') +delete from zjk_review_phase; +delete from zjk_product; +delete from zjk_product_reviewsn; +delete from zjk_product_summarize; +delete from zjk_product_summarize_log; +delete from zjk_project_evaluation; +delete from zjk_retirement_records; +delete from zjk_settlement_voucher; +delete from zjk_point; +delete from zjk_point_user; +delete from zjk_leave; +delete from zjk_item_extreation; +delete from zjk_credit; +delete from zjk_credit_reward; +delete from zjk_annual_inspection; +delete from zjk_annual_inspection_copy1; +delete from zjk_annual_inspection_records; +delete from zjk_credit_reward; + + +--删除抽取记录 +delete from zjk_item_extreation where id ='1998937901021708289'; +delete from zjk_review_phase where id=34; +delete from zjk_expert_item where review_id=34; diff --git a/evaluate.puml b/evaluate.puml new file mode 100644 index 0000000000000000000000000000000000000000..85d617fbd55da75dd5d639c404ce23517d0b6229 --- /dev/null +++ b/evaluate.puml @@ -0,0 +1,20 @@ +@startuml +class org.dromara.zjk.controller.ZjkEvaluateController { +- ZjkEvaluateService zjkEvaluateService ++ TableDataInfo listToZj(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToOrg(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToXm(ZjkEvaluateVO,PageQuery) ++ R addComment(ZjkEvaluateVO) ++ R getInfo(String) ++ TableDataInfo getEvaluateListByExpert(ZjkEvaluateVO,PageQuery) ++ R getStsNum() ++ R stsChart(Integer) ++ TableDataInfo getStsList(ZjkEvaluateVO,PageQuery) ++ void export(ZjkEvaluateVO,HttpServletResponse) +} + + + + +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkEvaluateController +@enduml \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java index 2bfbdc4777b08db7a8f903735e0975da47d46740..7071b1052b82b54a35f392fd3e8df545e6901386 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java @@ -72,6 +72,7 @@ public interface RemoteUserService { Boolean wbjregisterUserInfo(List remoteUserBo) throws UserException, ServiceException; Boolean expertRegisterUserInfo(List remoteUserBo,String tenantId) throws UserException, ServiceException; + Boolean expertRegisterUserInfoForSpj(List remoteUserBo,String tenantId) throws UserException, ServiceException; /** * 通过userId查询用户账户 diff --git a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java index 71d5c3a11b8a2c241507241358fdd0b9e7638077..8f1915ac88fdfc214791341a57de69af2266251f 100644 --- a/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java @@ -190,6 +190,7 @@ public class TokenController { } return R.ok(sxzwfwLoginService.sxzwfwUserInfo(null, clientId, accessLink, acctType, tenantId)); } catch (Exception e) { + e.printStackTrace(); throw new ServiceException("登陆失败请重试"+e.getMessage()); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java index d9f70e426860c497a015b0de7a11f6c5bb355988..6df8b538f1ddfcd8bfe69eee54193e6f31a65d5b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java @@ -1,8 +1,13 @@ package org.dromara.common.core.config; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadPoolExecutor; /** * 程序注解配置 @@ -14,4 +19,15 @@ import org.springframework.scheduling.annotation.EnableAsync; @EnableAsync(proxyTargetClass = true) public class ApplicationConfig { + @Bean("smsTaskExecutor") + public Executor smsTaskExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(5); + executor.setMaxPoolSize(10); + executor.setQueueCapacity(100); + executor.setThreadNamePrefix("sms-sender-"); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + executor.initialize(); + return executor; + } } diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/convert/MultiDictConvert.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/convert/MultiDictConvert.java new file mode 100644 index 0000000000000000000000000000000000000000..706d8c42ac73e229dcd07d0f722bbbec613ed9a7 --- /dev/null +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/convert/MultiDictConvert.java @@ -0,0 +1,126 @@ +package org.dromara.common.excel.convert; + +import cn.hutool.core.annotation.AnnotationUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.core.service.DictService; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.excel.utils.ExcelUtil; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * 多选字典格式化转换处理 + * + * @author your-name + */ +@Slf4j +public class MultiDictConvert implements Converter { + + @Override + public Class supportJavaTypeKey() { + return Object.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return null; + } + + @Override + public Object convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + ExcelDictFormat anno = getAnnotation(contentProperty.getField()); + String type = anno.dictType(); + String label = cellData.getStringValue(); + String value; + + if (StringUtils.isBlank(label)) { + return null; + } + + // 处理多选值 + if (label.contains(anno.separator())) { + String[] labels = label.split(anno.separator()); + List values = new ArrayList<>(); + for (String l : labels) { + String v; + if (StringUtils.isBlank(type)) { + v = ExcelUtil.reverseByExp(l.trim(), anno.readConverterExp(), anno.separator()); + } else { + v = SpringUtils.getBean(DictService.class).getDictValue(type, l.trim(), anno.separator()); + } + if (StringUtils.isNotEmpty(v)) { + values.add(v); + } + } + value = String.join(anno.separator(), values); + } else { + // 单值处理 + if (StringUtils.isBlank(type)) { + value = ExcelUtil.reverseByExp(label, anno.readConverterExp(), anno.separator()); + } else { + value = SpringUtils.getBean(DictService.class).getDictValue(type, label, anno.separator()); + } + } + + return Convert.convert(contentProperty.getField().getType(), value); + } + + @Override + public WriteCellData convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + if (ObjectUtil.isNull(object)) { + return new WriteCellData<>(""); + } + + ExcelDictFormat anno = getAnnotation(contentProperty.getField()); + String type = anno.dictType(); + String value = Convert.toStr(object); + String label; + + if (StringUtils.isBlank(value)) { + return new WriteCellData<>(""); + } + + // 处理多选值 + if (value.contains(anno.separator())) { + String[] values = value.split(anno.separator()); + List labels = new ArrayList<>(); + for (String v : values) { + String l; + if (StringUtils.isBlank(type)) { + l = ExcelUtil.convertByExp(v.trim(), anno.readConverterExp(), anno.separator()); + } else { + l = SpringUtils.getBean(DictService.class).getDictLabel(type, v.trim(), anno.separator()); + } + if (StringUtils.isNotEmpty(l)) { + labels.add(l); + } + } + label = String.join(anno.separator(), labels); + } else { + // 单值处理 + if (StringUtils.isBlank(type)) { + label = ExcelUtil.convertByExp(value, anno.readConverterExp(), anno.separator()); + } else { + label = SpringUtils.getBean(DictService.class).getDictLabel(type, value, anno.separator()); + } + } + + return new WriteCellData<>(label); + } + + private ExcelDictFormat getAnnotation(Field field) { + return AnnotationUtil.getAnnotation(field, ExcelDictFormat.class); + } +} diff --git a/ruoyi-common/ruoyi-common-web/pom.xml b/ruoyi-common/ruoyi-common-web/pom.xml index 028db8e1b5b1a51e233081fa379f5f024c8d6d71..8764e6db2391178fcdc477909fc33b92ea2e7ffa 100644 --- a/ruoyi-common/ruoyi-common-web/pom.xml +++ b/ruoyi-common/ruoyi-common-web/pom.xml @@ -58,36 +58,26 @@ com.tongweb.springboot tongweb-spring-boot-starter-3.x ${tw.starter.version} - system - ${basedir}/libs/tongweb-spring-boot-starter-3.x-7.0.E.6_P7.jar com.tongweb.springboot tongweb-spring-boot-websocket-3.x ${tw.starter.version} - system - ${basedir}/libs/tongweb-spring-boot-websocket-3.x-7.0.E.6_P7.jar com.tongweb tongweb-lic-sdk 4.5.0.0 - system - ${basedir}/libs/tongweb-lic-sdk-4.5.0.0.jar com.tongweb tongweb-embed-core ${tw.starter.version} - system - ${basedir}/libs/tongweb-embed-core-3.x-7.0.E.6_P7.jar com.tongweb tongweb-embed-websocket ${tw.starter.version} - system - ${basedir}/libs/tongweb-embed-websocket-3.x-7.0.E.6_P7.jar diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java index 8b3153e1100020e28393c4a6aaa7d92bfa1c3ae2..0289e375681a0f76cbe2d29c521634ab069381e9 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteFileServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; +import java.util.UUID; /** * 文件请求处理 @@ -38,7 +39,6 @@ public class RemoteFileServiceImpl implements RemoteFileService { /** * 文件上传请求 */ - @Transactional(rollbackFor = Exception.class) @Override public RemoteFile upload(String name, String originalFilename, String contentType, byte[] file) throws ServiceException { try { @@ -61,7 +61,8 @@ public class RemoteFileServiceImpl implements RemoteFileService { sysFile.setFileSuffix(suffix); return sysFile; } catch (Exception e) { - log.error("上传文件失败", e); + log.error("上传文件失败"); + e.printStackTrace(); throw new ServiceException("上传文件失败"); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index ac93721d005f6ccc60a0b5b27b0e5ce334280571..bfc8cd84abacfa813e410106a01258eca7f0290b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -56,6 +56,7 @@ public class SysProfileController extends BaseController { * 个人信息 */ @GetMapping + @DecryptOperation public R profile() { SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); ProfileVo profileVo = new ProfileVo(); @@ -68,6 +69,7 @@ public class SysProfileController extends BaseController { /** * 修改用户信息 */ + @DecryptOperation @RepeatSubmit @Log(title = "个人信息", businessType = BusinessType.UPDATE) @PutMapping @@ -125,7 +127,6 @@ public class SysProfileController extends BaseController { * @param avatarfile 用户头像 */ @RepeatSubmit - @GlobalTransactional(rollbackFor = Exception.class) @Log(title = "用户头像", businessType = BusinessType.UPDATE) @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R avatar(@RequestPart("avatarfile") MultipartFile avatarfile) throws IOException { diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java index 528b28347f04c57597ca0fc978a5be645e184b89..9ccecc3e194730847090ee3257aa209951d95fae 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -5,12 +5,10 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.common.sensitive.annotation.Sensitive; -import org.dromara.common.sensitive.core.SensitiveStrategy; -import org.dromara.system.zwy.annotation.EncryptSensitive; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.system.domain.SysDept; +import org.dromara.system.zwy.annotation.EncryptSensitive; import java.io.Serial; import java.io.Serializable; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java index 77bd1400579ea32ea06c9de7610b86fc83d8db6b..ee2788b6f79ffbce81e1784e65dfa9fb547e56da 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java @@ -225,19 +225,14 @@ public class RemoteUserServiceImpl implements RemoteUserService { public Boolean expertRegisterUserInfo(List remoteUserBo,String tenantId) throws UserException, ServiceException { // 将 RemoteUserBo 转换为 SysUserBo 列表 List sysUserBoList = BeanUtil.copyToList(remoteUserBo, SysUserBo.class); - // 获取所有用户名 - List userNameList = sysUserBoList.stream() - .map(SysUserBo::getUserName) - .collect(Collectors.toList()); - // 根据用户名列表查询已存在的用户 - List existingSysUsers = userService.selectListByUserNames(userNameList); - // 提取已存在用户的租户 ID - Set existingTenantIds = existingSysUsers.stream() - .map(SysUser::getTenantId) - .collect(Collectors.toSet()); - // 过滤掉租户 ID 已存在的用户 + List names = sysUserBoList.stream().map(item -> { + String name = userService.selectByIdcardAndNickName(item.getIdCard(), item.getNickName()); + return name; + }).collect(Collectors.toList()); + + // 过滤掉已存在的用户 sysUserBoList = sysUserBoList.stream() - .filter(sysUser -> !existingTenantIds.contains(sysUser.getTenantId())) + .filter(sysUser -> !names.contains(sysUser.getNickName())) .collect(Collectors.toList()); // 如果过滤后的列表为空,则直接返回 true if (CollectionUtil.isEmpty(sysUserBoList)) { @@ -247,6 +242,14 @@ public class RemoteUserServiceImpl implements RemoteUserService { return userService.registerExpertUser(sysUserBoList,tenantId); } + @Override + public Boolean expertRegisterUserInfoForSpj(List remoteUserBo, String tenantId) throws UserException, ServiceException { + List sysUserBoList = BeanUtil.copyToList(remoteUserBo, SysUserBo.class); + + // 注册新用户 + return userService.registerExpertUser(sysUserBoList,tenantId); + } + /** * 通过用户ID查询用户账户 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index 072a24613fb233378a88dfe2c739d0c0b6bb8ff9..ad038acbd97798374c945cdb58774824990d99c6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -76,10 +76,6 @@ public interface SysUserMapper extends BaseMapperPlus { long countUserById(Long userId); @Override - @DataPermission({ - @DataColumn(key = "deptName", value = "dept_id"), - @DataColumn(key = "userName", value = "user_id") - }) int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper updateWrapper); @Override @@ -105,4 +101,6 @@ public interface SysUserMapper extends BaseMapperPlus { int updatePasswordById(@Param("userId") Long userId, @Param("password") String password); void updateHmacById(SysUser update); + + String selectByIdcardAndNickName(String idCard, String nickName); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java index 1608043b3ca92c561ebe7268f68f2abc95c6d222..2150878625477c24e7ec37b79f8525411dcc3c33 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -1,5 +1,7 @@ package org.dromara.system.service; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.domain.SysUser; @@ -312,4 +314,6 @@ public interface ISysUserService { Object selectSysUserById(Long id); void updateUserHmac(SysUser update); + + String selectByIdcardAndNickName(String idCard, String nickName); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index c463f8488e26004c67f1fc8785a420d5c4d49843..dbd334f6b668361180af49699c48b2ee1f5e0bb4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -557,6 +557,12 @@ public class SysUserServiceImpl implements ISysUserService { baseMapper.updateHmacById(update); } + @Override + public String selectByIdcardAndNickName(String idCard, String nickName) { + + return baseMapper.selectByIdcardAndNickName(idCard, nickName); + } + /** * 用户授权角色 * @@ -608,8 +614,7 @@ public class SysUserServiceImpl implements ISysUserService { .set(SysUser::getEmail, user.getEmail()) .set(SysUser::getSex, user.getSex()) .eq(SysUser::getUserId, user.getUserId()) - .set(SysUser::getPasswordUpdateTime, user.getPasswordUpdateTime()) - .set(ObjectUtil.isNotNull(user.getBankName()), SysUser::getBankName, user.getBankName()) + .set(ObjectUtil.isNotNull(user.getPasswordUpdateTime()), SysUser::getPasswordUpdateTime, user.getPasswordUpdateTime()) .set(ObjectUtil.isNotNull(user.getBankName()), SysUser::getBankName, user.getBankName()) .set(ObjectUtil.isNotNull(user.getBankCode()), SysUser::getBankCode, user.getBankCode()) .set(ObjectUtil.isNotNull(user.getBankAddr()), SysUser::getBankAddr, user.getBankAddr()) ); diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 861fd683e612401abe0b85e4b265e82d948e1880..c4703147a02f1aa426a3630e2151b330b9287357 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -101,6 +101,9 @@ AND del_flag = '0' + UPDATE sys_user diff --git a/ruoyi-modules/zjk-api/libs/bubichain-sdk-4.0.4.jar b/ruoyi-modules/zjk-api/libs/bubichain-sdk-4.0.4.jar deleted file mode 100644 index f346a579924908cfa9345fb4863964a865e7759e..0000000000000000000000000000000000000000 Binary files a/ruoyi-modules/zjk-api/libs/bubichain-sdk-4.0.4.jar and /dev/null differ diff --git a/ruoyi-modules/zjk-api/pom.xml b/ruoyi-modules/zjk-api/pom.xml index 04d41fe2aa1d9343b77b104291505cca298e4af0..d9856c16d494fb93f02a994f27667935e66909f5 100644 --- a/ruoyi-modules/zjk-api/pom.xml +++ b/ruoyi-modules/zjk-api/pom.xml @@ -112,9 +112,12 @@ cn.bubi.sdk bubichain-sdk 4.0.4 - system - ${basedir}/libs/bubichain-sdk-4.0.4.jar + + cn.bubi.sdk + bubichain-sdk + 4.0.4 + diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/ZjkAnnualInspection.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/ZjkAnnualInspection.java index 604e8c71488311189c8d0cc3c58d593f182986a4..5069051a51f37cecd50aaead628a7ca50e98ad06 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/ZjkAnnualInspection.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/ZjkAnnualInspection.java @@ -3,6 +3,7 @@ package org.dromara.zjk.annualInspection.annualInspectionAudit.domain; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.EqualsAndHashCode; import org.dromara.common.tenant.core.TenantEntity; import org.dromara.zjk.annotation.PropertyMsg; @@ -86,5 +87,9 @@ public class ZjkAnnualInspection extends TenantEntity { private String reason; private String hmac; - + /** + * 更新人(年检审核人) + */ + @TableField(exist = false) + private String updateByStr; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/bo/ZjkAnnualInspectionBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/bo/ZjkAnnualInspectionBo.java index d43c1263ceb23c9e26df12ab4af1e22cbebbb639..4df10f702d65f75aeaa2e81d64820c2544adf6c0 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/bo/ZjkAnnualInspectionBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/domain/bo/ZjkAnnualInspectionBo.java @@ -91,4 +91,6 @@ public class ZjkAnnualInspectionBo extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endAuditTime; + private String start; + private String end; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/mapper/ZjkAnnualInspectionMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/mapper/ZjkAnnualInspectionMapper.java index 8352308c7fe51c22e62847a4a5aa52d86c0bd70b..043c041e230a3d3e9b9e41f2bd6637eb6425f7a0 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/mapper/ZjkAnnualInspectionMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/annualInspection/annualInspectionAudit/mapper/ZjkAnnualInspectionMapper.java @@ -19,4 +19,5 @@ public interface ZjkAnnualInspectionMapper extends BaseMapperPlus queryPageList(ZjkAnnualInspectionBo bo, PageQuery pageQuery) { + if(StringUtils.isNotBlank(bo.getContact())){ + String phone = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(phone); + } + Map params = bo.getParams(); + if(params!=null){ + bo.setStart((String) params.get("beginAuditTime")); + bo.setEnd((String) params.get("endAuditTime")); + } + bo.setAnnualInspectionType(AnnualInspectionTypeEnum.MANUAL_ANNUAL_INSPECTION.getCode()); Page result = zjkAnnualInspectionMapper.queryAnnualInspection(pageQuery.build(), bo); return TableDataInfo.build(result); } @@ -193,6 +206,8 @@ public class ZjkAnnualInspectionServiceImpl implements IZjkAnnualInspectionServi } catch (Exception e) { log.error("年检HMAC生成失败 expertId:{}", zjkExpert.getExpertId(), e); } + zjkAnnualInspectionBo.setUpdateBy(LoginHelper.getUserId()); + zjkAnnualInspectionBo.setUpdateTime(new Date()); zjkAnnualInspectionMapper.batchAnnualInspection(zjkAnnualInspectionBo); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ApiAuthInterceptor.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ApiAuthInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..10fe5d999e56e8a708442a545cda50484a3c012c --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ApiAuthInterceptor.java @@ -0,0 +1,55 @@ +package org.dromara.zjk.config; + +import com.alibaba.fastjson.JSON; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.constant.HttpStatus; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.system.api.RemoteConfigService; +import org.dromara.zjk.utils.ApiThreadLocal; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +/** + * @author : yanguohua + * @version : 1.0 + * @date : 2025/8/26 15:19 + */ +@Component +public class ApiAuthInterceptor implements HandlerInterceptor { + + @DubboReference + private RemoteConfigService remoteConfigService; + + private static final String DEFAULT_SECRET_KEY = "k6psy7kafT%UaPd2"; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 设置响应的字符编码为 UTF-8 + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json;charset=UTF-8"); + + String authorizationCode = request.getHeader("Authorization"); + + // 获取密钥配置 + String secretKey = remoteConfigService.selectConfigByKey("api.secret.key"); + + // 验证授权码是否为空 + if (StringUtils.isEmpty(authorizationCode)) { + response.setStatus(HttpStatus.UNAUTHORIZED); + response.getWriter().write(JSON.toJSONString(R.fail("授权码为空,禁止访问"))); + return false; + } + + // 验证授权码是否匹配 + if (!authorizationCode.equals(secretKey)) { + response.setStatus(HttpStatus.FORBIDDEN); + response.getWriter().write(JSON.toJSONString(R.fail("授权码错误,禁止访问"))); + return false; + } + ApiThreadLocal.putAk(authorizationCode); + return true; + } +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/OnChainUtils.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/OnChainUtils.java index 06294ac8e1549b3c1f36aeb58f10e6bcfa416dfd..018d2a769d01cdcf72b7a178fd282bd8106c3a69 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/OnChainUtils.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/OnChainUtils.java @@ -1,7 +1,6 @@ package org.dromara.zjk.config; import cn.bubi.SDK; -import cn.bubi.common.Tools; import cn.bubi.model.request.*; import cn.bubi.model.request.operation.AccountSetMetadataOperation; import cn.bubi.model.request.operation.BaseOperation; @@ -9,6 +8,7 @@ import cn.bubi.model.response.*; import cn.bubi.model.response.result.data.Signature; import cn.bubi.model.response.result.data.TransactionHistory; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -20,43 +20,44 @@ public class OnChainUtils { @Resource private YsdpaasConfig ysdpaasConfig; + // 在 OnChainUtils 中添加异步方法 + @Async + public void toChainAsync(String data, Long reviewId) { + toChain(data, reviewId); + } + + // private static String address = "adxSqD9EdNMNYkfssD28YmSmgE1NLdm18Uhi9"; // private static String privateKey = "privbynqzw8xmhim7LuwsLbkr4GVzkwn6CasJdbYEhVbFgFEcTWJ9Khq"; public void toChain(String data, Long reviewId) { - sdk = SDK.getInstance(ysdpaasConfig.getOnchainUrl()); - Long nonce = getAccountNonce(); - String key = "expert_cq_" + reviewId; - //String value = "{\"Plaintext\":{},\"Privacy\":{\"userId\":\"\",\"loginName\":\"\",\"phone\":\"\",\"userName\":\"\",\"source\":\"\",\"password\":\"\",\"userType\":\"\",\"isRegisterd\":\"\",\"caHash\":\"\",\"status\":\"\",\"updateTime\":\"\",\"company\":\"\"}}"; - BaseOperation[] operations = buildOperations(ysdpaasConfig.getOnchainAddress(), key, data); + long startTime = System.currentTimeMillis(); + try { + log.info("开始上链操作,reviewId: {}", reviewId); + sdk = SDK.getInstance(ysdpaasConfig.getOnchainUrl()); + Long nonce = getAccountNonce(); + String key = "expert_cq_" + reviewId; + BaseOperation[] operations = buildOperations(ysdpaasConfig.getOnchainAddress(), key, data); - String tranBlob = seralizeTransaction(nonce, operations); + String tranBlob = seralizeTransaction(nonce, operations); - Signature[] signatures = signTransaction(tranBlob); + Signature[] signatures = signTransaction(tranBlob); - String txHash = submitTransaction(tranBlob, signatures); - System.out.println(txHash); + String txHash = submitTransaction(tranBlob, signatures); + long endTime = System.currentTimeMillis(); + log.info("交易已提交,txHash: {}, reviewId: {}, 耗时: {} ms", txHash, reviewId, endTime - startTime); - long startTime = System.currentTimeMillis(); - while (true) { + // 立即返回,不再等待区块链确认 + // 移除了原来的轮询等待逻辑 + + } catch (Exception e) { long endTime = System.currentTimeMillis(); - if (endTime - startTime > 60000000) { - log.info("交易执行超时"); - return; - } - TransactionHistory transactionHistory = checkTransactionStatus(txHash); - if (!Tools.isNULL(transactionHistory) && transactionHistory.getErrorCode() == 0) { - break; - } - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + log.error("上链操作异常,reviewId: {}, 耗时: {} ms", reviewId, endTime - startTime, e); } - log.info("交易结束"); + log.info("上链请求已完成,reviewId: {}", reviewId); } + public long getAccountNonce() { long nonce = 0; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/SyncRemortUserConfig.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/SyncRemortUserConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..102d6b943118a4175c44d82646b669141a3a695a --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/SyncRemortUserConfig.java @@ -0,0 +1,18 @@ +package org.dromara.zjk.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/28 11:28 + */ + +@Data +@Configuration +@ConfigurationProperties(prefix = "syncuser") +public class SyncRemortUserConfig { + private String spjSyncUserUrl; +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ZjkApiWebMvcConfig.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ZjkApiWebMvcConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..968f170b6dbb3116df784fddc2125b75942ce160 --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/config/ZjkApiWebMvcConfig.java @@ -0,0 +1,26 @@ +package org.dromara.zjk.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 对外接口拦截器 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2025/8/26 15:23 + */ +@Configuration +public class ZjkApiWebMvcConfig implements WebMvcConfigurer { + + @Autowired + private ApiAuthInterceptor apiAuthInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(apiAuthInterceptor) + .addPathPatterns("/api/**"); // 拦截所有 /api 开头的请求 + } +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ApiController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ApiController.java index 2ace44509f1a5103d03c7a5e366d0037cc16e643..d5fa6c7bc566c7f0f96adcd3a1f54560321c0058 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ApiController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ApiController.java @@ -1,83 +1,173 @@ package org.dromara.zjk.controller; import com.alibaba.fastjson.JSON; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.domain.R; -import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.api.RemoteConfigService; import org.dromara.zjk.domain.bo.ZjkExpertBo; +import org.dromara.zjk.domain.bo.ZjkProductBo; +import org.dromara.zjk.domain.vo.ProductPanoramaDetailVo; import org.dromara.zjk.domain.vo.ZjkExpertVo; +import org.dromara.zjk.domain.vo.ZjkProductVo; import org.dromara.zjk.service.IZjkExpertService; +import org.dromara.zjk.service.IZjkProductService; +import org.dromara.zjk.service.ZjkExpertMoneyInfoService; +import org.dromara.zjk.utils.ApiThreadLocal; import org.dromara.zjk.utils.EncryptionUtil; +import org.dromara.zjk.zwy.annotation.DecryptOperation; +import org.dromara.zjk.zwy.utils.StringCryptoUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.List; +/** + * 专家库对外api接口 + */ @RestController @RequiredArgsConstructor -@RequestMapping("/zjk") +@RequestMapping("/api") @Slf4j public class ApiController { // 默认的密钥常量 private static final String DEFAULT_SECRET_KEY = "k6psy7kafT%UaPd2"; - - @DubboReference(timeout=5000) + @DubboReference(timeout = 5000) private final RemoteConfigService remoteConfigService; private final IZjkExpertService zjkExpertService; + @Autowired + private StringCryptoUtil stringCryptoUtil; + private final IZjkProductService zjkProductService; + private final ZjkExpertMoneyInfoService zjkExpertMoneyInfoService; /** - * 专家库数据获取 - * @param authorizationCode + * 专家库数据列表获取 + * * @return */ - @PostMapping("/api/expert-data") - public R getEncryptedExpertData(@RequestHeader("Authorization") String authorizationCode) { + @DecryptOperation + @GetMapping("/expertList") + public R getExpertListData(ZjkExpertBo bo) { try { - // 获取密钥配置 - String secretKey = remoteConfigService.selectConfigByKey("api.secret.key"); - if (StringUtils.isEmpty(secretKey)) { - secretKey = DEFAULT_SECRET_KEY; + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageNum(1); + pageQuery.setPageSize(2000); + if (StringUtils.isNotBlank(bo.getContact())) { + String phone = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(phone); } - - // 验证授权码是否为空 - if (StringUtils.isEmpty(authorizationCode)) { - log.warn("Authorization code is missing."); - throw new ServiceException("授权码为空,禁止访问"); + if (StringUtils.isNotBlank(bo.getIdCard())) { + String idcard = stringCryptoUtil.encryptField(bo.getIdCard()); + bo.setIdCard(idcard); } - - // 验证授权码是否匹配 - if (!authorizationCode.equals(secretKey)) { - log.warn("Invalid authorization code: {}", authorizationCode); - throw new ServiceException("授权码错误,禁止访问"); - } - - // 查询专家数据 - List zjkExpertVoList = zjkExpertService.exportList(new ZjkExpertBo()); - - if (zjkExpertVoList == null || zjkExpertVoList.isEmpty()) { - log.info("无可返回的数据"); + TableDataInfo zjkExpertVoTableDataInfo = zjkExpertService.expertList(bo, pageQuery); + List rows = zjkExpertVoTableDataInfo.getRows(); + if (CollectionUtils.isEmpty(rows)) { return R.ok("无可返回的数据"); } - String data = JSON.toJSONString(zjkExpertVoList); - // 数据加密 - String encryptedData = EncryptionUtil.encrypt(data, secretKey); - return R.ok("操作成功",encryptedData); - } catch (ServiceException e) { - log.error("Service exception occurred: {}", e.getMessage()); - return R.fail(e.getMessage()); + String ak = ApiThreadLocal.getAk(); + String data = JSON.toJSONString(rows); + return R.ok("操作成功", data); } catch (Exception e) { log.error("Unexpected error occurred", e); return R.fail("系统异常,请联系管理员"); } } + /** + * 专家详情信息获取 + * + * @return + */ + @DecryptOperation + @GetMapping("/expertInfo/{id}") + public R getExpertInfo(@PathVariable Long id) { + ZjkExpertVo zjkExpertVo = zjkExpertService.queryById(id); + if (zjkExpertVo == null) { + return R.fail("数据不存在"); + } + String data = JSON.toJSONString(zjkExpertVo); + return R.ok("操作成功", data); + } + + /** + * 项目列表数据获取 + * + * @return + */ + @DecryptOperation + @GetMapping("/productList") + public R getProductList(ZjkProductBo bo) { + List rows = zjkProductService.queryListForApi(bo); + if (CollectionUtils.isEmpty(rows)) { + return R.ok("无可返回的数据"); + } + String data = JSON.toJSONString(rows); + return R.ok("操作成功", data); + } + + /** + * 项目基本细信息获取 + * + * @return + */ + @DecryptOperation + @GetMapping("/productInfo/{id}") + public R getProductInfo(@PathVariable Long id) { + ZjkProductVo vo = zjkProductService.queryById(id); + if (vo == null) { + return R.fail("数据不存在"); + } + String data = JSON.toJSONString(vo); + return R.ok("操作成功", data); + } + + /** + * 项目阶段全景细信息获取 + * + * @return + */ + @DecryptOperation + @GetMapping("/productLife/{id}") + public R getProductLife(@PathVariable Long id) { + List vo = zjkProductService.getProductPanoramaDetailVoById(id); + if (vo.size() == 0) { + return R.fail("数据不存在"); + } + String data = JSON.toJSONString(vo); + return R.ok("操作成功", data); + } + + /** + * 获取项目某个阶段参评的专家信息 + * + * @param productId + * @param reviewSn + * @return + */ + @DecryptOperation + @GetMapping("/stageExperts") + public R getStageExperts(@NotNull(message = "项目不能为空") + Long productId, @NotNull(message = "阶段不能为空") + Integer reviewSn) { + List res = zjkExpertService.getStageExperts(productId, reviewSn); + if (CollectionUtils.isEmpty(res)) { + return R.ok("无可返回的数据"); + } + String data = JSON.toJSONString(res); + return R.ok("操作成功", data); + } + // 解密接口 (用于调试或者需要解密的地方) - @PostMapping("/api/decrypt") + @PostMapping("/decrypt") public String decryptData( @RequestHeader("Authorization") String authorizationCode, @RequestBody String encryptedData) { @@ -102,4 +192,5 @@ public class ApiController { } } + } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/InoutCheckController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/InoutCheckController.java index 5575937c8abe45179b70215831db20c91698b844..245553b938a37477e8263ab112f6848f54e3b15d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/InoutCheckController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/InoutCheckController.java @@ -18,6 +18,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.zjk.domain.bo.InoutCheckBo; +import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.vo.CheckSupportVo; import org.dromara.zjk.domain.vo.InoutCheckVo; import org.dromara.zjk.domain.vo.ProductPanoramaVo; @@ -120,12 +121,13 @@ public class InoutCheckController extends BaseController { }, mode = SaMode.OR) @GetMapping("/productList") public TableDataInfo productPanorama(ProductPanoramaVo vo, PageQuery pageQuery) { - return zjkProductService.productPanorama(vo, pageQuery); + return zjkProductService.getProductList(vo, pageQuery); } /** * 财务审计支持-查看 */ + @DecryptOperation @SaCheckRole(value = { TenantConstants.JG_ROLE_KEY }, mode = SaMode.OR) diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/LearningSuggestController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/LearningSuggestController.java index 2e654046dfa319b6cf0c3918c28d15d1b7d90ce0..87277f48756dcc74ef39949d9d2d1647e82c7364 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/LearningSuggestController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/LearningSuggestController.java @@ -44,7 +44,6 @@ public class LearningSuggestController extends BaseController { * 查询学习园地-学习推荐列表 */ @SaCheckRole(value = { - TenantConstants.JG_ROLE_KEY, TenantConstants.EXPERT_ROLE_KEY },mode = SaMode.OR) diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/SmsUpController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/SmsUpController.java index d96bf9b33d3fb8534ff02f5efd3f595a273f17c9..8789267368bf5ad51d65b1afdfc4b2d8c948a675 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/SmsUpController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/SmsUpController.java @@ -69,6 +69,7 @@ public class SmsUpController { @PostMapping("/receive") public String receiveUpSms(@RequestParam("deliver") String deliver) { try { + log.info("接收到上行数据: {}", deliver); String[] records = deliver.split(";"); List dtoList = new ArrayList<>(); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkApprovalProcessLogsController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkApprovalProcessLogsController.java index d975680cc74f2e98221427cafa01bf59367ac2dd..53c58e023f0acb1860c94f8f1ea5c7d8503453dc 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkApprovalProcessLogsController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkApprovalProcessLogsController.java @@ -57,7 +57,6 @@ public class ZjkApprovalProcessLogsController extends BaseController { /** * 导出审批流程记录列表 */ - @SaCheckPermission("traceManagement:approvalProcessLogs:export") @Log(title = "审批流程记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ZjkApprovalProcessLogsBo bo, HttpServletResponse response) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkChartController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkChartController.java index dc9500490400f0ab102f8e9d9a6a7dc264bc06f2..b14f4be3e29ac253fa6a2e8cbc3d15e0b51a6dc9 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkChartController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkChartController.java @@ -36,6 +36,8 @@ public class ZjkChartController extends BaseController { public R getChartBase(Long userId) { return zjkExpertChartService.getChartBase(userId); } + + @DecryptOperation @GetMapping("/users") public R> getExperts() { return zjkExpertChartService.getExperts(); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkCreditUserController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkCreditUserController.java index cad7ce460699854c509ce65107f6900d5cbea5f7..84976eaa1dff283a6ca86852ef2d6bac2753b042 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkCreditUserController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkCreditUserController.java @@ -122,8 +122,8 @@ public class ZjkCreditUserController extends BaseController { //专家信用详情 @GetMapping("/selectUserById") - public R> expertPointRanks(ZjkCreditBo creditId, PageQuery pageQuery) { - return zjkCreditUserService.selectUserById(creditId,pageQuery); + public TableDataInfo expertPointRanks(ZjkCreditBo dto, PageQuery pageQuery) { + return zjkCreditUserService.selectUserById(dto,pageQuery); } //黑名单 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkDataChangesLogsController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkDataChangesLogsController.java index 78cc3cf45b8233e39b6ee40bd8782847ad4e5ea9..2a00dacea2f1b2b01d98629c65c5c205e5be686c 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkDataChangesLogsController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkDataChangesLogsController.java @@ -58,7 +58,6 @@ public class ZjkDataChangesLogsController extends BaseController { /** * 导出业务数据变更记录列表 */ - @SaCheckPermission("dataChangesLogs:dataChangesLogs:export") @Log(title = "业务数据变更记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(ZjkDataChangesLogsBo bo, HttpServletResponse response) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertController.java index ed80cb7e51762ced18fb624bab0c65e23b431414..8ea0ac10ea1c1dcb2d9276db48273b74344fdef3 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertController.java @@ -13,6 +13,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.core.DropDownOptions; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; @@ -23,9 +24,12 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.zjk.domain.ExpertBaseInfo; +import org.dromara.zjk.domain.ZjkInvoice; import org.dromara.zjk.domain.bo.ApprovalCommonBo; import org.dromara.zjk.domain.bo.ZjkExpertBo; import org.dromara.zjk.domain.vo.ExpertPerformWorkCountVO; +import org.dromara.zjk.domain.vo.SelectOptionVo; +import org.dromara.zjk.domain.vo.SyncUserReturnVO; import org.dromara.zjk.domain.vo.ZjkExpertVo; import org.dromara.zjk.enums.ResultTypeEnum; import org.dromara.zjk.enums.ZjkExpertTypeEnum; @@ -39,6 +43,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 专家库 @@ -158,8 +163,8 @@ public class ZjkExpertController extends BaseController { }, mode = SaMode.OR) public void export(@ModelAttribute ZjkExpertBo bo, HttpServletResponse response) { if (bo.getIsTemplate() == 0){ - List list = new ArrayList<>(); - ExcelUtil.exportExcel(list, "专家库模板", ZjkExpertVo.class, response); + zjkExpertService.exportTml(response); + }else { List list = zjkExpertService.exportList(bo); ExcelUtil.exportExcel(list, "专家库", ZjkExpertVo.class, response); @@ -179,13 +184,7 @@ public class ZjkExpertController extends BaseController { TenantConstants.TENANT_ADMIN_ROLE_KEY }, mode = SaMode.OR) public R imports(@RequestPart("file") MultipartFile file) { - List list = zjkExpertService.imports(file); - // 如果存在重复的身份证号则提示,剔除之后再次导入 - if (!CollUtil.isEmpty(list)){ - // 将身份证号列表转换为用逗号分隔的字符串 - return R.fail("以下身份证号专家已经存在,请剔除后再次导入专家数据:" + String.join(", ", list)); - } - return R.ok(); + return zjkExpertService.imports(file); } /** @@ -218,7 +217,20 @@ public class ZjkExpertController extends BaseController { public R save(@Validated(AddGroup.class) @RequestBody ZjkExpertBo bo) { return toAjax(zjkExpertService.insertByBo(bo)); } - + /** + * 专专家库-专家涉密修改 + * @param bo + * @return + */ + @Log(title = "专家库-专家涉密修改", businessType = BusinessType.EXPERT_SYS,operatorType = OperatorType.BROWSER) + @RepeatSubmit() + @PostMapping("handleClassified") + @SaCheckRole(value = { + TenantConstants.JG_ROLE_KEY + }, mode = SaMode.OR) + public R handleClassified(@RequestBody ZjkExpertBo bo) { + return toAjax(zjkExpertService.handleClassified(bo)); + } /** * 提交 */ @@ -481,9 +493,8 @@ public class ZjkExpertController extends BaseController { TenantConstants.TENANT_ADMIN_ROLE_KEY },mode = SaMode.OR) @GetMapping("/api/fetchRemoteProfessors") - public R fetchRemoteProfessors() { - zjkExpertService.fetchRemoteProfessors(); - return R.ok(); + public R fetchRemoteProfessors() { + return R.ok( zjkExpertService.fetchRemoteProfessors()); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertMoneyInfoController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertMoneyInfoController.java index 87caa57d0e66618288381444444b6360912e70ed..dd32b176ff4b6612595567d0951ab7b618336d98 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertMoneyInfoController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkExpertMoneyInfoController.java @@ -50,7 +50,7 @@ public class ZjkExpertMoneyInfoController extends BaseController { TenantConstants.TENANT_ADMIN_ROLE_KEY, TenantConstants.XM_ROLE_KEY, }, mode = SaMode.OR) - public TableDataInfo page(ZjkExpertMoneyInfoBo bo, PageQuery query) { + public TableDataInfo page(ZjkExpertMoneyInfoBo bo, PageQuery query) { return zjkExpertMoneyInfoService.queryPageList(bo, query); } @@ -197,15 +197,24 @@ public class ZjkExpertMoneyInfoController extends BaseController { * 通过项目id和阶段获取参评专家列表 * @param productId * @param reviewSn + * @param toSettle 1:新增结算单带出的专家 * @return */ + @DecryptOperation @SaCheckRole(value = { TenantConstants.JG_ROLE_KEY }, mode = SaMode.OR) @GetMapping("/expertList") public R> getExpertList(@NotNull(message = "项目不能为空") Long productId, @NotNull(message = "阶段不能为空") - Integer reviewSn) { - return R.ok(zjkExpertMoneyInfoService.getExpertList(productId, reviewSn)); + Integer reviewSn,String toSettle) { + if(toSettle!=null){ + return R.ok(zjkExpertMoneyInfoService.getExpertListForSettle(productId, reviewSn)); + + }else{ + //发票管理的人员带出 + return R.ok(zjkExpertMoneyInfoService.getExpertList(productId, reviewSn)); + + } } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkInvoiceController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkInvoiceController.java index b96f66888cc45d7b27a041b67d14732e950a35da..54d01071858429ad68c5f2cace87ef881da00659 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkInvoiceController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkInvoiceController.java @@ -139,8 +139,7 @@ public class ZjkInvoiceController extends BaseController { @Log(title = "发票", businessType = BusinessType.OTHER) @PostMapping("/downloadExcel") public void downloadExcel(HttpServletResponse response) { - List list = new ArrayList<>(); - ExcelUtil.exportExcel(list, "模板", ZjkInvoiceVo.class, response); + zjkInvoiceService.downloadExcelTem(response); } @@ -149,15 +148,13 @@ public class ZjkInvoiceController extends BaseController { * @param file * @return */ - @EncryptOperation @Log(title = "发票信息导入", businessType = BusinessType.IMPORT) @PostMapping("/imports") @SaCheckRole(value = { TenantConstants.JG_ROLE_KEY, }, mode = SaMode.OR) public R imports(@RequestPart("file") MultipartFile file) { - zjkInvoiceService.imports(file); - return R.ok(); + return zjkInvoiceService.imports(file); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkLeaveController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkLeaveController.java index 72b98ab18706da29773cf09c520da5e19755ffe5..3a5acecfde5676d1a72b5d142fe41b31ca0f3ec2 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkLeaveController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkLeaveController.java @@ -43,7 +43,7 @@ public class ZjkLeaveController extends BaseController { private final IZjkLeaveRuleService zjkLeaveRuleService; @InitBinder //解决前段传过来时间的字符串解析成时间报错问题 public void initBinder(WebDataBinder webDataBinder){ - webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true)); + webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),true)); } @GetMapping("/pros") diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkPointController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkPointController.java index 8eeb59c421e3b5e0e4b23e6be4a9361e709c987e..1a960fd87463f19305200565ffd188c259e9a96d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkPointController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkPointController.java @@ -56,7 +56,7 @@ public class ZjkPointController extends BaseController { private RemoteUserService remoteUserService; @InitBinder //解决前段传过来时间的字符串解析成时间报错问题 public void initBinder(WebDataBinder webDataBinder){ - webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true)); + webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),true)); } /** * 查询列表-积分规则定义 @@ -71,7 +71,7 @@ public class ZjkPointController extends BaseController { },mode = SaMode.OR) public R> pointRule(PointReqDto dto) { QueryWrapper wq = new QueryWrapper<>(); - wq.lambda().eq(!StringUtils.isEmpty(dto.getStartFlag()), ZjkPointRule::getStatus, dto.getStartFlag()) + wq.lambda().eq(!StringUtils.isEmpty(dto.getStatus()), ZjkPointRule::getStatus, dto.getStatus()) .like(!StringUtils.isEmpty(dto.getRuleName()), ZjkPointRule::getRuleName, dto.getRuleName()) .between(dto.getStartDate() != null && dto.getEndDate() != null, ZjkPointRule::getCreateTime, dto.getStartDate(), dto.getEndDate()); @@ -90,8 +90,8 @@ public class ZjkPointController extends BaseController { },mode = SaMode.OR) public R> rewardList(PointReqDto dto) { QueryWrapper wq = new QueryWrapper<>(); - wq.lambda().eq(!StringUtils.isEmpty(dto.getStartFlag()), ZjkPointReward::getStatus, dto.getStartFlag()) - .like(!StringUtils.isEmpty(dto.getRuleName()), ZjkPointReward::getRewardName, dto.getRuleName()) + wq.lambda().eq(!StringUtils.isEmpty(dto.getStatus()), ZjkPointReward::getStatus, dto.getStatus()) + .like(!StringUtils.isEmpty(dto.getRewardName()), ZjkPointReward::getRewardName, dto.getRewardName()) .between(dto.getStartDate() != null && dto.getEndDate() != null, ZjkPointReward::getCreateTime, dto.getStartDate(), dto.getEndDate()); List list = zjkPointRewardService.list(wq); List zjkPointRewardVOS = BeanUtil.copyToList(list, ZjkPointRewardVO.class); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductController.java index cc572a5a67beb0de49027508ab14ba4e6f2f7936..0ed45de6a016659b7b54a99f370fe6161bccc25e 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductController.java @@ -85,7 +85,7 @@ public class ZjkProductController extends BaseController { /** * 导出项目管理列表 */ -// @DecryptOperation + @DecryptOperation @SaCheckRole(value={ TenantConstants.JG_ROLE_KEY, TenantConstants.SUPER_ADMIN_ROLE_KEY, diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductSummarizeController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductSummarizeController.java index 94b6b2031e777e167fb36a710bd6e4b3be76acbc..df27bc6aa0c51b712276c3d18ec85bcd6200829e 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductSummarizeController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkProductSummarizeController.java @@ -67,9 +67,8 @@ public class ZjkProductSummarizeController extends BaseController { @SaCheckPermission("zjk:productSummarize:export") public void export(ZjkProductSummarizeBo bo, HttpServletResponse response) { List list = zjkProductSummarizeService.queryList(bo); - List zjkProductSummarizeExportVos = BeanUtil.copyToList(list, ZjkProductSummarizeExportVo.class); - ExcelUtil.exportExcel(zjkProductSummarizeExportVos, "项目总结", ZjkProductSummarizeExportVo.class, response); + ExcelUtil.exportExcel(list, "项目总结", ZjkProductSummarizeVo.class, response); } /** * 导出项目总结列表 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkReviewPhaseController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkReviewPhaseController.java index 55cfbd6e3acfa6326b4f9dd0f8a7c1cfb1d3f894..937d4cd60806f5a079f0f92343a5fd60b9e0bb30 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkReviewPhaseController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/controller/ZjkReviewPhaseController.java @@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; +import org.apache.commons.math3.stat.descriptive.summary.Product; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; @@ -19,6 +20,7 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.bo.ZjkReviewPhaseBo; import org.dromara.zjk.domain.bo.ZjkReviewProductBo; import org.dromara.zjk.domain.vo.ZjkReviewExportVo; @@ -125,14 +127,22 @@ public class ZjkReviewPhaseController extends BaseController { return zjkReviewPhaseService.reviewProductList(bo, pageQuery); } + /** + * 发票/结算 获取项目列表 + * @return + */ + @GetMapping("/invoice/productList") + public R> invoiceProductList() { + return zjkReviewPhaseService.invoiceProductList(); + } @DecryptOperation @SaCheckPermission("zjk:reviewproduct:export") @PostMapping("/review/export") public void reviewExport(ZjkReviewProductBo bo, HttpServletResponse response) { List zjkReviewProductVos = zjkReviewPhaseService.reviewExport(bo); - List zjkReviewExportVo = BeanUtil.copyToList(zjkReviewProductVos, ZjkReviewExportVo.class); - ExcelUtil.exportExcel(zjkReviewExportVo, "评审项目", ZjkReviewExportVo.class, response); + //List zjkReviewExportVo = BeanUtil.copyToList(zjkReviewProductVos, ZjkReviewExportVo.class); + ExcelUtil.exportExcel(zjkReviewProductVos, "评审项目", ZjkReviewProductVo.class, response); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkApprovalProcessLogs.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkApprovalProcessLogs.java index f6340cc67e885529c465922b0a051397393c5b8b..65598730d08aa7b7cadf6bf193a76273f6c87e63 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkApprovalProcessLogs.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkApprovalProcessLogs.java @@ -35,7 +35,11 @@ public class ZjkApprovalProcessLogs extends TenantEntity { * 操作内容 */ private String actionContent; - + /** + * 操作人 + */ + @TableField(exist = false) + private String createByStr; /** * 审批意见 */ diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkExpert.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkExpert.java index 73ea7a5cf4499fedbeb4c0288db1dcc7122e7f6b..5fb18743e385c9d37abf89da3b844cdc72d5e292 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkExpert.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkExpert.java @@ -360,5 +360,14 @@ public class ZjkExpert extends BaseEntity { private String unitTypeDescribe; private String hmac; + /** + * 活动范围 + */ + private String scopeOfActivity; + /** + * 是否涉密 + */ + private Integer isClassified; + } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkInvoice.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkInvoice.java index 8f3fdb8184b63f872f1aa9abdbe880c7de72e263..55f3f489266687b87b64f2148c5be4c9b630f9ca 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkInvoice.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/ZjkInvoice.java @@ -6,11 +6,18 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.TableField; +import com.alibaba.excel.annotation.ExcelIgnore; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.zjk.annotation.PropertyMsg; import org.dromara.zjk.zwy.annotation.EncryptSensitive; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import java.io.Serial; import java.math.BigDecimal; @@ -25,6 +32,7 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = true) @TableName("zjk_invoice") +@ExcelIgnoreUnannotated public class ZjkInvoice extends BaseEntity { @Serial @@ -35,21 +43,24 @@ public class ZjkInvoice extends BaseEntity { */ @PropertyMsg(propertyName = "id") @TableId(type = IdType.ASSIGN_ID) + @ExcelIgnore // 忽略该字段导出 private Long id; /** * 发票号码 */ @PropertyMsg(propertyName = "invoice_number") - @ExcelProperty(value = "发票号码") - private Long invoiceNumber; + @ExcelProperty(value = "*发票号码") + @NotBlank(message = "发票号码不能为空") + private String invoiceNumber; /** * 发票金额 */ @PropertyMsg(propertyName = "invoice_money") - @ExcelProperty(value = "发票金额") + @ExcelProperty(value = "*发票金额") @JsonFormat(shape = JsonFormat.Shape.NUMBER) + @NotNull(message = "发票金额不能为空") private BigDecimal invoiceMoney; /** @@ -58,16 +69,44 @@ public class ZjkInvoice extends BaseEntity { @PropertyMsg(propertyName = "start_date") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(value = "yyyy-MM-dd") - @ExcelProperty(value = "开票日期") + @ExcelProperty(value = "*开票日期") + @NotNull(message = "开票日期不能为空") private Date startDate; + @TableField(exist = false) + @ExcelProperty(value = "*项目名称") + @NotBlank(message = "项目名称不能为空") + private String productName; + /** + * 项目阶段 + */ + @PropertyMsg(propertyName = "review_sn") + @ExcelIgnore // 忽略该字段导出 + private Integer reviewSn; + /** + * 项目阶段 + */ + @ExcelProperty(value = "*项目阶段",converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "item_stage") + @TableField(exist = false) + @NotBlank(message = "项目阶段不能为空") + private String reviewSnStr; /** * 专家名称 */ @PropertyMsg(propertyName = "expert_name") - @ExcelProperty(value = "专家名称") + @ExcelProperty(value = "*专家名称") + @NotBlank(message = "专家名称不能为空") private String expertName; + /** + * 专家身份证号 + */ + @PropertyMsg(propertyName = "expert_id_number") + @ExcelProperty(value = "*专家身份证号") + @NotBlank(message = "专家身份证号不能为空") + private String expertIdNumber; + /** * 联系电话 */ @@ -76,12 +115,6 @@ public class ZjkInvoice extends BaseEntity { @ExcelProperty(value = "联系电话") private String expertPhone; - /** - * 专家身份证号 - */ - @PropertyMsg(propertyName = "expert_id_number") - @ExcelProperty(value = "专家身份证号") - private String expertIdNumber; /** * 职称等级 @@ -94,62 +127,31 @@ public class ZjkInvoice extends BaseEntity { * 电子发票附件相关 ,存储oss的id */ @PropertyMsg(propertyName = "invoice_attached") + @ExcelIgnore // 忽略该字段导出 private String invoiceAttached; - - /** - * 创建人 - */ - @PropertyMsg(propertyName = "create_by") - private Long createBy; - - /** - * 创建时间 - */ - @PropertyMsg(propertyName = "create_time") - private Date createTime; - - /** - * 修改人 - */ - @PropertyMsg(propertyName = "update_by") - private Long updateBy; - - /** - * 创建时间 - */ - @PropertyMsg(propertyName = "update_time") - private Date updateTime; - - /** - * 创建部门 - */ - @PropertyMsg(propertyName = "create_dept") - private Long createDept; - - /** - * 租户编码 - */ - @PropertyMsg(propertyName = "tenant_id") - private String tenantId; /** * 项目id */ @PropertyMsg(propertyName = "product_id") + @ExcelIgnore // 忽略该字段导出 private Long productId; - /** - * 项目阶段 - */ - @PropertyMsg(propertyName = "reviewSn") - private Integer reviewSn; + /** * 结算单id */ @PropertyMsg(propertyName = "settle_id") + @ExcelIgnore // 忽略该字段导出 private Long settleId; + @TableField(exist = false) + @ExcelProperty(value = "*结算单号") + @NotBlank(message = "结算单号不能为空") + private String settleNo; + @ExcelIgnore // 忽略该字段导出 private String hmac; /** * 审核状态1:已审核 */ + @ExcelIgnore // 忽略该字段导出 private Integer checkStatus; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/InoutCheckBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/InoutCheckBo.java index faa28a8b2a1ac6760f476a0f1ec23018b8554e54..f4eea8faf4e50a93a7563c9a6d3cf2fbec7d415c 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/InoutCheckBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/InoutCheckBo.java @@ -1,10 +1,12 @@ package org.dromara.zjk.domain.bo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.zjk.domain.InoutCheck; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -32,11 +34,15 @@ public class InoutCheckBo extends BaseEntity { /** * 时间范围开始 */ + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") private Date checkRangeStart; /** * 时间范围结束 */ + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") private Date checkRangeEnd; /** diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkExpertBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkExpertBo.java index 2482957e2658bcece7cffb81cd73c3211a3ee805..cb3dc16ee9665f24278b9a9f05e9777799fb9586 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkExpertBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkExpertBo.java @@ -1,18 +1,20 @@ package org.dromara.zjk.domain.bo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.core.validate.AddGroup; - import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.common.excel.convert.MultiDictConvert; import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.zjk.zwy.annotation.EncryptSensitive; import org.dromara.zjk.annotation.PropertyMsg; import org.dromara.zjk.domain.ZjkExpert; import org.dromara.zjk.domain.ZjkExpertMajor; @@ -20,6 +22,7 @@ import org.dromara.zjk.domain.ZjkExpertProfessional; import org.dromara.zjk.expert.expertAwards.domain.ZjkExpertAwards; import org.dromara.zjk.expert.expertPaper.domain.ZjkExpertPaper; import org.dromara.zjk.expert.expertPatent.domain.ZjkExpertPatent; +import org.dromara.zjk.zwy.annotation.EncryptSensitive; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -33,6 +36,7 @@ import java.util.List; */ @Data @EqualsAndHashCode(callSuper = true) +@ExcelIgnoreUnannotated @AutoMapper(target = ZjkExpert.class, reverseConvertGenerate = false) public class ZjkExpertBo extends BaseEntity { @@ -44,8 +48,9 @@ public class ZjkExpertBo extends BaseEntity { /** * 姓名 */ - @ExcelProperty(value = "姓名") - @Size(max = 20, message = "推荐专家姓名长度不能超过20个字符",groups = { AddGroup.class}) + @ExcelProperty(value = "*姓名") + @Size(max = 20, message = "推荐专家姓名长度不能超过20个字符", groups = {AddGroup.class}) + @NotBlank(message = "姓名不能为空") private String expertName; /** @@ -53,20 +58,29 @@ public class ZjkExpertBo extends BaseEntity { */ @ExcelProperty(value = "性别", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_user_sex") + @NotNull(message = "性别不能为空") private Long sex; /** * 身份证号 */ - @ExcelProperty(value = "身份证号") + @ExcelProperty(value = "*身份证号") @Pattern( regexp = "^[1-9]\\d{5}(18|19|20|21)?\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "身份证号格式不正确", - groups = { AddGroup.class } + groups = {AddGroup.class} ) @EncryptSensitive + @NotBlank(message = "身份证号不能为空") private String idCard; - + /** + * 联系方式 + */ + @ExcelProperty(value = "*联系方式") + @Size(max = 11, message = "专家手机号长度不能超过11个字符", groups = {AddGroup.class}) + @EncryptSensitive + @NotBlank(message = "联系方式不能为空") + private String contact; /** * 生日 */ @@ -75,13 +89,7 @@ public class ZjkExpertBo extends BaseEntity { @DateTimeFormat(pattern = "yyyy-MM-dd") private Date birthDate; - /** - * 联系方式 - */ - @ExcelProperty(value = "联系方式") - @Size(max = 11, message = "专家手机号长度不能超过11个字符",groups = { AddGroup.class }) - @EncryptSensitive - private String contact; + /** * 工作单位 @@ -92,7 +100,7 @@ public class ZjkExpertBo extends BaseEntity { /** * 单位类型 1企业,2高校,3政府单位 */ - @ExcelProperty(value = "单位类型" ,converter = ExcelDictConvert.class) + @ExcelProperty(value = "单位类型", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "unit_type") private String unitType; @@ -100,7 +108,7 @@ public class ZjkExpertBo extends BaseEntity { /** * 是否专家推荐 1 是 2 否 */ - @ExcelProperty(value = "是否专家推荐" ,converter = ExcelDictConvert.class) + @ExcelProperty(value = "是否专家推荐", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "is_recommend") private Integer isRecommend; @@ -113,7 +121,7 @@ public class ZjkExpertBo extends BaseEntity { /** * 政治面貌 */ - @ExcelProperty(value = "政治面貌" ,converter = ExcelDictConvert.class) + @ExcelProperty(value = "政治面貌", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "politics") private String politics; @@ -130,7 +138,7 @@ public class ZjkExpertBo extends BaseEntity { private String major; - @ExcelProperty(value = "学历" ,converter = ExcelDictConvert.class) + @ExcelProperty(value = "学历", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "degree_type") private String degree; @@ -144,13 +152,11 @@ public class ZjkExpertBo extends BaseEntity { /** * 专业技术资格 */ - @ExcelProperty(value = "专业技术资格") private String professional; /** * 专业技术资格取得时间 */ - @ExcelProperty(value = "专业技术资格取得时间") @JsonFormat(pattern = "yyyy-MM-dd") private Date professionalAcquisitionDate; @@ -175,14 +181,13 @@ public class ZjkExpertBo extends BaseEntity { /** * 从事工作或研究领域 */ - @ExcelProperty(value = "从事工作或研究领域", converter = ExcelDictConvert.class) + @ExcelProperty(value = "从事工作或研究领域", converter = MultiDictConvert.class) @ExcelDictFormat(dictType = "perform_work_type") private String performWorkId; /** * 其他领域描述 */ - @ExcelProperty(value = "其他领域描述") private String otherDescribe; /** @@ -200,7 +205,6 @@ public class ZjkExpertBo extends BaseEntity { /** * 主要论著、业绩成果及获奖情况 */ - @ExcelProperty(value = "主要论著、业绩成果及获奖情况") private String achievement; @@ -267,21 +271,25 @@ public class ZjkExpertBo extends BaseEntity { /** * 省 */ + @ExcelProperty(value = "省") private String province; /** * 市 */ + @ExcelProperty(value = "市") private String city; /** * 区 */ + @ExcelProperty(value = "区") private String area; /** * 详细地址 */ + @ExcelProperty(value = "详细地址") private String address; @@ -331,11 +339,27 @@ public class ZjkExpertBo extends BaseEntity { */ @PropertyMsg(propertyName = "职称等级") private Long positionTitleLevel; + @ExcelProperty(value = "职称等级") + private String positionTitleLevelStr; @PropertyMsg(propertyName = "籍贯") + @ExcelProperty(value = "籍贯") private String origin; private String unitTypeDescribe; private String expertIds; + /** + * 审批局同步过来的专业领域对应的类型名称 + */ + private String professorDeclareCategory; + /** + * 活动范围 + */ + private String scopeOfActivity; + /** + * 是否涉密0:不涉密 1:涉密 + */ + private Integer isClassified; + } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkInvoiceBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkInvoiceBo.java index 565b50d82abe0749a53890e94ac82365e0d4e7a0..9017a5b443496331624a3c4add146d5ed974a178 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkInvoiceBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkInvoiceBo.java @@ -39,7 +39,7 @@ public class ZjkInvoiceBo extends BaseEntity { */ @NotNull(message = "发票号码不能为空", groups = { AddGroup.class, EditGroup.class }) @JsonFormat(shape = JsonFormat.Shape.NUMBER) - private Long invoiceNumber; + private String invoiceNumber; /** * 发票金额 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkLeaveBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkLeaveBo.java index a484cc97693b8608389736f16412cb3303855533..1fe0883fa76c9ee781f81edbcd4c51f3119b4297 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkLeaveBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkLeaveBo.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.zjk.domain.ZjkLeave; @@ -29,10 +30,12 @@ public class ZjkLeaveBo extends BaseEntity { * $column.columnComment */ private String leaveType; - @JsonFormat(timezone = "UTC",pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date startDate; - @JsonFormat(timezone = "UTC",pattern="yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endDate; /** @@ -64,6 +67,8 @@ public class ZjkLeaveBo extends BaseEntity { * 租户ID */ private String tenantId; - - + /** + * 创建人 + */ + private String createByStr; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkProductSummarizeBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkProductSummarizeBo.java index b6e5a2aa8c2aec8523c3cc9e64141da6a4a65b81..caaa5249f064dae623d8ea8b74512cdb92c77b68 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkProductSummarizeBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkProductSummarizeBo.java @@ -33,11 +33,11 @@ public class ZjkProductSummarizeBo extends BaseEntity { private String search; private String reviewSn; - @DateTimeFormat(pattern = "YYYY-MM-dd hh:mm:ss") - @JsonFormat(pattern = "YYYY-MM-dd hh:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date startTime; - @DateTimeFormat(pattern = "YYYY-MM-dd hh:mm:ss") - @JsonFormat(pattern = "YYYY-MM-dd hh:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endTime; @@ -116,4 +116,5 @@ public class ZjkProductSummarizeBo extends BaseEntity { private List statusList; private List productIds; + private List ids; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkReviewProductBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkReviewProductBo.java index eb8d584312cf0517d752f21e1f97e5b99937b2d2..43d53575381671b1598386f7128196f5dc426c4e 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkReviewProductBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/bo/ZjkReviewProductBo.java @@ -33,5 +33,6 @@ public class ZjkReviewProductBo implements Serializable { private Date endTime; private Long expertId; - + private Long userId; + private Integer isExpert; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/dto/PointReqDto.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/dto/PointReqDto.java index cf2b10c78dc477d6a64d328e0ae58fff203e2c3d..a1eafe8736bad820188eeb520586d853fecf03a6 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/dto/PointReqDto.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/dto/PointReqDto.java @@ -13,6 +13,7 @@ import java.util.Date; public class PointReqDto { private Long id; private String ruleName; + private String rewardName; private Date startDate; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/excels/ZjkProductSummarizeExcelVO.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/excels/ZjkProductSummarizeExcelVO.java index e686443c549d50a53d0be1cc7c01dcc1603b07e0..2507900bb1c409ce6296e279e77ddffa95a85ef4 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/excels/ZjkProductSummarizeExcelVO.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/excels/ZjkProductSummarizeExcelVO.java @@ -15,7 +15,7 @@ public class ZjkProductSummarizeExcelVO { @ExcelProperty(value = "所属项目") private String productName; - @ExcelProperty(value = "项目总结总结名称") + @ExcelProperty(value = "项目总结名称") private String productSummarizeName; @ExcelProperty(value = "项目总结分类",converter = ExcelDictConvert.class) diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/CheckSupportVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/CheckSupportVo.java index 47e0e29d616c8fd3be8b9612b12c063845f778cd..516f26061a1a2d905c8abdf23e564e21e1284d75 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/CheckSupportVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/CheckSupportVo.java @@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.zjk.domain.InoutCheck; +import org.dromara.zjk.zwy.annotation.EncryptSensitive; import java.io.Serial; import java.io.Serializable; @@ -38,11 +39,13 @@ public class CheckSupportVo implements Serializable { * 联系电话 */ @ExcelProperty(value = "联系电话") + @EncryptSensitive private String contact; /** * 身份证号 */ @ExcelProperty(value = "身份证号") + @EncryptSensitive private String idcard; /** * 评审阶段 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/InoutCheckVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/InoutCheckVo.java index ba63a7e14c14c2b9746ddc31f4935397699c5243..cd41b6ae0f1d8488e8c4830f80837520226de110 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/InoutCheckVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/InoutCheckVo.java @@ -46,12 +46,14 @@ public class InoutCheckVo implements Serializable { * 时间范围开始 */ @ExcelProperty(value = "时间范围开始") + @JsonFormat(pattern = "yyyy-MM-dd") private Date checkRangeStart; /** * 时间范围结束 */ @ExcelProperty(value = "时间范围结束") + @JsonFormat(pattern = "yyyy-MM-dd") private Date checkRangeEnd; /** @@ -63,9 +65,12 @@ public class InoutCheckVo implements Serializable { /** * 创建人 */ - @ExcelProperty(value = "创建人") private Long createBy; - + /** + * 操作员 + */ + @ExcelProperty(value = "创建人") + private String createByStr; /** * 创建时间 */ diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/SyncUserReturnVO.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/SyncUserReturnVO.java new file mode 100644 index 0000000000000000000000000000000000000000..c0cb1e2f0e550181e0285002d4849628b56982a7 --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/SyncUserReturnVO.java @@ -0,0 +1,17 @@ +package org.dromara.zjk.domain.vo; + +import lombok.Data; + +/** + * 同步用户返回 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2025/12/11 16:26 + */ +@Data +public class SyncUserReturnVO { +//数据同步完成,共新增X条,更新Y条,失败Z条 + private boolean statu; + private String msg; +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkApprovalProcessLogsVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkApprovalProcessLogsVo.java index 00cca685180f8a13da608dd47b91b896ca244189..bd5a59207f6f191fb2fc0cc3c247741e3125ba1d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkApprovalProcessLogsVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkApprovalProcessLogsVo.java @@ -56,9 +56,12 @@ public class ZjkApprovalProcessLogsVo implements Serializable { /** * 创建人 */ - @ExcelProperty(value = "操作人") private Long createBy; - + /** + * 创建人 + */ + @ExcelProperty(value = "操作人") + private String createByStr; /** * 创建时间 */ diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkDataChangesLogsVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkDataChangesLogsVo.java index a2c9e6779e813a99ce8f56c3b6284e4b9c3840cd..8e9c5a9df441cea2eed9867b7291518057995391 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkDataChangesLogsVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkDataChangesLogsVo.java @@ -2,6 +2,7 @@ package org.dromara.zjk.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; @@ -70,7 +71,11 @@ public class ZjkDataChangesLogsVo implements Serializable { * 操作人 */ private Long createBy; - + /** + * 操作人 + */ + @ExcelProperty(value = "操作人") + private String createByStr; /** * 操作时间 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkEvaluateVO.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkEvaluateVO.java index 674ac0d37bf5287e191b4ea1d0d3de7cc581a0bb..54d469f32a6cc2d5bc12bdacec47011c62543693 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkEvaluateVO.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkEvaluateVO.java @@ -145,6 +145,10 @@ public class ZjkEvaluateVO implements Serializable { * 1.正常评价,不进行控制 */ private Integer xmEvaluateStatus; + /** + * 项目管理员id + */ + private String productCreateBy; private static final long serialVersionUID = 1L; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertLogVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertLogVo.java index ddb131381b9cd9ee6d698d329ed18f4c8d68357d..76b091b91a5373e0208a6afcdbd4ae049addde24 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertLogVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertLogVo.java @@ -63,8 +63,10 @@ public class ZjkExpertLogVo implements Serializable { /** * 入库结果 */ - @ExcelProperty(value = "入库结果") private Integer entryResult; + @ExcelProperty(value = "入库结果") + private String entryResultStr; + /** * 申请时间 diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertVo.java index 17d4847961627520e16f7693ca8891369cb1d697..476ced8ebc5a1a8e3da0dd6f53c193e8743c4a28 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkExpertVo.java @@ -6,13 +6,10 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.core.utils.StringUtils; - import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; -import org.dromara.common.sensitive.annotation.Sensitive; -import org.dromara.common.sensitive.core.SensitiveStrategy; +import org.dromara.common.excel.convert.MultiDictConvert; import org.dromara.resource.api.domain.RemoteFile; -import org.dromara.zjk.zwy.annotation.EncryptSensitive; import org.dromara.zjk.annotation.PropertyMsg; import org.dromara.zjk.annualInspection.annualInspectionAudit.domain.ZjkAnnualInspection; import org.dromara.zjk.domain.ZjkExpert; @@ -21,6 +18,7 @@ import org.dromara.zjk.domain.ZjkExpertProfessional; import org.dromara.zjk.expert.expertAwards.domain.ZjkExpertAwards; import org.dromara.zjk.expert.expertPaper.domain.ZjkExpertPaper; import org.dromara.zjk.expert.expertPatent.domain.ZjkExpertPatent; +import org.dromara.zjk.zwy.annotation.EncryptSensitive; import java.io.Serial; import java.io.Serializable; @@ -72,8 +70,6 @@ public class ZjkExpertVo implements Serializable { /** * 身份证号 */ - @ExcelProperty(value = "身份证号") - @EncryptSensitive private String idCard; @@ -82,7 +78,6 @@ public class ZjkExpertVo implements Serializable { */ @ExcelProperty(value = "联系方式") @EncryptSensitive - private String contact; /** @@ -90,6 +85,10 @@ public class ZjkExpertVo implements Serializable { */ @ExcelProperty(value = "工作单位") private String workUnit; + /** + * 详细地址 + */ + private String address; /** * 职务 @@ -100,14 +99,11 @@ public class ZjkExpertVo implements Serializable { /** * 政治面貌 */ - @ExcelProperty(value = "政治面貌", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "politics") private String politics; /** * 毕业学校 */ - @ExcelProperty(value = "毕业学校") private String graduateSchool; /** @@ -118,11 +114,11 @@ public class ZjkExpertVo implements Serializable { /** * 邮箱 */ - @ExcelProperty(value = "邮箱") @EncryptSensitive - private String email; + @ExcelDictFormat(dictType = "degree_type") + private String degree; /** * 专业技术资格 */ @@ -136,14 +132,11 @@ public class ZjkExpertVo implements Serializable { /** * 从事专业 */ - @ExcelProperty(value = "从事专业") private String workProfessial; /** * 从事专业年限 */ - @ExcelProperty(value = "从事专业年限", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "work_professial_year") private Integer workProfessialYear; /** @@ -164,13 +157,11 @@ public class ZjkExpertVo implements Serializable { /** * 主要工作经历 */ - @ExcelProperty(value = "主要工作经历") private String workExperience; /** * 社会兼职情况 */ - @ExcelProperty(value = "社会兼职情况") private String workPluralistic; /** @@ -236,23 +227,17 @@ public class ZjkExpertVo implements Serializable { /** * 审批类型 0 专家申请 1 信息变更 */ - @ExcelProperty(value = "审批类型", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "approval_type") private Integer approvalType; /** * 单位类型 1企业,2高校,3政府单位 */ - @ExcelProperty(value = "单位类型", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "unit_type") private String unitType; /** * 是否专家推荐 1 是 2 否 */ - @ExcelProperty(value = "是否专家推荐", converter = ExcelDictConvert.class) - @ExcelDictFormat(dictType = "is_recommend") private Integer isRecommend; /** @@ -270,10 +255,6 @@ public class ZjkExpertVo implements Serializable { */ private String area; - /** - * 详细地址 - */ - private String address; /** * 专业关系表对象 @@ -304,7 +285,9 @@ public class ZjkExpertVo implements Serializable { * 发生变化的字段 */ private String modifiedFields; - + /** + * 接受状态(1:已接受;0:未接受;2:拒绝; 4:取消) + */ private Integer acceptStatus; /** @@ -353,6 +336,8 @@ public class ZjkExpertVo implements Serializable { private ZjkAnnualInspection zjkAnnualInspection; private String rewardType; + private String rewardId; + /** * 其他附件集合 */ @@ -370,8 +355,8 @@ public class ZjkExpertVo implements Serializable { private String positionTitleLevelStr; /* - * 抽取的数据来源 - * */ + * 抽取的数据来源 + * */ private Integer isSource; //2024/12/3 add返回字段 抽取状态(0:取消,1:确认,2:重抽) 页面进行显示 枚举类ExtractionStatusEnum @@ -383,10 +368,19 @@ public class ZjkExpertVo implements Serializable { } return Arrays.asList(performWorkId.split(",")); } + @PropertyMsg(propertyName = "籍贯") private String origin; private String unitTypeDescribe; private String hmac; + /** + * 活动范围 + */ + private String scopeOfActivity; + /** + * 是否涉密0:不涉密 1:涉密 + */ + private Integer isClassified; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkInvoiceVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkInvoiceVo.java index c056d71663c9da89e49699ec49d0ae0c821a0153..252f2de0b97f2d9ed258b17f1280a7909035e4db 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkInvoiceVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkInvoiceVo.java @@ -37,7 +37,7 @@ public class ZjkInvoiceVo implements Serializable { * 发票号码 */ @ExcelProperty(value = "发票号码") - private Long invoiceNumber; + private String invoiceNumber; /** * 发票金额 @@ -103,6 +103,10 @@ public class ZjkInvoiceVo implements Serializable { * 结算单id */ private Long settleId; + /** + * 结算单id + */ + private String settleIdName; /** * 审核状态1:已审核 */ diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkLeaveVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkLeaveVo.java index 3f5f3c33d5079752e00a99d65e6a4dcabce38633..a4a6a11571d82ea348fbfe93ffacf656efea0c92 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkLeaveVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkLeaveVo.java @@ -48,6 +48,7 @@ public class ZjkLeaveVo implements Serializable { */ @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "$column.readConverterExp()") + @JsonFormat(pattern = "yyyy-MM-dd") private Date startDate; /** @@ -55,6 +56,7 @@ public class ZjkLeaveVo implements Serializable { */ @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "$column.readConverterExp()") + @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; /** diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductSummarizeVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductSummarizeVo.java index 73881dfd10285b36d5974d5e5e534c68b72973bb..0bd4a35678078526f2b7c3d37a86f479b65d0d39 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductSummarizeVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductSummarizeVo.java @@ -36,96 +36,89 @@ public class ZjkProductSummarizeVo implements Serializable { /** * id */ - @ExcelProperty(value = "id", converter = ExcelDictConvert.class) + @ExcelProperty(value = "项目总结编号") private Long id; /** * 专家抽取id */ - @ExcelProperty(value = "专家抽取id", converter = ExcelDictConvert.class) private Long reviewId; /** * 总结名称 */ - @ExcelProperty(value = "总结名称", converter = ExcelDictConvert.class) + @ExcelProperty(value = "总结名称") private String productSummarizeName; /** * 总结类型 */ - @ExcelProperty(value = "总结类型", converter = ExcelDictConvert.class) + @ExcelProperty(value = "总结分类", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "summarize_classify") private String productSummarizeType; + /** + * 备注 + */ + @ExcelProperty(value = "总结标签") + private String remark; + @ExcelProperty(value = "所属项目") + private String productName; + /** + * 状态 + */ + @ExcelProperty(value = "总结状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "summarize_status") + private String status; + private String statusName; private String productSummarizeTypeName; /** * 项目概况 */ - @ExcelProperty(value = "项目概况", converter = ExcelDictConvert.class) private String productGeneral; /** * 评审范围 */ - @ExcelProperty(value = "评审范围", converter = ExcelDictConvert.class) private String reviewScope; /** * 评审结论 */ - @ExcelProperty(value = "评审结论", converter = ExcelDictConvert.class) private String reviewConclusion; /** * 反馈 */ - @ExcelProperty(value = "反馈", converter = ExcelDictConvert.class) private String feedback; /** * 后续改进措施 */ - @ExcelProperty(value = "后续改进措施", converter = ExcelDictConvert.class) private String subsequent; /** * 附件 */ - @ExcelProperty(value = "附件", converter = ExcelDictConvert.class) - @ExcelIgnore private String attachment; /** * 专家id */ - @ExcelIgnore private String expertIds; - /** - * 状态 - */ - @ExcelIgnore - private String status; - /** - * 状态名称 - */ - @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) - private String statusName; - /** - * 备注 - */ - @ExcelProperty(value = "备注", converter = ExcelDictConvert.class) - private String remark; - @ExcelProperty(value = "项目时间", converter = ExcelDictConvert.class) + + + + @ExcelProperty(value = "项目时间") private Date reviewTime; @ExcelIgnore private List zjkExpertList; - @ExcelIgnore - private String productName; + private Long productId; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductVo.java index 68e1144d070926e401ea73d71843902a25e377f6..2b6505410310fead5e27a9924d8b3f9fc211d16e 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkProductVo.java @@ -105,7 +105,6 @@ public class ZjkProductVo implements Serializable { /** * $column.columnComment */ - @ExcelProperty(value = "备注") private String remark; private Long reviewId; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewExportVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewExportVo.java index 7c2e99669f5ec6c624c215185a0ef4fa786f4e57..b1572c60c0f2ea62fc839c9c5cfec70fb5f36e32 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewExportVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewExportVo.java @@ -2,10 +2,14 @@ package org.dromara.zjk.domain.vo; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.dromara.zjk.zwy.annotation.EncryptSensitive; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; +import java.util.Date; import java.util.List; @@ -49,6 +53,7 @@ public class ZjkReviewExportVo implements Serializable { /** * 联系方式 */ + @EncryptSensitive @ExcelProperty(value = "联系方式") private String unitConcat; @@ -61,6 +66,11 @@ public class ZjkReviewExportVo implements Serializable { /** * 评审时间 */ + /** + * 评审时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "评审时间") - private String reviewTime; + private Date reviewTime; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewProductVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewProductVo.java index 42751286c2e627618ee5cf4a1a08b52271107e22..13ac012570ed2adf2466a9e5d922ae65ec30170b 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewProductVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/domain/vo/ZjkReviewProductVo.java @@ -1,6 +1,7 @@ package org.dromara.zjk.domain.vo; import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -22,6 +23,7 @@ import java.util.List; * @date 2024-10-29 */ @Data +@ExcelIgnoreUnannotated public class ZjkReviewProductVo implements Serializable { @Serial @@ -37,18 +39,6 @@ public class ZjkReviewProductVo implements Serializable { */ private Long expertId; - /** - * 项目阶段 - */ - private String reviewSn; - - /** - * 评审时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date reviewTime; - /** * 规则id */ @@ -67,19 +57,6 @@ public class ZjkReviewProductVo implements Serializable { */ @ExcelProperty(value = "项目名称") private String productName; - - /** - * 项目类型 - */ - @ExcelProperty(value = "项目类型") - private String productType; - - /** - * 项目规则 - */ - @ExcelProperty(value = "项目规模") - private Integer productScale; - /** * 项目单位 */ @@ -99,11 +76,36 @@ public class ZjkReviewProductVo implements Serializable { @EncryptSensitive @ExcelProperty(value = "联系方式") private String unitConcat; + /** + * 评审阶段 + */ + @ExcelProperty(value = "评审阶段") + private String reviewSn; + /** + * 评审时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "评审时间") + private Date reviewTime; + /** + * 项目类型 + */ + //@ExcelProperty(value = "项目类型") + private String productType; + + /** + * 项目规则 + */ + //@ExcelProperty(value = "项目规模") + private Integer productScale; + + /** * 简介 */ - @ExcelProperty(value = "简介") + //@ExcelProperty(value = "简介") private String productBrief; /** @@ -120,7 +122,6 @@ public class ZjkReviewProductVo implements Serializable { /** * 备注 */ - @ExcelProperty(value = "备注") private String remark; private Long productId; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/ReviewSnEnum.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/ReviewSnEnum.java index c5fca0d091768e9294709e383201385532417653..b5c9a7bddbc3871c8fc282529ea3823b47dcdf9d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/ReviewSnEnum.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/ReviewSnEnum.java @@ -22,7 +22,28 @@ public enum ReviewSnEnum { * 描述 */ private final String desc; - + /** + * 通过描述获取编码 + * + * @param desc 描述 + * @return 编码 + */ + public static Integer getCodeByDesc(String desc) { + for (ReviewSnEnum status : ReviewSnEnum.values()) { + if (status.getDesc().equals(desc)) { + return Integer.valueOf(status.getCode()); + } + } + return null; // 找不到对应描述的枚举值时返回 null + } + public static String getDescByCode(String code) { + for (ReviewSnEnum status : ReviewSnEnum.values()) { + if (status.getCode().equals(code)) { + return status.getDesc(); + } + } + return null; // 找不到对应描述的枚举值时返回 null + } public static ReviewSnEnum getByCode(String code) { for (ReviewSnEnum status : ReviewSnEnum.values()) { if (status.getCode().equals( code)) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/SourceTypeEnum.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/SourceTypeEnum.java index d5eb2bec5d47c1144440f836fab928fbcc27c6f6..12862b1184eb199acd136e58e294089c839c6956 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/SourceTypeEnum.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/SourceTypeEnum.java @@ -9,8 +9,7 @@ public enum SourceTypeEnum implements BaseCodeEnum { ACADEMIC_TYPE("1","政务信息"), - RESEARCH_REPORTS("2","政务信息"), - ACADEMIC_CONFERENCES("3","政务信息"); + RESEARCH_REPORTS("2","政务服务"); private String code; private String name; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/UserSourceTypeEnum.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/UserSourceTypeEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..5f6f219dccb0c422afd2d3e7180a6bf67c9fc124 --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/enums/UserSourceTypeEnum.java @@ -0,0 +1,16 @@ +package org.dromara.zjk.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum UserSourceTypeEnum implements BaseCodeEnum { + + FROM_SPJ("11", "审批局原系统用户同步"); + + private String code; + private String name; + + +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/OnchainListener.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/OnchainListener.java index dd114cd2f37a9b6e43d448c5a5a569fd41ce997b..18911ca7281ce551c54b08cb49bbe7835fc952c3 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/OnchainListener.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/OnchainListener.java @@ -9,6 +9,7 @@ import org.dromara.zjk.event.OnchainEvent; import org.dromara.zjk.service.IZjkExpertItemService; import org.springframework.context.ApplicationListener; import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -32,12 +33,18 @@ public class OnchainListener implements ApplicationListener { * 保存系统日志记录 */ @EventListener + @Async("smsTaskExecutor") public void sendChainInfo(OnchainDto onchainDto) { log.info("规则id为{},抽取的专家上区块链开始", onchainDto.getReviewId()); - List data = zjkExpertItemService.getByReviewId(onchainDto.getReviewId()); - if (!CollectionUtils.isEmpty(data)) { - String jsonStr = JSONUtil.toJsonStr(data); - onChainUtils.toChain(jsonStr, onchainDto.getReviewId()); + try { + List data = zjkExpertItemService.getByReviewId(onchainDto.getReviewId()); + if (!CollectionUtils.isEmpty(data)) { + String jsonStr = JSONUtil.toJsonStr(data); + onChainUtils.toChainAsync(jsonStr, onchainDto.getReviewId()); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("规则id为{},抽取的专家上区块链异常", onchainDto.getReviewId()); } log.info("规则id为{},抽取的专家上区块链结束", onchainDto.getReviewId()); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/SmsSendListener.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/SmsSendListener.java index 6571a14b64ce54aff19a0b98af1caa4b0b3c10de..5a982e5096af70a0272f5f639cf7b39ca0ddaae3 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/SmsSendListener.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/event/custom/SmsSendListener.java @@ -9,6 +9,7 @@ import org.dromara.zjk.event.SmsSendEvent; import org.dromara.zjk.mapper.ZjkSmsInfoMapper; import org.springframework.context.ApplicationListener; import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -40,15 +41,28 @@ public class SmsSendListener implements ApplicationListener { * 保存系统日志记录 */ @EventListener + @Async("smsTaskExecutor") public void sendSms(SmsSendYsdDto dto) { - List> data = dto.getReceiveUserTels().stream().map(item -> { - Map stringStringMap = remoteSmsService.sendYsdSingleSms(dto.getContent(), item); - return stringStringMap; - }).collect(Collectors.toList()); - //数据库信息回改 - handleData(data, dto); + try { + // 设置整体处理超时时间 + List> data = dto.getReceiveUserTels().parallelStream().map(item -> { + try { + // 为单个短信发送设置超时 + return remoteSmsService.sendYsdSingleSms(dto.getContent(), item); + } catch (Exception e) { + log.error("发送短信失败,手机号: {}", item, e); + return Map.of("status", "-1", "tel", item, "resultId", "", "msg", "发送失败"); + } + }).collect(Collectors.toList()); + + //数据库信息回改 + handleData(data, dto); + } catch (Exception e) { + log.error("短信批量发送处理异常,批次号: {}", dto.getBatchNum(), e); + } } + private void handleData(List> data, SmsSendYsdDto dto) { //发送短信后的数据入库 List collect = data.stream().map(item -> { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/expertRecommend/service/impl/ZjkExpertRecommendServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/expertRecommend/service/impl/ZjkExpertRecommendServiceImpl.java index 47baef1e2cf76801a033c1890a309f7427b68a1c..73375d3eab35c7b9fb930599ee5a5a257826b3b6 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/expertRecommend/service/impl/ZjkExpertRecommendServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/expertRecommend/service/impl/ZjkExpertRecommendServiceImpl.java @@ -24,6 +24,8 @@ import org.dromara.zjk.expert.expertRecommend.service.IZjkExpertRecommendService import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.zwy.client.HmacClient; import org.dromara.zjk.zwy.utils.ObjectHashGenerator; +import org.dromara.zjk.zwy.utils.StringCryptoUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; @@ -45,7 +47,8 @@ public class ZjkExpertRecommendServiceImpl implements IZjkExpertRecommendService private final ZjkExpertMapper zjkExpertMapper; private final HmacClient hmacClient; - + @Autowired + private StringCryptoUtil stringCryptoUtil; /** * 查询专家推荐信息 * @@ -67,6 +70,10 @@ public class ZjkExpertRecommendServiceImpl implements IZjkExpertRecommendService @Override public TableDataInfo queryPageList(ZjkExpertRecommendBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); + if(StringUtils.isNotBlank(bo.getExpertPhone())){ + String phone = stringCryptoUtil.encryptField(bo.getExpertPhone()); + lqw.eq(ZjkExpertRecommend::getExpertPhone, phone); + } Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -86,6 +93,8 @@ public class ZjkExpertRecommendServiceImpl implements IZjkExpertRecommendService } bo.setExpertId(existingExpert.getExpertId()); } + + bo.getExpertPhone(); LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); @@ -109,7 +118,6 @@ public class ZjkExpertRecommendServiceImpl implements IZjkExpertRecommendService lqw.eq(bo.getExpertId() != null, ZjkExpertRecommend::getExpertId, bo.getExpertId()); lqw.eq(bo.getUserId() != null, ZjkExpertRecommend::getUserId, bo.getUserId()); lqw.like(StringUtils.isNotBlank(bo.getExpertName()), ZjkExpertRecommend::getExpertName, bo.getExpertName()); - lqw.like(StringUtils.isNotBlank(bo.getExpertPhone()), ZjkExpertRecommend::getExpertPhone, bo.getExpertPhone()); lqw.eq(StringUtils.isNotBlank(bo.getReason()), ZjkExpertRecommend::getReason, bo.getReason()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ZjkExpertRecommend::getStatus, bo.getStatus()); lqw.orderByDesc(ZjkExpertRecommend::getCreateTime); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/controller/ZjkRetirementRecordsController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/controller/ZjkRetirementRecordsController.java index ca58d18c816b675d27deb4fc40be45499e180ddd..77d8cf2ac1f766786d1a3a051683b5a5bfe3c66f 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/controller/ZjkRetirementRecordsController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/controller/ZjkRetirementRecordsController.java @@ -21,6 +21,9 @@ import org.dromara.common.web.core.BaseController; import org.dromara.zjk.expert.retirementRecords.domain.bo.ZjkRetirementRecordsBo; import org.dromara.zjk.expert.retirementRecords.domain.vo.ZjkRetirementRecordsVo; import org.dromara.zjk.expert.retirementRecords.service.IZjkRetirementRecordsService; +import org.dromara.zjk.zwy.annotation.DecryptOperation; +import org.dromara.zjk.zwy.utils.StringCryptoUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -41,6 +44,9 @@ public class ZjkRetirementRecordsController extends BaseController { private final IZjkRetirementRecordsService zjkRetirementRecordsService; + @Autowired + private StringCryptoUtil stringCryptoUtil; + /** * 查询专家退休记录列表 */ @@ -49,8 +55,16 @@ public class ZjkRetirementRecordsController extends BaseController { TenantConstants.TENANT_ADMIN_ROLE_KEY, TenantConstants.SUPER_ADMIN_ROLE_KEY }, mode = SaMode.OR) + @DecryptOperation @GetMapping("/list") public TableDataInfo list(ZjkRetirementRecordsBo bo, PageQuery pageQuery) { + + // 2025-08-11 搜索时敏感字段需先加密 + String encryptContact = stringCryptoUtil.encryptField(bo.getContact()); + String encryptIdCard = stringCryptoUtil.encryptField(bo.getIdCard()); + bo.setContact(encryptContact); + bo.setContact(encryptIdCard); + return zjkRetirementRecordsService.queryPageList(bo, pageQuery); } @@ -76,6 +90,7 @@ public class ZjkRetirementRecordsController extends BaseController { TenantConstants.SUPER_ADMIN_ROLE_KEY }, mode = SaMode.OR) @SaCheckPermission("expert:retirementRecords:query") + @DecryptOperation @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/domain/vo/ZjkRetirementRecordsVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/domain/vo/ZjkRetirementRecordsVo.java index a42e8c81ce43c4edc8cc15a64b3e85d9c2919f43..50d1c5850f6cbf2a64c9b3ae91271bdd0d0b3729 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/domain/vo/ZjkRetirementRecordsVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/domain/vo/ZjkRetirementRecordsVo.java @@ -78,6 +78,7 @@ public class ZjkRetirementRecordsVo implements Serializable { private String expertName; @ExcelProperty(value = "联系方式") + @EncryptSensitive private String contact; @ExcelProperty(value = "身份证号") diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/service/IZjkRetirementRecordsService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/service/IZjkRetirementRecordsService.java index 3edf8d0a87c3045a3d23bfff949f24d1d3f53e9d..eedb9b233c41d688465019f6077c931c5f14b2e0 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/service/IZjkRetirementRecordsService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/expert/retirementRecords/service/IZjkRetirementRecordsService.java @@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.zjk.expert.retirementRecords.domain.bo.ZjkRetirementRecordsBo; import org.dromara.zjk.expert.retirementRecords.domain.vo.ZjkRetirementRecordsVo; +import org.dromara.zjk.zwy.annotation.DecryptOperation; import java.util.Collection; import java.util.List; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/handler/ApiEncryptResponseAdvice.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/handler/ApiEncryptResponseAdvice.java new file mode 100644 index 0000000000000000000000000000000000000000..f58aef75a0003fdb3940268482e962cd5ce0cb9d --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/handler/ApiEncryptResponseAdvice.java @@ -0,0 +1,52 @@ +package org.dromara.zjk.handler; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.zjk.utils.ApiThreadLocal; +import org.dromara.zjk.utils.EncryptionUtil; +import org.springframework.core.MethodParameter; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; + +/** + * @author : yanguohua + * @version : 1.0 + * @date : 2025/8/27 10:11 + */ +@RestControllerAdvice(basePackages = "org.dromara.zjk.controller") +@Slf4j +public class ApiEncryptResponseAdvice implements ResponseBodyAdvice> { + + @Override + public boolean supports(MethodParameter returnType, Class> converterType) { + // 只处理返回类型为 R 的接口 + return R.class.isAssignableFrom(returnType.getParameterType()); + } + + @Override + public R beforeBodyWrite(R body, MethodParameter returnType, MediaType selectedContentType, + Class> selectedConverterType, + ServerHttpRequest request, ServerHttpResponse response) { + // 判断是否需要加密(可以根据注解、路径等条件判断) + if (body != null && body.getCode() == 200 ) { + String ak = ApiThreadLocal.getAk(); + if (StringUtils.isNotEmpty(ak)) { + try { + // 对数据进行加密 + String encryptedData = EncryptionUtil.encrypt(body.getData(), ak); + // 替换原始数据为加密数据 + return R.ok(body.getMsg(), encryptedData); + } catch (Exception e) { + // 加密失败记录日志 + log.error("数据加密失败", e); + } + } + } + return body; + } +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/controller/ZjkLearningCommontController.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/controller/ZjkLearningCommontController.java index 10ca3e922c57e5139d7a94bc2585b27770295d6c..efed80f54855bf240551808d2e0c3d08b63e1ec5 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/controller/ZjkLearningCommontController.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/controller/ZjkLearningCommontController.java @@ -20,6 +20,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.zjk.learning_world.domain.bo.ZjkLearningCommontBo; import org.dromara.zjk.learning_world.domain.vo.ZjkLearningCommontVo; import org.dromara.zjk.learning_world.service.IZjkLearningCommontService; +import org.dromara.zjk.zwy.annotation.DecryptOperation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -62,7 +63,7 @@ public class ZjkLearningCommontController extends BaseController { TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY, },mode = SaMode.OR) - @Log(title = "评论", businessType = BusinessType.EXPORT) + @DecryptOperation @PostMapping("/export") public void export(ZjkLearningCommontBo bo, HttpServletResponse response) { List list = zjkLearningCommontService.queryList(bo); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/bo/ZjkLearningActivityBo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/bo/ZjkLearningActivityBo.java index 735d44a1c1a9d8024f42740823e997383ded3dc1..856fdfc38210a978bfef279f412c9ba70a6c1416 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/bo/ZjkLearningActivityBo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/bo/ZjkLearningActivityBo.java @@ -1,5 +1,6 @@ package org.dromara.zjk.learning_world.domain.bo; +import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.zjk.learning_world.domain.entity.ZjkLearningActivity; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -8,6 +9,8 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + import java.util.Date; /** @@ -43,11 +46,15 @@ public class ZjkLearningActivityBo extends BaseEntity { * 活动时间 */ @NotNull(message = "活动开始时间不能为空", groups = { AddGroup.class}) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date activityStartTime; /** * 活动时间 */ @NotNull(message = "活动结束时间不能为空", groups = { AddGroup.class}) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date activityEndTime; /** diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningActivityExcel.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningActivityExcel.java index 4abf5b41f603e4938ea8f2ec42e67d4fe53596d7..2df17139095d14343bf0e621a735b678eb0a717d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningActivityExcel.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningActivityExcel.java @@ -19,6 +19,7 @@ import java.util.Date; * @date 2024-11-08 */ @Data +@ExcelIgnoreUnannotated public class ZjkLearningActivityExcel { @@ -32,13 +33,12 @@ public class ZjkLearningActivityExcel { /** * 活动分类 */ - @ExcelIgnore + @ExcelProperty(value = "活动分类") private String activityClassify; /** * 活动分类 */ - @ExcelProperty(value = "活动分类") private String activityClassifyName; /** @@ -73,7 +73,6 @@ public class ZjkLearningActivityExcel { /** * 状态 */ - @ExcelProperty(value = "发布状态") private String status; /** @@ -85,13 +84,12 @@ public class ZjkLearningActivityExcel { /** * 活动状态 */ - @ExcelProperty(value = "活动状态") + @ExcelProperty(value = "发布状态") private String activityStatusName; /** * 备注 */ - @ExcelProperty(value = "备注") private String remark; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningResourceExcel.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningResourceExcel.java index 2ee6e2087c5b62d3336e3df8549e5fc34917debe..d2d9df7bb25be2a54fbe2928cb1133b24f178499 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningResourceExcel.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/excel/ZjkLearningResourceExcel.java @@ -2,7 +2,10 @@ package org.dromara.zjk.learning_world.domain.excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; import java.util.Date; @@ -24,14 +27,13 @@ public class ZjkLearningResourceExcel { @ExcelProperty(value = "资源编号") private String resourceName; + @ExcelProperty(value = "资源类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "source_type") + private String resourceClassify; /** * 资源分类 */ @ExcelIgnore - private String resourceClassify; /** - * 资源分类 - */ - @ExcelProperty(value = "资源分类") private String resourceClassifyName; /** @@ -42,7 +44,7 @@ public class ZjkLearningResourceExcel { /** * 资源类型 */ - @ExcelProperty(value = "资源类型") + @ExcelProperty(value = "资源分类") private String resourceTypeName; /** @@ -55,6 +57,7 @@ public class ZjkLearningResourceExcel { * 发布时间 */ @ExcelProperty(value = "发布时间") + @DateTimeFormat("yyyy-MM-dd") private Date resourceTime; /** diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCommontVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCommontVo.java index d4970e1f547eae4e3494f8194bcfdf1e889f90fb..b17de6fa7065a3b5947942e764925356fd5be649 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCommontVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCommontVo.java @@ -5,6 +5,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.zjk.learning_world.domain.entity.ZjkLearningCommont; import org.springframework.format.annotation.DateTimeFormat; @@ -31,35 +33,41 @@ public class ZjkLearningCommontVo implements Serializable { /** * id */ - @ExcelProperty(value = "id") + @ExcelProperty(value = "评论记录编号") private Long id; - /** - * 资讯id + * 评论 */ - @ExcelProperty(value = "资讯id") - private Long informationId; - - @ExcelProperty(value = "资讯Title") + @ExcelProperty(value = "评论内容") + private String comment; + @ExcelProperty(value = "所属帖子") private String informationTitle; - + /** + * 状态 + */ + @ExcelProperty(value = "评论状态",converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "is_publish") + private String status; /** * 评论人 */ @ExcelProperty(value = "评论人") + private String reviewer; + + private Long reviewerId; + /** + * 资讯id + */ + private Long informationId; + /** * 被回复人ID */ - @ExcelProperty(value = "被回复人ID") private Long replyId; - /** - * 评论 - */ - @ExcelProperty(value = "评论") - private String comment; + /** * 评论时间 @@ -69,16 +77,11 @@ public class ZjkLearningCommontVo implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date commentTime; - /** - * 状态 - */ - @ExcelProperty(value = "状态") - private String status; + /** * 备注 */ - @ExcelProperty(value = "备注") private String remark; /** @@ -89,24 +92,17 @@ public class ZjkLearningCommontVo implements Serializable { @ExcelProperty(value = "撤销时间") private Date takedownTime; - @ExcelProperty(value = "上级") private Long parentId; - @ExcelProperty(value = "专家名称") private String expertName; - @ExcelProperty(value = "专家头像") private String expertPhotograph; - @ExcelProperty(value = "部门名称") private String deptName; - @ExcelProperty(value = "被回复人名称") private String replyName; - @ExcelProperty(value = "被回复人头像") private String replyPhotograph; - @ExcelProperty(value = "部门名称") private String replyDeptName; /** diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCourseVo.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCourseVo.java index e1e237abb3a819b4cf50dbe75051ac10e04ef4d7..000e5b829b549c900c80d36a2b56d660eb25cac5 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCourseVo.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/domain/vo/ZjkLearningCourseVo.java @@ -90,4 +90,6 @@ public class ZjkLearningCourseVo implements Serializable { * 附件名称 */ private String originalName; + private String createBy; + private Date createTime; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/ActivityTypeEnum.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/ActivityTypeEnum.java index c129f54b249967c1b59e2a657ba370fb9af5057b..cf017346f2595272525736fa7cb9cad18db1c1ab 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/ActivityTypeEnum.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/ActivityTypeEnum.java @@ -8,7 +8,20 @@ import org.dromara.zjk.enums.BaseCodeEnum; @AllArgsConstructor public enum ActivityTypeEnum implements BaseCodeEnum { - GOVERNMENT_INFORMATION("1","政务信息"); + /** + * 老年活动 + */ + SENIOR_ACTIVITY("1", "老年活动"), + + /** + * 线下运动 + */ + OFFLINE_SPORTS("2", "线下运动"), + + /** + * 阅读 + */ + READING("3", "阅读"); private String code; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/CourseTypeEnum.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/CourseTypeEnum.java index 3301ec46722f7c537f60bd3d3e087b1aefa4dff7..d001e17dd97fe23caadd3f749be4ab1f2e4d90c3 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/CourseTypeEnum.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/enums/course/CourseTypeEnum.java @@ -8,7 +8,8 @@ import org.dromara.zjk.enums.BaseCodeEnum; @AllArgsConstructor public enum CourseTypeEnum implements BaseCodeEnum { - GOVERNMENT_INFORMATION("1","政务信息"); + GOVERNMENT_INFORMATION("1","政务信息"), + GOVERNMENT_SERVICE("2","政务服务"); private String code; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningCommontMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningCommontMapper.java index 2863fb42d346479257583bd9a5fdfc50a72d22ab..a658cc66462671748ebe613ce5c4d416171dc83d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningCommontMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningCommontMapper.java @@ -1,11 +1,14 @@ package org.dromara.zjk.learning_world.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.dromara.zjk.learning_world.domain.bo.ZjkLearningCommontBo; import org.dromara.zjk.learning_world.domain.entity.ZjkLearningCommont; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.zjk.learning_world.domain.vo.ZjkLearningCommontVo; +import java.util.List; + /** * 评论Mapper接口 * @@ -15,4 +18,6 @@ import org.dromara.zjk.learning_world.domain.vo.ZjkLearningCommontVo; public interface ZjkLearningCommontMapper extends BaseMapperPlus { Page selectCommonPage(Page build, ZjkLearningCommontBo bo); + List selectCommonList(@Param("bo") ZjkLearningCommontBo bo); + } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningToolMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningToolMapper.java index d73da41b37a77524973b6669da669decada2451e..1c90af8191e4c99bf55e9c745bf0a2879cee920a 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningToolMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/mapper/ZjkLearningToolMapper.java @@ -7,6 +7,8 @@ import org.dromara.zjk.learning_world.domain.bo.ZjkLearningToolBo; import org.dromara.zjk.learning_world.domain.entity.ZjkLearningTool; import org.dromara.zjk.learning_world.domain.vo.ZjkLearningToolVo; +import java.util.Collection; + /** * 学习工具管理Mapper接口 * @@ -20,5 +22,5 @@ public interface ZjkLearningToolMapper extends BaseMapperPlus selectByAll(@Param("page") Page page, @Param("bo") ZjkLearningToolBo zjkLearningToolBo); - + void deleteTool(Collection ids); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningActivityServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningActivityServiceImpl.java index 18a7da90e70dbc06875e980a4d915e3c4a721328..11e4814ebc8f14ec1bc425cfd750e040bd352e2c 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningActivityServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningActivityServiceImpl.java @@ -155,10 +155,6 @@ public class ZjkLearningActivityServiceImpl implements IZjkLearningActivityServi if (zjkLearningActivityVo == null) { return false; } - String activityStatus = zjkLearningActivityVo.getActivityStatus(); - if (!activityStatus.equals(ActivityStatusEnum.DIDN_T_START.getCode())) { - throw new ServiceException("活动无法修改,请确认活动状态"); - } return baseMapper.updateById(update) > 0; } @@ -195,12 +191,12 @@ public class ZjkLearningActivityServiceImpl implements IZjkLearningActivityServi String activityStatus = excel.getActivityStatus(); String nameByCode = EnumUtil.getNameByCode(ActivityStatusEnum.class, activityStatus); if (StringUtils.isNotBlank(nameByCode)) { - excel.setActivityStatus(nameByCode); + excel.setActivityStatusName(nameByCode); } String activityClassify = excel.getActivityClassify(); String classifyByCode = EnumUtil.getNameByCode(ActivityTypeEnum.class, activityClassify); if (StringUtils.isNotBlank(classifyByCode)) { - excel.setActivityStatusName(classifyByCode); + excel.setActivityClassify(classifyByCode); } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningCommontServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningCommontServiceImpl.java index 4dd35c4d5c1ca4cdc1e09edbfa34bd40de1276fb..82a7de8130f72aec4ff0905cbb5dfbda6810a715 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningCommontServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningCommontServiceImpl.java @@ -13,6 +13,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.model.LoginUser; +import org.dromara.zjk.annualInspection.annualInspectionAudit.mapper.ZjkAnnualInspectionMapper; import org.dromara.zjk.domain.vo.ZjkExpertVo; import org.dromara.zjk.learning_world.domain.bo.ZjkLearningCommontBo; import org.dromara.zjk.learning_world.domain.entity.ZjkLearningCommont; @@ -43,6 +44,7 @@ public class ZjkLearningCommontServiceImpl implements IZjkLearningCommontService private final ZjkLearningInformationMapper zjkLearningInformationMapper; private final ZjkExpertMapper zjkExpertMapper; + private final ZjkAnnualInspectionMapper zjkAnnualInspectionMapper; /** * 查询评论 @@ -80,11 +82,9 @@ public class ZjkLearningCommontServiceImpl implements IZjkLearningCommontService if (null == zjkLearningInformation) { throw new ServiceException("无效帖子ID"); } - userId = zjkLearningInformation.getUserId(); + userId = zjkLearningInformation.getUserId(); } - //LambdaQueryWrapper lqw = buildQueryWrapper(bo); - bo.setStatus("2"); Page result = baseMapper.selectCommonPage(pageQuery.build(), bo); List records = result.getRecords(); if (CollectionUtil.isEmpty(records)) { @@ -100,7 +100,7 @@ public class ZjkLearningCommontServiceImpl implements IZjkLearningCommontService Map getExpertMap = zjkExpertVos.stream().collect(Collectors.toMap(ZjkExpertVo::getUserId, v -> v)); for (ZjkLearningCommontVo record : records) { ZjkExpertVo zjkExpertVo = getExpertMap.get(record.getReviewerId()); - record.setExpertName(zjkExpertVo.getExpertName()); + record.setExpertName(zjkExpertVo.getUserName()); record.setExpertPhotograph(zjkExpertVo.getPhotograph()); boolean flag = LoginHelper.getUserId().equals(userId); record.setReply(flag); @@ -158,8 +158,13 @@ public class ZjkLearningCommontServiceImpl implements IZjkLearningCommontService */ @Override public List queryList(ZjkLearningCommontBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List zjkLearningCommontVos = baseMapper.selectCommonList(bo); + zjkLearningCommontVos.stream().forEach(item -> { + item.setReviewer(zjkAnnualInspectionMapper.selectApprovalByUserId(item.getReviewerId())); + item.setInformationTitle(zjkLearningInformationMapper.selectById(item.getInformationId()).getInformationTitle()); + }); + + return zjkLearningCommontVos; } private LambdaQueryWrapper buildQueryWrapper(ZjkLearningCommontBo bo) { @@ -285,7 +290,6 @@ public class ZjkLearningCommontServiceImpl implements IZjkLearningCommontService } - @Override public int updateStatuso(ZjkLearningCommontBo bo) { Long id = bo.getId(); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningResourceServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningResourceServiceImpl.java index a8c21b6a22ac1bafbe3f19cf7696a3b406243c3e..898ab3cb27fc630517e54845c9c1171b5e3f0255 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningResourceServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningResourceServiceImpl.java @@ -166,14 +166,14 @@ public class ZjkLearningResourceServiceImpl implements IZjkLearningResourceServi String statusByCode = EnumUtil.getNameByCode(PublishStatusEnum.class, status); zjkLearningResourceExcel.setStatusName(statusByCode); } - String resourceClassify = zjkLearningResourceExcel.getResourceClassify(); - if (StringUtils.isNotBlank(resourceClassify)) { - String resourceClassifyByCode = EnumUtil.getNameByCode(SourceClassifyEnum.class, resourceClassify); - zjkLearningResourceExcel.setResourceClassifyName(resourceClassifyByCode); - } +// String resourceClassify = zjkLearningResourceExcel.getResourceClassify(); +// if (StringUtils.isNotBlank(resourceClassify)) { +// String resourceClassifyByCode = EnumUtil.getNameByCode(SourceClassifyEnum.class, resourceClassify); +// zjkLearningResourceExcel.setResourceClassifyName(resourceClassifyByCode); +// } } - return List.of(); + return zjkLearningResourceExcels; } @Override diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningToolServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningToolServiceImpl.java index ca5eeafb9de4d535946864a72b7e002bca91bec6..65c6a7805abfb2b5155a117b9020152e62a28530 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningToolServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/learning_world/service/impl/ZjkLearningToolServiceImpl.java @@ -129,7 +129,8 @@ public class ZjkLearningToolServiceImpl implements IZjkLearningToolService { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } - return baseMapper.deleteByIds(ids) > 0; + baseMapper.deleteTool(ids); + return true; } @Override diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/InoutCheckMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/InoutCheckMapper.java index e7acf142b3388f60af11b1922d75b129ccb9d3a0..20ff02e73b7534c70032bc3e79518a1241d141f6 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/InoutCheckMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/InoutCheckMapper.java @@ -24,4 +24,6 @@ public interface InoutCheckMapper extends BaseMapperPlus { IPage queryPointList(Page build, @Param("bo") CreditReqDto bo); + Integer getPointCount(@Param("bo") CreditReqDto bo); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkCreditRuleMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkCreditRuleMapper.java index 8112f5fe61276fcc9b30af034d8720dca63e770c..7ad7b8de09e222e2fd320dc3d431a6c4e0cf07ed 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkCreditRuleMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkCreditRuleMapper.java @@ -1,7 +1,10 @@ package org.dromara.zjk.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.dromara.zjk.domain.ZjkCreditRule; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.zjk.domain.bo.ZjkCreditBo; import org.dromara.zjk.domain.vo.ZjkCreditRuleVo; /** @@ -12,4 +15,5 @@ import org.dromara.zjk.domain.vo.ZjkCreditRuleVo; */ public interface ZjkCreditRuleMapper extends BaseMapperPlus { + Page selectCreditInfo(Page build,@Param("bo") ZjkCreditBo dto); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkEvaluateMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkEvaluateMapper.java index 524b0d1097225c96d904f735e3be1eeab506ffe2..0db57929796a5b2cf43a0a6d5e51856de48feba8 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkEvaluateMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkEvaluateMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.zjk.domain.ZjkEvaluate; import org.dromara.zjk.domain.dto.LeaveStsDto; import org.dromara.zjk.domain.dto.SelExpertRuleDto; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMapper.java index 1d830fb4aae067865ae43fca7004e75f56b87d05..27c9d9dd7db3dcc3e2f79cee4120ed000d39136f 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMapper.java @@ -72,5 +72,20 @@ public interface ZjkExpertMapper extends BaseMapperPlus int updateHmac(ZjkExpert update); List selectIdsByName(String expertName); + + List getConcatenatedExpert(String name); + + String getProvinceByName(String province); + + String getCityByNameAndProvinceId(String province, String city); + + String getAreaByNameAndCityId(String city, String area); + + List getStageExperts(Long productId, Integer reviewSn); + List> getWorkperformIdByName(); + + void handleClassified(Long expertId, Integer isClassified); + + List selectExistingNameAndIdCardPairs(List checkKeys); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMoneyInfoMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMoneyInfoMapper.java index 75b7f6c1489b7fda9948df90625dd4713ca84ab9..727c6f611f62ec8e5cf1fd74f386629c81053515 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMoneyInfoMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkExpertMoneyInfoMapper.java @@ -19,13 +19,19 @@ import java.util.List; */ public interface ZjkExpertMoneyInfoMapper extends BaseMapperPlus { - Page selectMoneyInfoList(Page build, @Param("bo") ZjkExpertMoneyInfoBo bo); + Page selectMoneyInfoList(Page build, @Param("bo") ZjkExpertMoneyInfoBo bo); List selectListByMonth(@Param("startTime") Date startTime ,@Param("endTime") Date endTime,@Param("tenantId") String tenantId); List selectTenantIds(); List getExpertList(Long productId, Integer reviewSn); + + List getExpertListForSettle(Long productId, Integer reviewSn); + + ZjkExpertMoneyInfo selectByIdEx(Long moneyId); + + List selectJsList(Long productId, Integer reviewSn, String expertId); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkInvoiceMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkInvoiceMapper.java index d98731ca25f2653492b3161e4924e5a0913ce55d..021e0cc6a65ab4eab6d7b063db9123f4f90f2101 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkInvoiceMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkInvoiceMapper.java @@ -6,12 +6,11 @@ import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.zjk.domain.ZjkInvoice; import org.dromara.zjk.domain.bo.ZjkInvoiceBo; -import org.dromara.zjk.domain.vo.SysOssVo; import org.dromara.zjk.domain.vo.ZjkExpertVo; import org.dromara.zjk.domain.vo.ZjkInvoiceVo; +import org.dromara.zjk.domain.ZjkExpertMoneyInfo; import java.math.BigDecimal; -import java.util.Map; /** * 发票Mapper接口 @@ -37,4 +36,6 @@ public interface ZjkInvoiceMapper extends BaseMapperPlus selectProdoctPage(Page build, ZjkProductBo bo); + List selectProdoctForApi(@Param("bo") ZjkProductBo bo); @DataPermission({ @DataColumn(key = "xmUserName", value = "zp.user_id"), @@ -59,4 +60,6 @@ public interface ZjkProductMapper extends BaseMapperPlus productPanoramaDept(); void updateProductByApproval(Long id, Integer approvalStatus, String approvalReason); + + Page getProductList(Page build,@Param("bo") ProductPanoramaVo bo); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkReviewPhaseMapper.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkReviewPhaseMapper.java index cc249f602f0aed4781ae70546ad9c2a91f8474e4..dbe032e1c9be23f6648e3269983f6dff4c73e209 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkReviewPhaseMapper.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/mapper/ZjkReviewPhaseMapper.java @@ -6,6 +6,7 @@ import org.dromara.common.mybatis.annotation.DataColumn; import org.dromara.common.mybatis.annotation.DataPermission; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.zjk.domain.ZjkReviewPhase; +import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.bo.ZjkReviewProductBo; import org.dromara.zjk.domain.vo.ZjkReviewPhaseVo; import org.dromara.zjk.domain.vo.ZjkReviewProductVo; @@ -21,18 +22,17 @@ import java.util.List; */ public interface ZjkReviewPhaseMapper extends BaseMapperPlus { - @DataPermission({ - @DataColumn(key = "deptName", value = "zei.dept_id"), - @DataColumn(key = "xmUserName", value = "zp.user_id"), - @DataColumn(key = "userName", value = "zei.user_id") - }) + Page reviewProductList(Page build, ZjkReviewProductBo bo); + + List reviewProductListForExport(@Param("bo") ZjkReviewProductBo bo); + @DataPermission({ @DataColumn(key = "deptName", value = "zei.dept_id"), @DataColumn(key = "xmUserName", value = "zrp.create_by"), @DataColumn(key = "userName", value = "zei.user_id") }) - List getByProductId(@Param("productId")Long id); + List getByProductId(@Param("productId") Long id); @DataPermission({ @DataColumn(key = "deptName", value = "zei.dept_id"), @@ -41,19 +41,19 @@ public interface ZjkReviewPhaseMapper extends BaseMapperPlus reviewExport(@Param("bo") ZjkReviewProductBo bo); + List getProductList(); List getByProductIds(@Param("productIds") Collection id); - - Page getReviewProductListByExpert(Page build,@Param("bo") ZjkReviewProductBo bo); + Page getReviewProductListByExpert(Page build, @Param("bo") ZjkReviewProductBo bo); ZjkReviewPhase selectVoListByLimit(Long id); Long getReviewProductCountByExpertId(Long expertId); - List selectVoListByZjkItemExpert(@Param("itemid") Long itemid, @Param("reviewSn")String reviewSn,@Param("rown")Long rown,@Param("supplementCause")Integer supplementCause); + List selectVoListByZjkItemExpert(@Param("itemid") Long itemid, @Param("reviewSn") String reviewSn, @Param("rown") Long rown, @Param("supplementCause") Integer supplementCause); List selectUpdateZjkItemExpert(Long itemid, String reviewSn); @@ -65,4 +65,5 @@ public interface ZjkReviewPhaseMapper extends BaseMapperPlus selectVoByExtreationId(@Param("extractionId") Long extractionId); + List getInvoiceProductList(); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkCreditUserService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkCreditUserService.java index 6f503f063f7f127623d16d01b64a5e772702894d..275f99cfb943ab93361c00b303f1397ae9f218dc 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkCreditUserService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkCreditUserService.java @@ -76,7 +76,7 @@ public interface IZjkCreditUserService { R getExpertPointRank(Integer rangeDay); - R> selectUserById(ZjkCreditBo creditId, PageQuery pageQuery); + TableDataInfo selectUserById(ZjkCreditBo creditId, PageQuery pageQuery); R> blacklist(ZjkCreditBo creditBo); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertMajorService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertMajorService.java index cd816c9a98648eab9d24a49aa1577a72727ad5f9..96e509e1bb0b45e2667a54faafa87a33d2c09916 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertMajorService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertMajorService.java @@ -17,7 +17,7 @@ import java.util.Map; * @date 2024-11-01 */ public interface IZjkExpertMajorService { - + void saveBatch(List zjkExpertMajorList); /** * 查询专家库 专业关系表 * diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertService.java index 0377dc71a24c97d11c558e31a3bcaea4e6a1f946..e20792d7a70743a9466353963948e2f72749c7e8 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkExpertService.java @@ -1,6 +1,9 @@ package org.dromara.zjk.service; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; import org.apache.ibatis.annotations.Param; +import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.zjk.domain.ExpertBaseInfo; @@ -9,8 +12,8 @@ import org.dromara.zjk.domain.ZjkExpertItem; import org.dromara.zjk.domain.bo.ZjkExpertBo; import org.dromara.zjk.domain.bo.ZjkProjectExpertItemBo; import org.dromara.zjk.domain.vo.ExpertPerformWorkCountVO; +import org.dromara.zjk.domain.vo.SyncUserReturnVO; import org.dromara.zjk.domain.vo.ZjkExpertVo; -import org.dromara.zjk.zwy.annotation.DecryptOperation; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; @@ -145,7 +148,7 @@ public interface IZjkExpertService { */ Boolean expertQuash(Integer type,String businessKey); - List imports(MultipartFile file); + R imports(MultipartFile file); Long getExpertCount(); @@ -171,5 +174,11 @@ public interface IZjkExpertService { Long getUserIdByPhone(String tel); - void fetchRemoteProfessors(); + SyncUserReturnVO fetchRemoteProfessors(); + + void exportTml(HttpServletResponse response); + + List getStageExperts(@NotNull(message = "项目不能为空") Long productId, @NotNull(message = "阶段不能为空") Integer reviewSn); + + Boolean handleClassified(ZjkExpertBo bo); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkInvoiceService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkInvoiceService.java index 698d0677b0cb2def89855fcab44c86c0516b2e99..ed258583ff2f54b28660325fc511c34bc89296bd 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkInvoiceService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkInvoiceService.java @@ -2,6 +2,7 @@ package org.dromara.zjk.service; import jakarta.servlet.http.HttpServletResponse; +import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.zjk.domain.bo.ZjkInvoiceBo; @@ -12,7 +13,6 @@ import org.springframework.web.multipart.MultipartFile; import java.util.Collection; import java.util.List; -import java.util.Map; /** * 发票Service接口 @@ -74,9 +74,11 @@ public interface IZjkInvoiceService { /** * 导入信息excel + * * @param file + * @return */ - void imports(MultipartFile file); + R imports(MultipartFile file); /** * ,包括发票的数量、金额、开票单位等, @@ -87,4 +89,6 @@ public interface IZjkInvoiceService { Boolean check(Long moneyId); CheckSupportVo getInvByProductInfo(String productId, String reviewSn, String expertId); + + void downloadExcelTem(HttpServletResponse response); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkProductService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkProductService.java index c2685506f83235b3b63319634963d19c3e6e33c0..ed514d5de6b64f9b007e78b08c25c0879b2a6b79 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkProductService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkProductService.java @@ -36,6 +36,7 @@ public interface IZjkProductService { * @return 项目管理分页列表 */ TableDataInfo queryPageList(ZjkProductBo bo, PageQuery pageQuery); + List queryListForApi(ZjkProductBo bo); /** * 查询符合条件的项目管理列表 @@ -105,4 +106,6 @@ public interface IZjkProductService { Set productPanoramaDept(); Boolean approval(ZjkProductBo bo); + + TableDataInfo getProductList(ProductPanoramaVo vo, PageQuery pageQuery); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkReviewPhaseService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkReviewPhaseService.java index ec72de11f9cfdeee03c4ad7fa1d5c273546dd062..a849dbcd3400442f0d6ec27581e6a3834cb9d5c7 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkReviewPhaseService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/IZjkReviewPhaseService.java @@ -1,7 +1,9 @@ package org.dromara.zjk.service; +import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.bo.ZjkReviewPhaseBo; import org.dromara.zjk.domain.bo.ZjkReviewProductBo; import org.dromara.zjk.domain.vo.ZjkReviewPhaseVo; @@ -79,4 +81,6 @@ public interface IZjkReviewPhaseService { Long getReviewCount(); Long getReviewProductCountByExpertId(Long expertId); + + R> invoiceProductList(); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/ZjkExpertMoneyInfoService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/ZjkExpertMoneyInfoService.java index a139eb69279451a6a9be6e4bcb37acf5ebc757bd..605e6bca0118815a2798d315d9b991a4e8a84808 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/ZjkExpertMoneyInfoService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/ZjkExpertMoneyInfoService.java @@ -33,7 +33,7 @@ public interface ZjkExpertMoneyInfoService extends IService * @param pageQuery 分页参数 * @return 专家费用管理分页列表 */ - TableDataInfo queryPageList(ZjkExpertMoneyInfoBo bo, PageQuery pageQuery); + TableDataInfo queryPageList(ZjkExpertMoneyInfoBo bo, PageQuery pageQuery); boolean updateMoneyInfo(ZjkExpertMoneyInfoBo bo); @@ -75,4 +75,6 @@ public interface ZjkExpertMoneyInfoService extends IService List getJsList(@NotNull(message = "项目不能为空") Long productId, @NotNull(message = "阶段不能为空") Integer reviewSn, String expertId); List getExpertList(@NotNull(message = "项目不能为空") Long productId, @NotNull(message = "阶段不能为空") Integer reviewSn); + + List getExpertListForSettle(@NotNull(message = "项目不能为空") Long productId, @NotNull(message = "阶段不能为空") Integer reviewSn); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/InoutCheckServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/InoutCheckServiceImpl.java index 2e61b81d40c5143045cd15d4806bd643fd3010ed..5748fbb18cf1cb48f2b98abd18d4bda7eea742db 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/InoutCheckServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/InoutCheckServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -14,6 +15,7 @@ import org.dromara.zjk.domain.bo.InoutCheckBo; import org.dromara.zjk.domain.vo.CheckSupportVo; import org.dromara.zjk.domain.vo.InoutCheckVo; import org.dromara.zjk.mapper.InoutCheckMapper; +import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.service.IInoutCheckService; import org.dromara.zjk.service.IZjkInvoiceService; import org.springframework.stereotype.Service; @@ -64,6 +66,9 @@ public class InoutCheckServiceImpl implements IInoutCheckService { public TableDataInfo queryPageList(InoutCheckBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().stream().forEach(item->{ + item.setCreateByStr(baseMapper.selectUserNameById(item.getCreateBy())); + }); return TableDataInfo.build(result); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningBackServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningBackServiceImpl.java index f4c53e8331bb170eca88105cbda3032660db9cb6..1bd62cae15e8915767019c3a703c174c5c8be907 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningBackServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningBackServiceImpl.java @@ -2,29 +2,27 @@ package org.dromara.zjk.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.zjk.domain.LearningEvaluate; -import org.dromara.zjk.domain.LearningSuggest; -import org.dromara.zjk.mapper.ZjkExpertMapper; -import org.springframework.stereotype.Service; +import org.dromara.zjk.domain.LearningBack; import org.dromara.zjk.domain.bo.LearningBackBo; import org.dromara.zjk.domain.vo.LearningBackVo; -import org.dromara.zjk.domain.LearningBack; import org.dromara.zjk.mapper.LearningBackMapper; +import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.service.ILearningBackService; +import org.springframework.stereotype.Service; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; /** * 【请填写功能名称】Service业务层处理 @@ -38,6 +36,7 @@ public class LearningBackServiceImpl implements ILearningBackService { private final LearningBackMapper baseMapper; private final ZjkExpertMapper zjkExpertMapper; + /** * 查询【请填写功能名称】 * @@ -45,7 +44,7 @@ public class LearningBackServiceImpl implements ILearningBackService { * @return 【请填写功能名称】 */ @Override - public LearningBackVo queryById(String ID){ + public LearningBackVo queryById(String ID) { return baseMapper.selectVoById(ID); } @@ -62,17 +61,19 @@ public class LearningBackServiceImpl implements ILearningBackService { if (contains) { bo.setCreateBy(LoginHelper.getUserId()); } - + Page result = new Page<>(); LambdaQueryWrapper lqw = buildQueryWrapper(bo); - if(!StringUtils.isEmpty(bo.getExpertName())){ + if (!StringUtils.isEmpty(bo.getExpertName())) { List uids = zjkExpertMapper.selectIdsByName(bo.getExpertName()); - if(!CollectionUtil.isEmpty(uids)){ + if (!CollectionUtil.isEmpty(uids)) { lqw.in(LearningBack::getCreateBy, uids); + }else{ + return TableDataInfo.build(result); } } lqw.orderByDesc(LearningBack::getCreateTime); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - result.getRecords().stream().forEach(o ->{ + result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().stream().forEach(o -> { o.setExpertName(zjkExpertMapper.selectByUserId(o.getCreateBy()).getExpertName()); }); @@ -138,7 +139,7 @@ public class LearningBackServiceImpl implements ILearningBackService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(LearningBack entity){ + private void validEntityBeforeSave(LearningBack entity) { //TODO 做一些数据校验,如唯一约束 // 如果ID为空,生成新的ID if (StringUtils.isBlank(entity.getID())) { @@ -155,7 +156,7 @@ public class LearningBackServiceImpl implements ILearningBackService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningEvaluateServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningEvaluateServiceImpl.java index 496193fa8219e9b40c1cddc4168a3f3583566f8f..031a9cb2bf8d189588e18477965976f8ef1af61f 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningEvaluateServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningEvaluateServiceImpl.java @@ -2,28 +2,30 @@ package org.dromara.zjk.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.zjk.domain.LearningEvaluate; +import org.dromara.zjk.domain.LearningBack; +import org.dromara.zjk.enums.ApprovalStatusEnum; +import org.dromara.zjk.learning_world.mapper.ZjkLearningCourseMapper; +import org.dromara.zjk.mapper.ZjkExpertMapper; +import org.springframework.stereotype.Service; import org.dromara.zjk.domain.bo.LearningEvaluateBo; import org.dromara.zjk.domain.vo.LearningEvaluateVo; -import org.dromara.zjk.learning_world.mapper.ZjkLearningCourseMapper; +import org.dromara.zjk.domain.LearningEvaluate; import org.dromara.zjk.mapper.LearningEvaluateMapper; -import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.service.ILearningEvaluateService; -import org.springframework.stereotype.Service; -import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Collection; /** * 【请填写功能名称】Service业务层处理 @@ -38,7 +40,6 @@ public class LearningEvaluateServiceImpl implements ILearningEvaluateService { private final LearningEvaluateMapper baseMapper; private final ZjkExpertMapper zjkExpertMapper; private final ZjkLearningCourseMapper zjkLearningCourseMapper; - /** * 查询【请填写功能名称】 * @@ -46,9 +47,9 @@ public class LearningEvaluateServiceImpl implements ILearningEvaluateService { * @return 【请填写功能名称】 */ @Override - public LearningEvaluateVo queryById(String ID) { + public LearningEvaluateVo queryById(String ID){ LearningEvaluateVo res = baseMapper.selectVoById(ID); - if (res.getCourseId() != null) { + if(res.getCourseId()!=null){ res.setCourseName(zjkLearningCourseMapper.selectById(res.getCourseId()).getCourseName()); } return res; @@ -68,21 +69,26 @@ public class LearningEvaluateServiceImpl implements ILearningEvaluateService { if (contains) { lqw.in(LearningEvaluate::getCreateBy, LoginHelper.getUserId()); } - if (!StringUtils.isEmpty(bo.getExpertName())) { + Page result = new Page<>(); + if(!StringUtils.isEmpty(bo.getExpertName())){ List uids = zjkExpertMapper.selectIdsByName(bo.getExpertName()); - if (!CollectionUtil.isEmpty(uids)) { + if(!CollectionUtil.isEmpty(uids)){ lqw.in(LearningEvaluate::getCreateBy, uids); + }else{ + return TableDataInfo.build(result); } } - if (!StringUtils.isEmpty(bo.getCourseName())) { + if(!StringUtils.isEmpty(bo.getCourseName())){ List cids = zjkLearningCourseMapper.selectIdsByName(bo.getCourseName()); - if (!CollectionUtil.isEmpty(cids)) { + if(!CollectionUtil.isEmpty(cids)){ lqw.in(LearningEvaluate::getCourseId, cids); + }else{ + return TableDataInfo.build(result); } } lqw.orderByDesc(LearningEvaluate::getCreateTime); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - result.getRecords().stream().forEach(o -> { + result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().stream().forEach(o ->{ o.setExpertName(zjkExpertMapper.selectByUserId(o.getCreateBy()).getExpertName()); o.setCourseName(zjkLearningCourseMapper.selectById(o.getCourseId()).getCourseName()); }); @@ -149,7 +155,7 @@ public class LearningEvaluateServiceImpl implements ILearningEvaluateService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(LearningEvaluate entity) { + private void validEntityBeforeSave(LearningEvaluate entity){ //TODO 做一些数据校验,如唯一约束 if (StringUtils.isBlank(entity.getID())) { entity.setID(IdUtil.simpleUUID()); // 或使用其他ID生成方式 @@ -165,7 +171,7 @@ public class LearningEvaluateServiceImpl implements ILearningEvaluateService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if (isValid) { + if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningSuggestServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningSuggestServiceImpl.java index c9303417c283329434ae63e3e27c18f7720e81fb..b3e84a27333ab0f366b7c70ea8f067cb42f14728 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningSuggestServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/LearningSuggestServiceImpl.java @@ -1,6 +1,5 @@ package org.dromara.zjk.service.impl; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -19,8 +18,8 @@ import org.dromara.zjk.domain.vo.LearningSuggestVo; import org.dromara.zjk.domain.LearningSuggest; import org.dromara.zjk.mapper.LearningSuggestMapper; import org.dromara.zjk.service.ILearningSuggestService; +import cn.hutool.core.collection.CollectionUtil; -import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Collection; @@ -61,13 +60,16 @@ public class LearningSuggestServiceImpl implements ILearningSuggestService { @Override public TableDataInfo queryPageList(LearningSuggestBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = new Page<>(); if(!StringUtils.isEmpty(bo.getExpertName())){ List uids = zjkExpertMapper.selectIdsByName(bo.getExpertName()); if(!CollectionUtil.isEmpty(uids)){ lqw.in(LearningSuggest::getCreateBy, uids); + }else{ + return TableDataInfo.build(result); } } - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result = baseMapper.selectVoPage(pageQuery.build(), lqw); result.getRecords().stream().forEach(o ->{ o.setExpertName(zjkExpertMapper.selectByUserId(o.getCreateBy()).getExpertName()); }); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkApprovalProcessLogsServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkApprovalProcessLogsServiceImpl.java index 26521ce411dc8cd32653255aec2e5b9438c09347..5c0e198b9cbeba75bce3a9cd0471b51039d0f281 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkApprovalProcessLogsServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkApprovalProcessLogsServiceImpl.java @@ -11,7 +11,9 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.zjk.domain.ZjkApprovalProcessLogs; import org.dromara.zjk.domain.bo.ZjkApprovalProcessLogsBo; import org.dromara.zjk.domain.vo.ZjkApprovalProcessLogsVo; +import org.dromara.zjk.domain.vo.ZjkDataChangesLogsVo; import org.dromara.zjk.mapper.ZjkApprovalProcessLogsMapper; +import org.dromara.zjk.mapper.ZjkLearningMaterialsMapper; import org.dromara.zjk.service.IZjkApprovalProcessLogsService; import org.springframework.stereotype.Service; @@ -30,7 +32,7 @@ import java.util.Map; public class ZjkApprovalProcessLogsServiceImpl implements IZjkApprovalProcessLogsService { private final ZjkApprovalProcessLogsMapper baseMapper; - + private final ZjkLearningMaterialsMapper zjkLearningMaterialsMapper; /** * 查询审批流程记录 * @@ -53,6 +55,7 @@ public class ZjkApprovalProcessLogsServiceImpl implements IZjkApprovalProcessLog public TableDataInfo queryPageList(ZjkApprovalProcessLogsBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(r -> r.setCreateByStr(zjkLearningMaterialsMapper.selectVoByUserId(r.getCreateBy()))); return TableDataInfo.build(result); } @@ -65,7 +68,9 @@ public class ZjkApprovalProcessLogsServiceImpl implements IZjkApprovalProcessLog @Override public List queryList(ZjkApprovalProcessLogsBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List zjkDataChangesLogsVos = baseMapper.selectVoList(lqw); + zjkDataChangesLogsVos.forEach(r -> r.setCreateByStr(zjkLearningMaterialsMapper.selectVoByUserId(r.getCreateBy()))); + return zjkDataChangesLogsVos; } private LambdaQueryWrapper buildQueryWrapper(ZjkApprovalProcessLogsBo bo) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditLvServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditLvServiceImpl.java index 20459a057c1863c0716fb9ca4762b8b06d787f3b..b4a5cd5dbbde9c4968c29a960c27a2a7a8d07d8c 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditLvServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditLvServiceImpl.java @@ -10,7 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.zjk.domain.ZjkCreditUser; +import org.dromara.zjk.domain.dto.CreditReqDto; import org.dromara.zjk.domain.vo.ZjkCreditUserVo; +import org.dromara.zjk.mapper.ZjkCreditMapper; import org.dromara.zjk.mapper.ZjkCreditUserMapper; import org.springframework.stereotype.Service; import org.dromara.zjk.domain.bo.ZjkCreditLvBo; @@ -36,7 +38,7 @@ public class ZjkCreditLvServiceImpl implements IZjkCreditLvService { private final ZjkCreditLvMapper baseMapper; private final ZjkCreditUserMapper zjkCreditUserMapper; - + private final ZjkCreditMapper zjkCreditMapper; /** * 查询【请填写功能名称】 * @@ -63,11 +65,11 @@ public class ZjkCreditLvServiceImpl implements IZjkCreditLvService { for (ZjkCreditLvVo zjkCreditLv : zjkCreditLvs) { Long creditSectionGe = zjkCreditLv.getCreditSectionGe(); Long creditSectionLe = zjkCreditLv.getCreditSectionLe(); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.le(ZjkCreditUser::getCreditCount,creditSectionGe); - lambdaQueryWrapper.ge(ZjkCreditUser::getCreditCount,creditSectionLe); - Long count = zjkCreditUserMapper.selectCount(lambdaQueryWrapper); - zjkCreditLv.setPersonSum(count); + CreditReqDto creditReqDto = new CreditReqDto(); + creditReqDto.setCredtieGe(creditSectionGe); + creditReqDto.setCrediteLe(creditSectionLe); + Integer pointCount = zjkCreditMapper.getPointCount(creditReqDto); + zjkCreditLv.setPersonSum(Long.valueOf(pointCount)); } return zjkCreditLvs; } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditUserServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditUserServiceImpl.java index 2374b1fcc3b135d1e58c0b42c7a3e9d138801441..ee49d970334d2687825ebbdb03812ce4a19037c5 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditUserServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkCreditUserServiceImpl.java @@ -174,7 +174,6 @@ public class ZjkCreditUserServiceImpl implements IZjkCreditUserService { lambdaQueryWrapper.orderBy(true,true,ZjkCreditUser::getUpdateTime).last("Limit 1"); ZjkCreditUser zjkCreditUser = baseMapper.selectOne(lambdaQueryWrapper); if(zjkCreditUser!=null){ - //修改用户总信用 zjkCreditUser.setExpertId(creditInfoDto.getExpertId()); zjkCreditUser.setUserId(creditInfoDto.getUserId()); @@ -331,52 +330,9 @@ public class ZjkCreditUserServiceImpl implements IZjkCreditUserService { } @Override - public R> selectUserById(ZjkCreditBo zjkCreditBo, PageQuery pageQuery) { - try { - int count = 0; - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(zjkCreditBo.getIntegralReason()!=null){ - queryWrapper.like(ZjkCreditRule::getRuleName,zjkCreditBo.getIntegralReason()); - count++; - } - List vos = new ArrayList<>(); - if(count!=0){ - List zjkCreditRuleVos = zjkCreditRuleMapper.selectVoList(queryWrapper); - if(zjkCreditRuleVos==null||zjkCreditRuleVos.size()<=0){ - return R.ok(); - } - vos = zjkCreditRuleVos.stream().map(ZjkCreditRuleVo::getRuleKey).collect(Collectors.toList()); - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - Long expertId = zjkCreditBo.getExpertId(); - - lambdaQueryWrapper.eq(ZjkCredit::getExpertId,expertId==null?LoginHelper.getUserId():expertId); - if(zjkCreditBo.getStartTime()!=null&&zjkCreditBo.getEndTime()!=null){ - lambdaQueryWrapper.ge(ZjkCredit::getUpdateTime,zjkCreditBo.getStartTime()); - lambdaQueryWrapper.le(ZjkCredit::getUpdateTime,zjkCreditBo.getEndTime()); - } - if(vos!=null&&vos.size()>0){ - lambdaQueryWrapper.in(ZjkCredit::getRuleId,vos); - } - Page zjkCreditVos = zjkCreditMapper.selectVoPage(pageQuery.build(), lambdaQueryWrapper); -// List zjkCreditVos = zjkCreditMapper.selectVoList(lambdaQueryWrapper); - //所偶有的信用分规则 - List zjkCreditRuleVos = zjkCreditRuleMapper.selectVoList(); - Map userMap = zjkCreditRuleVos.stream() - .collect(Collectors.toMap(ZjkCreditRuleVo::getID, user -> user)); - List zjkCreditRuleVos1 = new ArrayList<>(); - for (ZjkCreditVo zjkCreditVo : zjkCreditVos.getRecords()) { - if(zjkCreditVo.getRuleId()!=null){ - ZjkCreditRuleVo zjkCreditRuleVo = userMap.get(zjkCreditVo.getRuleId()); - zjkCreditRuleVo.setEachScore(zjkCreditVo.getCredit()); - zjkCreditRuleVo.setUpdateTime(zjkCreditVo.getUpdateTime()); - zjkCreditRuleVos1.add(zjkCreditRuleVo); - } - } - return R.ok(zjkCreditRuleVos1); - }catch (Exception e){ - return R.fail(); - } + public TableDataInfo selectUserById(ZjkCreditBo dto, PageQuery pageQuery) { + Page result = zjkCreditRuleMapper.selectCreditInfo(pageQuery.build(),dto); + return TableDataInfo.build(result); } @Override @@ -407,7 +363,7 @@ public class ZjkCreditUserServiceImpl implements IZjkCreditUserService { } //获取所有行用分低于 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.ge(ZjkCreditUser::getRewardId,4); + lambdaQueryWrapper.in(ZjkCreditUser::getRewardId,Arrays.asList("4","5","6")); if(collect1!=null&&collect1.size()>0){ lambdaQueryWrapper.in(ZjkCreditUser::getExpertId,collect1); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkDataChangesLogsServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkDataChangesLogsServiceImpl.java index e440bb7cdfcd7667a631fbd1f21c7b746cf7f71e..f18926e470d95d96327053c41312aae824465140 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkDataChangesLogsServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkDataChangesLogsServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.zjk.domain.bo.ZjkDataChangesLogsBo; import org.dromara.zjk.domain.vo.ZjkDataChangesLogsDetailVo; import org.dromara.zjk.domain.vo.ZjkDataChangesLogsVo; import org.dromara.zjk.mapper.ZjkDataChangesLogsMapper; +import org.dromara.zjk.mapper.ZjkLearningMaterialsMapper; import org.dromara.zjk.service.IZjkDataChangesLogsService; import org.springframework.stereotype.Service; @@ -33,7 +34,7 @@ import java.util.Map; public class ZjkDataChangesLogsServiceImpl implements IZjkDataChangesLogsService { private final ZjkDataChangesLogsMapper baseMapper; - + private final ZjkLearningMaterialsMapper zjkLearningMaterialsMapper; /** * 查询业务数据变更记录 * @@ -73,6 +74,7 @@ public class ZjkDataChangesLogsServiceImpl implements IZjkDataChangesLogsService public TableDataInfo queryPageList(ZjkDataChangesLogsBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(r -> r.setCreateByStr(zjkLearningMaterialsMapper.selectVoByUserId(r.getCreateBy()))); return TableDataInfo.build(result); } @@ -85,7 +87,9 @@ public class ZjkDataChangesLogsServiceImpl implements IZjkDataChangesLogsService @Override public List queryList(ZjkDataChangesLogsBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List zjkDataChangesLogsVos = baseMapper.selectVoList(lqw); + zjkDataChangesLogsVos.forEach(r -> r.setCreateByStr(zjkLearningMaterialsMapper.selectVoByUserId(r.getCreateBy()))); + return zjkDataChangesLogsVos; } private LambdaQueryWrapper buildQueryWrapper(ZjkDataChangesLogsBo bo) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkEvaluateServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkEvaluateServiceImpl.java index 8c8003c619c2c1d7305f167966f86f3ed1503a29..58d53cd562d8c27e0402df630d45416f14d385a5 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkEvaluateServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkEvaluateServiceImpl.java @@ -7,13 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.system.api.RemoteDictService; import org.dromara.system.api.model.RoleDTO; import org.dromara.zjk.domain.*; import org.dromara.zjk.domain.dto.CreditInfoDto; @@ -22,6 +22,7 @@ import org.dromara.zjk.domain.dto.PointInfoDto; import org.dromara.zjk.domain.dto.SelExpertRuleDto; import org.dromara.zjk.domain.vo.*; import org.dromara.zjk.mapper.*; +import org.dromara.zjk.service.IZjkReviewPhaseService; import org.dromara.zjk.service.ZjkEvaluateService; import org.dromara.zjk.utils.DateRangUtils; import org.dromara.zjk.utils.NumberGenerator; @@ -31,7 +32,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -44,6 +44,7 @@ import java.util.stream.Collectors; * @createDate 2024-11-01 10:11:52 */ @Service +@Slf4j public class ZjkEvaluateServiceImpl extends ServiceImpl implements ZjkEvaluateService { @Resource @@ -52,7 +53,6 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl getListToZj(ZjkEvaluateVO bo, PageQuery pageQuery) { Long userId = LoginHelper.getUserId(); @@ -87,7 +90,7 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl exUserIds = usersId.stream().distinct().collect(Collectors.toList()); bo.setUserId(String.valueOf(userId)); IPage result = baseMapper.getListToZj(pageQuery.build(), exUserIds, ruleIds, bo); - result.getRecords().stream().forEach(item->{ + result.getRecords().stream().forEach(item -> { item.setXmEvaluateStatus(checkStatu(item)); }); //setTrans(result.getRecords()); @@ -136,13 +139,13 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl evaIds = baseMapper.updateOtherInfoToUnPresent(zjkEvaluate); //更新对应积分 - if(!CollectionUtils.isEmpty(evaIds)){ + if (!CollectionUtils.isEmpty(evaIds)) { //清除未出席积分记录为0 - zjkPointMapper.clearUnPresentData(evaIds); + zjkPointMapper.clearUnPresentData(evaIds); } } - baseMapper.insert(zjkEvaluate); + baseMapper.insert(zjkEvaluate); //已出席,项目管理员评审专家后,需给财务打款记录表插入数据 try { if (zjkEvaluate.getSourceRole() != null && zjkEvaluate.getSourceRole() == 2 && zjkEvaluate.getIsPresent().equals("1")) { @@ -152,11 +155,13 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl expertListForSettle = zjkExpertMoneyInfoMapper.getExpertListForSettle(Long.parseLong(moneyInfo.getProductId()), Integer.parseInt(moneyInfo.getProductType())); + + if (!CollectionUtils.isEmpty(expertListForSettle)) { + List collect = expertListForSettle.stream().map(item -> String.valueOf(item.getExpertId())).collect(Collectors.toList()); + if (collect.contains(moneyInfo.getExpertId())) { + int insert = zjkExpertMoneyInfoMapper.insert(moneyInfo); + log.info("项目管理员评审专家后,给财务打款记录表插入数据:" + insert); + } else { + log.error("结算表已有同项目同阶段同专家id不做第二次录入"); + + } } - int insert = zjkExpertMoneyInfoMapper.insert(moneyInfo); - log.error("项目管理员评审专家后,给财务打款记录表插入数据:" + insert); + } } @@ -189,18 +207,25 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl wq = null; ZjkExpert zjkExpert = null; try { - PointInfoDto pointInfoEvent = new PointInfoDto(); - pointInfoEvent.setEvaluateId(zjkEvaluate.getId()); - pointInfoEvent.setRuleKey(UserConstants.POINT_EVALUATE_KEY); - pointInfoEvent.setExpertId(Long.valueOf(bo.getEvaluateUser())); - pointInfoEvent.setPoints(bo.getBusLevelScore().add(bo.getWorkAttitudeScore()).add(bo.getRightApprovalScore())); - wq = new QueryWrapper<>(); - wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); - zjkExpert = zjkExpertMapper.selectOne(wq); - if (zjkExpert != null) { - pointInfoEvent.setUserId(zjkExpert.getUserId()); + //对未积分冻结得用户进行积分新增录入 + QueryWrapper wqw = new QueryWrapper<>(); + wqw.lambda().eq(ZjkPointUser::getCheckStatus, 1).eq(ZjkPointUser::getExpertId, Long.valueOf(bo.getEvaluateUser())); + List zjkPointUsers = zjkPointUserMapper.selectList(wqw); + if(CollectionUtils.isEmpty(zjkPointUsers)){ + PointInfoDto pointInfoEvent = new PointInfoDto(); + pointInfoEvent.setEvaluateId(zjkEvaluate.getId()); + pointInfoEvent.setRuleKey(UserConstants.POINT_EVALUATE_KEY); + pointInfoEvent.setExpertId(Long.valueOf(bo.getEvaluateUser())); + pointInfoEvent.setPoints(bo.getBusLevelScore().add(bo.getWorkAttitudeScore()).add(bo.getRightApprovalScore())); + wq = new QueryWrapper<>(); + wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); + zjkExpert = zjkExpertMapper.selectOne(wq); + if (zjkExpert != null) { + pointInfoEvent.setUserId(zjkExpert.getUserId()); + } + eventPublisher.publishEvent(pointInfoEvent); } - eventPublisher.publishEvent(pointInfoEvent); + } catch (Exception e) { log.error("发布完成评价的积分事件异常"); e.printStackTrace(); @@ -208,37 +233,39 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ZjkCreditRule::getRuleKey, 3).last("Limit 1"); - ZjkCreditRuleVo zjkCreditRuleVo = zjkCreditRuleMapper.selectVoOne(lambdaQueryWrapper); - creditInfoDto.setRuleKey(UserConstants.CREDIT_ABSENCE_KEY); - creditInfoDto.setExpertId(Long.valueOf(bo.getEvaluateUser())); - creditInfoDto.setCreditSum(zjkCreditRuleVo.getEachScore()); - wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); - if (zjkExpert != null) { - creditInfoDto.setUserId(zjkExpert.getUserId()); - } - eventPublisher.publishEvent(creditInfoDto); - //如果机构管理员评价为参评就增加 - } else { - //发布完成评价的信用事件 - CreditInfoDto creditInfoDto = new CreditInfoDto(); - //获取信用规则 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ZjkCreditRule::getRuleKey, 1).last("Limit 1"); - ZjkCreditRuleVo zjkCreditRuleVo = zjkCreditRuleMapper.selectVoOne(lambdaQueryWrapper); - creditInfoDto.setRuleKey(UserConstants.CREDIT_REVIEW_KEY); - creditInfoDto.setExpertId(Long.valueOf(bo.getEvaluateUser())); - creditInfoDto.setCreditSum(zjkCreditRuleVo.getEachScore()); - wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); - if (zjkExpert != null) { - creditInfoDto.setUserId(zjkExpert.getUserId()); - } - eventPublisher.publishEvent(creditInfoDto); + if(zjkEvaluate.getSourceRole() == 2){ + if (zjkEvaluate.getIsPresent().equals("0")) { + //未出席,且是项目管理员进行的评价,信用分进行扣减 + CreditInfoDto creditInfoDto = new CreditInfoDto(); + //获取信用规则 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ZjkCreditRule::getRuleKey, 3).last("Limit 1"); + ZjkCreditRuleVo zjkCreditRuleVo = zjkCreditRuleMapper.selectVoOne(lambdaQueryWrapper); + creditInfoDto.setRuleKey(UserConstants.CREDIT_ABSENCE_KEY); + creditInfoDto.setExpertId(Long.valueOf(bo.getEvaluateUser())); + creditInfoDto.setCreditSum(zjkCreditRuleVo.getEachScore()); + wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); + if (zjkExpert != null) { + creditInfoDto.setUserId(zjkExpert.getUserId()); + } + eventPublisher.publishEvent(creditInfoDto); + }else{ + //发布完成评价的信用事件 + CreditInfoDto creditInfoDto = new CreditInfoDto(); + //获取信用规则 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ZjkCreditRule::getRuleKey, 1).last("Limit 1"); + ZjkCreditRuleVo zjkCreditRuleVo = zjkCreditRuleMapper.selectVoOne(lambdaQueryWrapper); + creditInfoDto.setRuleKey(UserConstants.CREDIT_REVIEW_KEY); + creditInfoDto.setExpertId(Long.valueOf(bo.getEvaluateUser())); + creditInfoDto.setCreditSum(zjkCreditRuleVo.getEachScore()); + wq.lambda().eq(ZjkExpert::getExpertId, bo.getEvaluateUser()); + if (zjkExpert != null) { + creditInfoDto.setUserId(zjkExpert.getUserId()); + } + eventPublisher.publishEvent(creditInfoDto); + } + } } catch (Exception e) { log.error("发布完成评价的信用事件异常"); @@ -272,6 +299,7 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl usersId = new ArrayList<>(); //限定我参与的项目 usersId.add(String.valueOf(userId)); + //限定项目管理员权限 bo.setUserId(String.valueOf(userId)); IPage result = baseMapper.getListToXm(pageQuery.build(), usersId, null, bo); return TableDataInfo.build(result); @@ -330,14 +358,14 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl getYdataByMonth(Map data, List monthsRange) { @@ -351,6 +379,8 @@ public class ZjkEvaluateServiceImpl extends ServiceImpl zjkExpertItemList = baseMapper.selectList(new LambdaQueryWrapper() - .eq(ZjkExpertItem::getReviewId, b.getReviewId())); - zjkItemExtreation.setExpertSum(zjkExpertItemList.size()); - zjkItemExtreation.setReviewId(b.getReviewId()); - zjkItemExtreationMapper.updateById(zjkItemExtreation); - // 根据这次的规则拿到上次的规则 - ZjkReviewPhase beforZjkReviewPhase = zjkReviewPhaseMapper.selectOne(new LambdaQueryWrapper() - .eq(ZjkReviewPhase::getReviewSn,zjkReviewPhase1.getReviewSn()) - .eq(ZjkReviewPhase::getItemId,zjkReviewPhase1.getItemId()) - .orderByDesc(ZjkReviewPhase::getId) // 按 id 降序排序 - .last("LIMIT 1") // 只取一条记录 + long startTime = System.currentTimeMillis(); + log.info("开始执行updateByBo方法,参数b.id={}", b.getReviewId()); + + try { + ZjkReviewPhase zjkReviewPhase1 = zjkReviewPhaseMapper.selectById(b.getReviewId()); + log.info("查询ZjkReviewPhase耗时: {}ms", System.currentTimeMillis() - startTime); + + //专家确认的截至时间 + Date noticeTime = zjkReviewPhase1.getNoticeTime(); + int compare = DateUtil.compare(noticeTime, new Date()); + if (compare < 0) { + throw new ServiceException("当前时间已超过专家确认截止时间,请修改抽取规则"); + } + + Long reviewId = zjkReviewPhase1.getId(); + if (zjkReviewPhase1.getParentId() != 0L) { + reviewId = zjkReviewPhase1.getParentId(); + } + + //根据规则获取所有项目id,阶段,已发送的 + Long zjkItemExtreationId = zjkReviewPhaseMapper.selectListByItem(reviewId); + log.info("selectListByItem耗时: {}ms", System.currentTimeMillis() - startTime); + + //修改之前的项目数据为失效 + ZjkItemExtreation zjkItemExtreation = zjkItemExtreationMapper.selectById(zjkItemExtreationId); + log.info("selectById ZjkItemExtreation耗时: {}ms", System.currentTimeMillis() - startTime); + + ZjkProduct zjkProduct = zjkProductMapper.selectById(zjkItemExtreation.getItemId()); + log.info("selectById ZjkProduct耗时: {}ms", System.currentTimeMillis() - startTime); + + zjkItemExtreation.setIsSure(1L); + zjkItemExtreation.setExtractionStatus(ItemExpertTypeEnum.EXTRACTION_SUCCESS_TYPE.getCode()); + //修改规则为有效 + ZjkReviewPhase zjkReviewPhase = new ZjkReviewPhase(); + zjkReviewPhase.setId(b.getReviewId()); + zjkReviewPhase.setEffective(ReviewTypeEnum.REVIEW_LOSE_TYPE.getCode()); + //完成按钮 把重抽原因清除 + zjkReviewPhase.setCauseRepum(null); + // 拿到这次的抽取记录 + long queryStartTime = System.currentTimeMillis(); + List zjkExpertItemList = baseMapper.selectList(new LambdaQueryWrapper() + .eq(ZjkExpertItem::getReviewId, b.getReviewId())); + log.info("查询ZjkExpertItemList耗时: {}ms, 结果数量: {}", System.currentTimeMillis() - queryStartTime, zjkExpertItemList.size()); + + zjkItemExtreation.setExpertSum(zjkExpertItemList.size()); + zjkItemExtreation.setReviewId(b.getReviewId()); + // 在执行update前添加日志,确认具体是哪条记录被锁定 + log.info("准备更新zjkItemExtreation记录,ID: {}, 当前时间: {}", zjkItemExtreation.getId(), new Date()); + zjkItemExtreationMapper.updateById(zjkItemExtreation); + log.info("zjkItemExtreation记录更新完成,ID: {}, 耗时: {}ms", zjkItemExtreation.getId(), System.currentTimeMillis() - startTime); + + // 根据这次的规则拿到上次的规则 + queryStartTime = System.currentTimeMillis(); + ZjkReviewPhase beforZjkReviewPhase = zjkReviewPhaseMapper.selectOne(new LambdaQueryWrapper() + .eq(ZjkReviewPhase::getReviewSn, zjkReviewPhase1.getReviewSn()) + .eq(ZjkReviewPhase::getItemId, zjkReviewPhase1.getItemId()) + .orderByDesc(ZjkReviewPhase::getId) // 按 id 降序排序 + .last("LIMIT 1") // 只取一条记录 ); - // 提取所有 userId - List expertIds = zjkExpertItemList.stream() - .map(ZjkExpertItem::getExpertId) - .collect(Collectors.toList()); - List zjkExpertList = zjkExpertMapper.selectList(new LambdaQueryWrapper().in(ZjkExpert::getExpertId,expertIds)); - Map groupedByUserId = zjkExpertList.stream() - .collect(Collectors.toMap( - ZjkExpert::getUserId, - expert -> expert, - (existing, replacement) -> existing)); - if (beforZjkReviewPhase != null) { - // 根据上次的规则拿到上次的抽取记录 - List beforeZjkExpertItemList = baseMapper.selectList(new LambdaQueryWrapper() - .eq(ZjkExpertItem::getReviewId, beforZjkReviewPhase.getId())); - // 循环更新状态 - Map beforeItemMap = beforeZjkExpertItemList.stream() - .collect(Collectors.toMap(ZjkExpertItem::getExpertId, item -> item)); - // 遍历 zjkExpertItemList,更新匹配记录 - for (ZjkExpertItem currentItem : zjkExpertItemList) { - ZjkExpertItem beforeItem = beforeItemMap.get(currentItem.getExpertId()); - if (beforeItem != null && (beforeItem.getAcceptStatus().equals("1")|| beforeItem.getAcceptStatus().equals("0"))) { - currentItem.setAcceptStatus(beforeItem.getAcceptStatus()); - currentItem.setConfirmCode(beforeItem.getConfirmCode()); - currentItem.setRefuseCode(beforeItem.getRefuseCode()); - } else { - // 新数据为待接受 - currentItem.setAcceptStatus(String.valueOf(ExpertItemTypeEnum.EXPERTITEM_NOTAFFIRM_TYPE.getCode())); - //获取每个被抽取到的专家的userid;发送消息 + log.info("查询beforZjkReviewPhase耗时: {}ms", System.currentTimeMillis() - queryStartTime); + + // 提取所有 userId + queryStartTime = System.currentTimeMillis(); + List expertIds = zjkExpertItemList.stream() + .map(ZjkExpertItem::getExpertId) + .collect(Collectors.toList()); + List zjkExpertList = zjkExpertMapper.selectList(new LambdaQueryWrapper().in(ZjkExpert::getExpertId, expertIds)); + log.info("查询ZjkExpertList耗时: {}ms, 结果数量: {}", System.currentTimeMillis() - queryStartTime, zjkExpertList.size()); + + Map groupedByUserId = zjkExpertList.stream() + .collect(Collectors.toMap( + ZjkExpert::getUserId, + expert -> expert, + (existing, replacement) -> existing)); + + if (beforZjkReviewPhase != null) { + log.info("处理历史数据逻辑开始"); + // 根据上次的规则拿到上次的抽取记录 + queryStartTime = System.currentTimeMillis(); + List beforeZjkExpertItemList = baseMapper.selectList(new LambdaQueryWrapper() + .eq(ZjkExpertItem::getReviewId, beforZjkReviewPhase.getId())); + log.info("查询beforeZjkExpertItemList耗时: {}ms, 结果数量: {}", System.currentTimeMillis() - queryStartTime, beforeZjkExpertItemList.size()); + + // 循环更新状态 + Map beforeItemMap = beforeZjkExpertItemList.stream() + .collect(Collectors.toMap(ZjkExpertItem::getExpertId, item -> item)); + // 遍历 zjkExpertItemList,更新匹配记录 + long processStartTime = System.currentTimeMillis(); + for (ZjkExpertItem currentItem : zjkExpertItemList) { + ZjkExpertItem beforeItem = beforeItemMap.get(currentItem.getExpertId()); + if (beforeItem != null && (beforeItem.getAcceptStatus().equals("1") || beforeItem.getAcceptStatus().equals("0"))) { + currentItem.setAcceptStatus(beforeItem.getAcceptStatus()); + currentItem.setConfirmCode(beforeItem.getConfirmCode()); + currentItem.setRefuseCode(beforeItem.getRefuseCode()); + } else { + // 新数据为待接受 + currentItem.setAcceptStatus(String.valueOf(ExpertItemTypeEnum.EXPERTITEM_NOTAFFIRM_TYPE.getCode())); + //获取每个被抽取到的专家的userid;发送消息 + scheduledExecutorService.schedule(() -> { + long msgStartTime = System.currentTimeMillis(); + try { + remoteMessageService.publishMessage(currentItem.getUserId(), "您有新的评审任务,请尽快确认"); + log.debug("发送站内消息给用户{}耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - msgStartTime); + } catch (Exception e) { + log.error("发送站内消息异常, 用户ID: {}, 耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - msgStartTime, e); + } + }, 3, TimeUnit.SECONDS); + + currentItem.setConfirmCode("是"); + currentItem.setRefuseCode("否"); + // 构建短信参数 + SmsSendDto smsSendDto = buildSmsSendDto(currentItem, groupedByUserId, zjkReviewPhase1, zjkProduct); + try { + long smsStartTime = System.currentTimeMillis(); + zjkSmsInfoService.sendSms(smsSendDto); + log.debug("发送短信给用户{}耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - smsStartTime); + } catch (Exception smsException) { + log.error("短信发送异常,发送参数:{}, 耗时: {}ms", smsSendDto, System.currentTimeMillis() - processStartTime, smsException); + } + } + //2024/12/3 add操作 确认时改变zjkExpertItem 记录的接受状态为确认(1) 借用枚举内的1 + currentItem.setExtractionStatus(ExtractionStautsEnum.CONFIRM.getCode()); + currentItem.setIsSure(1); + baseMapper.updateById(currentItem); + } + log.info("处理历史数据逻辑完成,耗时: {}ms", System.currentTimeMillis() - processStartTime); + } else { + log.info("首次确认逻辑开始"); + // 首次确认 进行随机码构建 + long processStartTime = System.currentTimeMillis(); + for (ZjkExpertItem currentItem : zjkExpertItemList) { + // 异步发送站内消息 scheduledExecutorService.schedule(() -> { - remoteMessageService.publishMessage(currentItem.getUserId(), "您有新的评审任务,请尽快确认"); + long msgStartTime = System.currentTimeMillis(); + try { + remoteMessageService.publishMessage(currentItem.getUserId(), "您有新的评审任务,请尽快确认"); + log.debug("发送站内消息给用户{}耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - msgStartTime); + } catch (Exception e) { + log.error("发送站内消息异常, 用户ID: {}, 耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - msgStartTime, e); + } }, 3, TimeUnit.SECONDS); - currentItem.setConfirmCode(NumberGenerator.generateRandomNumber(4)+"1"); - currentItem.setRefuseCode(NumberGenerator.generateRandomNumber(4)+"0"); + + currentItem.setConfirmCode(NumberGenerator.generateRandomNumber(4) + "1"); + currentItem.setRefuseCode(NumberGenerator.generateRandomNumber(4) + "0"); + // 更新当前条目的状态 + currentItem.setIsSure(1); + currentItem.setAcceptStatus(String.valueOf(ExpertItemTypeEnum.EXPERTITEM_NOTAFFIRM_TYPE.getCode())); + baseMapper.updateById(currentItem); + // 构建短信参数 SmsSendDto smsSendDto = buildSmsSendDto(currentItem, groupedByUserId, zjkReviewPhase1, zjkProduct); try { + long smsStartTime = System.currentTimeMillis(); zjkSmsInfoService.sendSms(smsSendDto); + log.debug("发送短信给用户{}耗时: {}ms", currentItem.getUserId(), System.currentTimeMillis() - smsStartTime); } catch (Exception smsException) { - log.error("短信发送异常,发送参数:{}",smsSendDto); - smsException.printStackTrace(); // 记录日志或做其他处理 + log.error("短信发送异常,发送参数:{}, 耗时: {}ms", smsSendDto, System.currentTimeMillis() - processStartTime, smsException); } } - //2024/12/3 add操作 确认时改变zjkExpertItem 记录的接受状态为确认(1) 借用枚举内的1 - currentItem.setExtractionStatus(ExtractionStautsEnum.CONFIRM.getCode()); - currentItem.setIsSure(1); - baseMapper.updateById(currentItem); + log.info("首次确认逻辑完成,耗时: {}ms", System.currentTimeMillis() - processStartTime); } - } else { - // 首次确认 进行随机码构建 - for (ZjkExpertItem currentItem : zjkExpertItemList) { - // 异步发送站内消息 - scheduledExecutorService.schedule(() -> - remoteMessageService.publishMessage(currentItem.getUserId(), "您有新的评审任务,请尽快确认"), - 3, TimeUnit.SECONDS - ); - currentItem.setConfirmCode(NumberGenerator.generateRandomNumber(4)+"1"); - currentItem.setRefuseCode(NumberGenerator.generateRandomNumber(4)+"0"); - // 更新当前条目的状态 - currentItem.setIsSure(1); - currentItem.setAcceptStatus(String.valueOf(ExpertItemTypeEnum.EXPERTITEM_NOTAFFIRM_TYPE.getCode())); - baseMapper.updateById(currentItem); - - // 构建短信参数 - SmsSendDto smsSendDto = buildSmsSendDto(currentItem, groupedByUserId, zjkReviewPhase1, zjkProduct); - try { - zjkSmsInfoService.sendSms(smsSendDto); - } catch (Exception smsException) { - log.error("短信发送异常,发送参数:{}",smsSendDto); - smsException.printStackTrace(); // 记录日志或做其他处理 + + zjkReviewPhaseMapper.updateById(zjkReviewPhase); + + //到达该时间后需要向项目管理员发送专家确认的情况 + long between = DateUtil.between(noticeTime, new Date(), DateUnit.SECOND); + String key = "zjcq_" + zjkReviewPhase1.getId(); + dynamicTask.startDelay(key, () -> sendConfirmSmsToXmManager(zjkReviewPhase1, zjkProduct), 1000 * between); + //专家抽取结果数据上区块链 + log.info("规则id为{},抽取的专家上区块链开始", reviewId); + try { + List data = this.getByReviewId(reviewId); + if (!CollectionUtils.isEmpty(data)) { + String jsonStr = JSONUtil.toJsonStr(data); + onChainUtils.toChainAsync(jsonStr, reviewId); } + } catch (Exception e) { + e.printStackTrace(); + log.error("规则id为{},抽取的专家上区块链异常", reviewId); } + log.info("规则id为{},抽取的专家上区块链结束", reviewId); + + log.info("updateByBo方法执行完成,总耗时: {}ms", System.currentTimeMillis() - startTime); + return true; + } catch (Exception e) { + log.error("updateByBo方法执行异常,总耗时: {}ms", System.currentTimeMillis() - startTime, e); + throw e; } - zjkReviewPhaseMapper.updateById(zjkReviewPhase); - - //到达该时间后需要向项目管理员发送专家确认的情况 - long between = DateUtil.between(noticeTime, new Date(), DateUnit.SECOND); - String key= "zjcq_"+zjkReviewPhase1.getId(); - dynamicTask.startDelay(key, () -> sendConfirmSmsToXmManager(zjkReviewPhase1, zjkProduct), 1000 * between); - //专家抽取结果数据上区块链 - OnchainDto onchainDto = new OnchainDto(); - onchainDto.setReviewId(reviewId); - eventPublisher.publishEvent(new OnchainEvent(this, onchainDto)); - return true; } + /** * 抽取截至通知短信发送 + * * @param phase * @param zjkProduct */ - private void sendConfirmSmsToXmManager(ZjkReviewPhase phase, ZjkProduct zjkProduct){ - List zjs= baseMapper.getCheckZjAccetpt(phase.getId()); - if (!CollectionUtil.isEmpty(zjs)) { - Integer size=zjs.size(); - //获取项目管理员的用户id - Long createBy = zjs.get(0).getCreateBy(); - String phone = baseMapper.checkUserPhoneExist(createBy); - if(!StringUtils.isEmpty(phone)){ - int acceptedCount = (int) zjs.stream() - .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.accept.getValue().equals(zjkExpertItem.getAcceptStatus())) - .count(); - - int unacceptedCount = (int) zjs.stream() - .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.no_accept.getValue().equals(zjkExpertItem.getAcceptStatus())) - .count(); - - int rejectedCount = (int) zjs.stream() - .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.reject.getValue().equals(zjkExpertItem.getAcceptStatus())) - .count(); - - int canceledCount = (int) zjs.stream() - .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.cancel.getValue().equals(zjkExpertItem.getAcceptStatus())) - .count(); - - SmsSendDto smsSendDto = new SmsSendDto(); - smsSendDto.setBatchType(1); - smsSendDto.setReceiveUserIds(Arrays.asList(createBy)); - smsSendDto.setSendBy(createBy); - JSONObject jsonObject = new JSONObject(); - String reviewSnDesc = ReviewSnEnum.getByCode(phase.getReviewSn()).getDesc(); - jsonObject.put("productName", zjkProduct.getProductName()); - jsonObject.put("reviewSn", reviewSnDesc != null ? reviewSnDesc : ""); - jsonObject.put("num", size); - if(size==acceptedCount){ - //全部接收 - smsSendDto.setTemplateId(SmsTemplateEnum.SMS_NOTICE_ACCEPT.getCode()); - - }else{ - //部分接收 - smsSendDto.setTemplateId(SmsTemplateEnum.SMS_NOTICE_NO_ACCEPT.getCode()); - jsonObject.put("noAcceptNum", unacceptedCount); - jsonObject.put("rejectNum", rejectedCount); - jsonObject.put("acceptNum", acceptedCount); - //部分接收修改抽取状态 - // 更新抽取人数 - ZjkItemExtreation zjkItemExtreation =zjkItemExtreationMapper.selectOne(new LambdaQueryWrapper() - .eq(ZjkItemExtreation::getId,phase.getItemExtreationId())); - if (zjkItemExtreation != null){ - zjkItemExtreation.setExtractedSum(zjkItemExtreation.getExtractedSum()-unacceptedCount-rejectedCount); - zjkItemExtreation.setExtractionStatus(1); - zjkItemExtreationMapper.updateById(zjkItemExtreation); + private void sendConfirmSmsToXmManager(ZjkReviewPhase phase, ZjkProduct zjkProduct) { + List zjs = baseMapper.getCheckZjAccetpt(phase.getId()); + if (!CollectionUtil.isEmpty(zjs)) { + Integer size = zjs.size(); + //获取项目管理员的用户id + Long createBy = zjs.get(0).getCreateBy(); + String phone = baseMapper.checkUserPhoneExist(createBy); + if (!StringUtils.isEmpty(phone)) { + int acceptedCount = (int) zjs.stream() + .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.accept.getValue().equals(zjkExpertItem.getAcceptStatus())) + .count(); + + int unacceptedCount = (int) zjs.stream() + .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.no_accept.getValue().equals(zjkExpertItem.getAcceptStatus())) + .count(); + + int rejectedCount = (int) zjs.stream() + .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.reject.getValue().equals(zjkExpertItem.getAcceptStatus())) + .count(); + + int canceledCount = (int) zjs.stream() + .filter(zjkExpertItem -> ZjkExpertItemAcceptStatus.cancel.getValue().equals(zjkExpertItem.getAcceptStatus())) + .count(); + + SmsSendDto smsSendDto = new SmsSendDto(); + smsSendDto.setBatchType(1); + smsSendDto.setReceiveUserIds(Arrays.asList(createBy)); + smsSendDto.setSendBy(createBy); + JSONObject jsonObject = new JSONObject(); + String reviewSnDesc = ReviewSnEnum.getByCode(phase.getReviewSn()).getDesc(); + jsonObject.put("productName", zjkProduct.getProductName()); + jsonObject.put("reviewSn", reviewSnDesc != null ? reviewSnDesc : ""); + jsonObject.put("num", size); + if (size == acceptedCount) { + //全部接收 + smsSendDto.setTemplateId(SmsTemplateEnum.SMS_NOTICE_ACCEPT.getCode()); + + } else { + //部分接收 + smsSendDto.setTemplateId(SmsTemplateEnum.SMS_NOTICE_NO_ACCEPT.getCode()); + jsonObject.put("noAcceptNum", unacceptedCount); + jsonObject.put("rejectNum", rejectedCount); + jsonObject.put("acceptNum", acceptedCount); + //部分接收修改抽取状态 + // 更新抽取人数 + ZjkItemExtreation zjkItemExtreation = zjkItemExtreationMapper.selectOne(new LambdaQueryWrapper() + .eq(ZjkItemExtreation::getId, phase.getItemExtreationId())); + if (zjkItemExtreation != null) { + zjkItemExtreation.setExtractedSum((zjkItemExtreation.getExtractedSum() - unacceptedCount - rejectedCount) < 0 ? 0 : zjkItemExtreation.getExtractedSum() - unacceptedCount - rejectedCount); + zjkItemExtreation.setExtractionStatus(1); + zjkItemExtreationMapper.updateById(zjkItemExtreation); + } + } + smsSendDto.setParamJson(jsonObject); + try { + zjkSmsInfoService.sendSms(smsSendDto); + } catch (Exception smsException) { + log.error("抽取截至通知短信发送异常,发送参数:{}", smsSendDto); + smsException.printStackTrace(); // 记录日志或做其他处理 } } - smsSendDto.setParamJson(jsonObject); - try { - zjkSmsInfoService.sendSms(smsSendDto); - } catch (Exception smsException) { - log.error("抽取截至通知短信发送异常,发送参数:{}",smsSendDto); - smsException.printStackTrace(); // 记录日志或做其他处理 - } - } - } + } } @@ -423,9 +492,11 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { String reviewSnDesc = ReviewSnEnum.getByCode(zjkReviewPhase1.getReviewSn()).getDesc(); jsonObject.put("reviewSn", reviewSnDesc != null ? reviewSnDesc : ""); jsonObject.put("reviewPlace", zjkReviewPhase1.getReviewPlace()); - jsonObject.put("confirmCode",currentItem.getConfirmCode()); + jsonObject.put("confirmCode", currentItem.getConfirmCode()); jsonObject.put("noticeTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, zjkReviewPhase1.getNoticeTime())); - jsonObject.put("refuseCode",currentItem.getRefuseCode()); + jsonObject.put("refuseCode", currentItem.getRefuseCode()); + jsonObject.put("productPer", zjkProduct.getUnitBy()); + jsonObject.put("productTel", stringCryptoUtil.decryptField(zjkProduct.getUnitConcat())); smsSendDto.setParamJson(jsonObject); return smsSendDto; } @@ -572,6 +643,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { zjkProjectExpertItemBo.setReviewPlace(zjkReviewPhaseVo.getReviewPlace()); zjkProjectExpertItemBo.setReviewTime(zjkReviewPhaseVo.getReviewTime()); zjkProjectExpertItemBo.setItemid(zjkReviewPhaseVo.getItemId()); + zjkProjectExpertItemBo.setNoticeTime(zjkReviewPhaseVo.getNoticeTime()); // 每个领域需要抽多少人 if (zjkReviewPhaseVo.getArea() != null && zjkReviewPhaseVo.getArea() != "") { String[] pairs = zjkReviewPhaseVo.getArea().split(","); @@ -852,7 +924,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { case "random": zjkProjectExpertItemBo.setZjkReviewPhase(zjkReviewPhase); // 随机抽取获取满足条件的专家 id - List randomed = random(zjkProjectExpertItemBo, remoZjkExpertItems,new ArrayList<>()); + List randomed = random(zjkProjectExpertItemBo, remoZjkExpertItems, new ArrayList<>()); if (CollectionUtil.isEmpty(randomed)) { //抽取失败 throw new ServiceException("抽取失败"); @@ -991,7 +1063,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { } zjkProjectExpertItemBo.setExpertIds(nameList); List specifiedExpertList = zjkProjectExpertItemBo.getExpertsId(); - List random = random(zjkProjectExpertItemBo, remoZjkExpertItems,specifiedExpertList); + List random = random(zjkProjectExpertItemBo, remoZjkExpertItems, specifiedExpertList); if (random == null) { //抽取失败 throw new ServiceException("抽取失败"); @@ -1158,12 +1230,12 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { public List concatenated(String name) { //获取字典中的所有领域名称 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); - if (name != null) { - lambdaQueryWrapper.like(ZjkExpert::getExpertName, name); - } - lambdaQueryWrapper.eq(ZjkExpert::getStatus, 2); - List zjkExpertVos = zjkExpertMapper.selectVoList(lambdaQueryWrapper); +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); +// if (name != null) { +// lambdaQueryWrapper.like(ZjkExpert::getExpertName, name); +// } +// lambdaQueryWrapper.eq(ZjkExpert::getStatus, 2); + List zjkExpertVos = zjkExpertMapper.getConcatenatedExpert(name); return zjkExpertVos; } @@ -1203,7 +1275,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { Integer extractedSum = zjkItemExtreation.getExpertSum(); Integer extractionCount = zjkReviewPhase1.getPlannedIntake(); Integer i = extractedSum - extractionCount; - zjkItemExtreation.setExtractedSum(i); + zjkItemExtreation.setExtractedSum(i < 0 ? 0 : i); zjkItemExtreationMapper.updateById(zjkItemExtreation); } else { //修改记录表状态 @@ -1211,7 +1283,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { Integer extractedSum = zjkItemExtreation.getExpertSum(); Integer extractionCount = zjkReviewPhase1.getPlannedIntake(); Integer i = extractedSum - extractionCount; - zjkItemExtreation.setExtractedSum(i); + zjkItemExtreation.setExtractedSum(i < 0 ? 0 : i); zjkItemExtreationMapper.updateById(zjkItemExtreation); } // 获取规则下的专家信息 @@ -1305,7 +1377,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { } //随机抽取 - public List random(ZjkProjectExpertItemBo zjkProjectExpertItemBo, Set remoZjkExpertItems,List specifiedExpertList) { + public List random(ZjkProjectExpertItemBo zjkProjectExpertItemBo, Set remoZjkExpertItems, List specifiedExpertList) { int count = 0; // 补抽人数逻辑 if (zjkProjectExpertItemBo.getRedraw() && zjkProjectExpertItemBo.getSupplementNum() != null) { @@ -1319,7 +1391,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { zjkProjectExpertItemBo.setCount((int) (zjkProjectExpertItemBo.getSupplementNum() - expertsCout)); } // 随机抽取专家的逻辑 - List zjkExpertVos = zjkExpertService.queryByExpertltemList(zjkProjectExpertItemBo, zjkProjectExpertItemBo.getExtractioRestrictio(), zjkProjectExpertItemBo,remoZjkExpertItems,specifiedExpertList); + List zjkExpertVos = zjkExpertService.queryByExpertltemList(zjkProjectExpertItemBo, zjkProjectExpertItemBo.getExtractioRestrictio(), zjkProjectExpertItemBo, remoZjkExpertItems, specifiedExpertList); log.info("排除条件后 查询专家结果集{}", zjkExpertVos); if (CollectionUtil.isEmpty(zjkExpertVos)) { log.info("不存在符合抽取条件的专家"); @@ -1670,6 +1742,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { } } } + private Long lastUnfulfilledArea = null; // 保存最后一个不满足条件的领域 private boolean assignExperts( @@ -1718,7 +1791,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { return backtrackCombination( availableExperts, combination, 0, requiredCount, expert -> { assignedExperts.add(expert); - if(concurrence){ + if (concurrence) { assignedUnits.add(expert.getWorkUnit()); } @@ -1726,7 +1799,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { }, expert -> { assignedExperts.remove(expert); - if(concurrence){ + if (concurrence) { assignedUnits.remove(expert.getWorkUnit()); } result.get(currentArea).remove(expert); @@ -1789,7 +1862,6 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { } - private static void generateCombinations(List experts, Long n, int start, List current, List> result) { if (current.size() == n) { result.add(new ArrayList<>(current)); @@ -1806,7 +1878,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { private static Map> getAreaToExpertsMap(List experts) { Map> areaToExpertsMap = new HashMap<>(); for (ZjkExpertVo expert : experts) { - if(StringUtils.isNotBlank(expert.getPerformWorkId())){ + if (StringUtils.isNotBlank(expert.getPerformWorkId())) { for (String area : expert.getAreaList()) { areaToExpertsMap.computeIfAbsent(Long.parseLong(area), k -> new ArrayList<>()).add(expert); } @@ -1824,10 +1896,10 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { Map> areaToExperts = getAreaToExpertsMap(allExperts); log.info("全部专家集合====================================================="); for (Long area1 : areaToExperts.keySet()) { - log.info("领域: {}" , area1); + log.info("领域: {}", area1); List zjkExpertVos = areaToExperts.get(area1); for (ZjkExpertVo expert : zjkExpertVos) { - log.info("专家姓名:{}——专家单位:{}",expert.getExpertName() , expert.getWorkUnit()); + log.info("专家姓名:{}——专家单位:{}", expert.getExpertName(), expert.getWorkUnit()); } } log.info("全部专家集合结束====================================================="); @@ -1844,13 +1916,13 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { boolean success = assignExperts(areaList, areaToExperts, new HashSet<>(), assignedUnits, result, 0, concurrence); if (success) { - log.info("领域: {}","领域分配成功"); + log.info("领域: {}", "领域分配成功"); Set areaMap = result.keySet(); for (Long area : areaMap) { - log.info("领域: {}",area); + log.info("领域: {}", area); List zjkExpertVos = result.get(area); for (ZjkExpertVo expert : zjkExpertVos) { - log.info("专家姓名:{},专家单位{}",expert.getExpertName(),expert.getWorkUnit()); + log.info("专家姓名:{},专家单位{}", expert.getExpertName(), expert.getWorkUnit()); } } } else { @@ -1863,7 +1935,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { Collections.shuffle(allExperts, new Random()); allExperts.removeAll(expertList); log.info("剩余专家列表{}", allExperts); - if(concurrence){ + if (concurrence) { allExperts = allExperts.stream().filter(s -> !assignedUnits.contains(s.getWorkUnit())).toList(); } Integer planCount = bo.getCount(); @@ -1905,7 +1977,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { // 假设 encryptClient.encrypt() 是可重复加密,返回固定密文 String encryptField = stringCryptoUtil.encryptField(smsUpEventDto.getMobile()); - ZjkExpert zjkExpert = baseMapper.selectExpertByCodeAndPhone(smsUpEventDto.getContent(),encryptField); + ZjkExpert zjkExpert = baseMapper.selectExpertByCodeAndPhone(smsUpEventDto.getContent(), encryptField); /* ZjkExpert zjkExpert = zjkExpertMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkExpert::getExpertId, item.getExpertId()) .eq(ZjkExpert::getDeleteFlag, UserConstants.DEL_FLAG_NORMAL));*/ @@ -1913,21 +1985,21 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { throw new IllegalArgumentException("未找到对应的专家信息"); } - String lastContent = smsUpEventDto.getContent().substring(smsUpEventDto.getContent().length() - 1); - int smsIsSuer; - try { - smsIsSuer = Integer.parseInt(lastContent); - } catch (NumberFormatException e) { - throw new IllegalArgumentException("短信内容最后一位不是有效数字: " + lastContent, e); - } + String checkChar = smsUpEventDto.getContent().substring(smsUpEventDto.getContent().length() - 1); +// int smsIsSuer; +// try { +// smsIsSuer = Integer.parseInt(lastContent); +// } catch (NumberFormatException e) { +// throw new IllegalArgumentException("短信内容最后一位不是有效数字: " + lastContent, e); +// } // 构建专家记录 ZjkExpertItemBo zjkExpertItemBo = new ZjkExpertItemBo(); zjkExpertItemBo.setExpertId(zjkExpert.getExpertId()); zjkExpertItemBo.setUserId(zjkExpert.getUserId()); - zjkExpertItemBo.setSmsIsSuer(smsIsSuer); + zjkExpertItemBo.setSmsIsSuer("是".equals(checkChar) ? 1 : 0); - if (smsIsSuer == 1) { + if ("是".equals(checkChar)) { zjkExpertItemBo.setConfirmCode(smsUpEventDto.getContent()); } else { zjkExpertItemBo.setRefuseCode(smsUpEventDto.getContent()); @@ -1939,9 +2011,9 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { } // 更新接收状态 - zjkExpertItem.setAcceptStatus(smsIsSuer == 1 ? "1" : "2"); + zjkExpertItem.setAcceptStatus("是".equals(checkChar) ? "1" : "2"); - if (smsIsSuer != 1) { + if (!"是".equals(checkChar)) { // 获取抽取规则并更新抽取人数 updateExtractionStatus(zjkExpertItem); } @@ -1953,11 +2025,11 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { public void cancelExpert() { String cancelExpert = remoteConfigService.selectConfigByKey("cancel_expert"); - if(StringUtils.isBlank(cancelExpert)){ + if (StringUtils.isBlank(cancelExpert)) { return; } List zjkExpertItemVos = baseMapper.selectCancle(cancelExpert); - if(CollectionUtil.isEmpty(zjkExpertItemVos)){ + if (CollectionUtil.isEmpty(zjkExpertItemVos)) { return; } @@ -1966,15 +2038,15 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { List zjkExpertItems = BeanUtil.copyToList(zjkExpertItemVos, ZjkExpertItem.class); - zjkExpertItems.forEach(s->s.setAcceptStatus("2")); + zjkExpertItems.forEach(s -> s.setAcceptStatus("2")); baseMapper.updateBatchById(zjkExpertItems); List zjkItemExtreations = zjkItemExtreationMapper.selectBatchIds(listMap.keySet()); - zjkItemExtreations.forEach(s->{ - if(listMap.get(s.getId())!=null){ + zjkItemExtreations.forEach(s -> { + if (listMap.get(s.getId()) != null) { List cancleExpertList = listMap.get(s.getId()); - s.setExtractedSum(s.getExtractedSum()-cancleExpertList.size()); + s.setExtractedSum((s.getExtractedSum() - cancleExpertList.size()) < 0 ? 0 : s.getExtractedSum() - cancleExpertList.size()); } }); zjkItemExtreationMapper.updateBatchById(zjkItemExtreations); @@ -1989,7 +2061,7 @@ public class ZjkExpertItemServiceImpl implements IZjkExpertItemService { ZjkItemExtreation zjkItemExtreation = zjkItemExtreationMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkItemExtreation::getId, zjkReviewPhase.getItemExtreationId())); if (zjkItemExtreation != null) { - zjkItemExtreation.setExtractedSum(zjkItemExtreation.getExtractedSum() - 1); + zjkItemExtreation.setExtractedSum((zjkItemExtreation.getExtractedSum() - 1) < 0 ? 0 : (zjkItemExtreation.getExtractedSum() - 1)); zjkItemExtreation.setExtractionStatus(1); zjkItemExtreationMapper.updateById(zjkItemExtreation); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertLogServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertLogServiceImpl.java index b4886874e208a16d2bb650b9078a038357b36668..f3ab6551d88f3b2ff54014eb65e9d21d20f2b7d3 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertLogServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertLogServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -31,6 +32,7 @@ import java.util.Map; public class ZjkExpertLogServiceImpl implements IZjkExpertLogService { private final ZjkExpertLogMapper baseMapper; + private final DictService dictService; /** * 查询入库记录 @@ -66,7 +68,11 @@ public class ZjkExpertLogServiceImpl implements IZjkExpertLogService { @Override public List queryList(ZjkExpertLogBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List zjkExpertLogVos = baseMapper.selectVoList(lqw); + zjkExpertLogVos.stream().forEach(item->{ + item.setEntryResultStr(item.getEntryResult()==1?"通过":"入库失败"); + }); + return zjkExpertLogVos; } private LambdaQueryWrapper buildQueryWrapper(ZjkExpertLogBo bo) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMajorServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMajorServiceImpl.java index 2401dcbb3077802050e2d59b509f2fbc704496b4..9931a969113d971dae6fb2fbd7c7227cfdbab556 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMajorServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMajorServiceImpl.java @@ -32,6 +32,11 @@ public class ZjkExpertMajorServiceImpl implements IZjkExpertMajorService { private final ZjkExpertMajorMapper baseMapper; + @Override + public void saveBatch(List zjkExpertMajorList) { + baseMapper.insertBatch(zjkExpertMajorList); + } + /** * 查询专家库 专业关系表 * diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMoneyInfoServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMoneyInfoServiceImpl.java index cc4ccce462a8ec5831c0780586a137601d8deafc..03da14993f7493e3a4e727640ba102a918011818 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMoneyInfoServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertMoneyInfoServiceImpl.java @@ -24,8 +24,11 @@ import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.mapper.ZjkExpertMoneyConfigMapper; import org.dromara.zjk.mapper.ZjkExpertMoneyInfoMapper; import org.dromara.zjk.mapper.ZjkProductMapper; +import org.dromara.zjk.service.IZjkReviewPhaseService; import org.dromara.zjk.service.ZjkExpertMoneyInfoService; import org.dromara.zjk.utils.NumberGenerator; +import org.dromara.zjk.zwy.utils.StringCryptoUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -51,16 +54,23 @@ public class ZjkExpertMoneyInfoServiceImpl extends ServiceImpl queryPageList(ZjkExpertMoneyInfoBo bo, PageQuery pageQuery) { - LambdaQueryWrapper wrapper = buildQueryWrapper(bo); - Page result = baseMapper.selectMoneyInfoList(pageQuery.build(), bo); + public TableDataInfo queryPageList(ZjkExpertMoneyInfoBo bo, PageQuery pageQuery) { + + String phone = stringCryptoUtil.encryptField(bo.getExpertContact()); + String idcard = stringCryptoUtil.encryptField(bo.getExpertIdcard()); + bo.setExpertContact(phone); + bo.setExpertIdcard(idcard); + Page result = baseMapper.selectMoneyInfoList(pageQuery.build(), bo); return TableDataInfo.build(result); } @@ -182,7 +192,7 @@ public class ZjkExpertMoneyInfoServiceImpl extends ServiceImpl zjkExpertMoneyInfos = baseMapper.selectList(wp); - if(!CollectionUtil.isEmpty(zjkExpertMoneyInfos)){ + if (!CollectionUtil.isEmpty(zjkExpertMoneyInfos)) { throw new ServiceException("该项目阶段下已经有专家录入了结算单不可重复录入!"); } @@ -190,8 +200,8 @@ public class ZjkExpertMoneyInfoServiceImpl extends ServiceImpl 0; if (flag) { bo.setMoneyId(add.getMoneyId()); @@ -243,8 +253,8 @@ public class ZjkExpertMoneyInfoServiceImpl extends ServiceImpl getJsList(Long productId, Integer reviewSn, String expertId) { - QueryWrapper wq = new QueryWrapper<>(); - wq.lambda().eq(ZjkExpertMoneyInfo::getProductId, productId).eq(ZjkExpertMoneyInfo::getProductType, reviewSn) - .eq(ZjkExpertMoneyInfo::getStatus, MoneySettlementStatusEnum.NO_SETTLEMENT.getCode()).eq(ZjkExpertMoneyInfo::getExpertId, expertId); - List res = baseMapper.selectList(wq); + List res = baseMapper.selectJsList(productId, reviewSn, expertId); return res; } @Override public List getExpertList(Long productId, Integer reviewSn) { - List res = baseMapper.getExpertList(productId, reviewSn); + List res = baseMapper.getExpertList(productId, reviewSn); return res; } + + @Override + public List getExpertListForSettle(Long productId, Integer reviewSn) { + //已有的结算,不再进行新增 + List list = baseMapper.getExpertListForSettle(productId, reviewSn); + return list; + } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertServiceImpl.java index 377079b3328568ab2fc6e24ed2baddf7591c50f7..838c9ef4f333beeb4878e66fb8ea39eaa97f43bb 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkExpertServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.zjk.service.impl; import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.http.HttpUtil; @@ -12,16 +13,21 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.DateRange; +import org.dromara.common.core.domain.R; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.exception.user.UserException; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.excel.core.DropDownOptions; +import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -40,6 +46,7 @@ import org.dromara.workflow.api.domain.event.ProcessEvent; import org.dromara.workflow.api.domain.event.ProcessTaskEvent; import org.dromara.zjk.annualInspection.annualInspectionAudit.domain.ZjkAnnualInspection; import org.dromara.zjk.annualInspection.annualInspectionAudit.mapper.ZjkAnnualInspectionMapper; +import org.dromara.zjk.config.SyncRemortUserConfig; import org.dromara.zjk.domain.*; import org.dromara.zjk.domain.bo.ZjkCreditUserBo; import org.dromara.zjk.domain.bo.ZjkExpertBo; @@ -47,11 +54,8 @@ import org.dromara.zjk.domain.bo.ZjkProjectExpertItemBo; import org.dromara.zjk.domain.dto.ProfessorsDto; import org.dromara.zjk.domain.vo.*; import org.dromara.zjk.enums.*; -import org.dromara.zjk.expert.expertAwards.domain.ZjkExpertAwards; import org.dromara.zjk.expert.expertAwards.service.IZjkExpertAwardsService; -import org.dromara.zjk.expert.expertPaper.domain.ZjkExpertPaper; import org.dromara.zjk.expert.expertPaper.service.IZjkExpertPaperService; -import org.dromara.zjk.expert.expertPatent.domain.ZjkExpertPatent; import org.dromara.zjk.expert.expertPatent.service.IZjkExpertPatentService; import org.dromara.zjk.mapper.*; import org.dromara.zjk.service.*; @@ -70,13 +74,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -132,26 +136,28 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { private final ZjkExpertItemMapper zjkExpertItemMapper; private final ZjkCreditMapper zjkCreditMapper; + private final ZjkExpertMoneyConfigMapper zjkExpertMoneyConfigMapper; // 用户服务 远程调用 - @DubboReference(timeout=5000) + @DubboReference(timeout = 5000) private RemoteUserService remoteUserService; - @DubboReference(timeout=5000) + @DubboReference(timeout = 5000) private RemoteDeptService remoteDeptService; - @DubboReference(timeout=5000) + @DubboReference(timeout = 5000) private RemoteConfigService remoteConfigService; - @DubboReference(timeout=5000) + @DubboReference(timeout = 5000) private RemoteFileService remoteFileService; - @DubboReference(timeout=20000) + @DubboReference(timeout = 20000) private RemoteWorkflowService remoteWorkflowService; @DubboReference(stub = "true") private final RemoteMessageService remoteMessageService; + private final ZjkReviewPhaseMapper zjkReviewPhaseMapper; private final ZjkProductMapper zjkProductMapper; @@ -162,8 +168,8 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { @Autowired private StringCryptoUtil stringCryptoUtil; -// @Value("${api.type.sxzwfw.online-third-professorList}") - private String professorList; + @Resource + private SyncRemortUserConfig syncRemortUserConfig; /** @@ -187,7 +193,20 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { ZjkExpertHistory zjkExpertHistory = zjkExpertHistoryMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkExpertHistory::getExpectId, zjkExpertVo.getExpertId()).eq(ZjkExpertHistory::getDeleteFlag, UserConstants.DEL_FLAG_NORMAL)); if (zjkExpertHistory != null && zjkExpertVo.getApprovalType() == ApprovalTypeEnum.CHANGESTO_INFORMATION.getCode()) { - zjkExpertVo.setModifiedFields(zjkExpertHistory.getModifiedFields()); + JSONObject jsonObject = JSONObject.parseObject(zjkExpertHistory.getModifiedFields()); + JSONObject afterOper = (JSONObject) jsonObject.get("afterOper"); + List list = Arrays.asList("身份证", "邮箱", "联系方式"); + for (String key : list) { + if (afterOper.containsKey(key)) { + String encryptedValue = afterOper.getString(key); + if (StringUtils.isNotBlank(encryptedValue)) { + String decryptedValue = stringCryptoUtil.decryptField(encryptedValue); + afterOper.put(key, decryptedValue); + } + } + } + jsonObject.put("afterOper", afterOper); + zjkExpertVo.setModifiedFields(jsonObject.toJSONString()); } return zjkExpertVo; } @@ -207,6 +226,10 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { } else { lqw.eq(ZjkExpert::getStatus, bo.getStatus()); } + if (StringUtils.isNotBlank(bo.getContact())) { + String phone = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(phone); + } lqw.orderBy(true, true, ZjkExpert::getStatus); lqw.orderBy(true, false, ZjkExpert::getUpdateTime); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); @@ -219,12 +242,21 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { */ @Override public TableDataInfo expertList(ZjkExpertBo bo, PageQuery pageQuery) { + + if (StringUtils.isNotBlank(bo.getContact())) { + String phone = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(phone); + } Page result = baseMapper.expertList(pageQuery.build(), bo); return TableDataInfo.build(result); } @Override public TableDataInfo expertInquiry(ZjkExpertBo bo, PageQuery pageQuery) { + // 2025-08-11 搜索时敏感字段需先加密 + String encryptContact = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(encryptContact); + Page result = baseMapper.expertInquiry(pageQuery.build(), bo); return TableDataInfo.build(result); } @@ -250,12 +282,16 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { */ @Override public List exportList(ZjkExpertBo bo) { + // 2025-08-11 搜索时敏感字段需先加密 + String encryptContact = stringCryptoUtil.encryptField(bo.getContact()); + bo.setContact(encryptContact); + LambdaQueryWrapper lqw = buildQueryWrapper(bo); if (StringUtils.isNotBlank(bo.getExpertIds())) { - List expertIds= List.of(bo.getExpertIds().split(",")); - if (CollectionUtils.isNotEmpty(expertIds)) { - lqw.in(ZjkExpert::getExpertId, expertIds); - } + List expertIds = List.of(bo.getExpertIds().split(",")); + if (CollectionUtils.isNotEmpty(expertIds)) { + lqw.in(ZjkExpert::getExpertId, expertIds); + } } lqw.eq(ZjkExpert::getStatus, ZjkExpertTypeEnum.NORMAL.getCode()); lqw.orderBy(true, true, ZjkExpert::getStatus); @@ -283,7 +319,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { @Override @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(ZjkExpertBo bo) { - try{ + try { // 状态不为空且是暂存的时候 if (bo.getStatus() != null && bo.getStatus() == ZjkExpertTypeEnum.STAGING.getCode()) { bo.setStatus(ZjkExpertTypeEnum.STAGING.getCode()); @@ -299,7 +335,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { .eq(ZjkExpert::getUserId, userId) .eq(ZjkExpert::getDeleteFlag, UserConstants.DEL_FLAG_NORMAL) ); - if(existingExpert!=null){ + if (existingExpert != null) { //解密 decryptIfNotBlank(existingExpert::getContact, existingExpert::setContact); decryptIfNotBlank(existingExpert::getIdCard, existingExpert::setIdCard); @@ -402,23 +438,24 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { // // 调用远程服务 发起审批流程 // 暂存情况下 不发起审批流 - if (bo.getStatus() != null && bo.getStatus() != ZjkExpertTypeEnum.STAGING.getCode()){ + if (bo.getStatus() != null && bo.getStatus() != ZjkExpertTypeEnum.STAGING.getCode()) { Map variables = Map.of( "entity", Map.of( - "approvalType",bo.getApprovalType() + "approvalType", bo.getApprovalType() ) ); Map startedWorkFlowMap = remoteWorkflowService.startWorkFlow(String.valueOf(addExpert.getExpertId()), "zjk_expert", variables); - log.info("ID:{}姓名:{}手机号:{}身份证号:{}专家工作流相关数据taskInfoMap:{}",addExpert.getExpertId(),addExpert.getExpertName(),addExpert.getContact(),addExpert.getIdCard(),JSON.toJSONString(startedWorkFlowMap)); - remoteWorkflowService.completeTask(startedWorkFlowMap.get("taskId").toString(), new ArrayList<>(List.of("1")),null, String.valueOf(addExpert.getExpertId())); + log.info("ID:{}姓名:{}手机号:{}身份证号:{}专家工作流相关数据taskInfoMap:{}", addExpert.getExpertId(), addExpert.getExpertName(), addExpert.getContact(), addExpert.getIdCard(), JSON.toJSONString(startedWorkFlowMap)); + remoteWorkflowService.completeTask(startedWorkFlowMap.get("taskId").toString(), new ArrayList<>(List.of("1")), null, String.valueOf(addExpert.getExpertId())); } refreshHmac(addExpert.getExpertId()); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); throw new ServiceException(e.getMessage()); } return true; } + private void decryptIfNotBlank(Supplier getter, Consumer setter) { String value = getter.get(); if (value != null && !value.isBlank()) { @@ -428,6 +465,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { /** * 校验专家以及专家附属信息的hmac + * * @param expertId */ @Override @@ -464,7 +502,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { // 生成哈希与 HMAC 值(如需加密服务调用,请替换此行) String hash = ObjectHashGenerator.generateHash(composite); String base64 = Base64.getEncoder().encodeToString(hash.getBytes(StandardCharsets.UTF_8)); - String hmac = hmacClient.calculateHmac(base64); + String hmac = hmacClient.calculateHmac(base64); // String hmac = base64; // 更新专家主表的 HMAC 字段 @@ -478,6 +516,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { log.error("生成专家 HMAC 失败,专家ID: {}", expertId, e); } } + @Override public Map getExpertObjectById(Long expertId) { try { @@ -529,13 +568,27 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { return true; } List zjkExpertList = new ArrayList<>(); + List zjkExpertMajors = new ArrayList<>(); list.forEach(a -> { ZjkExpert add = MapstructUtils.convert(a, ZjkExpert.class); add.setApprovalType(ApprovalTypeEnum.EXPERTSAPPLY.getCode()); add.setStatus(ZjkExpertTypeEnum.NORMAL.getCode()); + + //处理专家专业和学历 + ZjkExpertMajor zjkExpertMajor = new ZjkExpertMajor(); + zjkExpertMajor.setMajor(a.getMajor()); + zjkExpertMajor.setDegree(a.getDegree() == null ? null : Integer.valueOf(a.getDegree())); + zjkExpertMajor.setUserId(add.getUserId()); + zjkExpertMajors.add(zjkExpertMajor); zjkExpertList.add(add); }); baseMapper.insertBatch(zjkExpertList); + zjkExpertList.stream().forEach(a -> { + zjkExpertMajors.stream().filter(b -> b.getUserId().equals(a.getUserId())).forEach(b -> { + b.setExpertId(a.getExpertId()); + }); + }); + zjkExpertMajorService.saveBatch(zjkExpertMajors); List zjkCreditUserList = new ArrayList<>(); List zjkCreditList = new ArrayList<>(); for (ZjkExpert zjkExpert : zjkExpertList) { @@ -554,7 +607,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { } zjkCreditUserMapper.insertBatch(zjkCreditUserList); zjkCreditMapper.insertBatch(zjkCreditList); - return true; + return true; } /** @@ -599,80 +652,80 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { ZjkExpert add = MapstructUtils.convert(bo, ZjkExpert.class); try { - ZjkExpert zjkExpertInfo = baseMapper.selectById(bo.getExpertId()); - // 如果状态为通过并且 为专家申请 设置审批时间 - if (add.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() && zjkExpertInfo.getApprovalType() == ApprovalTypeEnum.EXPERTSAPPLY.getCode()) { - //同步信用用户 查询当前专家是否存在数据 存在不进行处理 - ZjkCreditUser zjkCreditUser = zjkCreditUserMapper.selectOne(new LambdaQueryWrapper() - .eq(ZjkCreditUser::getUserId, zjkExpertInfo.getUserId()) - .eq(ZjkCreditUser::getExpertId, zjkExpertInfo.getExpertId())); - if (zjkCreditUser == null) { - ZjkCreditUserBo zjkCreditUserBo = new ZjkCreditUserBo(); - zjkCreditUserBo.setExpertId(zjkExpertInfo.getExpertId()); - zjkCreditUserBo.setUserId(zjkExpertInfo.getUserId()); - zjkCreditUserBo.setChangeTime(new Date()); - zjkCreditUserService.insertByBo(zjkCreditUserBo); - //新增一条信用记录 - ZjkCredit zjkCredit = new ZjkCredit(); - zjkCredit.setExpertId(zjkExpertInfo.getExpertId()); - zjkCredit.setCreditCount(100L); - zjkCredit.setUserId(zjkExpertInfo.getUserId()); - zjkCredit.setCredit(+100L); - zjkCreditMapper.insert(zjkCredit); - add.setApprovalTime(new Date()); + ZjkExpert zjkExpertInfo = baseMapper.selectById(bo.getExpertId()); + // 如果状态为通过并且 为专家申请 设置审批时间 + if (add.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() && zjkExpertInfo.getApprovalType() == ApprovalTypeEnum.EXPERTSAPPLY.getCode()) { + //同步信用用户 查询当前专家是否存在数据 存在不进行处理 + ZjkCreditUser zjkCreditUser = zjkCreditUserMapper.selectOne(new LambdaQueryWrapper() + .eq(ZjkCreditUser::getUserId, zjkExpertInfo.getUserId()) + .eq(ZjkCreditUser::getExpertId, zjkExpertInfo.getExpertId())); + if (zjkCreditUser == null) { + ZjkCreditUserBo zjkCreditUserBo = new ZjkCreditUserBo(); + zjkCreditUserBo.setExpertId(zjkExpertInfo.getExpertId()); + zjkCreditUserBo.setUserId(zjkExpertInfo.getUserId()); + zjkCreditUserBo.setChangeTime(new Date()); + zjkCreditUserService.insertByBo(zjkCreditUserBo); + //新增一条信用记录 + ZjkCredit zjkCredit = new ZjkCredit(); + zjkCredit.setExpertId(zjkExpertInfo.getExpertId()); + zjkCredit.setCreditCount(100L); + zjkCredit.setUserId(zjkExpertInfo.getUserId()); + zjkCredit.setCredit(+100L); + zjkCreditMapper.insert(zjkCredit); + add.setApprovalTime(new Date()); + } } - } - // 入库记录 - ZjkExpertLog expertLog = new ZjkExpertLog(); - expertLog.setExpertId(zjkExpertInfo.getExpertId()); - expertLog.setName(zjkExpertInfo.getExpertName()); - expertLog.setContactInfo(zjkExpertInfo.getContact()); - expertLog.setOrganization(zjkExpertInfo.getWorkUnit()); - expertLog.setPosition(zjkExpertInfo.getDuty()); - expertLog.setEntryResult(bo.getStatus() == 2 ? ResultTypeEnum.SUCCESS.getCode() : ResultTypeEnum.ERROR.getCode()); - expertLog.setApplicationTime(zjkExpertInfo.getUpdateTime()); - expertLog.setRejectionReason(bo.getRemark()); - zjkExpertLogMapper.insert(expertLog); - // 审批流程记录 - zjkApprovalProcessLogsService.saveCommonApprovalRecord(bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() ? ApprovalProcessTypeEnum.APPROVAL_PASSED.getCode() : ApprovalProcessTypeEnum.APPROVAL_REFUSED.getCode(), - zjkExpertInfo.getApprovalType() == ApprovalTypeEnum.EXPERTSAPPLY.getCode() ? ApprovalProcessBusinessTypeEnum.Expert_warehousing.getCode() : ApprovalProcessBusinessTypeEnum.CHANGES_EXPERT_INFORMATION.getCode(), - bo.getRemark()); - scheduledExecutorService.schedule(() -> { - remoteMessageService.publishMessage(zjkExpertInfo.getUserId(), bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() ? "您的专家信息审核通已通过" : "您的专家信息审核被驳回"); - }, 3, TimeUnit.SECONDS); - ZjkExpertHistory zjkExpertHistory = zjkExpertHistoryMapper.selectOne(new LambdaQueryWrapper().eq(ZjkExpertHistory::getExpectId, zjkExpertInfo.getExpertId()).eq(ZjkExpertHistory::getDeleteFlag, UserConstants.DEL_FLAG_NORMAL)); - if (zjkExpertHistory != null) { - zjkExpertHistoryMapper.deleteById(zjkExpertHistory.getId()); - } - // 根据审核状态走不同的工作流 1. 根据业务 id 获取相关信息 + // 入库记录 + ZjkExpertLog expertLog = new ZjkExpertLog(); + expertLog.setExpertId(zjkExpertInfo.getExpertId()); + expertLog.setName(zjkExpertInfo.getExpertName()); + expertLog.setContactInfo(zjkExpertInfo.getContact()); + expertLog.setOrganization(zjkExpertInfo.getWorkUnit()); + expertLog.setPosition(zjkExpertInfo.getDuty()); + expertLog.setEntryResult(bo.getStatus() == 2 ? ResultTypeEnum.SUCCESS.getCode() : ResultTypeEnum.ERROR.getCode()); + expertLog.setApplicationTime(zjkExpertInfo.getUpdateTime()); + expertLog.setRejectionReason(bo.getRemark()); + zjkExpertLogMapper.insert(expertLog); + // 审批流程记录 + zjkApprovalProcessLogsService.saveCommonApprovalRecord(bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() ? ApprovalProcessTypeEnum.APPROVAL_PASSED.getCode() : ApprovalProcessTypeEnum.APPROVAL_REFUSED.getCode(), + zjkExpertInfo.getApprovalType() == ApprovalTypeEnum.EXPERTSAPPLY.getCode() ? ApprovalProcessBusinessTypeEnum.Expert_warehousing.getCode() : ApprovalProcessBusinessTypeEnum.CHANGES_EXPERT_INFORMATION.getCode(), + bo.getRemark()); + scheduledExecutorService.schedule(() -> { + remoteMessageService.publishMessage(zjkExpertInfo.getUserId(), bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode() ? "您的专家信息审核通已通过" : "您的专家信息审核被驳回"); + }, 3, TimeUnit.SECONDS); + ZjkExpertHistory zjkExpertHistory = zjkExpertHistoryMapper.selectOne(new LambdaQueryWrapper().eq(ZjkExpertHistory::getExpectId, zjkExpertInfo.getExpertId()).eq(ZjkExpertHistory::getDeleteFlag, UserConstants.DEL_FLAG_NORMAL)); + if (zjkExpertHistory != null) { + zjkExpertHistoryMapper.deleteById(zjkExpertHistory.getId()); + } + // 根据审核状态走不同的工作流 1. 根据业务 id 获取相关信息 Map taskInfoMap = remoteWorkflowService.getTaskInfoByBusinessKey(String.valueOf(zjkExpertInfo.getExpertId())); - log.info("姓名:{}手机号:{}身份证号:{}专家工作流相关数据taskInfoMap:{}",zjkExpertInfo.getExpertName(),zjkExpertInfo.getContact(),zjkExpertInfo.getIdCard(),JSON.toJSONString(taskInfoMap)); + log.info("姓名:{}手机号:{}身份证号:{}专家工作流相关数据taskInfoMap:{}", zjkExpertInfo.getExpertName(), zjkExpertInfo.getContact(), zjkExpertInfo.getIdCard(), JSON.toJSONString(taskInfoMap)); // 审批通过时 进行工作流通过 否则驳回 - if (bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode()){ - log.info("姓名:{}手机号:{}身份证号:{}审批通过",zjkExpertInfo.getExpertName(),zjkExpertInfo.getContact(),zjkExpertInfo.getIdCard()); + if (bo.getStatus() == ZjkExpertTypeEnum.NORMAL.getCode()) { + log.info("姓名:{}手机号:{}身份证号:{}审批通过", zjkExpertInfo.getExpertName(), zjkExpertInfo.getContact(), zjkExpertInfo.getIdCard()); // 创建嵌套 Map Map result = Map.of( "entity", Map.of( - "status",bo.getStatus(), - "approvalType",zjkExpertInfo.getApprovalType() + "status", bo.getStatus(), + "approvalType", zjkExpertInfo.getApprovalType() ) ); - remoteWorkflowService.completeTask(taskInfoMap.get("taskId").toString(), new ArrayList<>(List.of("1")),result, String.valueOf(zjkExpertInfo.getExpertId())); + remoteWorkflowService.completeTask(taskInfoMap.get("taskId").toString(), new ArrayList<>(List.of("1")), result, String.valueOf(zjkExpertInfo.getExpertId())); } else { - log.info("姓名:{}手机号:{}身份证号:{}审批驳回",zjkExpertInfo.getExpertName(),zjkExpertInfo.getContact(),zjkExpertInfo.getIdCard()); + log.info("姓名:{}手机号:{}身份证号:{}审批驳回", zjkExpertInfo.getExpertName(), zjkExpertInfo.getContact(), zjkExpertInfo.getIdCard()); // 获取可驳回的流程 id String targetActivityId = remoteWorkflowService.getNodeList(taskInfoMap.get("processInstanceId").toString()); - log.info("可驳回的流程:{}",targetActivityId); + log.info("可驳回的流程:{}", targetActivityId); // 进行驳回操作 - String backResult = remoteWorkflowService.backProcess(taskInfoMap.get("taskId").toString(), new ArrayList<>(List.of("1")),targetActivityId,bo.getRemark()); - log.info("姓名:{} 手机号:{} 身份证号:{} 驳回状态:{}",zjkExpertInfo.getExpertName(),zjkExpertInfo.getContact(),zjkExpertInfo.getIdCard(),backResult); + String backResult = remoteWorkflowService.backProcess(taskInfoMap.get("taskId").toString(), new ArrayList<>(List.of("1")), targetActivityId, bo.getRemark()); + log.info("姓名:{} 手机号:{} 身份证号:{} 驳回状态:{}", zjkExpertInfo.getExpertName(), zjkExpertInfo.getContact(), zjkExpertInfo.getIdCard(), backResult); } boolean b = baseMapper.updateStatusById(add) > 0; refreshHmac(zjkExpertInfo.getExpertId()); return b; - } catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); throw new ServiceException("系统异常,请联系管理员处理"); } @@ -772,7 +825,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { userWrapper.ge(ZjkCreditUser::getRewardId, 4); List zjkCreditUsers = zjkCreditUserMapper.selectList(userWrapper); List collect2 = zjkCreditUsers.stream().map(ZjkCreditUser::getExpertId).collect(Collectors.toList()); - log.info("黑名单专家结果集{}",collect2); + log.info("黑名单专家结果集{}", collect2); if (collect2 != null && collect2.size() > 0) { expertIds.addAll(collect2); } @@ -794,9 +847,9 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); //回避专家 - if(CollectionUtils.isNotEmpty(zjkProjectExpertItemBo.getExpertIds())){ + if (CollectionUtils.isNotEmpty(zjkProjectExpertItemBo.getExpertIds())) { expertIds.addAll(zjkProjectExpertItemBo.getExpertIds()); - log.info("回避专家结果集{}",collect2); + log.info("回避专家结果集{}", collect2); } //请假过滤,获取在开标时间段内请假的专家并过滤 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -808,20 +861,20 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { Set set = zjkLeaveVos.stream().filter(s -> s.getCreateBy() != null).map(ZjkLeaveVo::getCreateBy).collect(Collectors.toSet()); if (CollectionUtil.isNotEmpty(set)) { lqw.notIn(ZjkExpert::getUserId, set); - log.info("长期请假用户集合{}",set); + log.info("长期请假用户集合{}", set); } if (CollectionUtil.isNotEmpty(zjkProjectExpertItemBo.getExtractArea())) { if (zjkProjectExpertItemBo.getExtractArea().size() == 1) { lqw.eq(ZjkExpert::getProvince, zjkProjectExpertItemBo.getProvinces()); - log.info("抽取回避 省市区 --省{}",zjkProjectExpertItemBo.getProvinces()); + log.info("抽取回避 省市区 --省{}", zjkProjectExpertItemBo.getProvinces()); } if (zjkProjectExpertItemBo.getExtractArea().size() == 2) { lqw.eq(ZjkExpert::getCity, zjkProjectExpertItemBo.getProvinces()); - log.info("抽取回避 省市区 --市{}",zjkProjectExpertItemBo.getProvinces()); + log.info("抽取回避 省市区 --市{}", zjkProjectExpertItemBo.getProvinces()); } if (zjkProjectExpertItemBo.getExtractArea().size() == 3) { lqw.eq(ZjkExpert::getArea, zjkProjectExpertItemBo.getProvinces()); - log.info("抽取回避 省市区 --区{}",zjkProjectExpertItemBo.getProvinces()); + log.info("抽取回避 省市区 --区{}", zjkProjectExpertItemBo.getProvinces()); } } if (zjkProjectExpertItemBo.getZjkReviewPhase() != null && zjkProjectExpertItemBo.getZjkReviewPhase().getParentId() != null) { @@ -838,7 +891,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { if (CollectionUtil.isNotEmpty(zjkReviewPhases)) { List collect = zjkReviewPhases.stream().map(ZjkReviewPhase::getId).collect(Collectors.toList()); collect1.addAll(collect); - log.info("项目请假专家集合{}",collect); + log.info("项目请假专家集合{}", collect); } LambdaQueryWrapper lambdasQuery = new LambdaQueryWrapper<>(); @@ -853,7 +906,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { .collect(Collectors.toList()); zjkProjectExpertItemBo.setExpertIds(collect); expertIds.addAll(collect); - log.info("发送通知结果集{}",collect); + log.info("发送通知结果集{}", collect); } } @@ -870,10 +923,10 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { .collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(idList)) { List zjkExpertItemVos = zjkExpertItemMapper.selectBatchByReviewIds(idList); - if(CollectionUtil.isNotEmpty(zjkExpertItemVos)){ + if (CollectionUtil.isNotEmpty(zjkExpertItemVos)) { List expertIdList = zjkExpertItemVos.stream().map(ZjkExpertItemVo::getExpertId).toList(); expertIds.addAll(expertIdList); - log.info("屏蔽同天评审专家集{}",expertIdList); + log.info("屏蔽同天评审专家集{}", expertIdList); } } } @@ -906,7 +959,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { } if (CollectionUtil.isNotEmpty(unit)) { lqw.notIn(ZjkExpert::getWorkUnit, unit); - log.info("屏蔽本单位 {}",unit); + log.info("屏蔽本单位 {}", unit); } lqw.eq(ZjkExpert::getStatus, 2); @@ -918,7 +971,7 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { ); if (CollectionUtil.isNotEmpty(expertIds)) { lqw.notIn(ZjkExpert::getExpertId, expertIds); - log.info("排除全部专家集合{}",expertIds); + log.info("排除全部专家集合{}", expertIds); } return baseMapper.selectVoList(lqw); } @@ -981,11 +1034,13 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { @Override @Transactional(rollbackFor = Exception.class) - public List imports(MultipartFile file) { + public R imports(MultipartFile file) { try { InputStream inputStream = file.getInputStream(); // 文件转化 - List zjkExpertVos = ExcelUtil.importExcel(inputStream, ZjkExpertBo.class); + ExcelResult zjkExpertBoExcelResult = ExcelUtil.importExcel(inputStream, ZjkExpertBo.class, true); + log.info("抓夹导入数据报错数据大小:{}", zjkExpertBoExcelResult.getErrorList().size()); + List zjkExpertVos = zjkExpertBoExcelResult.getList(); // 提取所有的身份证号 List idCards = zjkExpertVos.stream() .map(ZjkExpertBo::getIdCard) @@ -1005,7 +1060,41 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { // 如果存在重复的身份证号则提示,剔除之后再次导入 if (!CollUtil.isEmpty(existingIdCards)) { // 将身份证号列表转换为用逗号分隔的字符串 - return existingIdCards; + // 如果存在重复的身份证号则提示,剔除之后再次导入 + // 将身份证号列表转换为用逗号分隔的字符串 + return R.fail("以下身份证号专家已经存在,请剔除后再次导入专家数据:" + String.join(", ", existingIdCards)); + } + //省市区 进行校验 + List strings = new ArrayList<>(); + zjkExpertVos.stream().forEach(item -> { + StringBuffer errorMsg = new StringBuffer(); + String province = baseMapper.getProvinceByName(item.getProvince()); + if (province == null) { + errorMsg.append(item.getProvince() + "不存在;"); + errorMsg.append("
"); + } else { + item.setProvince(province); + } + String city = baseMapper.getCityByNameAndProvinceId(province, item.getCity()); + if (city == null) { + errorMsg.append(item.getCity() + "不存在;"); + errorMsg.append("
"); + } else { + item.setCity(city); + } + String area = baseMapper.getAreaByNameAndCityId(city, item.getArea()); + if (area == null) { + errorMsg.append(item.getArea() + "不存在;"); + errorMsg.append("
"); + } else { + item.setArea(area); + } + if (errorMsg.length() > 0) { + strings.add(errorMsg.toString()); + } + }); + if (strings.size() > 0) { + return R.fail("以下地址信息有误:" + String.join(", ", strings)); } // 注册用户信息 List remoteUserBoList = new ArrayList<>(); @@ -1065,14 +1154,29 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { if (userId != null) { expert.setUserId(userId); } + + }); + //处理职称等级 + //得到职称-数字一一对应list + List expertMoneyConfigList = zjkExpertMoneyConfigMapper.getExpertMoneyConfig(); + if (expertMoneyConfigList != null && !expertMoneyConfigList.isEmpty()) { + for (ZjkExpertBo ex : filteredZjkExpertVos) { + //因为数据库职称是数字 转换成汉字 + for (SelectOptionVo selectOptionVo : expertMoneyConfigList) { + if (selectOptionVo.getLabel().equals(ex.getPositionTitleLevelStr())) { + ex.setPositionTitleLevel(Long.valueOf(selectOptionVo.getValue()));//赋予汉字职称 + } + } + } + } insertList(filteredZjkExpertVos); - } catch (Exception e) { - e.printStackTrace(); + } catch (IOException e) { + log.error("导入发票信息失败,{}", e.getMessage()); throw new ServiceException("导入失败请联系管理员"); } - return new ArrayList<>(); + return R.ok(); } @Override @@ -1208,139 +1312,328 @@ public class ZjkExpertServiceImpl implements IZjkExpertService { return baseMapper.getUserIdByPhone(tel); } + @Override @Transactional(rollbackFor = Exception.class) - public void fetchRemoteProfessors() { - // 初始页面参数 - int currentPage = 1; - int pageSize = 10; // 每页10条数据 - ProfessorsDto allProfessorsDto = new ProfessorsDto(); // 用于存储所有请求到的数据 - int totalPage = 1; // 默认总页数为1 + public SyncUserReturnVO fetchRemoteProfessors() { + SyncUserReturnVO result = null; + int syncCount = 0; // 审批局获取的用户总数 + int actualNum = 0; // 实际需要同步的用户数 try { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - - // 使用循环动态获取每一页数据 - while (currentPage <= totalPage) { - String url = professorList + "?pageNumber=" + currentPage + "&pageSize=" + pageSize; - String response = HttpUtil.createGet(url).execute().body(); -// String response = "{\"code\":\"00000\",\"msg\":\"操作成功\",\"data\":{\"data\":\"fx/cZTfDSwcPlU9Lgkud8WIe66mxnyHwO/OKG3WKfqRk0AcMGufIdvVZB4HT7ASPbXngSbZXABXzoHhC6kiUS7jE3EgyYqgLQoLO4+1az6cqjGaFT+GH3tZ87CCMM4nsN0O3FzD6h1jydUhHirkVLmqT76SO1czXEqIXxbNGl6YhzXV8k4oQXOZAnXnXwCZX5yYitsJKrxllHuCTEAsISWhWTx3BS5gDFA3Qr7rzJgJ9PFQrvzAw9G/5K3v6BSwEwhDradTJUkchzIgIGIg2PNlGN1Onajz6IAUk+WV7obgHCAy9DTXt+34Tu48xuGA4g7coNziI7GzAG3tCx2ldO2XaRDCTnRb+unRbXXU9q7iSx/Cz7z7oLvid9sOK7VHqzim8XXc6XoaVT6ShqsLK5xEum8+zc6m8CzM4CZy5WMAXIgXbLybaTZ0FmK8tqFFB2NGhrSa13RdNs7PMU5Wsl2b/Ml4g3d3uzgD1zVCeHg1GulGhxehvhYMbeVyOWCGjDw6zw8J3EjBXrQKFIeczMga4EQuXWIp3+hJZvs4YIsvRvK0u6/Bs2IK+cThyKADUMKCuGLPWrueEapZ3zcdWGRCtan6+0GM+pyQw1ko1YnfUhE5HLvSgeaMUZlCjT+D3H2ucwSRimkBGDh+M9qdudx5YZBLwj6rnNbHqVLxE9Dhs+2sVCxIJslChxD7eJkR2CrUBGejJOoXGglcjcOUSkuYclmguJSelEeGHy/AFwRFe5G+LUF/Hfr0Lt+dpA4RV9eg4smaq8yCyaYUs+sjJg6dI8MjTDPL7JWjo9ginMDMbgbj3ZNxtzFdUswq/Z5J/FJ3H1wzSyaXKo9XRN/yebTB30XTdePLWfnOron/KDW0uXHU/UMXHefc6yX970c8PbZR+rUxYl0ow53f78HS2+o8cPUNTowC9VLQvlHgpmuuT1QMBFrV22MyBgBE7pBdWhdytC0pj96P9Bb+JBeSouFAxdM9U1qs5c5e8/xn9p7cgviMrYzAVEXK4Hy4rKel0MtdqrJZaF32Qd9Ke8ZVaP2geaDhI/TRAGUiJ3HDzDwxteeBJtlcAFfOgeELqSJRLLhJCOwxl4L4e47Pv80esk6Tp41+P3CGG7j1ljPZYaE47c6FfWh4aD3BdjOv7K5qhx3ZF5sErxAgJI/YTJmi1PoSG6P4UlOkWdXSjVBod3qrUVNUksXruaCg2duoT7y0sHGZv0CpBWf0Z/zr/1RJNYg2YJQ4AqTOVeyANRJe162TkdMs1Jm814a9lvGB6z0hL3l/iZE4N+AFQGcqhyCrMMPtGa+HwAQU5Fd0GRxW4thgqHAvElGaHTBa0xTyPS71xXkm73MykIPeMHZQ6Bzma1mXaRDCTnRb+unRbXXU9q7iplJEujP5XfYRMg2yHv6upFJ3H1wzSyaXKo9XRN/yebcbr98MkDGjBVqf5ugl/paV/pTx2FimbVdKzRaFGE7G6pNcUylm2NeQGbOUl/zDYslbbpHxvP/XJKDE+Bn5OVvMLsDS3VlsBQ6Oh5J6hoRXIYtoA/7b0CjJtcvYMngn5P7kUwbmaRo+0zgOuCOVzA0gP/fKw1lSGyEJa+Nq5bEto\"}}"; - JSONObject jsonResponse = JSON.parseObject(response); - - if (!"00000".equals(jsonResponse.getString("code"))) { - break; - } + // 1. 获取所有远程专家数据 + List allProfessors = fetchAllRemoteProfessors(); + syncCount = allProfessors.size(); + log.info("审批局需要同步的总用户量为: {}", syncCount); + + // 2. 过滤出需要同步的专家数据(去重) + List filteredProfessors = filterNeedSyncProfessors(allProfessors); + actualNum = filteredProfessors.size(); + log.info("审批局去重后需要同步的用户量为: {}", actualNum); + + // 3. 处理并同步过滤后的专家数据 + if (actualNum > 0) { + processAndSyncProfessors(filteredProfessors); + } + log.info("成功同步 {} 条专家数据", actualNum); - // 获取最里面的 "data" 并解密 - String innerData = AesUtils.decrypt(jsonResponse.getJSONObject("data").getString("data"), "KlzY40Xw2wywV9Me"); + result = new SyncUserReturnVO(); + result.setStatu(true); + result.setMsg("数据同步完成,共新增 " + actualNum + " 条专家数据"); + } catch (Exception e) { + log.error("同步远程专家数据失败", e); + throw new ServiceException("同步远程专家数据失败强联系管理员!"); + } - // 将响应数据转化为 ProfessorsDto 对象 - ProfessorsDto dto = objectMapper.readValue(innerData, ProfessorsDto.class); + return result; + } + + /** + * 从远程接口获取所有专家数据 + */ + private List fetchAllRemoteProfessors() throws Exception { + int pageSize = 10; // 每页10条数据 + + // 首先获取第一页数据以确定总页数 + String firstUrl = syncRemortUserConfig.getSpjSyncUserUrl() + "?pageNumber=1&pageSize=" + pageSize; + log.info("同步的url为{}", firstUrl); + String firstResponse = HttpUtil.createGet(firstUrl).execute().body(); + log.info("同步的url为{},返回的数据为{}", firstUrl, firstResponse); + JSONObject firstJsonResponse = JSON.parseObject(firstResponse); + + if (!"00000".equals(firstJsonResponse.getString("code"))) { + throw new ServiceException("获取远程专家数据失败"); + } - if (currentPage == 1) { - // 初始化分页信息 - allProfessorsDto.setTotalPage(dto.getTotalPage()); - allProfessorsDto.setTotalRow(dto.getTotalRow()); - allProfessorsDto.setPageSize(dto.getPageSize()); + // 解密并解析第一页数据 + String firstInnerData = AesUtils.decrypt(firstJsonResponse.getJSONObject("data").getString("data"), "KlzY40Xw2wywV9Me"); + log.info("firstInnerData: {}", firstInnerData); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ProfessorsDto firstDto = objectMapper.readValue(firstInnerData, ProfessorsDto.class); + + int totalPage = firstDto.getTotalPage(); + + // 使用线程池并发获取所有页面数据 + ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建固定大小线程池 + List>> futures = new ArrayList<>(); + + // 获取所有页面数据 + for (int currentPage = 1; currentPage <= totalPage; currentPage++) { + final int page = currentPage; + CompletableFuture> future = CompletableFuture.supplyAsync(() -> { + try { + String url = syncRemortUserConfig.getSpjSyncUserUrl() + "?pageNumber=" + page + "&pageSize=" + pageSize; + String response = HttpUtil.createGet(url).execute().body(); + JSONObject jsonResponse = JSON.parseObject(response); + + if (!"00000".equals(jsonResponse.getString("code"))) { + return new ArrayList(); // 返回空列表表示失败 + } + + // 解密数据 + String innerData = AesUtils.decrypt(jsonResponse.getJSONObject("data").getString("data"), "KlzY40Xw2wywV9Me"); + ProfessorsDto dto = objectMapper.readValue(innerData, ProfessorsDto.class); + return dto.getList(); + } catch (Exception e) { + log.error("获取第{}页数据失败", page, e); + return new ArrayList(); } + }, executorService); - // 合并数据 - allProfessorsDto.getList().addAll(dto.getList()); - totalPage = dto.getTotalPage(); // 更新总页数 - currentPage++; // 获取下一页数据 - } + futures.add(future); + } - // 数据拷贝转化 - List zjkExpertBos = allProfessorsDto.getList().stream() - .map(professor -> { - ZjkExpertBo expertBo = new ZjkExpertBo(); - BeanUtils.copyProperties(professor, expertBo); - return expertBo; - }) - .toList(); + // 收集所有页面的数据 + CompletableFuture allFutures = CompletableFuture.allOf( + futures.toArray(new CompletableFuture[0]) + ); - // 提取身份证号 - List idCards = zjkExpertBos.stream() - .map(ZjkExpertBo::getIdCard) - .filter(idCard -> idCard != null && !idCard.trim().isEmpty()) - .collect(Collectors.toList()); + CompletableFuture> allPageDataFuture = allFutures.thenApply(v -> + futures.stream() + .map(CompletableFuture::join) + .flatMap(List::stream) + .collect(Collectors.toList()) + ); - // 查询已存在的身份证号 - List existingIdCards = baseMapper.selectExistingIdCards(idCards); + List allProfessors = allPageDataFuture.get(); // 获取所有数据 + // 关闭线程池 + executorService.shutdown(); - // 过滤重复记录并设置额外字段 - List filteredZjkExpertBos = zjkExpertBos.stream() - .filter(expert -> !existingIdCards.contains(expert.getIdCard()) && StringUtils.isNotBlank(expert.getIdCard())) - .peek(expert -> { - expert.setApprovalTime(new Date()); // 设置审批时间 + return allProfessors; + } - // 提取出生日期 - String idCard = expert.getIdCard(); - if (idCard.length() == 18) { - try { - String birthDateString = idCard.substring(6, 14); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - expert.setBirthDate(sdf.parse(birthDateString)); - } catch (ParseException e) { - throw new RuntimeException("Invalid ID card format", e); - } - } - }) - .toList(); + /** + * 过滤出需要同步的专家数据(去重处理) + */ + private List filterNeedSyncProfessors(List allProfessors) { + // 构建 name + idCard 的组合标识用于去重 + List checkKeys = allProfessors.stream() + .map(item -> item.getExpertName() + "|" + item.getIdCard()) + .collect(Collectors.toList()); + + // 查询数据库中已存在的 name + idCard 组合 + Set existingKeys = new HashSet<>(baseMapper.selectExistingNameAndIdCardPairs(checkKeys)); + + // 过滤出数据库中不存在的专家数据 + List filteredProfessors = allProfessors.stream() + .filter(professor -> professor.getIdCard() != null && !professor.getIdCard().trim().isEmpty()) + .filter(professor -> !existingKeys.contains(professor.getExpertName() + "|" + professor.getIdCard())) + .collect(Collectors.toList()); + + log.info("需要同步的用户量为{},信息为:{}", filteredProfessors.size(), filteredProfessors); + return filteredProfessors; + } - // 获取当前用户部门信息 - List remoteDeptBos = remoteDeptService.selectDeptInfoByTenantId(LoginHelper.getTenantId()); - String tenantId = LoginHelper.getTenantId(); - String password = StringUtils.defaultIfEmpty( - remoteConfigService.selectConfigByKey("expert.import.password"), - "k6psy7kafT%U" - ); - // 构造 RemoteUserBo 列表 - List remoteUserBoList = filteredZjkExpertBos.stream() - .map(expert -> { - RemoteUserBo userBo = new RemoteUserBo(); - userBo.setUserName(expert.getIdCard()); - userBo.setNickName(expert.getExpertName()); - userBo.setIdCard(expert.getIdCard()); - userBo.setPhonenumber(expert.getContact()); - userBo.setPassword(BCrypt.hashpw(password)); - userBo.setTenantId(tenantId); - userBo.setSource("30"); - userBo.setSourceTenant(2); - userBo.setDeptId(remoteDeptBos.get(0).getDeptId()); - return userBo; - }) - .toList(); + /** + * 处理并同步过滤后的专家数据 + */ + private void processAndSyncProfessors(List filteredProfessors) throws Exception { + // 数据转换处理 + List zjkExpertBos = convertProfessorsToExpertBo(filteredProfessors); - // 用户注册 - remoteUserService.expertRegisterUserInfo(remoteUserBoList, tenantId); + // 用户注册 + List remoteUserBoList = registerRemoteUsers(zjkExpertBos); - // 根据手机号获取用户信息 - List phoneNumbers = filteredZjkExpertBos.stream() - .map(ZjkExpertBo::getIdCard) - .toList(); + // 设置用户ID + setUserIdsForExperts(zjkExpertBos, remoteUserBoList); - List fetchedUsers = remoteUserService.selectListByUserName(phoneNumbers); + // 数据落库 + insertList(zjkExpertBos); + } - // 转换为 Map (手机号 -> 用户 ID) - Map userNameToUserIdMap = fetchedUsers.stream() - .collect(Collectors.toMap(RemoteUserVo::getUserName, RemoteUserVo::getUserId)); + /** + * 将ProfessorsInfo转换为ZjkExpertBo + */ + private List convertProfessorsToExpertBo(List filteredProfessors) { + List> workperformIdByName = baseMapper.getWorkperformIdByName(); - // 匹配用户 ID 并赋值 - filteredZjkExpertBos.forEach(expert -> { - Long userId = userNameToUserIdMap.get(expert.getIdCard()); - if (userId != null) { - expert.setUserId(userId); + return filteredProfessors.stream() + .map(professor -> { + ZjkExpertBo expertBo = new ZjkExpertBo(); + BeanUtils.copyProperties(professor, expertBo); + + if (StringUtils.isNotBlank(expertBo.getContact())) { + String phone = stringCryptoUtil.encryptField(expertBo.getContact()); + expertBo.setContact(phone); + } + if (StringUtils.isNotBlank(expertBo.getIdCard())) { + String idCard = stringCryptoUtil.encryptField(expertBo.getIdCard()); + expertBo.setIdCard(idCard); + } + if (StringUtils.isNotBlank(expertBo.getEmail())) { + String email = stringCryptoUtil.encryptField(expertBo.getEmail()); + expertBo.setEmail(email); + } + expertBo.setApprovalTime(new Date()); // 设置审批时间 + + // 提取出生日期 + String idCard = expertBo.getIdCard(); + if (idCard.length() == 18) { + try { + String birthDateString = idCard.substring(6, 14); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + expertBo.setBirthDate(sdf.parse(birthDateString)); + } catch (ParseException e) { + log.error("身份证格式不正确,专家姓名为{},专家身份证号为{}", expertBo.getExpertName(), expertBo.getIdCard()); + } } - }); - // 数据落库 - insertList(filteredZjkExpertBos); + // 转换业务领域为id逗号拼接 + String professorDeclareCategory = expertBo.getProfessorDeclareCategory(); + if (StringUtils.isNotBlank(professorDeclareCategory)) { + List categoryNames = List.of(professorDeclareCategory.split(",")); + expertBo.setPerformWorkId(workperformIdByName.stream() + .filter(workperform -> categoryNames.contains(workperform.get("label"))) + .map(workperform -> workperform.get("value")) + .collect(Collectors.joining(","))); + } + if (expertBo.getPerformWorkId() == null) { + // 业务领域为空设置默认为"其它" + expertBo.setPerformWorkId("25"); + } - } catch (Exception e) { - e.printStackTrace(); - } + return expertBo; + }) + .collect(Collectors.toList()); } + /** + * 注册远程用户 + */ + private List registerRemoteUsers(List zjkExpertBos) { + // 获取当前用户部门信息 + List remoteDeptBos = remoteDeptService.selectDeptInfoByTenantId(LoginHelper.getTenantId()); + String tenantId = LoginHelper.getTenantId(); + String password = StringUtils.defaultIfEmpty( + remoteConfigService.selectConfigByKey("expert.import.password"), + "k6psy7kafT%U" + ); + + // 构造 RemoteUserBo 列表 + List remoteUserBoList = zjkExpertBos.stream() + .map(expert -> { + RemoteUserBo userBo = new RemoteUserBo(); + userBo.setUserName(expert.getIdCard()); + userBo.setNickName(expert.getExpertName()); + userBo.setIdCard(expert.getIdCard()); + userBo.setPhonenumber(expert.getContact()); + userBo.setPassword(BCrypt.hashpw(password)); + userBo.setTenantId(tenantId); + userBo.setSource(UserSourceTypeEnum.FROM_SPJ.getCode()); + userBo.setSourceTenant(2); + userBo.setDeptId(remoteDeptBos.get(0).getDeptId()); + return userBo; + }) + .collect(Collectors.toList()); + + // 用户注册 + remoteUserService.expertRegisterUserInfoForSpj(remoteUserBoList, tenantId); + return remoteUserBoList; + } + + /** + * 为专家设置用户ID + */ + private void setUserIdsForExperts(List zjkExpertBos, List remoteUserBoList) { + // 根据身份证号获取用户信息 + List idCardNumbers = remoteUserBoList.stream() + .map(RemoteUserBo::getUserName) + .collect(Collectors.toList()); + + List fetchedUsers = remoteUserService.selectListByUserName(idCardNumbers); + + zjkExpertBos.forEach(expert -> { + // 在 fetchedUsers 中查找匹配的用户 + Optional matchedUser = fetchedUsers.stream() + .filter(user -> + StringUtils.equals(user.getUserName(), expert.getIdCard()) && + StringUtils.equals(user.getNickName(), expert.getExpertName())) + .findFirst(); + + if (matchedUser.isPresent()) { + expert.setUserId(matchedUser.get().getUserId()); + } else { + log.warn("未找到匹配的用户,专家姓名: {}, 身份证号: {}", + expert.getExpertName(), expert.getIdCard()); + } + }); + } + + @Override + public void exportTml(HttpServletResponse response) { + downloadExcelTem(response); + } + + @Override + public List getStageExperts(Long productId, Integer reviewSn) { + List res = baseMapper.getStageExperts(productId, reviewSn); + return res; + } + + @Override + public Boolean handleClassified(ZjkExpertBo bo) { + baseMapper.handleClassified(bo.getExpertId(), bo.getIsClassified()); + return true; + } + + public void downloadExcelTem(HttpServletResponse response) { +// // 获取项目名称下拉选项数据 +// List productList = zjkReviewPhaseMapper.getProductList(); +// List productNames = productList.stream().map(ZjkReviewProductVo::getProductName).collect(Collectors.toList()); +// //获取可开票的结算单号list +// LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); +// wq.eq(ZjkExpertMoneyInfo::getStatus, MoneySettlementStatusEnum.NO_SETTLEMENT.getCode()); +// +// List moneyInfoList = zjkExpertMoneyInfoMapper.selectList(wq); +// List settleSnList = moneyInfoList.stream().map(ZjkExpertMoneyInfo::getSettlementSn).collect(Collectors.toList()); +// //职称等级 + List expertMoneyConfigList = zjkExpertMoneyConfigMapper.getExpertMoneyConfig(); + List titleList = expertMoneyConfigList.stream().map(SelectOptionVo::getLabel).collect(Collectors.toList()); + // 创建下拉选项 + List options = new ArrayList<>(); +// DropDownOptions settleSnOption = new DropDownOptions( +// 9, // 假设"项目名称"列在第5列(索引为4),需要根据实际列位置调整 +// settleSnList +// ); +// // 为"项目名称"列添加下拉框选项 +// // 需要确定"项目名称"列在Excel中的索引位置(从0开始) +// DropDownOptions productNameOption = new DropDownOptions( +// 3, // 假设"项目名称"列在第5列(索引为4),需要根据实际列位置调整 +// productNames +// ); + + DropDownOptions titleOption = new DropDownOptions( + 25, + titleList + ); +// options.add(productNameOption); +// options.add(settleSnOption); + options.add(titleOption); + // 创建空列表用于模板 + List list = new ArrayList<>(); + ExcelUtil.exportExcel(list, "专家库模板", ZjkExpertBo.class, response); + } + + } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkInvoiceReportServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkInvoiceReportServiceImpl.java index 65b095f14ccf117ba9b80b88331901dd03a3e83c..e1d14bdd782ad84288bd77791ff96e718fe7e46d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkInvoiceReportServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkInvoiceReportServiceImpl.java @@ -63,8 +63,8 @@ public class ZjkInvoiceReportServiceImpl extends ServiceImpl queryPageList(ZjkInvoiceBo bo, PageQuery pageQuery) { + String idcard = stringCryptoUtil.encryptField(bo.getExpertIdNumber()); + String phone = stringCryptoUtil.encryptField(bo.getExpertPhone()); + bo.setExpertPhone(phone); + bo.setExpertIdNumber(idcard); Page result = zjkInvoiceMapper.queryPageList(pageQuery.build(),bo); return TableDataInfo.build(result); } @@ -232,7 +252,7 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { private void validEntityBeforeSave(ZjkInvoice entity){ //TODO 做一些数据校验,如唯一约束 //发票号码验证是否已存在 - Long invoiceNumber = entity.getInvoiceNumber(); + String invoiceNumber = entity.getInvoiceNumber(); LambdaQueryWrapper zjkInvoiceLambdaQueryWrapper = new LambdaQueryWrapper<>(); zjkInvoiceLambdaQueryWrapper.eq(ZjkInvoice::getInvoiceNumber, invoiceNumber); if (entity.getId()!=null){ @@ -262,20 +282,73 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { @Override @Transactional(rollbackFor = Exception.class) - public void imports(MultipartFile file) { + public R imports(MultipartFile file) { try { InputStream inputStream = file.getInputStream(); // 文件转化 - List zjkInvoiceList = ExcelUtil.importExcel(inputStream, ZjkInvoice.class); + ExcelResult zjkInvoiceExcelResult = ExcelUtil.importExcel(inputStream, ZjkInvoice.class, true); + List zjkInvoiceList = zjkInvoiceExcelResult.getList(); if (zjkInvoiceList != null && !zjkInvoiceList.isEmpty()) { - Set invoiceNumberList = zjkInvoiceList.stream().map(ZjkInvoice::getInvoiceNumber).collect(Collectors.toSet());; + //专家姓名转换为专家id + StringBuffer errorSb = new StringBuffer(); + zjkInvoiceList.stream().forEach(item->{ + String ename = item.getExpertName(); + item.setReviewSn(Integer.valueOf(item.getReviewSnStr())); + //首先校验项目 阶段 专家 结算单号 四者条件下是否存在该结算单,存在时才能导入 + ZjkExpertMoneyInfo moneyInfo = zjkInvoiceMapper.checkIfImport(item.getProductName(), item.getReviewSn(), item.getExpertName(), item.getSettleNo()); + if(moneyInfo==null){ + String msg=ename+"所参与的"+item.getProductName()+ReviewSnEnum.getDescByCode(String.valueOf(item.getReviewSn()))+"结算单号为:"+item.getSettleNo()+"的结算单不存在"; + errorSb.append( msg); + errorSb.append("
"); + }else{ + LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); + if(StringUtils.isNotBlank(item.getExpertIdNumber())){ + String idcard = stringCryptoUtil.encryptField(item.getExpertIdNumber()); + item.setExpertIdNumber(idcard); + wq.eq(ZjkExpert::getIdCard, idcard); + } + if(StringUtils.isNotBlank(item.getExpertName())){ + wq.eq(ZjkExpert::getExpertName, item.getExpertName()); + ZjkExpert zjkExpert = zjkExpertMapper.selectOne(wq); + if(zjkExpert==null){ + String msg="身份证为:"+item.getExpertIdNumber()+",专家名为"+item.getExpertName()+"的专家信息不在专家库中!"; + errorSb.append( msg); + errorSb.append("
"); + }else{ + Long eid = zjkExpert.getExpertId(); + item.setExpertName(String.valueOf(eid)); + List eps = zjkExpertMoneyInfoMapper.getExpertListForSettle(Long.valueOf(moneyInfo.getProductId()), item.getReviewSn()); + List collect = eps.stream().map(epsItem -> epsItem.getExpertId()).collect(Collectors.toList()); + if(!collect.contains(eid)){ + String msg=ename+"所参与的"+item.getProductName()+ReviewSnEnum.getDescByCode(String.valueOf(item.getReviewSn()))+"结算单号为:"+item.getSettleNo()+"已经进行了开票,不可重复开票!"; + errorSb.append( msg); + errorSb.append("
"); + }else{ + item.setProductId(Long.valueOf(moneyInfo.getProductId())); + item.setSettleId(moneyInfo.getMoneyId()); + } + + } + } + } + + if(StringUtils.isNotBlank(item.getExpertPhone())){ + String phone = stringCryptoUtil.encryptField(item.getExpertPhone()); + item.setExpertPhone(phone); + } + + + }); + + Set invoiceNumberList = zjkInvoiceList.stream().map(ZjkInvoice::getInvoiceNumber).collect(Collectors.toSet());; List exitsZjkInvoice = zjkInvoiceMapper.selectList(new LambdaQueryWrapper().in(ZjkInvoice::getInvoiceNumber,invoiceNumberList)); if (CollUtil.isNotEmpty(exitsZjkInvoice)) { String existingInvoiceNumbersStr = exitsZjkInvoice.stream() .map(ZjkInvoice::getInvoiceNumber) .map(String::valueOf) .collect(Collectors.joining(",")); - throw new ServiceException("以下发票号已存在: " + existingInvoiceNumbersStr + ",请修改后重新导入"); + errorSb.append( "以下发票号已存在: " + existingInvoiceNumbersStr + ",请修改后重新导入"); + errorSb.append("
"); } //处理职称等级 //得到职称-数字一一对应list @@ -290,14 +363,19 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { } } } - + if(errorSb.length()>0){ + return R.fail(errorSb.toString()); + }else{ //insert zjkInvoiceMapper.insert(zjkInvoiceList); + return R.ok(); + } } }catch (IOException e){ log.error("导入发票信息失败,{}",e.getMessage()); throw new ServiceException("导入发票信息失败,请联系管理员"); } + return R.ok(); } @Override @@ -329,6 +407,9 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { @Override public Boolean check(Long moneyId) { ZjkInvoice zjkInvoice = zjkInvoiceMapper.selectById(moneyId); + if(zjkInvoice.getInvoiceAttached()==null){ + throw new ServiceException("发票附件不存在,不可审核!"); + } zjkInvoice.setCheckStatus(1); zjkInvoiceMapper.updateById(zjkInvoice); //TODO 向【财务报表和结算凭证】同步该数据 @@ -340,7 +421,7 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { settlementVoucher.setProductId(zjkInvoice.getProductId()); settlementVoucher.setExpertId(zjkInvoice.getExpertName()==null?null:Long.valueOf(zjkInvoice.getExpertName())); settlementVoucher.setSettleNo(zjkExpertMoneyInfoMapper.selectById(zjkInvoice.getSettleId()).getSettlementSn()); - settlementVoucher.setMoney(zjkExpertMoneyConfigMapper.selectById(zjkInvoice.getExpertTitleLevel()).getMoneyNumber()); + settlementVoucher.setMoney(zjkInvoice.getInvoiceMoney()); settlementVoucher.setSyncStatus(1); zjkSettlementVoucherMapper.insert(settlementVoucher); return true; @@ -371,6 +452,8 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { checkSupportVo.setInvFileId(zjkInvoices.get(0).getInvoiceAttached()); List fids = zjkInvoices.stream().map(ZjkInvoice::getInvoiceAttached).collect(Collectors.toList()); checkSupportVo.setFids(fids); + }else{ + checkSupportVo.setInvStu("未开票"); } } }else{ @@ -378,4 +461,45 @@ public class ZjkInvoiceServiceImpl implements IZjkInvoiceService { } return checkSupportVo; } + + @Override + public void downloadExcelTem(HttpServletResponse response) { +// // 获取项目名称下拉选项数据 +// List productList = zjkReviewPhaseMapper.getProductList(); +// List productNames = productList.stream().map(ZjkReviewProductVo::getProductName).collect(Collectors.toList()); +// //获取可开票的结算单号list +// LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); +// wq.eq(ZjkExpertMoneyInfo::getStatus, MoneySettlementStatusEnum.NO_SETTLEMENT.getCode()); +// +// List moneyInfoList = zjkExpertMoneyInfoMapper.selectList(wq); +// List settleSnList = moneyInfoList.stream().map(ZjkExpertMoneyInfo::getSettlementSn).collect(Collectors.toList()); +// //职称等级 + List expertMoneyConfigList = zjkExpertMoneyConfigMapper.getExpertMoneyConfig(); + List titleList = expertMoneyConfigList.stream().map(SelectOptionVo::getLabel).collect(Collectors.toList()); + // 创建下拉选项 + List options = new ArrayList<>(); +// DropDownOptions settleSnOption = new DropDownOptions( +// 9, // 假设"项目名称"列在第5列(索引为4),需要根据实际列位置调整 +// settleSnList +// ); +// // 为"项目名称"列添加下拉框选项 +// // 需要确定"项目名称"列在Excel中的索引位置(从0开始) +// DropDownOptions productNameOption = new DropDownOptions( +// 3, // 假设"项目名称"列在第5列(索引为4),需要根据实际列位置调整 +// productNames +// ); + + DropDownOptions titleOption = new DropDownOptions( + 8, + titleList + ); +// options.add(productNameOption); +// options.add(settleSnOption); + options.add(titleOption); + // 创建空列表用于模板 + List list = new ArrayList<>(); + + // 导出带下拉框的Excel模板 + ExcelUtil.exportExcel(list, "发票导入模板", ZjkInvoice.class, response, options); + } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkLeaveServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkLeaveServiceImpl.java index 1cbf4f0f1c32eeec44c071d996221ef4915d8585..2b35dd83a391eab977f9d762e5e4a1edb46d53cd 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkLeaveServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkLeaveServiceImpl.java @@ -385,7 +385,7 @@ public class ZjkLeaveServiceImpl implements IZjkLeaveService { Date reviewTime = vo.getReviewTime(); long hours = DateUtil.between(reviewTime, new Date(), DateUnit.HOUR); if (hours <= Long.valueOf(proBeforeHour) && vo.getUserId() == null) { - return R.fail("评审前" + zjkLeaveRuleVo.getBeforeDay() + "小时才能进行请假"); + return R.fail("评审前" + zjkLeaveRuleVo.getProBeforeHour() + "小时才能进行请假"); } ZjkLeave zjkLeave = new ZjkLeave(); zjkLeave.setLeaveType(UserConstants.LEAVE_TYPE_PRO); @@ -407,7 +407,7 @@ public class ZjkLeaveServiceImpl implements IZjkLeaveService { //插入请假记录 baseMapper.insert(zjkLeave); // 根据用户 id 项目 id 更新专家请假信息 - ZjkExpertItem zjkExpertItem = zjkExpertItemMapper.getExpertItemByUserIdAndItemId(vo.getUserId(),vo.getItemId(),vo.getItemStage()); + ZjkExpertItem zjkExpertItem = zjkExpertItemMapper.getExpertItemByUserIdAndItemId(String.valueOf(vo.getUserId()==null?String.valueOf(LoginHelper.getUserId()):vo.getUserId()),vo.getItemId(),vo.getItemStage()); zjkExpertItem.setLeaveStatus("1"); zjkExpertItemMapper.updateById(zjkExpertItem); // 更新抽取人数 @@ -415,7 +415,7 @@ public class ZjkLeaveServiceImpl implements IZjkLeaveService { ZjkItemExtreation zjkItemExtreation =zjkItemExtreationMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkItemExtreation::getId,zjkReviewPhase.getItemExtreationId())); if (zjkItemExtreation != null){ - zjkItemExtreation.setExtractedSum(zjkItemExtreation.getExtractedSum()-1); + zjkItemExtreation.setExtractedSum((zjkItemExtreation.getExtractedSum()-1)<0?0:zjkItemExtreation.getExtractedSum()-1); zjkItemExtreation.setExtractionStatus(1); zjkItemExtreationMapper.updateById(zjkItemExtreation); } @@ -466,7 +466,7 @@ public class ZjkLeaveServiceImpl implements IZjkLeaveService { ZjkItemExtreation zjkItemExtreation =zjkItemExtreationMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkItemExtreation::getId,zjkReviewPhase.getItemExtreationId())); if (zjkItemExtreation != null){ - zjkItemExtreation.setExtractedSum(zjkItemExtreation.getExtractedSum()-1); + zjkItemExtreation.setExtractedSum((zjkItemExtreation.getExtractedSum()-1)<0?0:zjkItemExtreation.getExtractedSum()-1); zjkItemExtreation.setExtractionStatus(1); zjkItemExtreationMapper.updateById(zjkItemExtreation); } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkPointRewardServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkPointRewardServiceImpl.java index 9624690215b5e0f30980e812b6ae6e00377181a6..bdcf03bd8f5d5fdd52e020a09725ca1e9f896691 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkPointRewardServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkPointRewardServiceImpl.java @@ -32,12 +32,24 @@ public class ZjkPointRewardServiceImpl extends ServiceImpl { String result = ""; Integer effectFlag = item.getEffectFlag(); - if (OperateCodeEnum.DAYU.getCode().equals(effectFlag) && points.compareTo(item.getEffectStandard()) >= 0) { + if (OperateCodeEnum.DAYU.getCode().equals(effectFlag) && points.compareTo(item.getEffectStandard()) >0) { + strings.add(item.getRewardName()); + }else if(OperateCodeEnum.XAIOYU.getCode().equals(effectFlag)&& points.compareTo(item.getEffectStandard()) < 0){ + strings.add(item.getRewardName()); + }else if (OperateCodeEnum.EQUES.getCode().equals(effectFlag)&& points.compareTo(item.getEffectStandard()) == 0){ strings.add(item.getRewardName()); } }); return strings; } + + public static void main(String[] args) { + Integer a =1; + Integer b=1; + BigDecimal c = new BigDecimal(1); + BigDecimal d = new BigDecimal(1); + System.out.print(a.equals(b)); + } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductServiceImpl.java index 9db147201bf6cd6d5434e492ff0aec4e3955e71f..5f4d1d17591b81008e27f7fc73f663242896a175 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.zjk.service.impl; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; @@ -10,13 +11,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.enums.UserType; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.model.RoleDTO; import org.dromara.zjk.domain.*; import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.dto.ProjectSummaryStatistics; @@ -38,6 +42,7 @@ import org.dromara.zjk.zwy.utils.ObjectHashGenerator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.nio.charset.StandardCharsets; import java.util.*; @@ -73,6 +78,8 @@ public class ZjkProductServiceImpl implements IZjkProductService { private final ZjkProductReviewsnMapper zjkProductReviewsnMapper; private final HmacClient hmacClient; + private final DictService dictService; + /** * 查询项目管理 * @@ -114,7 +121,27 @@ public class ZjkProductServiceImpl implements IZjkProductService { } return TableDataInfo.build(result); } + @Override + public List queryListForApi(ZjkProductBo bo) { + List records = baseMapper.selectProdoctForApi(bo); + if (CollectionUtil.isEmpty(records)) { + return records; + } + Set productIdSet = records.stream().map(ZjkProductVo::getId).collect(Collectors.toSet()); + List byProductIds = zjkReviewPhaseMapper.getByProductIds(productIdSet); + if (CollectionUtil.isEmpty(byProductIds)) { + return records; + } + Map collect = byProductIds.stream().collect(Collectors.toMap(ZjkReviewProductVo::getProductId, v -> v, (k1, k2) -> k1)); + for (ZjkProductVo record : records) { + Long productId = record.getId(); + if (collect.containsKey(productId)) { + record.setIsItem(1); + } + } + return records; + } /** * 查询符合条件的项目管理列表 * @@ -124,7 +151,11 @@ public class ZjkProductServiceImpl implements IZjkProductService { @Override public List queryList(ZjkProductBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List zjkProductVos = baseMapper.selectVoList(lqw); + zjkProductVos.stream().forEach(item->{ + item.setProductType(dictService.getDictLabel("project_type",item.getProductType())); + }); + return zjkProductVos; } private LambdaQueryWrapper buildQueryWrapper(ZjkProductBo bo) { @@ -574,6 +605,16 @@ public class ZjkProductServiceImpl implements IZjkProductService { @Override public Long getProductPanoramaCount() { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + List roles = LoginHelper.getLoginUser().getRoles(); + + if (!CollectionUtils.isEmpty(roles)) { + List rs = roles.stream().map(RoleDTO::getRoleKey).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(rs)) { + if (rs.contains(TenantConstants.XM_ROLE_KEY)) { + wrapper.eq(ZjkProduct::getCreateBy, LoginHelper.getUserId()); + } + } + } return baseMapper.selectCount(wrapper); } @@ -623,6 +664,12 @@ public class ZjkProductServiceImpl implements IZjkProductService { @Override public TableDataInfo selectList(ZjkProductBo bo, PageQuery pageQuery) { LambdaQueryWrapper lambdaQueryWrapper = buildQueryWrapper(bo); + // zjkEvaluate.setSourceRole(); + boolean isXmAdmin = StpUtil.hasRole(TenantConstants.XM_ROLE_KEY); + if (isXmAdmin) { + //项目管理员需做数据隔离 + bo.setUserId(LoginHelper.getUserId()); + } IPage zjkProductVoIPage = baseMapper.selectProductReview(pageQuery.build(), bo); return TableDataInfo.build(zjkProductVoIPage); } @@ -712,6 +759,12 @@ public class ZjkProductServiceImpl implements IZjkProductService { return true; } + @Override + public TableDataInfo getProductList(ProductPanoramaVo vo, PageQuery pageQuery) { + Page result = baseMapper.getProductList(pageQuery.build(), vo); + return TableDataInfo.build(result); + } + @Override public List getProductTypeCountReport() { return baseMapper.getProductTypeCountReport(); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductSummarizeServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductSummarizeServiceImpl.java index c203bc97631c16ce2207e6cac76ab75cf4fad206..0dc6f80536da3b4c471c4219443622413b451661 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductSummarizeServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkProductSummarizeServiceImpl.java @@ -86,7 +86,7 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi List zjkExpertVos = BeanUtil.copyToList(zjkExperts, ZjkExpertVo.class); List zjkExpertMajors = zjkExpertMajorMapper.selectMajorList(expertIdList); - if(CollectionUtil.isNotEmpty(zjkExpertMajors)){ + if (CollectionUtil.isNotEmpty(zjkExpertMajors)) { Map> expertMajorMap = zjkExpertMajors.stream().collect(Collectors.groupingBy(ZjkExpertMajor::getExpertId)); for (ZjkExpertVo zjkExpertVo : zjkExpertVos) { Long expertId = zjkExpertVo.getExpertId(); @@ -125,18 +125,6 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi if (CollectionUtil.isEmpty(zjkProductSummarizeVos)) { return zjkProductSummarizeVos; } - for (ZjkProductSummarizeVo zjkProductSummarizeVo : zjkProductSummarizeVos) { - String status = zjkProductSummarizeVo.getStatus(); - SummarizeStatusEnum byCode = SummarizeStatusEnum.getByCode(status); - if (byCode != null) { - zjkProductSummarizeVo.setStatusName(byCode.getDesc()); - } - String productSummarizeType = zjkProductSummarizeVo.getProductSummarizeType(); - SummarizeStatusEnum byCode1 = SummarizeStatusEnum.getByCode(productSummarizeType); - if (byCode1 != null) { - zjkProductSummarizeVo.setProductSummarizeName(byCode1.getDesc()); - } - } return zjkProductSummarizeVos; } @@ -287,12 +275,12 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi List zjkExperts = expertMapper.selectByIds(list); zjkExperts.forEach(zjkExpert -> { // 获取专业学历 - ZjkExpertMajor zjkExpertMajor = zjkExpertMajorMapper.selectOne(new LambdaQueryWrapper() + ZjkExpertMajor zjkExpertMajor = zjkExpertMajorMapper.selectOne(new LambdaQueryWrapper() .eq(ZjkExpertMajor::getExpertId, zjkExpert.getExpertId()) .orderByDesc(ZjkExpertMajor::getDegree) .last("limit 1")); if (zjkExpertMajor != null) { - zjkExpert.setMajor(zjkExpertMajor.getMajor()+"/"+dictServiceImpl.getDictLabel("degree_type", String.valueOf(zjkExpertMajor.getDegree()))); + zjkExpert.setMajor(zjkExpertMajor.getMajor() + "/" + dictServiceImpl.getDictLabel("degree_type", String.valueOf(zjkExpertMajor.getDegree()))); } }); return zjkExperts; @@ -312,10 +300,10 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi Set collect = vos.stream().map(ZjkProductSummarizeExcelVO::getProductName).collect(Collectors.toSet()); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.in(ZjkProduct::getProductName,collect); - lqw.eq(ZjkProduct::getUserId,LoginHelper.getUserId()); + lqw.in(ZjkProduct::getProductName, collect); + lqw.eq(ZjkProduct::getUserId, LoginHelper.getUserId()); List zjkProductVos = zjkProductMapper.selectVoList(lqw); - if(CollectionUtil.isEmpty(zjkProductVos)){ + if (CollectionUtil.isEmpty(zjkProductVos)) { throw new ServiceException("无效项目"); } Map productMap = zjkProductVos.stream().collect(Collectors.toMap(ZjkProductVo::getProductName, v -> v)); @@ -326,10 +314,10 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi //获取项目全部评审阶段 LambdaQueryWrapper ReviewLqw = Wrappers.lambdaQuery(); - ReviewLqw.in(ZjkReviewPhase::getItemId,productSet); - ReviewLqw.eq(ZjkReviewPhase::getEffective,1); - ReviewLqw.eq(ZjkReviewPhase::getParentId,0); - ReviewLqw.eq(ZjkReviewPhase::getIsSummarize,0); + ReviewLqw.in(ZjkReviewPhase::getItemId, productSet); + ReviewLqw.eq(ZjkReviewPhase::getEffective, 1); + ReviewLqw.eq(ZjkReviewPhase::getParentId, 0); + ReviewLqw.eq(ZjkReviewPhase::getIsSummarize, 0); List zjkReviewPhaseVos = zjkReviewPhaseMapper.selectVoList(ReviewLqw); @@ -339,26 +327,26 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi List zjkProductSummarizeVos = baseMapper.selectVoList(pSlqw); Map zjkProductSummarizeVoMap = zjkProductSummarizeVos.stream().collect(Collectors.toMap(ZjkProductSummarizeVo::getReviewId, v -> v)); - List zjkProductSummarizes= new ArrayList<>(); + List zjkProductSummarizes = new ArrayList<>(); for (ZjkProductSummarizeExcelVO vo : vos) { - if(!productMap.containsKey(vo.getProductName())){ + if (!productMap.containsKey(vo.getProductName())) { continue; } ZjkProductVo zjkProductVo = productMap.get(vo.getProductName()); Long productId = zjkProductVo.getId(); String reviewSn = vo.getReviewSn(); - ZjkProductSummarize zjkProductSummarize = BeanUtil.copyProperties(vo, ZjkProductSummarize.class); + ZjkProductSummarize zjkProductSummarize = BeanUtil.copyProperties(vo, ZjkProductSummarize.class); zjkProductSummarize.setProductId(productId); List collect1 = zjkReviewPhaseVos.stream().filter(s -> s.getReviewSn().equals(reviewSn) && s.getItemId().equals(productId)).collect(Collectors.toList()); - if(CollectionUtil.isEmpty(collect1)){ + if (CollectionUtil.isEmpty(collect1)) { throw new ServiceException("无效项目阶段,请修改"); } for (ZjkReviewPhaseVo zjkReviewPhaseVo : collect1) { - if(zjkProductSummarizeVoMap.containsKey(zjkReviewPhaseVo.getId())){ - throw new ServiceException(vo.getProductName()+ + if (zjkProductSummarizeVoMap.containsKey(zjkReviewPhaseVo.getId())) { + throw new ServiceException(vo.getProductName() + ReviewSnEnum.getByCode(zjkReviewPhaseVo.getReviewSn()).getDesc() - +"阶段 已总结"); + + "阶段 已总结"); } zjkProductSummarize.setReviewId(zjkReviewPhaseVo.getId()); @@ -376,7 +364,7 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi zjkProductSummarizes.add(zjkProductSummarize); } - baseMapper.insertBatch(zjkProductSummarizes); + baseMapper.insertBatch(zjkProductSummarizes); List zjkProductSummarizeLogs = BeanUtil.copyToList(zjkProductSummarizes, ZjkProductSummarizeLog.class); for (ZjkProductSummarizeLog zjkProductSummarizeLog : zjkProductSummarizeLogs) { @@ -386,7 +374,7 @@ public class ZjkProductSummarizeServiceImpl implements IZjkProductSummarizeServi zjkProductSummarizeLogMapper.insertBatch(zjkProductSummarizeLogs); Set reviewIds = zjkReviewPhaseVos.stream().map(ZjkReviewPhaseVo::getId).collect(Collectors.toSet()); //修改项目总结 导入代码 - if(CollectionUtil.isNotEmpty(reviewIds)){ + if (CollectionUtil.isNotEmpty(reviewIds)) { zjkReviewPhaseMapper.updateByIds(reviewIds); } return true; diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkReviewPhaseServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkReviewPhaseServiceImpl.java index 4075f54da683423bc483bc22d391881d5ea564fe..45051ef2459297da7ffa9ea6eb0b8ab15a4a5c6a 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkReviewPhaseServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkReviewPhaseServiceImpl.java @@ -6,21 +6,29 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.zjk.domain.ZjkReviewPhase; +import org.dromara.zjk.domain.bo.ZjkProductBo; import org.dromara.zjk.domain.bo.ZjkReviewPhaseBo; import org.dromara.zjk.domain.bo.ZjkReviewProductBo; +import org.dromara.zjk.domain.vo.ZjkExpertVo; import org.dromara.zjk.domain.vo.ZjkProductVo; import org.dromara.zjk.domain.vo.ZjkReviewPhaseVo; import org.dromara.zjk.domain.vo.ZjkReviewProductVo; import org.dromara.zjk.enums.ReviewSnEnum; +import org.dromara.zjk.mapper.ZjkExpertMapper; import org.dromara.zjk.mapper.ZjkProductMapper; import org.dromara.zjk.mapper.ZjkReviewPhaseMapper; import org.dromara.zjk.service.IZjkReviewPhaseService; +import org.dromara.zjk.zwy.utils.StringCryptoUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -41,7 +49,9 @@ public class ZjkReviewPhaseServiceImpl implements IZjkReviewPhaseService { private final ZjkReviewPhaseMapper baseMapper; private final ZjkProductMapper productMapper; - + private final ZjkExpertMapper expertMapper; + @Autowired + private StringCryptoUtil stringCryptoUtil; /** * 查询抽取条件 * @@ -149,6 +159,24 @@ public class ZjkReviewPhaseServiceImpl implements IZjkReviewPhaseService { @Override public TableDataInfo reviewProductList(ZjkReviewProductBo bo, PageQuery pageQuery) { + boolean contains = LoginHelper.getLoginUser().getRolePermission().contains(TenantConstants.EXPERT_ROLE_KEY); + boolean xmcontains = LoginHelper.getLoginUser().getRolePermission().contains(TenantConstants.XM_ROLE_KEY); + boolean jgcontains = LoginHelper.getLoginUser().getRolePermission().contains(TenantConstants.JG_ROLE_KEY); + + bo.setUserId(LoginHelper.getUserId()); + ZjkExpertVo zjkExpertVo = expertMapper.selectByUserId(LoginHelper.getUserId()); + if(zjkExpertVo!=null){ + bo.setExpertId(zjkExpertVo.getExpertId()); + } + + if (contains) { + bo.setIsExpert(1); + }else if(xmcontains){ + bo.setIsExpert(0); + }else{ + bo.setIsExpert(2); + } + //机构项目管理员 Page result = baseMapper.reviewProductList(pageQuery.build(), bo); return TableDataInfo.build(result); } @@ -178,9 +206,26 @@ public class ZjkReviewPhaseServiceImpl implements IZjkReviewPhaseService { @Override public List reviewExport(ZjkReviewProductBo bo) { - List result = baseMapper.reviewExport( bo); + boolean contains = LoginHelper.getLoginUser().getRolePermission().contains(TenantConstants.EXPERT_ROLE_KEY); + boolean xmcontains = LoginHelper.getLoginUser().getRolePermission().contains(TenantConstants.XM_ROLE_KEY); + + bo.setUserId(LoginHelper.getUserId()); + ZjkExpertVo zjkExpertVo = expertMapper.selectByUserId(LoginHelper.getUserId()); + if(zjkExpertVo!=null){ + bo.setExpertId(zjkExpertVo.getExpertId()); + } + + if (contains) { + bo.setIsExpert(1); + }else if(xmcontains){ + bo.setIsExpert(0); + }else{ + bo.setIsExpert(2); + } + List result = baseMapper.reviewProductListForExport(bo); if(!CollectionUtil.isEmpty(result)){ for (ZjkReviewProductVo zjkReviewProductVo : result) { + zjkReviewProductVo.setUnitConcat(stringCryptoUtil.decryptField(zjkReviewProductVo.getUnitConcat())); String reviewSn = zjkReviewProductVo.getReviewSn(); ReviewSnEnum byCode = ReviewSnEnum.getByCode(reviewSn); if(byCode!=null){ @@ -209,6 +254,12 @@ public class ZjkReviewPhaseServiceImpl implements IZjkReviewPhaseService { return baseMapper.getReviewProductCountByExpertId(expertId); } + @Override + public R> invoiceProductList() { + List res = baseMapper.getInvoiceProductList(); + return R.ok(res); + } + private List getReviewSn(String reviewSn) { List list = new ArrayList<>(); if(reviewSn.equals(ReviewSnEnum.FINAL_ACCEPTANCE.getCode())){ diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkSmsInfoServiceImpl.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkSmsInfoServiceImpl.java index 2d414b6d07a55ef4270aa958c0d310aa90c4978b..d1ac7b5cde83c50f99bb41e5b8b1ebeefa0c90a4 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkSmsInfoServiceImpl.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/service/impl/ZjkSmsInfoServiceImpl.java @@ -78,6 +78,7 @@ public class ZjkSmsInfoServiceImpl extends ServiceImpl tenantIds = expertMoneyInfoMapper.selectTenantIds(); if(CollectionUtil.isEmpty(tenantIds)){ return true; @@ -171,8 +175,17 @@ public class ZjkMoneyStatementServiceImpl implements IZjkMoneyStatementService { @Override public Boolean addYear() { Date[] currentMonthDateRange = DateUtils.getLastYearDateRange(LocalDate.now()); - Date startTime = currentMonthDateRange[0]; - Date endTime = currentMonthDateRange[1]; + LocalDate now = LocalDate.now(); + + // 当年第一天 00:00:00 + Date startTime = Date.from(now.withDayOfYear(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + + // 当年最后一天 23:59:59 + LocalDateTime endDateTime = now.withDayOfYear(now.lengthOfYear()).atTime(23, 59, 59); + Date endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()); + +// Date startTime = currentMonthDateRange[0]; +// Date endTime = currentMonthDateRange[1]; List tenantIds = expertMoneyInfoMapper.selectTenantIds(); if(CollectionUtil.isEmpty(tenantIds)){ return true; @@ -224,12 +237,17 @@ public class ZjkMoneyStatementServiceImpl implements IZjkMoneyStatementService { zjkMoneyExpertStatement.setStatementId(moneyStatement.getId()); zjkMoneyExpertStatement.setMoneyCycle(zjkExpertMoneyInfoVO.getMoneyCycle()); zjkMoneyExpertStatement.setExpertType(zjkExpertMoneyInfoVO.getExpertType()); - + zjkMoneyExpertStatement.setTenantId(tenantId); zjkMoneyExpertStatementList.add(zjkMoneyExpertStatement); } } //汇总 + // 在分组前检查列表是否为空 + if (CollectionUtil.isEmpty(zjkExpertMoneyInfoList)) { + // 处理空列表的情况 + return; // 或其他适当的处理 + } Map> moneyCycleMap = zjkExpertMoneyInfoList.stream().collect(Collectors.groupingBy(ZjkExpertMoneyInfoVO::getMoneyCycle)); List zjkMoneyCollectStatements = new ArrayList<>(); for (String moneyCycle : moneyCycleMap.keySet()) { @@ -249,6 +267,7 @@ public class ZjkMoneyStatementServiceImpl implements IZjkMoneyStatementService { zjkMoneyCollectStatement.setPayMoney(payMoney); zjkMoneyCollectStatement.setNoPayMoney(noPayMoney); zjkMoneyCollectStatement.setSumFee(expertTypeMoneyFee); + zjkMoneyCollectStatement.setTenantId(tenantId); zjkMoneyCollectStatements.add(zjkMoneyCollectStatement); } } @@ -296,6 +315,7 @@ public class ZjkMoneyStatementServiceImpl implements IZjkMoneyStatementService { zjkMoneyAnalyseStatement.setProportion(percentage); zjkMoneyAnalyseStatement.setExpertType(expertType); zjkMoneyAnalyseStatement.setStatementId(moneyStatement.getId()); + zjkMoneyAnalyseStatement.setTenantId(tenantId); zjkMoneyAnalyseStatementList.add(zjkMoneyAnalyseStatement); } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/task/DynamicCronTask.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/task/DynamicCronTask.java index f9d0ac664769e52066652fb67cead81369a1d40b..8410134affcf3ea28e0ff959caa77f6d1b85f63d 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/task/DynamicCronTask.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/task/DynamicCronTask.java @@ -48,7 +48,6 @@ public class DynamicCronTask implements SchedulingConfigurer { private ZjkInvoiceReportService zjkInvoiceReportService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - //ivs会话保活 taskRegistrar.addTriggerTask(() -> { zjkPointUserService.handleWaitCheckPointStatus(); }, triggerContext -> new CronTrigger(config.refreshCheckPoint).nextExecutionTime(triggerContext).toInstant()); diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/ApiThreadLocal.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/ApiThreadLocal.java new file mode 100644 index 0000000000000000000000000000000000000000..c34a1b0015f4c5d255b887d0819ca7ab7436d2a1 --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/ApiThreadLocal.java @@ -0,0 +1,24 @@ +package org.dromara.zjk.utils; + +/** + * api线程变量 + * @author : yanguohua + * @version : 1.0 + * @date : 2025/8/26 15:29 + */ +public class ApiThreadLocal { + private ApiThreadLocal() { + } + + private static final ThreadLocal ak = new ThreadLocal<>(); + + public static String getAk() { + return ak.get(); + } + + public static void putAk(String aks) { + ak.set(aks); + } + + +} diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/IdCardValidator.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/IdCardValidator.java index d7081180f2bedcdc8f6fcc0b6dc1004f959baf38..b3aab8b4e7a354c072dc66ff812f86f88383ab2a 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/IdCardValidator.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/utils/IdCardValidator.java @@ -55,5 +55,9 @@ public class IdCardValidator { int mod = sum % 11; return idCard.charAt(17) == checkCode[mod]; } + + public static void main(String[] args) { + System.out.println(isValid("142322199301218011")); + } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/aspect/SensitiveEncryptAspect.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/aspect/SensitiveEncryptAspect.java index 0bede190268ede63087e328d041f61824c9fb19f..8e9580106eb3e8e8f54cbcb437a3e529dc5c7fd2 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/aspect/SensitiveEncryptAspect.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/aspect/SensitiveEncryptAspect.java @@ -26,6 +26,7 @@ public class SensitiveEncryptAspect { @Pointcut("@annotation(org.dromara.zjk.zwy.annotation.DecryptOperation)") public void decryptPointcut() {} + /** 加密执行前 */ @Before("encryptPointcut()") public void beforeEncrypt(JoinPoint joinPoint) { diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/DecryptClient.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/DecryptClient.java index 35536762a24756ed13aff3fcd409983308bd5fb5..d681c26666066f8b3d4ee92f62a29b03974b3c34 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/DecryptClient.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/DecryptClient.java @@ -69,7 +69,7 @@ public class DecryptClient { return plaintext; } catch (Exception e) { log.error("调用解密服务失败,密文 hash: {}", ciphertextBlob != null ? ciphertextBlob.hashCode() : "null", e); - throw new RuntimeException("调用解密服务失败", e); + return ciphertextBlob; } } @@ -99,5 +99,14 @@ public class DecryptClient { return headers; } + public static void main(String[] args) { + String nonce = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); + System.out.println(nonce); + System.out.println(String.valueOf(System.currentTimeMillis())); + String str="MTgzMTExMTExMTE="; + System.out.println(new String(Base64.getDecoder().decode(str))); + String plaintext = new String(Base64.getDecoder().decode(str), StandardCharsets.UTF_8); + System.out.println(plaintext); + } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/EncryptClient.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/EncryptClient.java index ea58977edf9a5cb2b2fb0db87bf18a6f92ec2799..4bf21db10544abf98c7d695ed9efd331e9dc67a0 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/EncryptClient.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/client/EncryptClient.java @@ -62,7 +62,7 @@ public class EncryptClient { return cipherText; } catch (Exception e) { log.error("调用加密服务失败,明文内容:{}", plainText, e); - throw new RuntimeException("调用加密服务失败", e); + return plainText; } } diff --git a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/service/SensitiveDataService.java b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/service/SensitiveDataService.java index 561d4aa4d8898a94266e658a3b53ff5881142b42..2afad703214fc891e74a41dc106c736f358c5d10 100644 --- a/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/service/SensitiveDataService.java +++ b/ruoyi-modules/zjk-api/src/main/java/org/dromara/zjk/zwy/service/SensitiveDataService.java @@ -121,5 +121,4 @@ public class SensitiveDataService { Number.class.isAssignableFrom(clazz) || clazz.getName().startsWith("java.time."); } - } diff --git a/ruoyi-modules/zjk-api/src/main/resources/application.yml b/ruoyi-modules/zjk-api/src/main/resources/application.yml index d01bfa2968d7cb5611b2e5b8107404965639ec3e..4a43c29d6a24cd3693f9c0c3dfd20f2ad6bdab6c 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/application.yml +++ b/ruoyi-modules/zjk-api/src/main/resources/application.yml @@ -38,13 +38,15 @@ cron: activity-start-check-point: ${ACTIVITY_START_CHECK_POINT:0 */1 * * * ?} activity-end-check-point: ${ACTIVITY_END_CHECK_POINT:0 */1 * * * ?} refresh-expert-chart: ${REFRESH_EXPERT_CHART:0 */1 * * * ?} - annual-Inspection: ${ANNUAL_INSPECTION:0 0 1 12 * ?} + annual-Inspection: ${ANNUAL_INSPECTION:0 50 23 31 12 ?} + # annual-Inspection: ${ANNUAL_INSPECTION:0 45 10 * * ?} statement-Year-Inspection: ${STATEMENT_YEAR_INSPECTION:0 0 1 1 * ?} statement-Inspection: ${STATEMENT_YEAR_INSPECTION:0 0 1 * * ?} cancel-Expert-Inspection: ${CANCEL-EXPERT-INSPECTION:0 */1 * * * ?} - #每月1日的凌晨1点执行 - invoice-report-month: ${INVOICE_REPORT_MONTH:0 53 14 * * ?} - #每年1月1日的凌晨2点执行 - invoice-report-year: ${INVOICE_REPORT_YEAR:0 51 14 * * ?} + # 每月1日的凌晨2点执行 + invoice-report-month: ${INVOICE_REPORT_MONTH:0 0 2 1 * ?} + # 每年1月1日的凌晨3点执行 + invoice-report-year: ${INVOICE_REPORT_YEAR:0 0 3 1 1 ?} + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionMapper.xml index ab1a7a1d8de13e7bf049e8ec1b796bc4c0e30a8e..1ec0a44ef162c292bbbe5b93f4e060062b6a6620 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionMapper.xml @@ -20,27 +20,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and zai.annual_inspection_status = #{bo.annualInspectionStatus} - - AND (zai.annual_inspection_name like '%' || #{bo.searchValue} || '%' or zai.annual_inspection_sn like '%' || #{bo.searchValue} || '%') + + and zai.annual_inspection_sn like '%' || #{bo.annualInspectionSn} || '%' + + + AND zai.annual_inspection_name like '%' || #{bo.annualInspectionName} || '%' and zp.contact = #{bo.contact} - - AND audit_time >= TO_DATE(#{bo.beginAuditTime}, 'YYYY-MM-DD') - AND audit_time <= TO_DATE(#{bo.endAuditTime}, 'YYYY-MM-DD') + + AND audit_time >= TO_DATE(#{bo.start}, 'YYYY-MM-DD') + AND audit_time < TO_DATE(#{bo.end}, 'YYYY-MM-DD') + INTERVAL '1 day' ORDER BY zai.create_time desc + UPDATE zjk_annual_inspection SET annual_inspection_status = #{annualInspectionStatus}, audit_time = #{auditTime}, + update_time = #{updateTime}, + update_by = #{updateBy} - reason = #{reason} + ,reason = #{reason} WHERE id IN diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionRecordsMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionRecordsMapper.xml index c5e2c2054c5538f6cfd12b430e916e86e997bb5f..5a39c0a2a16de5a277acc41967123f1f8d750d9e 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionRecordsMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkAnnualInspectionRecordsMapper.xml @@ -17,6 +17,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN zjk_expert zp ON zp.expert_id = zai.expert_id and zp.status =2 and zp.delete_flag = 0 zai.del_flag = 0 + + and zai.records_sn like '%' || #{bo.recordsSn} || '%' + + + AND zai.annual_inspection_name like '%' || #{bo.annualInspectionName} || '%' + and zai.annual_inspection_status = #{bo.annualInspectionStatus} diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkEvaluateMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkEvaluateMapper.xml index 1d981ed59b42041ec1d10f281e08fdecef138126..0ca43571740631bffb51bed110d8130e555ed11b 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkEvaluateMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkEvaluateMapper.xml @@ -181,7 +181,7 @@ - and dd.flag is null + and dd.flag = 0 and dd.flag = #{bo.status} @@ -252,6 +252,7 @@ left join zjk_expert zee on aa.expert_id = zee.expert_id left join zjk_product zp on aa.item_id = zp.id and zp.user_id=#{bo.userId} left join sys_dict_data sdd on sdd.dict_value=aa.review_sn and sdd.dict_type='item_stage' + where zp.CREATE_BY = #{bo.userId} )dd dd.userId is not null and dd.expert_id is not null diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkExpertMoneyInfoMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkExpertMoneyInfoMapper.xml index c5adcfc9a4aaa13fd650b04ee1cb07656775394b..1a4f82af5930e2474ddcc8a9edaf914f986f18bb 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkExpertMoneyInfoMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkExpertMoneyInfoMapper.xml @@ -35,15 +35,23 @@ expert_money_file,product_id,product_type, product_name - + select zemi.money_id,zemi.expert_type,zemi.expert_id, + zemi.expert_money,zemi.expert_name,zemi.expert_unit, + zemi.tenant_id,zemi.ASSIGN_ID,zemi.create_dept, + zemi.create_by,zemi.create_time,zemi.update_by, + zemi.update_time,zemi.remark,zemi.expert_money_flag, + zemi.expert_money_file,zemi.product_id,zemi.product_type,zemi.product_name, + zemi.review_date,zemi.settlement_date,zemi.settlement_sn,zemi.pay_sn,zemi.status, + zemi.expert_type_money_fee,zemi.review_count,zemi.expert_no_pay_money,zemi.expert_pay_money, + zemi.money_cycle,zemi.pay_method,ze.contact as expert_contact,ze.id_card as expert_idcard + from zjk_expert_money_info zemi left join zjk_expert ze on ze.expert_id = zemi.expert_id where zemi."ASSIGN_ID" = 0 - and bo.id_card like '%' || #{bo.expertIdcard} ||'%' + and ze.id_card like '%' || #{bo.expertIdcard} ||'%' - and bo.contact like '%' || #{bo.expertContact} || '%' + and ze.contact like '%' || #{bo.expertContact} || '%' and zemi.expert_money_flag = #{bo.expertMoneyFlag} @@ -56,7 +64,7 @@ + + + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceMapper.xml index 86988fb6e3b595cbf05864e0f258badac4e91194..75c49d2c8e21842055e37d0c9ff11ef515961de3 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceMapper.xml @@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN zjk_expert_money_config zemc ON zemc.money_id = zi.expert_title_level and zemc.ASSIGN_ID =0 - and zi.expert_name like '%' || #{bo.expertName} || '%' + and ze.expert_name like '%' || #{bo.expertName} || '%' and zi.expert_phone like '%' || #{bo.expertPhone} || '%' @@ -47,20 +47,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" zi.*, zemc.money_type as expertTitleLevel, so.original_name AS invoiceAttachedName, - so.url AS invoiceAttachedAddr - + so.url AS invoiceAttachedAddr, + zemi.settlement_sn as settleIdName FROM zjk_invoice zi LEFT JOIN sys_oss so ON so.oss_id = zi.invoice_attached LEFT JOIN zjk_expert_money_config zemc ON zemc.money_id = zi.expert_title_level AND zemc.ASSIGN_ID =0 + left join zjk_expert_money_info zemi on zi.settle_id=zemi.money_id WHERE zi.id = #{id} + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceReportMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceReportMapper.xml index 82e39190c44fad5931dad907f80ad952d0838fe6..b74f1f7b49a8378a66a5635bea62b8ce0ed29a68 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceReportMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkInvoiceReportMapper.xml @@ -33,7 +33,12 @@ case when report_type = 0 then '每月' else '每年' end as typeDesc, TO_CHAR(date_range_start, 'YYYY/MM/DD') || '~' || TO_CHAR(date_range_end, 'YYYY/MM/DD') AS date_range - FROM zjk_invoice_report order by "CREATE_TIME" desc + FROM zjk_invoice_report + where 1=1 + + and report_type = #{reportType} + + order by "CREATE_TIME" desc - select * from zjk_point_reward where status=1 and (is_forever=1 or reward_until >= CURRENT_DATE) + select * from zjk_point_reward where status=1 and (is_forever=1 or reward_until >= CURRENT_TIMESTAMP) diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkRetirementRecordsMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkRetirementRecordsMapper.xml index d8f4ddee6392fa2f9fbbf2f9376170a140cc2f7a..3ea0b61fe31f8df0f1a866f146981473e95daea7 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkRetirementRecordsMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/ZjkRetirementRecordsMapper.xml @@ -43,6 +43,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and zp.id_card = #{bo.idCard} + + and zrr.expert_status = #{bo.expertStatus} + ORDER BY zrr.create_time desc diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkExpertItemMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkExpertItemMapper.xml index c3f5dfa6313c7e3902f98079fe55a76c145fd19a..5b8b24e85363f57040c21db2d9bc6fb1960c4bce 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkExpertItemMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkExpertItemMapper.xml @@ -23,11 +23,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -62,12 +62,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" e.approval_type, e.unit_type, e.id_card, + e.is_classified, + e.scope_of_activity, e.origin FROM zjk_expert e LEFT JOIN zjk_expert_major em on em.expert_id = e.expert_id LEFT JOIN zjk_expert_professional ep on ep.expert_id = e.expert_id - e.delete_flag='0' + not EXISTS(select 1 from zjk_credit_user zcu where zcu.expert_id=e.expert_id and zcu.reward_id in (4,5,6)) + and e.delete_flag='0' AND e.status NOT IN (0, 4, 5) @@ -110,7 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT - e.*, - zcu.credit_count - FROM - zjk_expert e - LEFT JOIN zjk_credit_user zcu ON zcu.expert_id = e.expert_id - WHERE - status = 2 + SELECT e.*, + zcu.credit_count + FROM zjk_expert e + LEFT JOIN zjk_credit_user zcu ON zcu.expert_id = e.expert_id + WHERE status = 2 AND delete_flag = 0 SELECT - TO_CHAR( approval_time, 'YYYY-MM-DD' ) AS approval_date,-- 格式化审批时间为日期 - COUNT( * ) AS approval_count -- 统计每天的记录数 + TO_CHAR( approval_time, 'YYYY-MM-DD' ) AS approval_date,-- 格式化审批时间为日期 + COUNT( * ) AS approval_count -- 统计每天的记录数 FROM - zjk_expert + zjk_expert status = 2 @@ -337,27 +336,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" GROUP BY - TO_CHAR( approval_time, 'YYYY-MM-DD' ) -- 按天分组 + TO_CHAR( approval_time, 'YYYY-MM-DD' ) -- 按天分组 ORDER BY - approval_date;-- 按日期排序 + approval_date;-- 按日期排序 + + + + + + + + UPDATE zjk_expert @@ -402,4 +465,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE expert_id = #{expertId} + + UPDATE zjk_expert + set is_classified = #{isClassified} + WHERE expert_id = #{expertId} + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkItemExtreationMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkItemExtreationMapper.xml index 68dde89c95bfee96fa1f8d1882fd8e603164910a..f54631c0f79961cd4d09b632031a5d1e37294567 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkItemExtreationMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkItemExtreationMapper.xml @@ -19,7 +19,8 @@ diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkReviewPhaseMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkReviewPhaseMapper.xml index c51cacd1e36dc94ea1e79db41176fab1af49cabe..38b911e694065d913153b86752c1d0fcf96b374b 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkReviewPhaseMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/expert/ZjkReviewPhaseMapper.xml @@ -12,46 +12,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/InoutCheckMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/InoutCheckMapper.xml index f3fcf1f3ed25aa7abd6df738f6bcf5b4aef38e34..020032fd43c975fa429ac8fc4bd0bda33ec8169d 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/InoutCheckMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/InoutCheckMapper.xml @@ -55,8 +55,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT original_name FROM sys_oss where oss_id= #{invFileId} + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditMapper.xml index 0099964714dc9ab752532b8db1b5c9f330709580..372973e6990c74eae35f31adebf167254580010a 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditRuleMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditRuleMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..1398a6b28515491d4d26528515b0523a9434ccf6 --- /dev/null +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkCreditRuleMapper.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCommontMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCommontMapper.xml index 17582e99b6559719ed8ad0792b89e312e5469f71..5b4f1f0bfcc20a90db98432b8560c2f72d6c63cd 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCommontMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCommontMapper.xml @@ -28,4 +28,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and zlc.information_id = #{bo.informationId} + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCourseMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCourseMapper.xml index f405ad9bbd9cc5c644966f3bef487f6c1be5c43b..10f2aa00c8a572fa87d2c86bd172d2eddb6c432a 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCourseMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningCourseMapper.xml @@ -19,9 +19,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" zlc.course_brief, zlc.perform_work_id, so.original_name, - so.url + so.url, + su.nick_name createBy, + zlc.create_time FROM zjk_learning_course zlc + left join sys_user su on zlc.create_by = su.user_id LEFT JOIN sys_oss so on so.oss_id = zlc.course_attachment diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningToolMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningToolMapper.xml index 56ddedb49fecac1b109b82daeb7e14ba4aa7b2ff..4e7cf53d7801e4ab510badcbcedecb37f978a867 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningToolMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkLearningToolMapper.xml @@ -3,6 +3,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + delete from zjk_learning_tool where id in + + #{item} + + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductMapper.xml index fe585108d57f066acc11d3ca80e1c18594e87156..55244b2ce9706dfbec2a310e84fd5012e5d4dbe4 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductMapper.xml @@ -44,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM zjk_product zp left JOIN zjk_review_phase zrp on zp.id=zrp.item_id LEFT JOIN zjk_expert ze on ze.user_id = zp.user_id - WHERE zp.del_flag = 0 + WHERE zp.del_flag = 0 and zp.approval_status = 1 and zp.product_name like '%' || #{bo.productName} || '%' @@ -90,6 +90,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and zp.product_name like '%' || #{bo.productName} || '%' + + and zp.user_id = #{bo.userId} + + + diff --git a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductReviewsnMapper.xml b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductReviewsnMapper.xml index 779da4c0e05e394de79a0ad7819585e59003c625..cb98ed3226794a15db2e49474552b443e6668c67 100644 --- a/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductReviewsnMapper.xml +++ b/ruoyi-modules/zjk-api/src/main/resources/mapper/zjk/ZjkProductReviewsnMapper.xml @@ -21,6 +21,9 @@ and a.original_name like '%' || #{bo.fileName} || '%' + + and zp.user_id = #{bo.userId} + diff --git a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java index 994ca73c1667705b8663182a75a821eb58591689..39b14fd1594343cd620ba28f47337f09cf32976a 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java +++ b/ruoyi-visual/ruoyi-monitor/src/main/java/org/dromara/modules/monitor/config/WebSecurityConfigurer.java @@ -29,24 +29,11 @@ public class WebSecurityConfigurer { @Bean public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { - SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); - successHandler.setTargetUrlParameter("redirectTo"); - successHandler.setDefaultTargetUrl(adminContextPath + "/"); - return httpSecurity .headers((header) -> header.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)) .authorizeHttpRequests((authorize) -> - authorize.requestMatchers( - new AntPathRequestMatcher(adminContextPath + "/assets/**"), - new AntPathRequestMatcher(adminContextPath + "/login") - ).permitAll() - .anyRequest().authenticated()) - .formLogin((formLogin) -> - formLogin.loginPage(adminContextPath + "/login").successHandler(successHandler)) - .logout((logout) -> - logout.logoutUrl(adminContextPath + "/logout")) - .httpBasic(Customizer.withDefaults()) + authorize.anyRequest().permitAll()) // 允许所有请求 .csrf(AbstractHttpConfigurer::disable) .build(); } diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml index 55de5f694eca9580c14a7807b93fe9c54ce5bbb7..83afb2732bd1e250c59b4456247e1e53102f32ca 100644 --- a/ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/application.yml @@ -13,6 +13,17 @@ spring: --- # nacos 配置 spring: + security: + user: + name: ruoyi + password: 123456 + boot: + admin: + ui: + title: RuoYi-Cloud-Plus服务监控中心 + discovery: + # seata 不具有健康检查的能力 防止报错排除掉 + ignored-services: ruoyi-seata-server cloud: nacos: # nacos 服务地址 diff --git a/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties b/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties index b2f51bfd4eeb00c8a9cc03d23b283656408ef05a..f287beba7aa7ca7dfd7246d3c4ac2e1dca210248 100644 --- a/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties +++ b/ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties @@ -22,7 +22,6 @@ server.servlet.contextPath=/nacos server.error.include-message=ALWAYS ### Default web server port: server.port=8848 - #*************** Network Related Configurations ***************# ### If prefer hostname over ip for Nacos server addresses in cluster.conf: # nacos.inetutils.prefer-hostname-over-ip=false @@ -93,7 +92,7 @@ spring.boot.admin.client.instance.metadata.userpassword: ${spring.boot.admin.cli ### Metrics for prometheus management.endpoints.web.exposure.include=* - +management.endpoints.web.exposure.exclude=env,heapdump,threaddump,mappings ### Metrics for elastic search management.metrics.export.elastic.enabled=false #management.metrics.export.elastic.host=http://localhost:9200 @@ -138,7 +137,7 @@ nacos.core.auth.plugin.nacos.token.expire.seconds=18000 ### The default token (Base64 string): #nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 ### 此处为token密钥 需要自行修改 -nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 +nacos.core.auth.plugin.nacos.token.secret.key=kgWJdwbRw74PfD2gPHa2pYZ6nqu9L5Cur/m9qFuji/E= ### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username #nacos.core.auth.ldap.url=ldap://localhost:389 @@ -192,7 +191,6 @@ nacos.istio.mcp.server.enabled=false # nacos.core.member.meta.site= # nacos.core.member.meta.adweight= # nacos.core.member.meta.weight= - ### MemberLookup ### Addressing pattern category, If set, the priority is highest # nacos.core.member.lookup.type=[file,address-server] diff --git "a/\345\256\236\344\275\223er.puml" "b/\345\256\236\344\275\223er.puml" new file mode 100644 index 0000000000000000000000000000000000000000..392b84e89956446de82c3a990968936499f8617f --- /dev/null +++ "b/\345\256\236\344\275\223er.puml" @@ -0,0 +1,618 @@ +@startuml +class ZjkLearningCreditRecord { +- {static} long serialVersionUID +- Long id +- Long revision +- Long userId +- Long learningId +- Date viewingTime +- Long delFalg +} + +class ZjkDataChangesLogs { +- {static} long serialVersionUID +- Long id +- String changeType +- String businessType +- String beforeOper +- String afterOper +- String operIp +- Long delFlag +} + +class ZjkProductReviewsn { +- {static} long serialVersionUID +- Long id +- Long productId +- String reviewSn +- String status +- String remark +- Long delFlag +} + +class ZjkApprovalProcessLogs { +- {static} long serialVersionUID +- Long id +- String actionItem +- String actionContent +- String approvalOpinions +- Long delFlag +} + +class ZjkProjectEvaluation { +- {static} long serialVersionUID +- Long id +- Long productSummarizeId +- Long goalAchievement +- Long deliveryQuality +- Long costControl +- Long riskManagement +- Long projectValue +- String evaluateFile +- String projectSummaryEvaluation +- String appraiser +- Date appraiserTime +} + +class ZjkExpertHistory { +- {static} long serialVersionUID +- Long id +- String oldData +- String newData +- String modifiedFields +- String remark +- Long deleteFlag +- Long expectId +} + +class ZjkProductSummarizeLog { +- {static} long serialVersionUID +- Long id +- Long summarizeId +- Long reviewId +- String productSummarizeName +- String productSummarizeType +- String productGeneral +- String reviewScope +- String reviewConclusion +- String feedback +- String subsequent +- String attachment +- String expertIds +- String status +- String remark +- Long delFlag +- String auditStatus +- String auditRemark +- Long auditBy +- Date auditTime +- Long productId +- String reviewSn +- Integer isEvaluate +} + +class ZjkCredit { +- {static} long serialVersionUID +- Long creditId +- Long credit +- Long ruleId +- Long expertId +- Long userId +- Long creditCount +} + +class ZjkExpertMoneyConfig { +- {static} long serialVersionUID +- Long moneyId +- String moneyType +- String moneyCycle +- String moneyMethod +- BigDecimal moneyNumber +- Long assignId +- String remark +} + +class ZjkPointReward { +- String id +- String rewardName +- Integer rewardType +- String rewardContent +- Integer rewardObj +- Integer effectFlag +- BigDecimal effectStandard +- Date rewardUntil +- Integer isForever +- Integer status +- {static} long serialVersionUID +} + +class ZjkCreditRule { +- {static} long serialVersionUID +- Long ID +- String ruleName +- Date expireTime +- Long isForever +- Long status +- Long eachScore +- String ruleKey +- String pointReason +} + +class ZjkItemExtreation { +- {static} long serialVersionUID +- Long id +- Long itemId +- Integer expertSum +- Integer extractionCount +- Integer extractedSum +- Integer extractionStatus +- Date extractionTime +- String extractionUser +- String extractionSn +- Long reviewId +- Long isSure +} + +class ZjkLeave { +- String gid +- String leaveType +- Date startDate +- Date endDate +- Long leaveDays +- String leaveReason +- String status +- String approvalUser +- String tenantId +- String approvalMsg +- Integer leaveResource +- Long createDept +- Long createBy +- Date createTime +- Long updateBy +- Date updateTime +- {static} long serialVersionUID +} + +class ZjkPointRule { +- Long id +- String ruleName +- Date expireTime +- Long isForever +- String ruleKey +- Object status +- BigDecimal eachScore +- {static} long serialVersionUID +} + +class ZjkPointUser { +- String id +- Long userId +- Long expertId +- String rewardId +- String rewardTitle +- BigDecimal pointCount +- Integer checkStatus +- String remark +- Date checkTime +- Date changeTime +- {static} long serialVersionUID +} + +class ZjkExpertLog { +- {static} long serialVersionUID +- Long id +- String name +- String contactInfo +- String organization +- String position +- Integer entryResult +- Date applicationTime +- String rejectionReason +- Long expertId +} + +class ZjkLeaveRule { +- String gid +- Long leaveDay +- String beforeDay +- String proBeforeHour +- String tenantId +- {static} long serialVersionUID +} + +class ZjkEvaluate { +- String id +- Long evaluateUser +- String expertPost +- String isPresent +- String itemId +- Integer itemStage +- BigDecimal busLevelScore +- BigDecimal workAttitudeScore +- BigDecimal rightApprovalScore +- String expertComment +- String evaluateFile +- Integer status +- String tenantId +- Integer sourceRole +- {static} long serialVersionUID +} + +class ZjkPoint { +- Long id +- BigDecimal points +- Long ruleId +- Long userId +- Long expertId +- String evaluateId +- {static} long serialVersionUID +} + +class ZjkProductSummarize { +- {static} long serialVersionUID +- Long id +- Long reviewId +- String productSummarizeName +- String productSummarizeType +- String productGeneral +- String reviewScope +- String reviewConclusion +- String feedback +- String subsequent +- String attachment +- String expertIds +- String status +- String remark +- Long delFlag +- Date auditTime +- String auditStatus +- String auditRemark +- Long auditBy +- Long productId +- String reviewSn +} + +class ZjkProduct { +- {static} long serialVersionUID +- Long id +- String productSn +- String productName +- String productType +- Integer productScale +- String productUnit +- String unitBy +- String unitConcat +- String productBrief +- String productDataUrl +- Long status +- Long delFlag +- String remark +- Long userId +} + +class ZjkSmsInfo { +- Long id +- Integer sendStatus +- String templateId +- String smsContent +- Integer sendNum +- String statusId +- String returnMsg +- String returnCode +- String batchNum +- Integer batchType +- Long receiveUserId +- Long sendBy +- String paramJson +- String receivePhone +- {static} long serialVersionUID +} + +class ZjkExpertItem { +- {static} long serialVersionUID +- Long id +- Long expertId +- Long itemId +- Long userId +- Long deptId +- String leaveStatus +- String acceptStatus +- Long reviewId +- Integer isSure +- Integer isSource +- Integer extractionStatus +- Integer smsIsSuer +- String confirmCode +- String refuseCode +} + +class ZjkExpertMajor { +- {static} long serialVersionUID +- Long id +- Long userId +- Long expertId +- String major +- Integer degree +- Integer status +- String remark +} + +class ZjkCreditReward { +- {static} long serialVersionUID +- String ID +- String rewardName +- Long rewardType +- String rewardContent +- Long rewardObj +- String effectFlag +- Long effectStandard +- Date rewardUntil +- Long isForever +- Long status +} + +class ZjkCreditLv { +- {static} long serialVersionUID +- Long id +- String creditName +- Long creditSectionLe +- Long creditSectionGe +} + +class ZjkCreditUser { +- {static} long serialVersionUID +- String ID +- Long userId +- Long expertId +- String rewardId +- String rewardTitle +- Long creditCount +- Date changeTime +- Long lvId +} + +class ZjkSmsTemplate { +- Long id +- String tmlType +- String tmlContent +- Integer startFlag +- String title +} + +class ZjkSmsUp { +- Long id +- String content +- Long userId +- String mobile +- Date sendTime +- String loginName +- Date createTime +- Integer upType +- {static} long serialVersionUID +} + +class ZjkExpert { +- {static} long serialVersionUID +- Long expertId +- String expertName +- Long sex +- Date birthDate +- String contact +- String workUnit +- String duty +- String politics +- String graduateSchool +- String major +- String email +- String professional +- Date professionalAcquisitionDate +- String workProfessial +- Integer workProfessialYear +- String photograph +- String performWorkId +- String otherDescribe +- String workExperience +- String workPluralistic +- String achievement +- String paperpath +- String patentpath +- String remark +- Integer deleteFlag +- String tenantId +- Long createDept +- Integer useFlag +- Integer status +- Integer isRecommend +- String expertSources +- Long userId +- Long createBy +- Date createTime +- Long updateBy +- Date updateTime +- Integer approvalType +- String unitType +- String idCard +- String province +- String city +- String area +- String address +- List majorList +- List professionalList +- List zjkExpertAwardsList +- List zjkExpertPaperList +- List zjkExpertPatentList +- String annualInspectionStatus +- String annualInspectionTime +- Date approvalTime +- Integer creditCount +- String otherPath +- Date retirementTime +- Long positionTitleLevel +- String origin +- String unitTypeDescribe +} + +class ZjkLearningMaterials { +- {static} long serialVersionUID +- Long id +- Long revision +- String materialsId +- String materialsName +- String materialsCount +- String status +- String delFalg +- String materialsUrl +} + +class ZjkExpertProfessional { +- {static} long serialVersionUID +- Long id +- Long userId +- Long expertId +- String professional +- Date professionalDate +- Integer status +- String remark +} + +class ZjkInvoice { +- {static} long serialVersionUID +- Long id +- Long invoiceNumber +- BigDecimal invoiceMoney +- Date startDate +- String expertName +- String expertPhone +- String expertIdNumber +- String expertTitleLevel +- String invoiceAttached +- Long createBy +- Date createTime +- Long updateBy +- Date updateTime +- Long createDept +- String tenantId +} + +class ZjkReviewPhase { +- {static} long serialVersionUID +- Long id +- Long revision +- String reviewSn +- Date reviewTime +- String reviewPlace +- Integer plannedIntake +- String extractionMode +- String extractioRestriction +- String avoidanceExpert +- String avoidanceUnit +- Long itemId +- Long itemExtreationId +- String designatedNumber +- String area +- Integer effective +- String causeRepum +- Long parentId +- String extractArea +- Integer source +- Long isSummarize +- String confirmCode +- String refuseCode +} + +class ZjkExpertChart { +- String id +- Long expertId +- Long userId +- Object scorePerformWork +- Object scorePaper +- Object scorePatent +- Object scoreWorkYear +- Object scoreAwards +- Object scoreEvaluate +- Object scoreJoinTime +- Object scoreCredit +- String createDept +- String tenantId +- Long createBy +- Date createTime +- Long updateBy +- Date updateTime +- {static} long serialVersionUID +} + +class ZjkExpertMoneyInfo { +- Long moneyId +- String expertType +- String expertId +- BigDecimal expertMoney +- BigDecimal expertNoPayMoney +- BigDecimal expertPayMoney +- String expertName +- String expertUnit +- String tenantId +- Object assignId +- String remark +- String expertMoneyFlag +- String expertMoneyFile +- String productId +- String productType +- String productName +- Date reviewDate +- Date settlementDate +- String settlementSn +- String paySn +- String status +- BigDecimal expertTypeMoneyFee +- String expertIdcard +- String expertContact +- String reviewCount +- String moneyCycle +- String payMethod +- {static} long serialVersionUID +} + + + +TenantEntity <|-- ZjkLearningCreditRecord +TenantEntity <|-- ZjkDataChangesLogs +TenantEntity <|-- ZjkProductReviewsn +TenantEntity <|-- ZjkApprovalProcessLogs +TenantEntity <|-- ZjkProjectEvaluation +TenantEntity <|-- ZjkExpertHistory +TenantEntity <|-- ZjkProductSummarizeLog +TenantEntity <|-- ZjkCredit +TenantEntity <|-- ZjkExpertMoneyConfig +Serializable <|.. ZjkPointReward +BaseEntity <|-- ZjkPointReward +TenantEntity <|-- ZjkCreditRule +BaseEntity <|-- ZjkItemExtreation +Serializable <|.. ZjkLeave +BaseEntity <|-- ZjkPointRule +BaseEntity <|-- ZjkPointUser +TenantEntity <|-- ZjkExpertLog +Serializable <|.. ZjkLeaveRule +BaseEntity <|-- ZjkLeaveRule +Serializable <|.. ZjkEvaluate +BaseEntity <|-- ZjkEvaluate +BaseEntity <|-- ZjkPoint +TenantEntity <|-- ZjkProductSummarize +TenantEntity <|-- ZjkProduct +Serializable <|.. ZjkSmsInfo +BaseEntity <|-- ZjkSmsInfo +BaseEntity <|-- ZjkExpertItem +TenantEntity <|-- ZjkExpertMajor +TenantEntity <|-- ZjkCreditReward +TenantEntity <|-- ZjkCreditLv +TenantEntity <|-- ZjkCreditUser +Serializable <|.. ZjkSmsTemplate +BaseEntity <|-- ZjkSmsTemplate +Serializable <|.. ZjkSmsUp +BaseEntity <|-- ZjkExpert +TenantEntity <|-- ZjkLearningMaterials +TenantEntity <|-- ZjkExpertProfessional +BaseEntity <|-- ZjkInvoice +TenantEntity <|-- ZjkReviewPhase +Serializable <|.. ZjkExpertChart +TenantEntity <|-- ZjkExpertMoneyInfo +@enduml \ No newline at end of file diff --git "a/\346\216\247\345\210\266\345\231\250.puml" "b/\346\216\247\345\210\266\345\231\250.puml" new file mode 100644 index 0000000000000000000000000000000000000000..e31a1f9f538a86fd5bb943826cc52791f2b2e154 --- /dev/null +++ "b/\346\216\247\345\210\266\345\231\250.puml" @@ -0,0 +1,472 @@ +@startuml +class org.dromara.zjk.controller.ZjkExpertHistoryController { +- IZjkExpertHistoryService zjkExpertHistoryService ++ TableDataInfo list(ZjkExpertHistoryBo,PageQuery) ++ void export(ZjkExpertHistoryBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertHistoryBo) ++ R edit(ZjkExpertHistoryBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkInvoiceController { +- IZjkInvoiceService zjkInvoiceService ++ TableDataInfo list(ZjkInvoiceBo,PageQuery) ++ R getInfo(Long) ++ R add(ZjkInvoiceBo) ++ R edit(ZjkInvoiceBo) ++ R remove(Long[]) ++ void downloadExcel(HttpServletResponse) ++ R imports(MultipartFile) ++ R audit(MultipartFile) ++ R statistics() +} + + +class org.dromara.zjk.controller.ZjkCreditRewardController { +- IZjkCreditRewardService zjkCreditRewardService ++ List list(String) ++ void export(ZjkCreditRewardBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkCreditRewardBo) ++ R edit(ZjkCreditRewardBo) ++ R remove(String[]) ++ R> ruleList(ZjkCreditRuleBo) ++ List queryRewardlist(String) +} + + +class org.dromara.zjk.controller.ZjkLearningMaterialsController { +- IZjkLearningMaterialsService zjkLearningMaterialsService ++ TableDataInfo list(ZjkLearningMaterialsBo,PageQuery) ++ void export(ZjkLearningMaterialsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkLearningMaterialsBo) ++ R edit(ZjkLearningMaterialsBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkProductSummarizeLogController { +- IZjkProductSummarizeLogService zjkProductSummarizeLogService ++ TableDataInfo list(ZjkProductSummarizeLogBo,PageQuery) ++ void export(ZjkProductSummarizeLogBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductSummarizeLogBo) ++ R edit(ZjkProductSummarizeLogBo) ++ R remove(Long[]) ++ R edit(AuditVo) +} + + +class org.dromara.zjk.controller.ZjkEvaluateController { +- ZjkEvaluateService zjkEvaluateService ++ TableDataInfo listToZj(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToOrg(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToXm(ZjkEvaluateVO,PageQuery) ++ R addComment(ZjkEvaluateVO) ++ R getInfo(String) ++ TableDataInfo getEvaluateListByExpert(ZjkEvaluateVO,PageQuery) ++ R getStsNum() ++ R stsChart(Integer) ++ TableDataInfo getStsList(ZjkEvaluateVO,PageQuery) ++ void export(ZjkEvaluateVO,HttpServletResponse) +} + + +class org.dromara.zjk.controller.ZjkExpertItemController { +- IZjkExpertItemService zjkExpertItemService ++ TableDataInfo list(ZjkItemExtreationBo,PageQuery) ++ void export(ZjkExpertItemBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertItemBo) ++ R edit(ZjkExpertItemBo) ++ R remove(Long[]) ++ R expertltem(String) ++ R> concatenated(String) ++ R> unitList(String) ++ R cancel(ZjkProjectExpertItemBo) ++ R> expertTop5(String) ++ R> getByReviewId(Long) ++ R handleSmsReply(SmsUpEventDto) +} + + +class org.dromara.zjk.controller.ZjkJgHomeController { +- ZjkJgHomeService zjkJgHomeService ++ R getJgStatistics() +} + + +class org.dromara.zjk.controller.ZjkProductController { +- IZjkProductService zjkProductService ++ TableDataInfo list(ZjkProductBo,PageQuery) ++ TableDataInfo getProduct(PageQuery,Long) ++ List getProduct_redirectView(Long) ++ ItemVO getItemId(Long,Long) ++ TableDataInfo queryByList() ++ void export(ZjkProductBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductBo) ++ R edit(ZjkProductBo) ++ R remove(Long[]) ++ R> productPanoramaDept() ++ TableDataInfo productPanorama(ProductPanoramaVo,PageQuery) ++ R> getProductPanoramaById(Long) ++ R getProductPanoramaCount() ++ R> getProductTypeCountReport() ++ R> getReviewStageSummary() ++ R> listByName(ZjkProductBo) ++ R addBo(ZjkProductBo) ++ R productReviewUpdate(ZjkProductBo) ++ TableDataInfo selectList(ZjkProductBo,PageQuery) ++ R selectProductId(Long) ++ R removeByProductId(Long) ++ R projectSummaryStatistics() +} + + +class org.dromara.zjk.controller.ZjkProductSummarizeController { +- IZjkProductSummarizeService zjkProductSummarizeService ++ TableDataInfo list(ZjkProductSummarizeBo,PageQuery) ++ void export(ZjkProductSummarizeBo,HttpServletResponse) ++ void exportTemplate(HttpServletResponse) ++ R exportImport(MultipartFile) ++ R getInfo(Long) ++ R> getExpertByReviewId(Long) ++ R add(ZjkProductSummarizeBo) ++ R edit(ZjkProductSummarizeBo) ++ R remove(Long[]) ++ R projectEvaluation(ZjkProductSummarizeBo) ++ R getProductSummarizeCount() +} + + +class org.dromara.zjk.controller.ZjkExpertLogController { +- IZjkExpertLogService zjkExpertLogService ++ TableDataInfo list(ZjkExpertLogBo,PageQuery) ++ void export(ZjkExpertLogBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertLogBo) ++ R edit(ZjkExpertLogBo) ++ R remove(Long[]) ++ R>> getApplicationResults(String,String) +} + + +class org.dromara.zjk.controller.ZjkExpertMoneyInfoController { +- ZjkExpertMoneyInfoService zjkExpertMoneyInfoService ++ TableDataInfo page(ZjkExpertMoneyInfoBo,PageQuery) ++ R updateSettlement(ZjkExpertMoneyInfoBo) ++ R update(ZjkExpertMoneyInfoBo) ++ void export(ZjkExpertMoneyInfoBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertMoneyInfoBo) ++ R edit(ZjkExpertMoneyInfoBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.SmsUpController { +- ZjkSmsInfoService zjkSmsInfoService +- DynamicTask dynamicTask ++ String handleUpData(SmsUpDto) ++ R sendData(SmsSendDto) +} + + +class org.dromara.zjk.controller.ZjkItemExtreationController { +- IZjkItemExtreationService zjkItemExtreationService ++ TableDataInfo list(ZjkItemExtreationBo,PageQuery) ++ R getInfo1(Long) ++ void export(ZjkItemExtreationBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkItemExtreationBo) ++ R edit(ZjkItemExtreationBo) ++ R queryOne(Long) +} + + +class org.dromara.zjk.controller.ZjkReviewPhaseController { +- IZjkReviewPhaseService zjkReviewPhaseService ++ TableDataInfo list(ZjkReviewPhaseBo,PageQuery) ++ void export(ZjkReviewPhaseBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkReviewPhaseBo) ++ R edit(ZjkReviewPhaseBo) ++ R remove(String[]) ++ TableDataInfo reviewProductList(ZjkReviewProductBo,PageQuery) ++ void reviewExport(ZjkReviewProductBo,HttpServletResponse) ++ R getInfo(Long) ++ TableDataInfo getReviewProductListByExpert(ZjkReviewProductBo,PageQuery) ++ R getReviewCount() +} + + +class org.dromara.zjk.controller.ApiController { +- {static} String DEFAULT_SECRET_KEY +- RemoteConfigService remoteConfigService +- IZjkExpertService zjkExpertService ++ R getEncryptedExpertData(String) ++ String decryptData(String,String) +} + + +class org.dromara.zjk.controller.ZjkExpertController { +- IZjkExpertService zjkExpertService ++ TableDataInfo expertList(ZjkExpertBo,PageQuery) ++ TableDataInfo pendingApproval(ZjkExpertBo,PageQuery) ++ TableDataInfo list(ZjkExpertBo,PageQuery) ++ TableDataInfo expertInquiry(ZjkExpertBo,PageQuery) ++ TableDataInfo querylist() ++ void export(ZjkExpertBo,HttpServletResponse) ++ R imports(MultipartFile) ++ R getInfo(Long) ++ R save(ZjkExpertBo) ++ R sub(ZjkExpertBo) ++ R approval(ApprovalCommonBo) ++ R edit(ZjkExpertBo) ++ R remove(Long[]) ++ R getInfoByUserId() ++ R getInfoByUserIdAndExpertId(ZjkExpertBo) ++ R expertQuash() ++ R getExpertCount() ++ R getExpertBaseInfo() ++ R> getExpertPerformWorkCount(Integer) ++ R> getUnitCount() ++ R> getPoliticsCount() ++ R>> getAgeRangeStatistics() ++ R>> workProfessialYear() ++ R>> getApprovalTimeAnalysis(String,String) ++ R getApprovalTimeCountThisYear() ++ R fetchRemoteProfessors() +} + + +class org.dromara.zjk.controller.ZjkPointController { +- ZjkPointRuleService zjkPointRuleService +- ZjkPointRewardService zjkPointRewardService +- ZjkPointUserService zjkPointUserService +- RemoteUserService remoteUserService ++ void initBinder(WebDataBinder) ++ R> pointRule(PointReqDto) ++ R> rewardList(PointReqDto) ++ R addReward(ZjkPointReward) ++ R updateReward(ZjkPointReward) ++ R updateRewardStatus(ZjkPointReward) ++ R updateRuleStatus(PointReqDto) ++ R deleteRecord(String) ++ R getRewardInfo(String) ++ TableDataInfo pointList(PointReqDto,PageQuery) ++ TableDataInfo checkPointList(PointReqDto,PageQuery) ++ TableDataInfo pointDetail(PointReqDto,PageQuery) ++ R deleteRecord(Long,String) ++ R pointTrend(String,String) ++ R pointCheck(ZjkPointUser) ++ R pointCheckDetail(String) ++ R pointBase() ++ R expertPointRank(Integer) +} + + +class org.dromara.zjk.controller.ZjkProjectEvaluationController { +- IZjkProjectEvaluationService zjkProjectEvaluationService ++ TableDataInfo list(ZjkProjectEvaluationBo,PageQuery) ++ void export(ZjkProjectEvaluationBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProjectEvaluationBo) ++ R edit(ZjkProjectEvaluationBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkExpertMajorController { +- IZjkExpertMajorService zjkExpertMajorService ++ TableDataInfo list(ZjkExpertMajorBo,PageQuery) ++ void export(ZjkExpertMajorBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertMajorBo) ++ R edit(ZjkExpertMajorBo) ++ R remove(Long[]) ++ R>> getExpertMajorCount() +} + + +class org.dromara.zjk.controller.ZjkApprovalProcessLogsController { +- IZjkApprovalProcessLogsService zjkApprovalProcessLogsService ++ TableDataInfo list(ZjkApprovalProcessLogsBo,PageQuery) ++ void export(ZjkApprovalProcessLogsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkApprovalProcessLogsBo) ++ R edit(ZjkApprovalProcessLogsBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkChartController { +- ZjkExpertChartService zjkExpertChartService ++ R getChartBase(Long) ++ R> getExperts() ++ R getSameOtherData(Long) +} + + +class org.dromara.zjk.controller.ZjkDataChangesLogsController { +- IZjkDataChangesLogsService zjkDataChangesLogsService ++ TableDataInfo list(ZjkDataChangesLogsBo,PageQuery) ++ void export(ZjkDataChangesLogsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkDataChangesLogsBo) ++ R edit(ZjkDataChangesLogsBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkLearningCreditRecordController { +- IZjkLearningCreditRecordService zjkLearningCreditRecordService ++ TableDataInfo list(ZjkLearningCreditRecordBo,PageQuery) ++ void export(ZjkLearningCreditRecordBo,HttpServletResponse) ++ R> getInfo(Long) ++ R add(ZjkLearningCreditRecordBo) ++ R edit(ZjkLearningCreditRecordBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkCreditLvController { +- IZjkCreditLvService zjkCreditLvService ++ R> list() ++ void export(ZjkCreditLvBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkCreditLvBo) ++ R edit(ZjkCreditLvBo) ++ R remove(Long[]) ++ List countReson(ZjkCreditLvVo) +} + + +class org.dromara.zjk.controller.ZjkCreditController { +- IZjkCreditService zjkCreditService ++ TableDataInfo list(ZjkCreditBo,PageQuery) ++ void export(ZjkCreditBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkCreditBo) ++ R edit(ZjkCreditBo) ++ R remove(Long[]) ++ R expertPointRankUser() ++ TableDataInfo creditList(CreditReqDto,PageQuery) ++ R pointBase() ++ R synchronization() +} + + +class org.dromara.zjk.controller.ZjkLeaveController { +- IZjkLeaveService zjkLeaveService +- IZjkLeaveRuleService zjkLeaveRuleService ++ void initBinder(WebDataBinder) ++ TableDataInfo getLeavePros() ++ TableDataInfo getProsForAccept() ++ TableDataInfo getProsForJoin() ++ R leaveForPro(ZjkEvaluateVO) ++ R setAccept(ZjkEvaluateVO) ++ TableDataInfo list(ZjkLeaveBo,PageQuery) ++ TableDataInfo adminList(ZjkLeaveBo,PageQuery) ++ TableDataInfo splist(ZjkLeaveBo,PageQuery) ++ R getInfo(String) ++ R getLeavelRule() ++ R edit(ZjkLeaveRuleBo) ++ R add(ZjkLeaveBo) ++ R edit(ZjkLeaveBo) ++ R stsNum() ++ R stsChart(Integer) +} + + +class org.dromara.zjk.controller.ZjkExpertProfessionalController { +- IZjkExpertProfessionalService zjkExpertProfessionalService ++ TableDataInfo list(ZjkExpertProfessionalBo,PageQuery) ++ void export(ZjkExpertProfessionalBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertProfessionalBo) ++ R edit(ZjkExpertProfessionalBo) ++ R remove(Long[]) ++ R> professionalList() +} + + +class org.dromara.zjk.controller.ZjkProductReviewsnController { +- IZjkProductReviewsnService zjkProductReviewsnService ++ TableDataInfo list(ZjkProductReviewsnBo,PageQuery) ++ void export(ZjkProductReviewsnBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductReviewsnBo) ++ R edit(ZjkProductReviewsnBo) ++ R remove(Long[]) +} + + +class org.dromara.zjk.controller.ZjkCreditUserController { +- IZjkCreditUserService zjkCreditUserService ++ TableDataInfo list(ZjkCreditUserBo,PageQuery) ++ void export(ZjkCreditUserBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkCreditUserBo) ++ R edit(ZjkCreditUserBo) ++ R remove(String[]) ++ R expertPointRank(Integer) ++ R> expertPointRanks(ZjkCreditBo,PageQuery) ++ R> blacklist(ZjkCreditBo) ++ R> outCreditId(Long) ++ R moveToBlacklist(ZjkCreditUserBo) ++ R removeTheBlacklist(ZjkCreditUserBo) ++ R getBlacklistCount() ++ R getCount() +} + + +class org.dromara.zjk.controller.ZjkExpertMoneyConfigController { +- IZjkExpertMoneyConfigService zjkExpertMoneyConfigService ++ TableDataInfo list(ZjkExpertMoneyConfigBo,PageQuery) ++ void export(ZjkExpertMoneyConfigBo,HttpServletResponse) ++ void exportTemplate(HttpServletResponse) ++ R imports(MultipartFile) ++ R getInfo(Long) ++ R add(ZjkExpertMoneyConfigBo) ++ R edit(ZjkExpertMoneyConfigBo) ++ R remove(Long[]) ++ R> getExpertMoneyConfig() +} + + + + +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertHistoryController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkInvoiceController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkCreditRewardController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkLearningMaterialsController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkProductSummarizeLogController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkEvaluateController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertItemController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkProductController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkProductSummarizeController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertLogController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertMoneyInfoController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkItemExtreationController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkReviewPhaseController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkPointController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkProjectEvaluationController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertMajorController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkApprovalProcessLogsController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkChartController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkDataChangesLogsController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkLearningCreditRecordController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkCreditLvController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkCreditController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkLeaveController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertProfessionalController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkProductReviewsnController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkCreditUserController +org.dromara.common.web.core.BaseController <|-- org.dromara.zjk.controller.ZjkExpertMoneyConfigController +@enduml \ No newline at end of file diff --git "a/\346\216\247\345\210\266\345\231\2502.puml" "b/\346\216\247\345\210\266\345\231\2502.puml" new file mode 100644 index 0000000000000000000000000000000000000000..e19d206d31d6bf9426e9b3b822d37544e9ac091c --- /dev/null +++ "b/\346\216\247\345\210\266\345\231\2502.puml" @@ -0,0 +1,2173 @@ +@startuml +class ZjkExpertHistoryController { +- IZjkExpertHistoryService zjkExpertHistoryService ++ TableDataInfo list(ZjkExpertHistoryBo,PageQuery) ++ void export(ZjkExpertHistoryBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertHistoryBo) ++ R edit(ZjkExpertHistoryBo) ++ R remove(Long[]) +} +note top of ZjkExpertHistoryController + + * 专家记录变更历史表 + * 前端访问路由地址为:/expert/expertHistory + * + * @author zhangzhou + * @date 2024-11-02 + +end note + + +note left of ZjkExpertHistoryController::list(ZjkExpertHistoryBo,PageQuery) + + * 查询专家记录变更历史表列表 + +end note +note right of ZjkExpertHistoryController::export(ZjkExpertHistoryBo,HttpServletResponse) + + * 导出专家记录变更历史表列表 + +end note +note left of ZjkExpertHistoryController::getInfo(Long) + + * 获取专家记录变更历史表详细信息 + * + * @param id 主键 + +end note +note right of ZjkExpertHistoryController::add(ZjkExpertHistoryBo) + + * 新增专家记录变更历史表 + +end note +note left of ZjkExpertHistoryController::edit(ZjkExpertHistoryBo) + + * 修改专家记录变更历史表 + +end note +note right of ZjkExpertHistoryController::remove(Long[]) + + * 删除专家记录变更历史表 + * + * @param ids 主键串 + +end note + +class ZjkInvoiceController { +- IZjkInvoiceService zjkInvoiceService ++ TableDataInfo list(ZjkInvoiceBo,PageQuery) ++ R getInfo(Long) ++ R add(ZjkInvoiceBo) ++ R edit(ZjkInvoiceBo) ++ R remove(Long[]) ++ void downloadExcel(HttpServletResponse) ++ R imports(MultipartFile) ++ R audit(MultipartFile) ++ R statistics() +} +note top of ZjkInvoiceController + + * 发票 + *财务管理》》发票管理 + * @author mzx + * @date 2024-12-09 + +end note + + +note left of ZjkInvoiceController::list(ZjkInvoiceBo,PageQuery) + + * 查询发票列表 + * + +end note +note right of ZjkInvoiceController::getInfo(Long) + + * 获取发票详细信息 + * + * @param id 主键 + +end note +note left of ZjkInvoiceController::add(ZjkInvoiceBo) + + * 新增发票 + +end note +note right of ZjkInvoiceController::edit(ZjkInvoiceBo) + + * 修改发票 + +end note +note left of ZjkInvoiceController::remove(Long[]) + + * 删除发票 + * + * @param ids 主键串 + +end note +note right of ZjkInvoiceController::downloadExcel(HttpServletResponse) + + * 下载excel模板 + * + * @param + +end note +note left of ZjkInvoiceController::imports(MultipartFile) +@SaCheckPermission("zjk:invoice:import") +end note +note right of ZjkInvoiceController::audit(MultipartFile) + + * 发票信息审核 + * + * @param file + * @return + +end note +note left of ZjkInvoiceController::statistics() + + * 发票统计和报表 + * + * @param + * @return + +end note + +class ZjkCreditRewardController { +- IZjkCreditRewardService zjkCreditRewardService ++ List list(String) ++ void export(ZjkCreditRewardBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkCreditRewardBo) ++ R edit(ZjkCreditRewardBo) ++ R remove(String[]) ++ R> ruleList(ZjkCreditRuleBo) ++ List queryRewardlist(String) +} +note top of ZjkCreditRewardController + + * 信用奖励 + * 前端访问路由地址为:/zjk/creditReward + * + * @author ygh + * @date 2024-11-11 + +end note + + +note left of ZjkCreditRewardController::list(String) + @SaCheckPermission("zjk:creditReward:list") +end note +note right of ZjkCreditRewardController::export(ZjkCreditRewardBo,HttpServletResponse) + + * 导出信用奖励列表 + +end note +note left of ZjkCreditRewardController::getInfo(String) + + * 获取信用奖励详细信息 + * + * @param ID 主键 + +end note +note right of ZjkCreditRewardController::add(ZjkCreditRewardBo) + + * 新增信用奖励 + +end note +note left of ZjkCreditRewardController::edit(ZjkCreditRewardBo) + + * 修改信用奖励 + +end note +note right of ZjkCreditRewardController::remove(String[]) + + * 删除信用奖励 + * + * @param IDs 主键串 + +end note +note left of ZjkCreditRewardController::ruleList(ZjkCreditRuleBo) + + *信用规则列表 + +end note +note right of ZjkCreditRewardController::queryRewardlist(String) + + *信用规则列表 + +end note + +class ZjkLearningMaterialsController { +- IZjkLearningMaterialsService zjkLearningMaterialsService ++ TableDataInfo list(ZjkLearningMaterialsBo,PageQuery) ++ void export(ZjkLearningMaterialsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkLearningMaterialsBo) ++ R edit(ZjkLearningMaterialsBo) ++ R remove(Long[]) +} +note top of ZjkLearningMaterialsController + + * 信用资料 + * 前端访问路由地址为:/jyk/learningMaterials + * + * @author ygh + * @date 2024-11-26 + +end note + + +note left of ZjkLearningMaterialsController::list(ZjkLearningMaterialsBo,PageQuery) + },mode = SaMode.OR) +end note +note right of ZjkLearningMaterialsController::export(ZjkLearningMaterialsBo,HttpServletResponse) + },mode = SaMode.OR) +end note +note left of ZjkLearningMaterialsController::getInfo(Long) + },mode = SaMode.OR) +end note +note right of ZjkLearningMaterialsController::add(ZjkLearningMaterialsBo) + },mode = SaMode.OR) +end note +note left of ZjkLearningMaterialsController::edit(ZjkLearningMaterialsBo) + },mode = SaMode.OR) +end note +note right of ZjkLearningMaterialsController::remove(Long[]) + },mode = SaMode.OR) +end note + +class ZjkProductSummarizeLogController { +- IZjkProductSummarizeLogService zjkProductSummarizeLogService ++ TableDataInfo list(ZjkProductSummarizeLogBo,PageQuery) ++ void export(ZjkProductSummarizeLogBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductSummarizeLogBo) ++ R edit(ZjkProductSummarizeLogBo) ++ R remove(Long[]) ++ R edit(AuditVo) +} +note top of ZjkProductSummarizeLogController + + * 总结日志表 + * 前端访问路由地址为:/zjk/productSummarizeLog + * + * @author ygh + * @date 2024-11-04 + +end note + + +note left of ZjkProductSummarizeLogController::list(ZjkProductSummarizeLogBo,PageQuery) + + * 查询总结日志表列表 + +end note +note right of ZjkProductSummarizeLogController::export(ZjkProductSummarizeLogBo,HttpServletResponse) + + * 导出总结日志表列表 + +end note +note left of ZjkProductSummarizeLogController::getInfo(Long) + + * 获取总结日志表详细信息 + * + * @param id 主键 + +end note +note right of ZjkProductSummarizeLogController::add(ZjkProductSummarizeLogBo) + + * 新增总结日志表 + +end note +note left of ZjkProductSummarizeLogController::edit(ZjkProductSummarizeLogBo) + + * 修改总结日志表 + +end note +note right of ZjkProductSummarizeLogController::remove(Long[]) + + * 删除总结日志表 + * + * @param ids 主键串 + +end note + +class ZjkEvaluateController { +- ZjkEvaluateService zjkEvaluateService ++ TableDataInfo listToZj(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToOrg(ZjkEvaluateVO,PageQuery) ++ TableDataInfo listToXm(ZjkEvaluateVO,PageQuery) ++ R addComment(ZjkEvaluateVO) ++ R getInfo(String) ++ TableDataInfo getEvaluateListByExpert(ZjkEvaluateVO,PageQuery) ++ R getStsNum() ++ R stsChart(Integer) ++ TableDataInfo getStsList(ZjkEvaluateVO,PageQuery) ++ void export(ZjkEvaluateVO,HttpServletResponse) +} +note top of ZjkEvaluateController + + * 专家库专家互评控制器 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/30 16:57 + +end note + + +note left of ZjkEvaluateController::listToZj(ZjkEvaluateVO,PageQuery) + + * 查询专家评价列表-专家 + +end note +note right of ZjkEvaluateController::listToOrg(ZjkEvaluateVO,PageQuery) + + * 查询专家评价列表-管理员 + +end note +note left of ZjkEvaluateController::listToXm(ZjkEvaluateVO,PageQuery) + + * 查询专家评价列表-项目管理员 + +end note +note right of ZjkEvaluateController::addComment(ZjkEvaluateVO) + + * 专家评价新增 + +end note +note left of ZjkEvaluateController::getInfo(String) + + * 获取专家评价详细信息 + * + * @param gid 主键 + +end note +note right of ZjkEvaluateController::getEvaluateListByExpert(ZjkEvaluateVO,PageQuery) + + * 评价反馈 + +end note +note left of ZjkEvaluateController::getStsNum() + + * 获取评价统计次数 + +end note +note right of ZjkEvaluateController::stsChart(Integer) + + * 专家互评图表统计 + +end note +note left of ZjkEvaluateController::getStsList(ZjkEvaluateVO,PageQuery) + + * 互评统计列表-管理员 + +end note +note right of ZjkEvaluateController::export(ZjkEvaluateVO,HttpServletResponse) + + * 互评统计导出 + +end note + +class ZjkExpertItemController { +- IZjkExpertItemService zjkExpertItemService ++ TableDataInfo list(ZjkItemExtreationBo,PageQuery) ++ void export(ZjkExpertItemBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertItemBo) ++ R edit(ZjkExpertItemBo) ++ R remove(Long[]) ++ R expertltem(String) ++ R> concatenated(String) ++ R> unitList(String) ++ R cancel(ZjkProjectExpertItemBo) ++ R> expertTop5(String) ++ R> getByReviewId(Long) ++ R handleSmsReply(SmsUpEventDto) +} +note top of ZjkExpertItemController + + *专家抽取记录 + * 前端访问路由地址为:/jyk/expertItem + * + * @author ygh + * @date 2024-10-29 + +end note + + +note left of ZjkExpertItemController::list(ZjkItemExtreationBo,PageQuery) + + * 查询专家列表 + +end note +note right of ZjkExpertItemController::export(ZjkExpertItemBo,HttpServletResponse) + + * 导出专家抽取列表 + +end note +note left of ZjkExpertItemController::getInfo(Long) + @SaCheckPermission("jyk:expertItem:query") +end note +note right of ZjkExpertItemController::add(ZjkExpertItemBo) + + * 新增专家抽取 + +end note +note left of ZjkExpertItemController::edit(ZjkExpertItemBo) + + * 修改专家抽取 + +end note +note right of ZjkExpertItemController::remove(Long[]) + + * 删除专家抽取 + * + * @param ids 主键串 + +end note +note left of ZjkExpertItemController::expertltem(String) + + * 专家抽取 + * + * @param zjkProjectExpertItemBo 抽取设置 + +end note +note right of ZjkExpertItemController::concatenated(String) +专家级联查询 +end note +note left of ZjkExpertItemController::getByReviewId(Long) + + * 通过 记录id 查询专家 + * @param reviewId + * @return + +end note +note right of ZjkExpertItemController::handleSmsReply(SmsUpEventDto) + + * 专家短信息回复回调接口 + * @param smsUpEventDto + * @return + +end note + +class ZjkJgHomeController { +- ZjkJgHomeService zjkJgHomeService ++ R getJgStatistics() +} +note top of ZjkJgHomeController + + * 机构管理员首页接口 + * 前端访问路由地址为:/zjkHome + +end note + + +note left of ZjkJgHomeController::getJgStatistics() + + * 获取机构管理员首页统计数据 + * @return + +end note + +class ZjkProductController { +- IZjkProductService zjkProductService ++ TableDataInfo list(ZjkProductBo,PageQuery) ++ TableDataInfo getProduct(PageQuery,Long) ++ List getProduct_redirectView(Long) ++ ItemVO getItemId(Long,Long) ++ TableDataInfo queryByList() ++ void export(ZjkProductBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductBo) ++ R edit(ZjkProductBo) ++ R remove(Long[]) ++ R> productPanoramaDept() ++ TableDataInfo productPanorama(ProductPanoramaVo,PageQuery) ++ R> getProductPanoramaById(Long) ++ R getProductPanoramaCount() ++ R> getProductTypeCountReport() ++ R> getReviewStageSummary() ++ R> listByName(ZjkProductBo) ++ R addBo(ZjkProductBo) ++ R productReviewUpdate(ZjkProductBo) ++ TableDataInfo selectList(ZjkProductBo,PageQuery) ++ R selectProductId(Long) ++ R removeByProductId(Long) ++ R projectSummaryStatistics() +} +note top of ZjkProductController + + * 项目管理 + * 前端访问路由地址为:/zjk/product + * + * @author ygh + * @date 2024-11-01 + +end note + + +note left of ZjkProductController::list(ZjkProductBo,PageQuery) + + * 查询项目管理列表 + +end note +note right of ZjkProductController::queryByList() + + * 查询项目管理列表 + +end note +note left of ZjkProductController::export(ZjkProductBo,HttpServletResponse) + + * 导出项目管理列表 + +end note +note right of ZjkProductController::getInfo(Long) + + * 获取项目管理详细信息 + * + * @param id 主键 + +end note +note left of ZjkProductController::add(ZjkProductBo) + + * 新增项目管理 + +end note +note right of ZjkProductController::edit(ZjkProductBo) + + * 修改项目管理 + +end note +note left of ZjkProductController::remove(Long[]) + + * 删除项目管理 + * + * @param ids 主键串 + +end note +note right of ZjkProductController::productPanoramaDept() + + * 获取项目全景 部门 + * @return + +end note +note left of ZjkProductController::getProductPanoramaCount() + + * 获取项目总数 + * @return + +end note +note right of ZjkProductController::getProductTypeCountReport() + + * 各项目类型数量统计 + * @return + +end note +note left of ZjkProductController::getReviewStageSummary() + + * 各评审阶段总结数量统计 + * @return + +end note +note right of ZjkProductController::listByName(ZjkProductBo) + + * 查询项目 项目名称动态查询 + +end note +note left of ZjkProductController::addBo(ZjkProductBo) + + * 新增项目文档 + +end note +note right of ZjkProductController::productReviewUpdate(ZjkProductBo) + + * 修改项目文档 + +end note +note left of ZjkProductController::selectProductId(Long) + + * 获取 项目文档 通过项目id + * @param productReviewId + * @return + +end note +note right of ZjkProductController::removeByProductId(Long) + + * 删除 项目文档 项目id + * @param productReviewId + * @return + +end note +note left of ZjkProductController::projectSummaryStatistics() + + * 项目总结统计信息 + * +end note + +class ZjkProductSummarizeController { +- IZjkProductSummarizeService zjkProductSummarizeService ++ TableDataInfo list(ZjkProductSummarizeBo,PageQuery) ++ void export(ZjkProductSummarizeBo,HttpServletResponse) ++ void exportTemplate(HttpServletResponse) ++ R exportImport(MultipartFile) ++ R getInfo(Long) ++ R> getExpertByReviewId(Long) ++ R add(ZjkProductSummarizeBo) ++ R edit(ZjkProductSummarizeBo) ++ R remove(Long[]) ++ R projectEvaluation(ZjkProductSummarizeBo) ++ R getProductSummarizeCount() +} +note top of ZjkProductSummarizeController + + * 项目总结 + * 前端访问路由地址为:/zjk/productSummarize + * + * @author ygh + * @date 2024-11-02 + +end note + + +note left of ZjkProductSummarizeController::list(ZjkProductSummarizeBo,PageQuery) + + * 查询项目总结列表 + +end note +note right of ZjkProductSummarizeController::export(ZjkProductSummarizeBo,HttpServletResponse) + + * 导出项目总结列表 + +end note +note left of ZjkProductSummarizeController::exportTemplate(HttpServletResponse) + + * 导出项目总结列表 + +end note +note right of ZjkProductSummarizeController::exportImport(MultipartFile) + + * 导出项目总结列表 + +end note +note left of ZjkProductSummarizeController::getInfo(Long) + + * 获取项目总结详细信息 + * + * @param id 主键 + +end note +note right of ZjkProductSummarizeController::add(ZjkProductSummarizeBo) + + * 新增项目总结 + +end note +note left of ZjkProductSummarizeController::edit(ZjkProductSummarizeBo) + + * 修改项目总结 + +end note +note right of ZjkProductSummarizeController::remove(Long[]) + + * 删除项目总结 + * + * @param ids 主键串 + +end note +note left of ZjkProductSummarizeController::projectEvaluation(ZjkProductSummarizeBo) + + * 修改项目总结 + +end note + +class ZjkExpertLogController { +- IZjkExpertLogService zjkExpertLogService ++ TableDataInfo list(ZjkExpertLogBo,PageQuery) ++ void export(ZjkExpertLogBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertLogBo) ++ R edit(ZjkExpertLogBo) ++ R remove(Long[]) ++ R>> getApplicationResults(String,String) +} +note top of ZjkExpertLogController + + * 入库记录 + * 前端访问路由地址为:/expert/expertLog + * + * @author zhangzhou + * @date 2024-10-31 + +end note + + +note left of ZjkExpertLogController::list(ZjkExpertLogBo,PageQuery) + + * 查询入库记录列表 + +end note +note right of ZjkExpertLogController::export(ZjkExpertLogBo,HttpServletResponse) + + * 导出入库记录列表 + +end note +note left of ZjkExpertLogController::getInfo(Long) + + * 获取入库记录详细信息 + * + * @param id 主键 + +end note +note right of ZjkExpertLogController::add(ZjkExpertLogBo) + + * 新增入库记录 + +end note +note left of ZjkExpertLogController::edit(ZjkExpertLogBo) + + * 修改入库记录 + +end note +note right of ZjkExpertLogController::remove(Long[]) + + * 删除入库记录 + * + * @param ids 主键串 + +end note +note left of ZjkExpertLogController::getApplicationResults(String,String) + + * 趋势分析 + * @return + +end note + +class ZjkExpertMoneyInfoController { +- ZjkExpertMoneyInfoService zjkExpertMoneyInfoService ++ TableDataInfo page(ZjkExpertMoneyInfoBo,PageQuery) ++ R updateSettlement(ZjkExpertMoneyInfoBo) ++ R update(ZjkExpertMoneyInfoBo) ++ void export(ZjkExpertMoneyInfoBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertMoneyInfoBo) ++ R edit(ZjkExpertMoneyInfoBo) ++ R remove(Long[]) +} +note top of ZjkExpertMoneyInfoController + + * 专家费用 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/30 16:57 + +end note + + +note left of ZjkExpertMoneyInfoController::page(ZjkExpertMoneyInfoBo,PageQuery) + + * 专家费用列表 + +end note +note right of ZjkExpertMoneyInfoController::updateSettlement(ZjkExpertMoneyInfoBo) + + * 结算 + * @param bo + * @return + +end note +note left of ZjkExpertMoneyInfoController::update(ZjkExpertMoneyInfoBo) + + * 支付 + * @param bo + * @return + +end note +note right of ZjkExpertMoneyInfoController::export(ZjkExpertMoneyInfoBo,HttpServletResponse) + + * 导出【请填写功能名称】列表 + +end note +note left of ZjkExpertMoneyInfoController::getInfo(Long) + + * 获取【请填写功能名称】详细信息 + * + * @param moneyId 主键 + +end note +note right of ZjkExpertMoneyInfoController::add(ZjkExpertMoneyInfoBo) + + * 新增【请填写功能名称】 + +end note +note left of ZjkExpertMoneyInfoController::edit(ZjkExpertMoneyInfoBo) + + * 修改【请填写功能名称】 + +end note +note right of ZjkExpertMoneyInfoController::remove(Long[]) + + * 删除【请填写功能名称】 + * + * @param moneyIds 主键串 + +end note + +class SmsUpController { +- ZjkSmsInfoService zjkSmsInfoService +- DynamicTask dynamicTask ++ String handleUpData(SmsUpDto) ++ R sendData(SmsSendDto) +} +note top of SmsUpController + + * 短信上行服务 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/12/24 9:38 + +end note + + + +class ZjkItemExtreationController { +- IZjkItemExtreationService zjkItemExtreationService ++ TableDataInfo list(ZjkItemExtreationBo,PageQuery) ++ R getInfo1(Long) ++ void export(ZjkItemExtreationBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkItemExtreationBo) ++ R edit(ZjkItemExtreationBo) ++ R queryOne(Long) +} +note top of ZjkItemExtreationController + + * 抽取 + * 前端访问路由地址为:/jyk/itemExtreation + * + * @author ygh + * @date 2024-10-29 + +end note + + +note left of ZjkItemExtreationController::list(ZjkItemExtreationBo,PageQuery) + + * 查询抽取列表 + +end note +note right of ZjkItemExtreationController::getInfo1(Long) + + * 通过规则查询 抽取记录 + * @param id + * @return + +end note +note left of ZjkItemExtreationController::export(ZjkItemExtreationBo,HttpServletResponse) + + * 导出抽取列表 + +end note +note right of ZjkItemExtreationController::getInfo(Long) + + * 获取抽取详细信息 + * + * @param id 主键 + +end note +note left of ZjkItemExtreationController::add(ZjkItemExtreationBo) + + * 新增【请填写功能名称】 + +end note +note right of ZjkItemExtreationController::edit(ZjkItemExtreationBo) + + * 抽取确认 + +end note +note left of ZjkItemExtreationController::queryOne(Long) + + * 获取抽取详情 + * + * @param id 主键 + +end note + +class ZjkReviewPhaseController { +- IZjkReviewPhaseService zjkReviewPhaseService ++ TableDataInfo list(ZjkReviewPhaseBo,PageQuery) ++ void export(ZjkReviewPhaseBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkReviewPhaseBo) ++ R edit(ZjkReviewPhaseBo) ++ R remove(String[]) ++ TableDataInfo reviewProductList(ZjkReviewProductBo,PageQuery) ++ void reviewExport(ZjkReviewProductBo,HttpServletResponse) ++ R getInfo(Long) ++ TableDataInfo getReviewProductListByExpert(ZjkReviewProductBo,PageQuery) ++ R getReviewCount() +} +note top of ZjkReviewPhaseController + + * 抽取条件 + * 前端访问路由地址为:/jyk/reviewPhase + * + * @author ygh + * @date 2024-11-01 + +end note + + +note left of ZjkReviewPhaseController::list(ZjkReviewPhaseBo,PageQuery) + + * 查询抽取条件列表 + +end note +note right of ZjkReviewPhaseController::export(ZjkReviewPhaseBo,HttpServletResponse) + + * 导出抽取条件列表 + +end note +note left of ZjkReviewPhaseController::getInfo(String) + + * 获取抽取条件详细信息 + * + * @param tenantId 主键 + +end note +note right of ZjkReviewPhaseController::add(ZjkReviewPhaseBo) + + * 新增抽取条件 + +end note +note left of ZjkReviewPhaseController::edit(ZjkReviewPhaseBo) + + * 修改抽取条件 + +end note +note right of ZjkReviewPhaseController::remove(String[]) + + * 删除抽取条件 + * + * @param tenantIds 主键串 + +end note +note left of ZjkReviewPhaseController::getReviewProductListByExpert(ZjkReviewProductBo,PageQuery) + + * 根据专家 id 获取合作项目信息 + * @param bo + * @param pageQuery + * @return + +end note + +class ApiController { +- {static} String DEFAULT_SECRET_KEY +- RemoteConfigService remoteConfigService +- IZjkExpertService zjkExpertService ++ R getEncryptedExpertData(String) ++ String decryptData(String,String) +} +note left of ApiController::DEFAULT_SECRET_KEY + 默认的密钥常量 +end note + +note left of ApiController::getEncryptedExpertData(String) + + * 专家库数据获取 + * @param authorizationCode + * @return + +end note +note right of ApiController::decryptData(String,String) + 解密接口 (用于调试或者需要解密的地方) +end note + +class ZjkExpertController { +- IZjkExpertService zjkExpertService ++ TableDataInfo expertList(ZjkExpertBo,PageQuery) ++ TableDataInfo pendingApproval(ZjkExpertBo,PageQuery) ++ TableDataInfo list(ZjkExpertBo,PageQuery) ++ TableDataInfo expertInquiry(ZjkExpertBo,PageQuery) ++ TableDataInfo querylist() ++ void export(ZjkExpertBo,HttpServletResponse) ++ R imports(MultipartFile) ++ R getInfo(Long) ++ R save(ZjkExpertBo) ++ R sub(ZjkExpertBo) ++ R approval(ApprovalCommonBo) ++ R edit(ZjkExpertBo) ++ R remove(Long[]) ++ R getInfoByUserId() ++ R getInfoByUserIdAndExpertId(ZjkExpertBo) ++ R expertQuash() ++ R getExpertCount() ++ R getExpertBaseInfo() ++ R> getExpertPerformWorkCount(Integer) ++ R> getUnitCount() ++ R> getPoliticsCount() ++ R>> getAgeRangeStatistics() ++ R>> workProfessialYear() ++ R>> getApprovalTimeAnalysis(String,String) ++ R getApprovalTimeCountThisYear() ++ R fetchRemoteProfessors() +} +note top of ZjkExpertController + + * 专家库 + * 前端访问路由地址为:/expert/expert + * + * @author wangtong + * @date 2024-10-24 + +end note + + +note left of ZjkExpertController::expertList(ZjkExpertBo,PageQuery) + + * 查询专家库列表信息 + * @param bo + * @param pageQuery + * @return + +end note +note right of ZjkExpertController::pendingApproval(ZjkExpertBo,PageQuery) + + * 待审批专家列表 + * @param bo + * @param pageQuery + * @return + +end note +note left of ZjkExpertController::list(ZjkExpertBo,PageQuery) + + * 查询专家审批列表信息 + * @param bo + * @param pageQuery + * @return + +end note +note right of ZjkExpertController::expertInquiry(ZjkExpertBo,PageQuery) + + * 专家查询列表信息 + * @param bo + * @param pageQuery + * @return + +end note +note left of ZjkExpertController::querylist() + + * 查询全部在库专家列表 + +end note +note right of ZjkExpertController::export(ZjkExpertBo,HttpServletResponse) + + * 专家信息导出 + * @param bo + * @param response + +end note +note left of ZjkExpertController::imports(MultipartFile) + + * 专家信息导入 + * @param file + * @return + +end note +note right of ZjkExpertController::getInfo(Long) + + * 获取专家信息详情 + * @param id + * @return + +end note +note left of ZjkExpertController::save(ZjkExpertBo) + + * 专家信息暂存 申请 + * @param bo + * @return + +end note +note right of ZjkExpertController::sub(ZjkExpertBo) + + * 提交 + +end note +note left of ZjkExpertController::approval(ApprovalCommonBo) + + * 审批操作 + * @param approvalCommonBo + * @return + +end note +note right of ZjkExpertController::edit(ZjkExpertBo) + + * 修改expert/停用/启用 + +end note +note left of ZjkExpertController::remove(Long[]) + + * 删除expert + * @param ids 主键串 + +end note +note right of ZjkExpertController::getInfoByUserId() + + * 根据用户 id 获取专家详细信息 + * @return + +end note +note left of ZjkExpertController::getInfoByUserIdAndExpertId(ZjkExpertBo) + + * 根据用户 id 获取专家详细信息 + * @return + +end note +note right of ZjkExpertController::expertQuash() + + * 撤销申请 + * @return + +end note +note left of ZjkExpertController::getExpertCount() + + * 获取专家总数 + * @return + +end note +note right of ZjkExpertController::getExpertBaseInfo() + + * 获取专家基本信息 + * @return + +end note +note left of ZjkExpertController::getExpertPerformWorkCount(Integer) + + * 专家各领域人数 + * @return + +end note +note right of ZjkExpertController::getUnitCount() + + * 专家单位类型统计 + * @return + +end note +note left of ZjkExpertController::getPoliticsCount() + + * 专家政治面貌统计 + * @return + +end note +note right of ZjkExpertController::getAgeRangeStatistics() + + * 专家各个年龄区间段的人数 + * @return + +end note +note left of ZjkExpertController::workProfessialYear() + + * 专家工作年限 + * @return + +end note +note right of ZjkExpertController::getApprovalTimeAnalysis(String,String) + + * 专家入库时间分析 + * @return + +end note +note left of ZjkExpertController::getApprovalTimeCountThisYear() + + * 当前年入库专家总数 + * @return + +end note +note right of ZjkExpertController::fetchRemoteProfessors() + + * 远程调用获取专家信息 + * @return + +end note + +class ZjkPointController { +- ZjkPointRuleService zjkPointRuleService +- ZjkPointRewardService zjkPointRewardService +- ZjkPointUserService zjkPointUserService +- RemoteUserService remoteUserService ++ void initBinder(WebDataBinder) ++ R> pointRule(PointReqDto) ++ R> rewardList(PointReqDto) ++ R addReward(ZjkPointReward) ++ R updateReward(ZjkPointReward) ++ R updateRewardStatus(ZjkPointReward) ++ R updateRuleStatus(PointReqDto) ++ R deleteRecord(String) ++ R getRewardInfo(String) ++ TableDataInfo pointList(PointReqDto,PageQuery) ++ TableDataInfo checkPointList(PointReqDto,PageQuery) ++ TableDataInfo pointDetail(PointReqDto,PageQuery) ++ R deleteRecord(Long,String) ++ R pointTrend(String,String) ++ R pointCheck(ZjkPointUser) ++ R pointCheckDetail(String) ++ R pointBase() ++ R expertPointRank(Integer) +} +note top of ZjkPointController + + * 专家库请假控制器 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/30 16:57 + +end note + + +note left of ZjkPointController::pointRule(PointReqDto) + + * 查询列表-积分规则定义 + +end note +note right of ZjkPointController::rewardList(PointReqDto) + + * 查询列表-积分奖励 + +end note +note left of ZjkPointController::addReward(ZjkPointReward) + + * 新增奖励 + +end note +note right of ZjkPointController::updateReward(ZjkPointReward) + + * 奖励修改 + +end note +note left of ZjkPointController::updateRewardStatus(ZjkPointReward) + + * 奖励修改 + +end note +note right of ZjkPointController::updateRuleStatus(PointReqDto) + + * 积分规则修改 + +end note +note left of ZjkPointController::getRewardInfo(String) + + * 奖励详情 + * + * @param gid 主键 + +end note +note right of ZjkPointController::pointList(PointReqDto,PageQuery) + + * 专家积分列表 + +end note +note left of ZjkPointController::checkPointList(PointReqDto,PageQuery) + + * 积分复核列表 + +end note +note right of ZjkPointController::pointDetail(PointReqDto,PageQuery) + + * 积分历史记录列表 + +end note +note left of ZjkPointController::deleteRecord(Long,String) + + * 积分记录删除 + +end note +note right of ZjkPointController::pointTrend(String,String) + + * 积分趋势分析 + +end note +note left of ZjkPointController::pointCheck(ZjkPointUser) + + * 积分复核接口 + +end note +note right of ZjkPointController::pointCheckDetail(String) + + * 积分复核详情 + +end note +note left of ZjkPointController::pointBase() + + * 专家积分榜基本信息 + +end note +note right of ZjkPointController::expertPointRank(Integer) + + * 专家积分榜基本信息 + +end note + +class ZjkProjectEvaluationController { +- IZjkProjectEvaluationService zjkProjectEvaluationService ++ TableDataInfo list(ZjkProjectEvaluationBo,PageQuery) ++ void export(ZjkProjectEvaluationBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProjectEvaluationBo) ++ R edit(ZjkProjectEvaluationBo) ++ R remove(Long[]) +} +note top of ZjkProjectEvaluationController + + * 项目总结评价 + * 前端访问路由地址为:/jyk/projectEvaluation + * + * @author ygh + * @date 2024-11-08 + +end note + + +note left of ZjkProjectEvaluationController::list(ZjkProjectEvaluationBo,PageQuery) + + * 查询项目总结评价列表 + +end note +note right of ZjkProjectEvaluationController::export(ZjkProjectEvaluationBo,HttpServletResponse) + + * 导出项目总结评价列表 + +end note +note left of ZjkProjectEvaluationController::getInfo(Long) + + * 获取项目总结评价详细信息 + * + * @param id 主键 + +end note +note right of ZjkProjectEvaluationController::add(ZjkProjectEvaluationBo) + + * 新增项目总结评价 + +end note +note left of ZjkProjectEvaluationController::edit(ZjkProjectEvaluationBo) + + * 修改项目总结评价 + +end note +note right of ZjkProjectEvaluationController::remove(Long[]) + + * 删除项目总结评价 + * + * @param ids 主键串 + +end note + +class ZjkExpertMajorController { +- IZjkExpertMajorService zjkExpertMajorService ++ TableDataInfo list(ZjkExpertMajorBo,PageQuery) ++ void export(ZjkExpertMajorBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertMajorBo) ++ R edit(ZjkExpertMajorBo) ++ R remove(Long[]) ++ R>> getExpertMajorCount() +} +note top of ZjkExpertMajorController + + * 专家库 专业关系表 + * 前端访问路由地址为:/expert/expertMajor + * + * @author ygh + * @date 2024-11-01 + +end note + + +note left of ZjkExpertMajorController::list(ZjkExpertMajorBo,PageQuery) + + * 查询专家库 专业关系表列表 + +end note +note right of ZjkExpertMajorController::export(ZjkExpertMajorBo,HttpServletResponse) + + * 导出专家库 专业关系表列表 + +end note +note left of ZjkExpertMajorController::getInfo(Long) + + * 获取专家库 专业关系表详细信息 + * + * @param id 主键 + +end note +note right of ZjkExpertMajorController::add(ZjkExpertMajorBo) + + * 新增专家库 专业关系表 + +end note +note left of ZjkExpertMajorController::edit(ZjkExpertMajorBo) + + * 修改专家库 专业关系表 + +end note +note right of ZjkExpertMajorController::remove(Long[]) + + * 删除专家库 专业关系表 + * + * @param ids 主键串 + +end note +note left of ZjkExpertMajorController::getExpertMajorCount() + + * 获取专家各个学历的人数 + * @return + +end note + +class ZjkApprovalProcessLogsController { +- IZjkApprovalProcessLogsService zjkApprovalProcessLogsService ++ TableDataInfo list(ZjkApprovalProcessLogsBo,PageQuery) ++ void export(ZjkApprovalProcessLogsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkApprovalProcessLogsBo) ++ R edit(ZjkApprovalProcessLogsBo) ++ R remove(Long[]) +} +note top of ZjkApprovalProcessLogsController + + * 审批流程记录 + * 前端访问路由地址为:/traceManagement/approvalProcessLogs + * + * @author zhangzhou + * @date 2024-11-06 + +end note + + +note left of ZjkApprovalProcessLogsController::list(ZjkApprovalProcessLogsBo,PageQuery) + + * 查询审批流程记录列表 + +end note +note right of ZjkApprovalProcessLogsController::export(ZjkApprovalProcessLogsBo,HttpServletResponse) + + * 导出审批流程记录列表 + +end note +note left of ZjkApprovalProcessLogsController::getInfo(Long) + + * 获取审批流程记录详细信息 + * + * @param id 主键 + +end note +note right of ZjkApprovalProcessLogsController::add(ZjkApprovalProcessLogsBo) + + * 新增审批流程记录 + +end note +note left of ZjkApprovalProcessLogsController::edit(ZjkApprovalProcessLogsBo) + + * 修改审批流程记录 + +end note +note right of ZjkApprovalProcessLogsController::remove(Long[]) + + * 删除审批流程记录 + * + * @param ids 主键串 + +end note + +class ZjkChartController { +- ZjkExpertChartService zjkExpertChartService ++ R getChartBase(Long) ++ R> getExperts() ++ R getSameOtherData(Long) +} +note top of ZjkChartController + + * 专家库画像控制器 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/30 16:57 + +end note + + +note left of ZjkChartController::getChartBase(Long) + + * 专家画像榜基本信息 + +end note +note right of ZjkChartController::getSameOtherData(Long) + + * 专家知识图谱 + +end note + +class ZjkDataChangesLogsController { +- IZjkDataChangesLogsService zjkDataChangesLogsService ++ TableDataInfo list(ZjkDataChangesLogsBo,PageQuery) ++ void export(ZjkDataChangesLogsBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkDataChangesLogsBo) ++ R edit(ZjkDataChangesLogsBo) ++ R remove(Long[]) +} +note top of ZjkDataChangesLogsController + + * 业务数据变更记录 + * 前端访问路由地址为:/dataChangesLogs/dataChangesLogs + * + * @author ygh + * @date 2024-11-07 + +end note + + +note left of ZjkDataChangesLogsController::list(ZjkDataChangesLogsBo,PageQuery) + + * 查询业务数据变更记录列表 + +end note +note right of ZjkDataChangesLogsController::export(ZjkDataChangesLogsBo,HttpServletResponse) + + * 导出业务数据变更记录列表 + +end note +note left of ZjkDataChangesLogsController::getInfo(Long) + + * 获取业务数据变更记录详细信息 + * + * @param id 主键 + +end note +note right of ZjkDataChangesLogsController::add(ZjkDataChangesLogsBo) + + * 新增业务数据变更记录 + +end note +note left of ZjkDataChangesLogsController::edit(ZjkDataChangesLogsBo) + + * 修改业务数据变更记录 + +end note +note right of ZjkDataChangesLogsController::remove(Long[]) + + * 删除业务数据变更记录 + * + * @param ids 主键串 + +end note + +class ZjkLearningCreditRecordController { +- IZjkLearningCreditRecordService zjkLearningCreditRecordService ++ TableDataInfo list(ZjkLearningCreditRecordBo,PageQuery) ++ void export(ZjkLearningCreditRecordBo,HttpServletResponse) ++ R> getInfo(Long) ++ R add(ZjkLearningCreditRecordBo) ++ R edit(ZjkLearningCreditRecordBo) ++ R remove(Long[]) +} +note top of ZjkLearningCreditRecordController + + * 信用用户学习记录 + * 前端访问路由地址为:/jyk/learningCreditRecord + * + * @author ygh + * @date 2024-11-26 + +end note + + +note left of ZjkLearningCreditRecordController::list(ZjkLearningCreditRecordBo,PageQuery) + + * 查询信用用户学习记录列表 + +end note +note right of ZjkLearningCreditRecordController::export(ZjkLearningCreditRecordBo,HttpServletResponse) + + * 导出信用用户学习记录列表 + +end note +note left of ZjkLearningCreditRecordController::getInfo(Long) + + * 获取信用用户学习记录详细信息 + * + * @param userId 用户id + +end note +note right of ZjkLearningCreditRecordController::add(ZjkLearningCreditRecordBo) + + * 新增信用用户学习记录 + +end note +note left of ZjkLearningCreditRecordController::edit(ZjkLearningCreditRecordBo) + + * 修改信用用户学习记录 + +end note +note right of ZjkLearningCreditRecordController::remove(Long[]) + + * 删除信用用户学习记录 + * + * @param ids 主键串 + +end note + +class ZjkCreditLvController { +- IZjkCreditLvService zjkCreditLvService ++ R> list() ++ void export(ZjkCreditLvBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkCreditLvBo) ++ R edit(ZjkCreditLvBo) ++ R remove(Long[]) ++ List countReson(ZjkCreditLvVo) +} +note top of ZjkCreditLvController + + * 【请填写功能名称】 + * 前端访问路由地址为:/jyk/creditLv + * + * @author ygh + * @date 2024-11-13 + +end note + + +note left of ZjkCreditLvController::list() + @SaCheckPermission("jyk:creditLv:list") +end note +note right of ZjkCreditLvController::export(ZjkCreditLvBo,HttpServletResponse) + + * 导出【请填写功能名称】列表 + +end note +note left of ZjkCreditLvController::getInfo(Long) + + * 获取【请填写功能名称】详细信息 + * + * @param id 主键 + +end note +note right of ZjkCreditLvController::add(ZjkCreditLvBo) + + * 新增【请填写功能名称】 + +end note +note left of ZjkCreditLvController::edit(ZjkCreditLvBo) + + * 修改【请填写功能名称】 + +end note +note right of ZjkCreditLvController::remove(Long[]) + + * 删除【请填写功能名称】 + * + * @param ids 主键串 + +end note + +class ZjkCreditController { +- IZjkCreditService zjkCreditService ++ TableDataInfo list(ZjkCreditBo,PageQuery) ++ void export(ZjkCreditBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkCreditBo) ++ R edit(ZjkCreditBo) ++ R remove(Long[]) ++ R expertPointRankUser() ++ TableDataInfo creditList(CreditReqDto,PageQuery) ++ R pointBase() ++ R synchronization() +} +note top of ZjkCreditController + + * 信用记录 + * 前端访问路由地址为:/zjk/credit + * + * @author ygh + * @date 2024-11-11 + +end note + + +note left of ZjkCreditController::list(ZjkCreditBo,PageQuery) + @SaCheckPermission("zjk:credit:list") +end note +note right of ZjkCreditController::export(ZjkCreditBo,HttpServletResponse) + + * 导出信用记录列表 + +end note +note left of ZjkCreditController::getInfo(Long) + + * 获取信用记录详细信息 + * + * @param ID 主键 + +end note +note right of ZjkCreditController::add(ZjkCreditBo) + + * 新增信用记录 + +end note +note left of ZjkCreditController::edit(ZjkCreditBo) + + * 修改信用记录 + +end note +note right of ZjkCreditController::remove(Long[]) + + * 删除信用记录 + * + * @param IDs 主键串 + +end note +note left of ZjkCreditController::expertPointRankUser() + + * 同步专家信息到信用用户记录表 + +end note +note right of ZjkCreditController::creditList(CreditReqDto,PageQuery) + + * 专家信用管理列表 + +end note +note left of ZjkCreditController::pointBase() + + * 专家信用榜基本信息 + +end note +note right of ZjkCreditController::synchronization() +同步到记录表中最初数据 +end note + +class ZjkLeaveController { +- IZjkLeaveService zjkLeaveService +- IZjkLeaveRuleService zjkLeaveRuleService ++ void initBinder(WebDataBinder) ++ TableDataInfo getLeavePros() ++ TableDataInfo getProsForAccept() ++ TableDataInfo getProsForJoin() ++ R leaveForPro(ZjkEvaluateVO) ++ R setAccept(ZjkEvaluateVO) ++ TableDataInfo list(ZjkLeaveBo,PageQuery) ++ TableDataInfo adminList(ZjkLeaveBo,PageQuery) ++ TableDataInfo splist(ZjkLeaveBo,PageQuery) ++ R getInfo(String) ++ R getLeavelRule() ++ R edit(ZjkLeaveRuleBo) ++ R add(ZjkLeaveBo) ++ R edit(ZjkLeaveBo) ++ R stsNum() ++ R stsChart(Integer) +} +note top of ZjkLeaveController + + * 专家库请假控制器 + * + * @author : yanguohua + * @version : 1.0 + * @date : 2024/10/30 16:57 + +end note + + +note left of ZjkLeaveController::getProsForAccept() + + * 待接受项目 + * @return + +end note +note right of ZjkLeaveController::getProsForJoin() + + * 待参评项目 + * @return + +end note +note left of ZjkLeaveController::leaveForPro(ZjkEvaluateVO) + + * 项目请假 + * + * @return + +end note +note right of ZjkLeaveController::setAccept(ZjkEvaluateVO) + + * 项目接受 + * + * @return + +end note +note left of ZjkLeaveController::list(ZjkLeaveBo,PageQuery) + + * 查询【请填写功能名称】列表 + +end note +note right of ZjkLeaveController::adminList(ZjkLeaveBo,PageQuery) + + * 查询【请填写功能名称】列表 + +end note +note left of ZjkLeaveController::splist(ZjkLeaveBo,PageQuery) + + * 机构管理员-请假审批 + +end note +note right of ZjkLeaveController::getInfo(String) + + * 获取【请填写功能名称】详细信息 + * + * @param gid 主键 + +end note +note left of ZjkLeaveController::getLeavelRule() + + * 获取【请填写功能名称】详细信息 + +end note +note right of ZjkLeaveController::edit(ZjkLeaveRuleBo) + + * 修改【请填写功能名称】 + +end note +note left of ZjkLeaveController::add(ZjkLeaveBo) + + * 新增【请填写功能名称】 + +end note +note right of ZjkLeaveController::edit(ZjkLeaveBo) + + * 修改【请填写功能名称】 + +end note +note left of ZjkLeaveController::stsNum() + + * 请假次数统计 + +end note +note right of ZjkLeaveController::stsChart(Integer) + + * 请假图表统计 + +end note + +class ZjkExpertProfessionalController { +- IZjkExpertProfessionalService zjkExpertProfessionalService ++ TableDataInfo list(ZjkExpertProfessionalBo,PageQuery) ++ void export(ZjkExpertProfessionalBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkExpertProfessionalBo) ++ R edit(ZjkExpertProfessionalBo) ++ R remove(Long[]) ++ R> professionalList() +} +note top of ZjkExpertProfessionalController + + * 专家库技术资格关系表 + * 前端访问路由地址为:/expert/expertProfessional + * + * @author zhangzhou + * @date 2024-11-01 + +end note + + +note left of ZjkExpertProfessionalController::list(ZjkExpertProfessionalBo,PageQuery) + + * 查询专家库技术资格关系表列表 + +end note +note right of ZjkExpertProfessionalController::export(ZjkExpertProfessionalBo,HttpServletResponse) + + * 导出专家库技术资格关系表列表 + +end note +note left of ZjkExpertProfessionalController::getInfo(Long) + + * 获取专家库技术资格关系表详细信息 + * + * @param id 主键 + +end note +note right of ZjkExpertProfessionalController::add(ZjkExpertProfessionalBo) + + * 新增专家库技术资格关系表 + +end note +note left of ZjkExpertProfessionalController::edit(ZjkExpertProfessionalBo) + + * 修改专家库技术资格关系表 + +end note +note right of ZjkExpertProfessionalController::remove(Long[]) + + * 删除专家库技术资格关系表 + * + * @param ids 主键串 + +end note + +class ZjkProductReviewsnController { +- IZjkProductReviewsnService zjkProductReviewsnService ++ TableDataInfo list(ZjkProductReviewsnBo,PageQuery) ++ void export(ZjkProductReviewsnBo,HttpServletResponse) ++ R getInfo(Long) ++ R add(ZjkProductReviewsnBo) ++ R edit(ZjkProductReviewsnBo) ++ R remove(Long[]) +} +note top of ZjkProductReviewsnController + + * 项目阶段文档管理 + * 前端访问路由地址为:/zjk/productReviewsn + * + * @author wt + * @date 2024-11-22 + +end note + + +note left of ZjkProductReviewsnController::list(ZjkProductReviewsnBo,PageQuery) + + * 查询项目阶段文档管理列表 + +end note +note right of ZjkProductReviewsnController::export(ZjkProductReviewsnBo,HttpServletResponse) + + * 导出项目阶段文档管理列表 + +end note +note left of ZjkProductReviewsnController::getInfo(Long) + + * 获取项目阶段文档管理详细信息 + * + * @param id 主键 + +end note +note right of ZjkProductReviewsnController::add(ZjkProductReviewsnBo) + + * 新增项目阶段文档管理 + +end note +note left of ZjkProductReviewsnController::edit(ZjkProductReviewsnBo) + + * 修改项目阶段文档管理 + +end note +note right of ZjkProductReviewsnController::remove(Long[]) + + * 删除项目阶段文档管理 + * + * @param ids 主键串 + +end note + +class ZjkCreditUserController { +- IZjkCreditUserService zjkCreditUserService ++ TableDataInfo list(ZjkCreditUserBo,PageQuery) ++ void export(ZjkCreditUserBo,HttpServletResponse) ++ R getInfo(String) ++ R add(ZjkCreditUserBo) ++ R edit(ZjkCreditUserBo) ++ R remove(String[]) ++ R expertPointRank(Integer) ++ R> expertPointRanks(ZjkCreditBo,PageQuery) ++ R> blacklist(ZjkCreditBo) ++ R> outCreditId(Long) ++ R moveToBlacklist(ZjkCreditUserBo) ++ R removeTheBlacklist(ZjkCreditUserBo) ++ R getBlacklistCount() ++ R getCount() +} +note top of ZjkCreditUserController + + * 信用用户管理 + * 前端访问路由地址为:/zjk/creditUser + * + * @author ygh + * @date 2024-11-11 + +end note + + +note left of ZjkCreditUserController::list(ZjkCreditUserBo,PageQuery) + @SaCheckPermission("zjk:creditUser:list") +end note +note right of ZjkCreditUserController::export(ZjkCreditUserBo,HttpServletResponse) + + * 导出信用用户管理列表 + +end note +note left of ZjkCreditUserController::getInfo(String) + + * 获取信用用户管理详细信息 + * + * @param ID 主键 + +end note +note right of ZjkCreditUserController::add(ZjkCreditUserBo) + + * 新增信用用户管理 + +end note +note left of ZjkCreditUserController::edit(ZjkCreditUserBo) + + * 修改信用用户管理 + +end note +note right of ZjkCreditUserController::remove(String[]) + + * 删除信用用户管理 + * + * @param IDs 主键串 + +end note +note left of ZjkCreditUserController::expertPointRank(Integer) + + * 专家积分榜基本信息 + +end note +note right of ZjkCreditUserController::expertPointRanks(ZjkCreditBo,PageQuery) +专家信用详情 +end note +note left of ZjkCreditUserController::blacklist(ZjkCreditBo) +黑名单 +end note +note right of ZjkCreditUserController::outCreditId(Long) +出库 +end note +note left of ZjkCreditUserController::moveToBlacklist(ZjkCreditUserBo) + + * 手动移入黑名单 + +end note +note right of ZjkCreditUserController::removeTheBlacklist(ZjkCreditUserBo) + + * 手动移出黑名单 + +end note +note left of ZjkCreditUserController::getBlacklistCount() + + * 获取黑名单专家总人数 + +end note +note right of ZjkCreditUserController::getCount() +黑名单 +end note + +class ZjkExpertMoneyConfigController { +- IZjkExpertMoneyConfigService zjkExpertMoneyConfigService ++ TableDataInfo list(ZjkExpertMoneyConfigBo,PageQuery) ++ void export(ZjkExpertMoneyConfigBo,HttpServletResponse) ++ void exportTemplate(HttpServletResponse) ++ R imports(MultipartFile) ++ R getInfo(Long) ++ R add(ZjkExpertMoneyConfigBo) ++ R edit(ZjkExpertMoneyConfigBo) ++ R remove(Long[]) ++ R> getExpertMoneyConfig() +} +note top of ZjkExpertMoneyConfigController + + * 专家费用管理 + * 前端访问路由地址为:/expert/expertMoneyConfig + * + * @author by + * @date 2024-11-25 + +end note + + +note left of ZjkExpertMoneyConfigController::list(ZjkExpertMoneyConfigBo,PageQuery) + + * 查询专家费用管理列表 + +end note +note right of ZjkExpertMoneyConfigController::export(ZjkExpertMoneyConfigBo,HttpServletResponse) + + * 导出专家费用管理列表 + +end note +note left of ZjkExpertMoneyConfigController::exportTemplate(HttpServletResponse) + + * 模板导出 + * @param response + +end note +note right of ZjkExpertMoneyConfigController::imports(MultipartFile) + + * 导入 + * @param file + * @return + * @throws Exception + +end note +note left of ZjkExpertMoneyConfigController::getInfo(Long) + + * 获取专家费用管理详细信息 + * + * @param moneyId 主键 + +end note +note right of ZjkExpertMoneyConfigController::add(ZjkExpertMoneyConfigBo) + + * 新增专家费用管理 + +end note +note left of ZjkExpertMoneyConfigController::edit(ZjkExpertMoneyConfigBo) + + * 修改专家费用管理 + +end note +note right of ZjkExpertMoneyConfigController::remove(Long[]) + + * 删除专家费用管理 + * + * @param moneyIds 主键串 + +end note +note left of ZjkExpertMoneyConfigController::getExpertMoneyConfig() + + * 获取职称等级下拉选项 + +end note + + + +BaseController <|-- ZjkExpertHistoryController +BaseController <|-- ZjkInvoiceController +BaseController <|-- ZjkCreditRewardController +BaseController <|-- ZjkLearningMaterialsController +BaseController <|-- ZjkProductSummarizeLogController +BaseController <|-- ZjkEvaluateController +BaseController <|-- ZjkExpertItemController +BaseController <|-- ZjkProductController +BaseController <|-- ZjkProductSummarizeController +BaseController <|-- ZjkExpertLogController +BaseController <|-- ZjkExpertMoneyInfoController +BaseController <|-- ZjkItemExtreationController +BaseController <|-- ZjkReviewPhaseController +BaseController <|-- ZjkExpertController +BaseController <|-- ZjkPointController +BaseController <|-- ZjkProjectEvaluationController +BaseController <|-- ZjkExpertMajorController +BaseController <|-- ZjkApprovalProcessLogsController +BaseController <|-- ZjkChartController +BaseController <|-- ZjkDataChangesLogsController +BaseController <|-- ZjkLearningCreditRecordController +BaseController <|-- ZjkCreditLvController +BaseController <|-- ZjkCreditController +BaseController <|-- ZjkLeaveController +BaseController <|-- ZjkExpertProfessionalController +BaseController <|-- ZjkProductReviewsnController +BaseController <|-- ZjkCreditUserController +BaseController <|-- ZjkExpertMoneyConfigController +@enduml \ No newline at end of file