zhangcl 1 месяц назад
Родитель
Сommit
8cd58b6986
100 измененных файлов с 19 добавлено и 6420 удалено
  1. 0 0
      okr-server/Dockerfile
  2. 2 2
      okr-server/pom.xml
  3. 2 2
      okr-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java
  4. 1 1
      okr-server/src/main/resources/application-local.yaml
  5. 1 1
      okr-server/src/main/resources/application-prod.yaml
  6. 1 1
      okr-server/src/main/resources/application.yaml
  7. 4 4
      pom.xml
  8. 3 3
      yudao-module-okr/pom.xml
  9. 2 2
      yudao-module-okr/yudao-module-okr-api/pom.xml
  10. 3 3
      yudao-module-okr/yudao-module-okr-biz/pom.xml
  11. 0 37
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/AttachmentCategoryEnum.java
  12. 0 39
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/AttachmentTypeEnum.java
  13. 0 43
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/ErrorCodeConstant.java
  14. 0 53
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/ProjectApprovalConstants.java
  15. 0 34
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/approval/CommonAuditStatusEnum.java
  16. 0 32
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/attrs/template/DataSpecsDataTypeEnum.java
  17. 0 30
      yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/attrs/template/TemplateAttrAccessModeEnum.java
  18. 0 124
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/ThingsModelDTO.java
  19. 0 28
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/config/RdDataPermissionConfiguration.java
  20. 0 7
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/constant/RdConstants.java
  21. 0 93
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/AttachmentController.java
  22. 0 57
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentPageReqVO.java
  23. 0 55
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentRespVO.java
  24. 0 41
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentSaveReqVO.java
  25. 0 228
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/CoreTechnologyController.java
  26. 0 78
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologyPageReqVO.java
  27. 0 118
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologyRespVO.java
  28. 0 79
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologySaveReqVO.java
  29. 0 93
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/CoreTechnologyDetailController.java
  30. 0 46
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailPageReqVO.java
  31. 0 51
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailRespVO.java
  32. 0 36
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailSaveReqVO.java
  33. 0 93
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/ExpertKeywordController.java
  34. 0 39
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordPageReqVO.java
  35. 0 43
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordRespVO.java
  36. 0 34
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordSaveReqVO.java
  37. 0 93
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/ExpertKeywordRelController.java
  38. 0 30
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelPageReqVO.java
  39. 0 31
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelRespVO.java
  40. 0 23
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelSaveReqVO.java
  41. 0 294
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/ExpertPoolController.java
  42. 0 27
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/EchelonExpertPoolRespVO.java
  43. 0 77
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolPageReqVO.java
  44. 0 143
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolRespVO.java
  45. 0 79
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolSaveReqVO.java
  46. 0 19
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolSortReqVO.java
  47. 0 146
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/NewsController.java
  48. 0 79
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsPageReqVO.java
  49. 0 101
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsRespVO.java
  50. 0 69
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsSaveReqVO.java
  51. 0 146
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/ResearchProjectController.java
  52. 0 23
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectApproveReqVO.java
  53. 0 23
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectAttachmentVO.java
  54. 0 60
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectPageReqVO.java
  55. 0 169
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectRespVO.java
  56. 0 118
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectSaveReqVO.java
  57. 0 206
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/ResearchAchievementController.java
  58. 0 69
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementPageReqVO.java
  59. 0 99
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementRespVO.java
  60. 0 67
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementSaveReqVO.java
  61. 0 102
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/ResearchAchievementAttrsController.java
  62. 0 75
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsPageReqVO.java
  63. 0 92
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsRespVO.java
  64. 0 65
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsSaveReqVO.java
  65. 0 219
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/TeamController.java
  66. 0 54
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamPageReqVO.java
  67. 0 65
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamRespVO.java
  68. 0 37
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamSaveReqVO.java
  69. 0 62
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/attachment/AttachmentDO.java
  70. 0 102
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/coretechnology/CoreTechnologyDO.java
  71. 0 60
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/coretechnologydetail/CoreTechnologyDetailDO.java
  72. 0 50
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertkeyword/ExpertKeywordDO.java
  73. 0 38
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertkeywordrel/ExpertKeywordRelDO.java
  74. 0 123
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertpool/ExpertPoolDO.java
  75. 0 104
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/news/NewsDO.java
  76. 0 40
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectApprovalRecordDO.java
  77. 0 52
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectBudgetDO.java
  78. 0 119
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectDO.java
  79. 0 48
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectScheduleDO.java
  80. 0 96
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievement/ResearchAchievementDO.java
  81. 0 101
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/ResearchAchievementAttrsDO.java
  82. 0 28
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/TemplateAttrEnumDataSpecs.java
  83. 0 87
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/TemplateAttrModelProperty.java
  84. 0 62
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/team/TeamDO.java
  85. 0 49
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/attachment/AttachmentMapper.java
  86. 0 42
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/coretechnology/CoreTechnologyMapper.java
  87. 0 46
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/coretechnologydetail/CoreTechnologyDetailMapper.java
  88. 0 29
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertkeyword/ExpertKeywordMapper.java
  89. 0 26
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertkeywordrel/ExpertKeywordRelMapper.java
  90. 0 77
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertpool/ExpertPoolMapper.java
  91. 0 42
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/news/NewsMapper.java
  92. 0 29
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ApproverQueryMapper.java
  93. 0 45
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectApprovalRecordMapper.java
  94. 0 35
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectBudgetMapper.java
  95. 0 69
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectMapper.java
  96. 0 35
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectScheduleMapper.java
  97. 0 39
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchachievement/ResearchAchievementMapper.java
  98. 0 66
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchachievementattrs/ResearchAchievementAttrsMapper.java
  99. 0 33
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/team/TeamMapper.java
  100. 0 56
      yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/redis/BizNoRedisDAO.java

+ 0 - 0
randd-server/Dockerfile → okr-server/Dockerfile


+ 2 - 2
randd-server/pom.xml → okr-server/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>randd-server</artifactId>
+    <artifactId>okr-server</artifactId>
     <packaging>jar</packaging>
 
     <name>${project.artifactId}</name>
@@ -28,7 +28,7 @@
         </dependency>
         <dependency>
             <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-rd-biz</artifactId>
+            <artifactId>yudao-module-okr-biz</artifactId>
             <version>${revision}</version>
         </dependency>
         <dependency>

+ 2 - 2
randd-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java → okr-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java

@@ -4,13 +4,13 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 /**
- * 项目的启动类
+ * OKR 项目的启动类
  *
  * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
  * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
  * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
  *
- * @author 芋道源码
+ * @author ruiqi
  */
 @SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package}
 @SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"})

+ 1 - 1
randd-server/src/main/resources/application-local.yaml → okr-server/src/main/resources/application-local.yaml

@@ -47,7 +47,7 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://172.21.20.20:3306/rqrd-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://172.21.20.20:3306/okr-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: ruiqi
           password: .N_Mdq!BR1W4
   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优

+ 1 - 1
randd-server/src/main/resources/application-prod.yaml → okr-server/src/main/resources/application-prod.yaml

@@ -47,7 +47,7 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://172.21.20.20:3306/rqrd?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://172.21.20.20:3306/okr?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           username: ruiqi
           password: .N_Mdq!BR1W4
   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优

+ 1 - 1
randd-server/src/main/resources/application.yaml → okr-server/src/main/resources/application.yaml

@@ -1,6 +1,6 @@
 spring:
   application:
-    name: randd-server
+    name: okr-server
 
   profiles:
     active: dev

+ 4 - 4
pom.xml

@@ -10,16 +10,16 @@
     <modules>
         <module>yudao-dependencies</module>
         <module>yudao-framework</module>
-        <!-- Server 主项目 -->
-        <module>randd-server</module>
+        <!-- okr Server 主项目 -->
+        <module>okr-server</module>
         <!-- 各种 module 拓展 -->
         <module>yudao-module-system</module>
         <module>yudao-module-infra</module>
 <!--        <module>yudao-module-member</module>-->
         <module>yudao-module-bpm</module>
         <module>yudao-module-report</module>
-        <module>yudao-module-rd</module>
-<!--        <module>yudao-module-pay</module>-->
+        <module>yudao-module-okr</module>
+        <!--        <module>yudao-module-pay</module>-->
 <!--        <module>yudao-module-mall</module>-->
 <!--        <module>yudao-module-supplier</module>-->
 <!--        <module>yudao-module-erp</module>-->

+ 3 - 3
yudao-module-rd/pom.xml → yudao-module-okr/pom.xml

@@ -8,12 +8,12 @@
         <version>${revision}</version>
     </parent>
     <modules>
-        <module>yudao-module-rd-api</module>
-        <module>yudao-module-rd-biz</module>
+        <module>yudao-module-okr-api</module>
+        <module>yudao-module-okr-biz</module>
     </modules>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>yudao-module-rd</artifactId>
+    <artifactId>yudao-module-okr</artifactId>
     <packaging>pom</packaging>
 
     <name>${project.artifactId}</name>

+ 2 - 2
yudao-module-rd/yudao-module-rd-api/pom.xml → yudao-module-okr/yudao-module-okr-api/pom.xml

@@ -4,12 +4,12 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>cn.iocoder.boot</groupId>
-        <artifactId>yudao-module-rd</artifactId>
+        <artifactId>yudao-module-okr</artifactId>
         <version>${revision}</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>yudao-module-rd-api</artifactId>
+    <artifactId>yudao-module-okr-api</artifactId>
 
     <packaging>jar</packaging>
 

+ 3 - 3
yudao-module-rd/yudao-module-rd-biz/pom.xml → yudao-module-okr/yudao-module-okr-biz/pom.xml

@@ -4,19 +4,19 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>cn.iocoder.boot</groupId>
-        <artifactId>yudao-module-rd</artifactId>
+        <artifactId>yudao-module-okr</artifactId>
         <version>${revision}</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>jar</packaging>
 
-    <artifactId>yudao-module-rd-biz</artifactId>
+    <artifactId>yudao-module-okr-biz</artifactId>
     <name>${project.artifactId}</name>
 
     <dependencies>
         <dependency>
             <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-rd-api</artifactId>
+            <artifactId>yudao-module-okr-api</artifactId>
             <version>${revision}</version>
         </dependency>
 

+ 0 - 37
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/AttachmentCategoryEnum.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums;
-
-/**
- * @description: 附件类别
- * @author: ruiqi
- * @create: 2025-10-20
- **/
-public enum AttachmentCategoryEnum {
-    EXPERT("EXPERT", "专家库", 1),
-    CORE_TECHNOLOGY("CORE_TECHNOLOGY", "核心技术", 2),
-    SCIENCE_PROJECT("SCIENCE_PROJECT", "科研项目", 3),
-    GOV_PROJECT("GOV_PROJECT", "政府项目", 4),
-    POLICY("POLICY", "政策咨询", 5),
-    ACHIEVEMENT("ACHIEVEMENT", "研究成果", 6);
-
-    private String code;
-    private String msg;
-    private Integer num;
-
-    AttachmentCategoryEnum(String code, String msg, Integer num) {
-        this.code = code;
-        this.msg = msg;
-        this.num = num;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-}

+ 0 - 39
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/AttachmentTypeEnum.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums;
-
-/**
- * @description: 附件 细分项
- * @author: ruiqi
- * @create: 2025-10-20
- **/
-public enum AttachmentTypeEnum {
-    PATENT("PATENT", "专利", 1),
-    PAPER("PAPER", "论文", 2),
-    OTHER_MATERIAL("OTHER_MATERIAL", "其他资料", 3),
-    AUTH_NOTICE("AUTH_NOTICE", "授权通知书", 4),
-    CERTIFICATE("CERTIFICATE", "证书", 5),
-    COPYRIGHT("COPYRIGHT", "软著", 7),
-    HONOR_CERTIFICATE("HONOR_CERTIFICATE", "荣誉证书", 8),
-    REGISTER_COPY("REGISTER_COPY", "登记副本", 6);
-
-    private String code;
-    private String msg;
-    private Integer num;
-
-    AttachmentTypeEnum(String code, String msg, Integer num) {
-        this.code = code;
-        this.msg = msg;
-        this.num = num;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-}

+ 0 - 43
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/ErrorCodeConstant.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums;
-
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-
-public interface ErrorCodeConstant {
-    ErrorCode TEAM_NOT_EXISTS = new ErrorCode(100, "团队不存在");
-    ErrorCode EXPERT_POOL_NOT_EXISTS = new ErrorCode(200, "专家库不存在");
-    ErrorCode EXPERT_KEYWORD_NOT_EXISTS = new ErrorCode(201, "专家热词字典不存在");
-    ErrorCode EXPERT_KEYWORD_REL_NOT_EXISTS = new ErrorCode(202, "专家热词关联不存在");
-
-    ErrorCode CORE_TECHNOLOGY_NOT_EXISTS = new ErrorCode(400, "核心技术不存在");
-    ErrorCode CORE_TECHNOLOGY_DETAIL_NOT_EXISTS = new ErrorCode(401, "核心技术明细不存在");
-
-    ErrorCode RESEARCH_ACHIEVEMENT_ATTRS_NOT_EXISTS = new ErrorCode(500, "研究成果 论文 专利 软著 荣誉证书 扩展属性不存在");
-    ErrorCode RESEARCH_ACHIEVEMENT_NOT_EXISTS = new ErrorCode(501, "知识产权、荣誉证书等研究成果不存在");
-
-    ErrorCode NEWS_NOT_EXISTS = new ErrorCode(502, "资讯(政策信息 行业科技动态)不存在");
-
-    ErrorCode ATTACHMENT_NOT_EXISTS = new ErrorCode(300, "R&D 附件不存在");
-    /***
-     * 数字油藏
-     */
-    ErrorCode LAS_WELL_NOT_EXISTS = new ErrorCode(1000, "数字油藏LAS数据文件-井信息不存在");
-    ErrorCode LAS_WELL_DATA_NOT_EXISTS = new ErrorCode(1001, "数字油藏LAS数据文件-测井数据不存在");
-
-
-    /***
-     * 科研项目
-     */
-
-    ErrorCode PROJECT_NOT_EXISTS = new ErrorCode(1002, "项目立项不存在");
-    ErrorCode PROJECT_ALREADY_SUBMITTED = new ErrorCode(1003, "项目已提交审批,不能重复提交");
-    ErrorCode PROJECT_NOT_IN_APPROVAL = new ErrorCode(1004, "项目不在审批中");
-    ErrorCode PROJECT_NOT_YOUR_TURN = new ErrorCode(1005, "当前不是您的审批节点");
-    ErrorCode PROJECT_PRE_STATUS_ILLEGAL = new ErrorCode(1006, "预审状态不允许此操作");
-    ErrorCode PROJECT_FORMAL_STATUS_ILLEGAL = new ErrorCode(1007, "正式立项状态不允许此操作");
-    ErrorCode PROJECT_PRE_NOT_PASSED = new ErrorCode(1008, "预审未通过,不能提交正式立项");
-    ErrorCode PROJECT_IN_APPROVAL_CANNOT_UPDATE = new ErrorCode(1009, "项目审批中,不能修改");
-    ErrorCode PROJECT_IN_APPROVAL_CANNOT_DELETE = new ErrorCode(1010, "项目审批中,不能删除");
-    ErrorCode PROJECT_APPROVER_NOT_FOUND = new ErrorCode(1011, "未找到审批人,请联系管理员");
-    ErrorCode PROJECT_APPLICATION_FILE_REQUIRED = new ErrorCode(1012, "请上传立项申请表");
-    ErrorCode PROJECT_OPENING_REPORT_REQUIRED = new ErrorCode(1013, "请上传开题报告");
-}

+ 0 - 53
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/ProjectApprovalConstants.java

@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums;
-
-/**
- * 项目审批相关常量
- *
- * @author ruiqi
- */
-public interface ProjectApprovalConstants {
-
-    // ==================== 阶段 ====================
-    /** 阶段:预审 */
-    int STAGE_PRE = 1;
-    /** 阶段:正式立项 */
-    int STAGE_FORMAL = 2;
-
-    // ==================== 审批状态 ====================
-    /** 未提交(草稿) */
-    int AUDIT_STATUS_DRAFT = 0;
-    /** 审批中 */
-    int AUDIT_STATUS_PROCESSING = 1;
-    /** 审批通过 */
-    int AUDIT_STATUS_PASSED = 2;
-    /** 审批驳回 */
-    int AUDIT_STATUS_REJECTED = 3;
-
-    // ==================== 审批节点 ====================
-    /** 预审-科技发展部二级审批 */
-    int NODE_PRE_SECOND = 11;
-
-    /** 正式-专业公司一级审批 */
-    int NODE_FORMAL_FIRST = 21;
-    /** 正式-科技发展部二级审批 */
-    int NODE_FORMAL_SECOND = 22;
-    /** 正式-财务审批(条件节点) */
-    int NODE_FORMAL_FINANCE = 23;
-
-    // ==================== 审批结果 ====================
-    /** 通过 */
-    int RESULT_PASS = 1;
-    /** 驳回 */
-    int RESULT_REJECT = 2;
-    /** 撤回 */
-    int RESULT_CANCEL = 3;
-    /** 提交(项目负责人的动作) */
-    int RESULT_SUBMIT = 4;
-
-    // ==================== 是否涉及预算 ====================
-    /** 不涉及预算 */
-    int INVOLVE_BUDGET_NO = 0;
-    /** 涉及预算 */
-    int INVOLVE_BUDGET_YES = 1;
-
-}

+ 0 - 34
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/approval/CommonAuditStatusEnum.java

@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums.approval;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-import java.util.Arrays;
-
-/**
- * 故障上报的审批状态
- *
- * @author phli
- */
-@RequiredArgsConstructor
-@Getter
-public enum CommonAuditStatusEnum implements ArrayValuable<Integer> {
-
-    DRAFT(0, "未提交"),
-    PROCESS(10, "审批中"),
-    APPROVE(20, "审核通过"),
-	REJECT(30, "审核不通过"),
-    CANCEL(40, "已取消");
-
-    private final Integer status;
-    private final String name;
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(CommonAuditStatusEnum::getStatus).toArray(Integer[]::new);
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 32
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/attrs/template/DataSpecsDataTypeEnum.java

@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums.attrs.template;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * 数据定义的数据类型枚举类
- *
- * @author ruiqi
- */
-@AllArgsConstructor
-@Getter
-public enum DataSpecsDataTypeEnum implements ArrayValuable<String> {
-
-    DOUBLE("double"),
-    TEXT("text"),
-    TEXTAREA("textarea"),
-    DATE("date");
-
-    public static final String[] ARRAYS = Arrays.stream(values()).map(DataSpecsDataTypeEnum::getDataType).toArray(String[]::new);
-
-    private final String dataType;
-
-    @Override
-    public String[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 30
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/attrs/template/TemplateAttrAccessModeEnum.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.rd.enums.attrs.template;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * 属性 模板 读取类型枚举
- *
- * @author ruiqi
- */
-@AllArgsConstructor
-@Getter
-public enum TemplateAttrAccessModeEnum implements ArrayValuable<String> {
-
-    READ_ONLY("r"),
-    READ_WRITE("rw");
-
-    public static final String[] ARRAYS = Arrays.stream(values()).map(TemplateAttrAccessModeEnum::getMode).toArray(String[]::new);
-
-    private final String mode;
-
-    @Override
-    public String[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 124
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/ThingsModelDTO.java

@@ -1,124 +0,0 @@
-package cn.iocoder.yudao.module.rd;
-
-import lombok.Data;
-
-/**
- * 物模型对象 iot_things_model
- *
- * @author kerwincui
- * @date 2023-01-14
- */
-@Data
-public class ThingsModelDTO {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 物模型ID
-     */
-    private Long modelId;
-
-    /**
-     * 物模型名称
-     */
-    private String modelName;
-
-    /**
-     * 产品ID
-     */
-    private Long productId;
-
-    /**
-     * 产品名称
-     */
-    private String productName;
-
-    /**
-     * 租户ID
-     */
-    private Long tenantId;
-
-    /**
-     * 租户名称
-     */
-    private String tenantName;
-
-    /**
-     * 标识符,产品下唯一
-     */
-    private String identifier;
-
-    /**
-     * 模型类别(1-属性,2-功能,3-事件)
-     */
-    private Integer type;
-
-    /**
-     * 计算公式
-     */
-    private String formula;
-
-    /**
-     * 数据定义
-     */
-    private String specs;
-
-    /**
-     * 是否图表显示(0-否,1-是)
-     */
-    private Integer isChart;
-
-    /**
-     * 是否历史存储(0-否,1-是)
-     */
-    private Integer isHistory;
-
-    /**
-     * 是否实时监测(0-否,1-是)
-     */
-    private Integer isMonitor;
-
-    /**
-     * 是否分享设备权限(0-否,1-是)
-     */
-    private Integer isSharePerm;
-
-    /**
-     * 是否分享设备权限(0-否,1-是)
-     */
-    private Integer isApp;
-
-    /**
-     * 删除标志(0代表存在 2代表删除)
-     */
-    private String delFlag;
-
-    private String unit;
-
-    private String limitValue;
-
-    /**
-     * 是否只读数据(0-否,1-是)
-     */
-    private Integer isReadonly;
-
-
-    private Integer modelOrder;
-
-    private String value = "";
-
-    private String ts;
-
-    private String serialNumber;
-
-    private Boolean isShadow;
-    /**
-     * 是否可下发指令 0 -不可操作 1-可
-     */
-    private Integer canSend;
-
-    private String ifAlarm;
-
-    private Long alarmSettingId;
-    private String maxValue;
-    private String minValue;
-}

+ 0 - 28
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/config/RdDataPermissionConfiguration.java

@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.module.rd.config;
-
-import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer;
-
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * rd 模块的数据权限 Configuration
- *
- * @author ruiqi
- */
-@Configuration(proxyBeanMethods = false)
-public class RdDataPermissionConfiguration {
-
-    @Bean(name = "rdDeptDataPermissionRuleCustomizer")
-    public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
-        return rule -> {
-            rule.addDeptColumn(DeptDO.class, "id");
-
-            rule.addUserColumn(AdminUserDO.class, "id");
-
-        };
-    }
-
-}

+ 0 - 7
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/constant/RdConstants.java

@@ -1,7 +0,0 @@
-package cn.iocoder.yudao.module.rd.constant;
-
-public interface RdConstants {
-
-    // 生产异常消息提醒
-    String PRODUCTION_EXCEPTION = "production-exception";
-}

+ 0 - 93
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/AttachmentController.java

@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.attachment;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import cn.iocoder.yudao.module.rd.service.attachment.AttachmentService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - R&D 附件")
-@RestController
-@RequestMapping("/rd/attachment")
-@Validated
-public class AttachmentController {
-
-    @Resource
-    private AttachmentService attachmentService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建R&D 附件")
-    @PreAuthorize("@ss.hasPermission('rd:attachment:create')")
-    public CommonResult<Long> createAttachment(@Valid @RequestBody AttachmentSaveReqVO createReqVO) {
-        return success(attachmentService.createAttachment(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新R&D 附件")
-    @PreAuthorize("@ss.hasPermission('rd:attachment:update')")
-    public CommonResult<Boolean> updateAttachment(@Valid @RequestBody AttachmentSaveReqVO updateReqVO) {
-        attachmentService.updateAttachment(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除R&D 附件")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:attachment:delete')")
-    public CommonResult<Boolean> deleteAttachment(@RequestParam("id") Long id) {
-        attachmentService.deleteAttachment(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得R&D 附件")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:attachment:query')")
-    public CommonResult<AttachmentRespVO> getAttachment(@RequestParam("id") Long id) {
-        AttachmentDO attachment = attachmentService.getAttachment(id);
-        return success(BeanUtils.toBean(attachment, AttachmentRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得R&D 附件分页")
-    @PreAuthorize("@ss.hasPermission('rd:attachment:query')")
-    public CommonResult<PageResult<AttachmentRespVO>> getAttachmentPage(@Valid AttachmentPageReqVO pageReqVO) {
-        PageResult<AttachmentDO> pageResult = attachmentService.getAttachmentPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, AttachmentRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出R&D 附件 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:attachment:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportAttachmentExcel(@Valid AttachmentPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<AttachmentDO> list = attachmentService.getAttachmentPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "R&D 附件.xls", "数据", AttachmentRespVO.class,
-                        BeanUtils.toBean(list, AttachmentRespVO.class));
-    }
-
-}

+ 0 - 57
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentPageReqVO.java

@@ -1,57 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.attachment.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.Collection;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - R&D 附件分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class AttachmentPageReqVO extends PageParam {
-
-    @Schema(description = "所属功能模块(专家库/核心技术/科研项目/政府项目...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "13035")
-    private Long bizId;
-
-    @Schema(description = "类别(专利/论文/其他...)", example = "1")
-    private String type;
-
-    @Schema(description = "文件名称", example = "王五")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    private String fileType;
-
-    @Schema(description = "文件路径")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "业务主键id 集合", example = "3510,3610")
-    private Collection<Long> bizIds;
-
-    @Schema(description = "附件类型 集合", example = "PATENT,PAPER")
-    private Collection<String> types;
-}

+ 0 - 55
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentRespVO.java

@@ -1,55 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.attachment.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - R&D 附件 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class AttachmentRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23930")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属功能模块(专家库/核心技术/科研项目/政府项目...)")
-    @ExcelProperty("所属功能模块(专家库/核心技术/科研项目/政府项目...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "13035")
-    @ExcelProperty("业务主键id")
-    private Long bizId;
-
-    @Schema(description = "类别(专利/论文/其他...)", example = "1")
-    @ExcelProperty("类别(专利/论文/其他...)")
-    private String type;
-
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
-    @ExcelProperty("文件名称")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    @ExcelProperty("文件类型")
-    private String fileType;
-
-    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("文件路径")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    @ExcelProperty("文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 41
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/attachment/vo/AttachmentSaveReqVO.java

@@ -1,41 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.attachment.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-
-@Schema(description = "管理后台 - R&D 附件新增/修改 Request VO")
-@Data
-public class AttachmentSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23930")
-    private Long id;
-
-    @Schema(description = "所属功能模块(专家库/核心技术/科研项目/政府项目...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "13035")
-    private Long bizId;
-
-    @Schema(description = "类别(专利/论文/其他...)", example = "1")
-    private String type;
-
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
-    @NotEmpty(message = "文件名称不能为空")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    private String fileType;
-
-    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "文件路径不能为空")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-}

+ 0 - 228
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/CoreTechnologyController.java

@@ -1,228 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnology;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo.CoreTechnologyPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo.CoreTechnologyRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo.CoreTechnologySaveReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnology.CoreTechnologyDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnologydetail.CoreTechnologyDetailDO;
-import cn.iocoder.yudao.module.rd.enums.AttachmentCategoryEnum;
-import cn.iocoder.yudao.module.rd.service.attachment.AttachmentService;
-import cn.iocoder.yudao.module.rd.service.coretechnology.CoreTechnologyService;
-import cn.iocoder.yudao.module.rd.service.coretechnologydetail.CoreTechnologyDetailService;
-import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
-import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 核心技术")
-@RestController
-@RequestMapping("/rd/core-technology")
-@Validated
-public class CoreTechnologyController {
-
-    @Resource
-    private CoreTechnologyService coreTechnologyService;
-    @Resource
-    private DictDataService dictDataService;
-    @Resource
-    private DictDataUtils dictDataUtils;
-    @Resource
-    private AttachmentService attachmentService;
-    @Resource
-    private CoreTechnologyDetailService coreTechnologyDetailService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建核心技术")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:create')")
-    public CommonResult<Long> createCoreTechnology(@Valid @RequestBody CoreTechnologySaveReqVO createReqVO) {
-        return success(coreTechnologyService.createCoreTechnology(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新核心技术")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:update')")
-    public CommonResult<Boolean> updateCoreTechnology(@Valid @RequestBody CoreTechnologySaveReqVO updateReqVO) {
-        coreTechnologyService.updateCoreTechnology(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除核心技术")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:delete')")
-    public CommonResult<Boolean> deleteCoreTechnology(@RequestParam("id") Long id) {
-        coreTechnologyService.deleteCoreTechnology(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得核心技术")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:query')")
-    public CommonResult<CoreTechnologyRespVO> getCoreTechnology(@RequestParam("id") Long id) {
-        CoreTechnologyDO coreTechnology = coreTechnologyService.getCoreTechnology(id);
-        return success(buildCoreTechnology(coreTechnology));
-    }
-
-    /**
-     * 查询核心技术 技术详情
-     * @param technology
-     * @return
-     */
-    private CoreTechnologyRespVO buildCoreTechnology(CoreTechnologyDO technology) {
-        // 如果 technology 为空 返回空对象
-        if (ObjUtil.isEmpty(technology)) {
-            return new CoreTechnologyRespVO();
-        }
-        CoreTechnologyRespVO technologyVO = BeanUtils.toBean(technology, CoreTechnologyRespVO.class);
-        // 查询 核心技术-状态 字典数据
-        Map<String, String> techStatusesPair = dictDataUtils.getDictData("rd_core_technology_status");
-        // 查询 核心技术-级别 字典数据
-        Map<String, String> techLevelPair = dictDataUtils.getDictData("rd_core_technology_level");
-        // 查询 核心技术-类型 字典数据
-        Map<String, String> techTypesPair = dictDataUtils.getDictData("rd_core_technology_type");
-
-        // 核心技术-状态
-        String status = technologyVO.getTechnologyStatus();
-        if (StrUtil.isNotBlank(status) && techStatusesPair.containsKey(status)) {
-            technologyVO.setTechnologyStatusLabel(techStatusesPair.get(status));
-        }
-
-        // 核心技术-级别
-        String level = technologyVO.getTechnologyLevel();
-        if (StrUtil.isNotBlank(level) && techLevelPair.containsKey(level)) {
-            technologyVO.setTechnologyLevelLabel(techLevelPair.get(level));
-        }
-
-        // 核心技术-类型
-        String type = technologyVO.getTechnologyType();
-        if (StrUtil.isNotBlank(type) && techTypesPair.containsKey(type)) {
-            technologyVO.setTechnologyTypeLabel(techTypesPair.get(type));
-        }
-        // 查询核心技术 进度明细 按照进度日期降序排列
-        CoreTechnologyDetailPageReqVO detailReqVO = new CoreTechnologyDetailPageReqVO();
-        detailReqVO.setTechnologyId(technology.getId());
-        List<CoreTechnologyDetailDO> technologyDetails = coreTechnologyDetailService.getCoreTechnologyDetails(detailReqVO);
-        if (CollUtil.isNotEmpty(technologyDetails)) {
-            technologyVO.setDetails(technologyDetails);
-        }
-        // 查询当前核心技术 附件列表
-        AttachmentPageReqVO reqVO = new AttachmentPageReqVO();
-        reqVO.setBizId(technology.getId());
-        reqVO.setCategory(AttachmentCategoryEnum.CORE_TECHNOLOGY.getCode());
-        List<AttachmentDO> attachments = attachmentService.getIotAttachments(reqVO);
-        if (CollUtil.isNotEmpty(attachments)) {
-            technologyVO.setAttachments(attachments);
-        }
-        return technologyVO;
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得核心技术分页")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:query')")
-    public CommonResult<PageResult<CoreTechnologyRespVO>> getCoreTechnologyPage(@Valid CoreTechnologyPageReqVO pageReqVO) {
-        PageResult<CoreTechnologyDO> pageResult = coreTechnologyService.getCoreTechnologyPage(pageReqVO);
-        return success(new PageResult<>(buildCoreTechnologyList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    /**
-     * 设置日报的关联信息 部门(施工队伍) 项目 任务 带班干部 日报填报人
-     * @param technologies
-     * @return
-     */
-    private List<CoreTechnologyRespVO> buildCoreTechnologyList(List<CoreTechnologyDO> technologies) {
-        if (CollUtil.isEmpty(technologies)) {
-            return Collections.emptyList();
-        }
-        // 查询数据字典值列表
-        //  核心技术-状态 key字典键值     value字典标签
-        Map<String, String> techStatusesPair = new HashMap<>();
-        //  核心技术-级别 key字典键值     value字典标签
-        Map<String, String> techLevelPair = new HashMap<>();
-        //  核心技术-类型 key字典键值     value字典标签
-        Map<String, String> techTypesPair = new HashMap<>();
-
-        // 查询 核心技术-状态 字典数据
-        List<DictDataDO> techStatuses = dictDataService.getDictDataListByDictType("rd_core_technology_status");
-        // 查询 核心技术-级别 字典数据
-        List<DictDataDO> techLevel = dictDataService.getDictDataListByDictType("rd_core_technology_level");
-        // 查询 核心技术-类型 字典数据
-        List<DictDataDO> techTypes = dictDataService.getDictDataListByDictType("rd_core_technology_type");
-        if (CollUtil.isNotEmpty(techStatuses)) {
-            techStatuses.forEach(tech -> {
-                techStatusesPair.put(tech.getValue(), tech.getLabel());
-            });
-        }
-        if (CollUtil.isNotEmpty(techLevel)) {
-            techLevel.forEach(tech -> {
-                techLevelPair.put(tech.getValue(), tech.getLabel());
-            });
-        }
-        if (CollUtil.isNotEmpty(techTypes)) {
-            techTypes.forEach(tech -> {
-                techTypesPair.put(tech.getValue(), tech.getLabel());
-            });
-        }
-
-        return BeanUtils.toBean(technologies, CoreTechnologyRespVO.class, (techVO) -> {
-            if (StrUtil.isNotBlank(techVO.getTechnologyStatus())) {
-                if (techStatusesPair.containsKey(techVO.getTechnologyStatus())) {
-                    techVO.setTechnologyStatusLabel(techStatusesPair.get(techVO.getTechnologyStatus()));
-                }
-            }
-            if (StrUtil.isNotBlank(techVO.getTechnologyLevel())) {
-                if (techLevelPair.containsKey(techVO.getTechnologyLevel())) {
-                    techVO.setTechnologyLevelLabel(techLevelPair.get(techVO.getTechnologyLevel()));
-                }
-            }
-            if (StrUtil.isNotBlank(techVO.getTechnologyType())) {
-                if (techTypesPair.containsKey(techVO.getTechnologyType())) {
-                    techVO.setTechnologyTypeLabel(techTypesPair.get(techVO.getTechnologyType()));
-                }
-            }
-        });
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出核心技术 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportCoreTechnologyExcel(@Valid CoreTechnologyPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<CoreTechnologyDO> list = coreTechnologyService.getCoreTechnologyPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "核心技术.xls", "数据", CoreTechnologyRespVO.class,
-                        BeanUtils.toBean(list, CoreTechnologyRespVO.class));
-    }
-
-}

+ 0 - 78
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologyPageReqVO.java

@@ -1,78 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 核心技术分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class CoreTechnologyPageReqVO extends PageParam {
-
-    @Schema(description = "所属部门", example = "3945")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "芋艿")
-    private String technologyName;
-
-    @Schema(description = "核心技术类型", example = "1")
-    private String technologyType;
-
-    @Schema(description = "当前状态", example = "2")
-    private String technologyStatus;
-
-    @Schema(description = "技术级别")
-    private String technologyLevel;
-
-    @Schema(description = "所属单位id", example = "16494")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    private String department;
-
-    @Schema(description = "合作单位")
-    private String partner;
-
-    @Schema(description = "概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "主要原理及内容")
-    private String principles;
-
-    @Schema(description = "应用场景和优势")
-    private String advantages;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "26543")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 118
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologyRespVO.java

@@ -1,118 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo;
-
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnologydetail.CoreTechnologyDetailDO;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 核心技术 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class CoreTechnologyRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19587")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "3945")
-    @ExcelProperty("所属部门")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "芋艿")
-    @ExcelProperty("核心技术名称")
-    private String technologyName;
-
-    @Schema(description = "核心技术类型", example = "1")
-    @ExcelProperty("核心技术类型")
-    private String technologyType;
-
-    @Schema(description = "当前状态", example = "2")
-    @ExcelProperty("当前状态")
-    private String technologyStatus;
-
-    @Schema(description = "技术级别")
-    @ExcelProperty("技术级别")
-    private String technologyLevel;
-
-    @Schema(description = "所属单位id", example = "16494")
-    @ExcelProperty("所属单位id")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    @ExcelProperty("所属单位")
-    private String department;
-
-    @Schema(description = "合作单位")
-    @ExcelProperty("合作单位")
-    private String partner;
-
-    @Schema(description = "概述")
-    @ExcelProperty("概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    @ExcelProperty("头像url")
-    private String avatar;
-
-    @Schema(description = "主要原理及内容")
-    @ExcelProperty("主要原理及内容")
-    private String principles;
-
-    @Schema(description = "应用场景和优势")
-    @ExcelProperty("应用场景和优势")
-    private String advantages;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    @ExcelProperty("状态(0启用 1禁用)")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "26543")
-    @ExcelProperty("流程实例id")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    @ExcelProperty("审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "核心技术类型 数据字典标签", example = "1")
-    @ExcelProperty("核心技术类型")
-    private String technologyTypeLabel;
-
-    @Schema(description = "当前状态 数据字典标签", example = "2")
-    @ExcelProperty("当前状态")
-    private String technologyStatusLabel;
-
-    @Schema(description = "技术级别 数据字典标签")
-    @ExcelProperty("技术级别")
-    private String technologyLevelLabel;
-
-    @Schema(description = "进度明细列表", example = "https://aims.deepoil.cc/admin-api/infra/file/29/get/人力资源.png")
-    private List<CoreTechnologyDetailDO> details;
-
-    @Schema(description = "附件列表", example = "https://aims.deepoil.cc/admin-api/infra/file/29/get/人力资源.png")
-    private List<AttachmentDO> attachments;
-}

+ 0 - 79
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnology/vo/CoreTechnologySaveReqVO.java

@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo;
-
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentSaveReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailSaveReqVO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "管理后台 - 核心技术新增/修改 Request VO")
-@Data
-public class CoreTechnologySaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19587")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "3945")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "芋艿")
-    private String technologyName;
-
-    @Schema(description = "核心技术类型", example = "1")
-    private String technologyType;
-
-    @Schema(description = "当前状态", example = "2")
-    private String technologyStatus;
-
-    @Schema(description = "技术级别")
-    private String technologyLevel;
-
-    @Schema(description = "所属单位id", example = "16494")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    private String department;
-
-    @Schema(description = "合作单位")
-    private String partner;
-
-    @Schema(description = "概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "主要原理及内容")
-    private String principles;
-
-    @Schema(description = "应用场景和优势")
-    private String advantages;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "26543")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "附件列表")
-    private List<AttachmentSaveReqVO> attachments;
-
-    @Schema(description = "进度明细列表")
-    private List<CoreTechnologyDetailSaveReqVO> details;
-}

+ 0 - 93
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/CoreTechnologyDetailController.java

@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnologydetail.CoreTechnologyDetailDO;
-import cn.iocoder.yudao.module.rd.service.coretechnologydetail.CoreTechnologyDetailService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 核心技术明细")
-@RestController
-@RequestMapping("/rd/core-technology-detail")
-@Validated
-public class CoreTechnologyDetailController {
-
-    @Resource
-    private CoreTechnologyDetailService coreTechnologyDetailService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建核心技术明细")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:create')")
-    public CommonResult<Long> createCoreTechnologyDetail(@Valid @RequestBody CoreTechnologyDetailSaveReqVO createReqVO) {
-        return success(coreTechnologyDetailService.createCoreTechnologyDetail(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新核心技术明细")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:update')")
-    public CommonResult<Boolean> updateCoreTechnologyDetail(@Valid @RequestBody CoreTechnologyDetailSaveReqVO updateReqVO) {
-        coreTechnologyDetailService.updateCoreTechnologyDetail(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除核心技术明细")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:delete')")
-    public CommonResult<Boolean> deleteCoreTechnologyDetail(@RequestParam("id") Long id) {
-        coreTechnologyDetailService.deleteCoreTechnologyDetail(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得核心技术明细")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:query')")
-    public CommonResult<CoreTechnologyDetailRespVO> getCoreTechnologyDetail(@RequestParam("id") Long id) {
-        CoreTechnologyDetailDO coreTechnologyDetail = coreTechnologyDetailService.getCoreTechnologyDetail(id);
-        return success(BeanUtils.toBean(coreTechnologyDetail, CoreTechnologyDetailRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得核心技术明细分页")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:query')")
-    public CommonResult<PageResult<CoreTechnologyDetailRespVO>> getCoreTechnologyDetailPage(@Valid CoreTechnologyDetailPageReqVO pageReqVO) {
-        PageResult<CoreTechnologyDetailDO> pageResult = coreTechnologyDetailService.getCoreTechnologyDetailPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, CoreTechnologyDetailRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出核心技术明细 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:core-technology-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportCoreTechnologyDetailExcel(@Valid CoreTechnologyDetailPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<CoreTechnologyDetailDO> list = coreTechnologyDetailService.getCoreTechnologyDetailPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "核心技术明细.xls", "数据", CoreTechnologyDetailRespVO.class,
-                        BeanUtils.toBean(list, CoreTechnologyDetailRespVO.class));
-    }
-
-}

+ 0 - 46
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailPageReqVO.java

@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 核心技术明细分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class CoreTechnologyDetailPageReqVO extends PageParam {
-
-    @Schema(description = "核心技术所属单位id", example = "7639")
-    private Long deptId;
-
-    @Schema(description = "核心技术id", example = "16092")
-    private Long technologyId;
-
-    @Schema(description = "进度日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] progressDate;
-
-    @Schema(description = "进度描述")
-    private String overview;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 51
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailRespVO.java

@@ -1,51 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 核心技术明细 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class CoreTechnologyDetailRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23655")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "核心技术所属单位id", example = "7639")
-    @ExcelProperty("核心技术所属单位id")
-    private Long deptId;
-
-    @Schema(description = "核心技术id", example = "16092")
-    @ExcelProperty("核心技术id")
-    private Long technologyId;
-
-    @Schema(description = "进度日期")
-    @ExcelProperty("进度日期")
-    private LocalDateTime progressDate;
-
-    @Schema(description = "进度描述")
-    @ExcelProperty("进度描述")
-    private String overview;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    @ExcelProperty("状态(0启用 1禁用)")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 36
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/coretechnologydetail/vo/CoreTechnologyDetailSaveReqVO.java

@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 核心技术明细新增/修改 Request VO")
-@Data
-public class CoreTechnologyDetailSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23655")
-    private Long id;
-
-    @Schema(description = "核心技术所属单位id", example = "7639")
-    private Long deptId;
-
-    @Schema(description = "核心技术id", example = "16092")
-    private Long technologyId;
-
-    @Schema(description = "进度日期")
-    private LocalDateTime progressDate;
-
-    @Schema(description = "进度描述")
-    private String overview;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-}

+ 0 - 93
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/ExpertKeywordController.java

@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeyword;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo.ExpertKeywordPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo.ExpertKeywordRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo.ExpertKeywordSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertkeyword.ExpertKeywordDO;
-import cn.iocoder.yudao.module.rd.service.expertkeyword.ExpertKeywordService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 专家热词字典")
-@RestController
-@RequestMapping("/rd/expert-keyword")
-@Validated
-public class ExpertKeywordController {
-
-    @Resource
-    private ExpertKeywordService expertKeywordService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建专家热词字典")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:create')")
-    public CommonResult<Long> createExpertKeyword(@Valid @RequestBody ExpertKeywordSaveReqVO createReqVO) {
-        return success(expertKeywordService.createExpertKeyword(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新专家热词字典")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:update')")
-    public CommonResult<Boolean> updateExpertKeyword(@Valid @RequestBody ExpertKeywordSaveReqVO updateReqVO) {
-        expertKeywordService.updateExpertKeyword(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除专家热词字典")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:delete')")
-    public CommonResult<Boolean> deleteExpertKeyword(@RequestParam("id") Long id) {
-        expertKeywordService.deleteExpertKeyword(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得专家热词字典")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:query')")
-    public CommonResult<ExpertKeywordRespVO> getExpertKeyword(@RequestParam("id") Long id) {
-        ExpertKeywordDO expertKeyword = expertKeywordService.getExpertKeyword(id);
-        return success(BeanUtils.toBean(expertKeyword, ExpertKeywordRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得专家热词字典分页")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:query')")
-    public CommonResult<PageResult<ExpertKeywordRespVO>> getExpertKeywordPage(@Valid ExpertKeywordPageReqVO pageReqVO) {
-        PageResult<ExpertKeywordDO> pageResult = expertKeywordService.getExpertKeywordPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ExpertKeywordRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出专家热词字典 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportExpertKeywordExcel(@Valid ExpertKeywordPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ExpertKeywordDO> list = expertKeywordService.getExpertKeywordPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "专家热词字典.xls", "数据", ExpertKeywordRespVO.class,
-                        BeanUtils.toBean(list, ExpertKeywordRespVO.class));
-    }
-
-}

+ 0 - 39
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordPageReqVO.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 专家热词字典分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ExpertKeywordPageReqVO extends PageParam {
-
-    @Schema(description = "热词名称", example = "芋艿")
-    private String keywordName;
-
-    @Schema(description = "热词类型,如:技术方向/学历/头衔/软件/自定义等", example = "2")
-    private String keywordType;
-
-    @Schema(description = "来源:1-系统预置, 2-用户自定义")
-    private Integer source;
-
-    @Schema(description = "状态:0-启用, 1-禁用", example = "1")
-    private Integer status;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 43
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordRespVO.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 专家热词字典 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ExpertKeywordRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16788")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "热词名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @ExcelProperty("热词名称")
-    private String keywordName;
-
-    @Schema(description = "热词类型,如:技术方向/学历/头衔/软件/自定义等", example = "2")
-    @ExcelProperty("热词类型,如:技术方向/学历/头衔/软件/自定义等")
-    private String keywordType;
-
-    @Schema(description = "来源:1-系统预置, 2-用户自定义", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("来源:1-系统预置, 2-用户自定义")
-    private Integer source;
-
-    @Schema(description = "状态:0-启用, 1-禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("状态:0-启用, 1-禁用")
-    private Integer status;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 34
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeyword/vo/ExpertKeywordSaveReqVO.java

@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 专家热词字典新增/修改 Request VO")
-@Data
-public class ExpertKeywordSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16788")
-    private Long id;
-
-    @Schema(description = "热词名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @NotEmpty(message = "热词名称不能为空")
-    private String keywordName;
-
-    @Schema(description = "热词类型,如:技术方向/学历/头衔/软件/自定义等", example = "2")
-    private String keywordType;
-
-    @Schema(description = "来源:1-系统预置, 2-用户自定义", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "来源:1-系统预置, 2-用户自定义不能为空")
-    private Integer source;
-
-    @Schema(description = "状态:0-启用, 1-禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "状态:0-启用, 1-禁用不能为空")
-    private Integer status;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-}

+ 0 - 93
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/ExpertKeywordRelController.java

@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo.ExpertKeywordRelPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo.ExpertKeywordRelRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo.ExpertKeywordRelSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertkeywordrel.ExpertKeywordRelDO;
-import cn.iocoder.yudao.module.rd.service.expertkeywordrel.ExpertKeywordRelService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 专家热词关联")
-@RestController
-@RequestMapping("/rd/expert-keyword-rel")
-@Validated
-public class ExpertKeywordRelController {
-
-    @Resource
-    private ExpertKeywordRelService expertKeywordRelService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建专家热词关联")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:create')")
-    public CommonResult<Long> createExpertKeywordRel(@Valid @RequestBody ExpertKeywordRelSaveReqVO createReqVO) {
-        return success(expertKeywordRelService.createExpertKeywordRel(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新专家热词关联")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:update')")
-    public CommonResult<Boolean> updateExpertKeywordRel(@Valid @RequestBody ExpertKeywordRelSaveReqVO updateReqVO) {
-        expertKeywordRelService.updateExpertKeywordRel(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除专家热词关联")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:delete')")
-    public CommonResult<Boolean> deleteExpertKeywordRel(@RequestParam("id") Long id) {
-        expertKeywordRelService.deleteExpertKeywordRel(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得专家热词关联")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:query')")
-    public CommonResult<ExpertKeywordRelRespVO> getExpertKeywordRel(@RequestParam("id") Long id) {
-        ExpertKeywordRelDO expertKeywordRel = expertKeywordRelService.getExpertKeywordRel(id);
-        return success(BeanUtils.toBean(expertKeywordRel, ExpertKeywordRelRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得专家热词关联分页")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:query')")
-    public CommonResult<PageResult<ExpertKeywordRelRespVO>> getExpertKeywordRelPage(@Valid ExpertKeywordRelPageReqVO pageReqVO) {
-        PageResult<ExpertKeywordRelDO> pageResult = expertKeywordRelService.getExpertKeywordRelPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ExpertKeywordRelRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出专家热词关联 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:expert-keyword-rel:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportExpertKeywordRelExcel(@Valid ExpertKeywordRelPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ExpertKeywordRelDO> list = expertKeywordRelService.getExpertKeywordRelPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "专家热词关联.xls", "数据", ExpertKeywordRelRespVO.class,
-                        BeanUtils.toBean(list, ExpertKeywordRelRespVO.class));
-    }
-
-}

+ 0 - 30
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelPageReqVO.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 专家热词关联分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ExpertKeywordRelPageReqVO extends PageParam {
-
-    @Schema(description = "专家ID", example = "1663")
-    private Long expertId;
-
-    @Schema(description = "热词ID", example = "16216")
-    private Long keywordId;
-
-    @Schema(description = "绑定时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 31
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelRespVO.java

@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 专家热词关联 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ExpertKeywordRelRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28133")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "专家ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1663")
-    @ExcelProperty("专家ID")
-    private Long expertId;
-
-    @Schema(description = "热词ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16216")
-    @ExcelProperty("热词ID")
-    private Long keywordId;
-
-    @Schema(description = "绑定时间")
-    @ExcelProperty("绑定时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 23
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertkeywordrel/vo/ExpertKeywordRelSaveReqVO.java

@@ -1,23 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 专家热词关联新增/修改 Request VO")
-@Data
-public class ExpertKeywordRelSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28133")
-    private Long id;
-
-    @Schema(description = "专家ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1663")
-    @NotNull(message = "专家ID不能为空")
-    private Long expertId;
-
-    @Schema(description = "热词ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16216")
-    @NotNull(message = "热词ID不能为空")
-    private Long keywordId;
-
-}

+ 0 - 294
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/ExpertPoolController.java

@@ -1,294 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.EchelonExpertPoolRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolSaveReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolSortReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamRespVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertpool.ExpertPoolDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.team.TeamDO;
-import cn.iocoder.yudao.module.rd.service.expertpool.ExpertPoolService;
-import cn.iocoder.yudao.module.rd.service.team.TeamService;
-import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 专家库")
-@RestController
-@RequestMapping("/rd/expert-pool")
-@Validated
-public class ExpertPoolController {
-
-    @Resource
-    private ExpertPoolService expertPoolService;
-    @Resource
-    private DictDataService dictDataService;
-    @Resource
-    private TeamService expertTeamService;
-    @Resource
-    private DictDataUtils dictDataUtils;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建专家库")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:create')")
-    public CommonResult<Long> createExpertPool(@Valid @RequestBody ExpertPoolSaveReqVO createReqVO) {
-        return success(expertPoolService.createExpertPool(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新专家库")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:update')")
-    public CommonResult<Boolean> updateExpertPool(@Valid @RequestBody ExpertPoolSaveReqVO updateReqVO) {
-        expertPoolService.updateExpertPool(updateReqVO);
-        return success(true);
-    }
-
-    //  拖拽排序
-    @PutMapping("/changeSort")
-    @Operation(summary = "专家拖拽排序")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:update')")
-    public CommonResult<Boolean> changeSort(@Valid @RequestBody ExpertPoolSortReqVO sortReqVO) {
-        expertPoolService.changeSort(sortReqVO);
-        return success(true);
-    }
-
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除专家库")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:delete')")
-    public CommonResult<Boolean> deleteExpertPool(@RequestParam("id") Long id) {
-        expertPoolService.deleteExpertPool(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得专家库")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:query')")
-    public CommonResult<ExpertPoolRespVO> getExpertPool(@RequestParam("id") Long id) {
-        ExpertPoolDO expertPool = expertPoolService.getExpertPool(id);
-        return success(buildDailyReport(expertPool));
-    }
-
-    /**
-     * 查询专家库 专家详情
-     * @param expertPool
-     * @return
-     */
-    private ExpertPoolRespVO buildDailyReport(ExpertPoolDO expertPool) {
-        // 如果 expertPool 为空 返回空对象
-        if (ObjUtil.isEmpty(expertPool)) {
-            return new ExpertPoolRespVO();
-        }
-        ExpertPoolRespVO expertPoolVO = BeanUtils.toBean(expertPool, ExpertPoolRespVO.class);
-
-        // 专家梯队 字典数据
-        Map<String, String> expertEchelonPair = dictDataUtils.getDictData("rd_expert_echelon");
-        // 专家序列 数据字典
-        Map<String, String> expertRankPair = dictDataUtils.getDictData("rd_expert_rank");
-        // 专家学历 数据字典
-        Map<String, String> expertEducationPair = dictDataUtils.getDictData("rd_expert_education");
-        // 软件技能 数据字典
-        Map<String, String> expertSoftwarePair = dictDataUtils.getDictData("rd_expert_software");
-        // 专业方向 数据字典
-        Map<String, String> expertTechnicalPair = dictDataUtils.getDictData("rd_expert_technical");
-        // 学历
-        String education = expertPoolVO.getEducation();
-        if (StrUtil.isNotBlank(education) && expertEducationPair.containsKey(education)) {
-            expertPoolVO.setEducationLabel(expertEducationPair.get(education));
-        }
-        // 梯队
-        String echelon = expertPoolVO.getEchelon();
-        if (StrUtil.isNotBlank(echelon) && expertEchelonPair.containsKey(echelon)) {
-            expertPoolVO.setEchelonLabel(expertEchelonPair.get(echelon));
-        }
-        // 专家技术序列
-        Set<Long> expertRankValues = expertPoolVO.getExpertRank();
-        if (CollUtil.isNotEmpty(expertRankValues)) {
-            String rankLabels = expertRankValues.stream()
-                    .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                    .map(key -> expertRankPair.getOrDefault(key, key)) // 取label,无则用原key
-                    .collect(Collectors.joining(",")); // 逗号拼接
-            expertPoolVO.setExpertRankLabel(rankLabels);
-        }
-        // 专家软件技能
-        Set<Long> expertSoftwareValues = expertPoolVO.getSoftwareSkills();
-        if (CollUtil.isNotEmpty(expertSoftwareValues)) {
-            String softwareLabels = expertSoftwareValues.stream()
-                    .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                    .map(key -> expertSoftwarePair.getOrDefault(key, key)) // 取label,无则用原key
-                    .collect(Collectors.joining(",")); // 逗号拼接
-            expertPoolVO.setSoftwareSkillsLabel(softwareLabels);
-        }
-        // 专家 专业方向
-        Set<Long> expertTechnicalValues = expertPoolVO.getSpecialDirection();
-        if (CollUtil.isNotEmpty(expertTechnicalValues)) {
-            String technicalLabels = expertTechnicalValues.stream()
-                    .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                    .map(key -> expertTechnicalPair.getOrDefault(key, key)) // 取label,无则用原key
-                    .collect(Collectors.joining(",")); // 逗号拼接
-            expertPoolVO.setSoftwareSkillsLabel(technicalLabels);
-        }
-        // 专家所属队伍
-        Set<Long> teamIds = expertPoolVO.getTeamIds();
-        if (CollUtil.isNotEmpty(teamIds)) {
-            TeamPageReqVO teamReqVO = new TeamPageReqVO();
-            teamReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-            teamReqVO.setTeamIds(teamIds);
-            PageResult<TeamDO> pageTeams = expertTeamService.getTeamPage(teamReqVO);
-            List<TeamDO> teams = pageTeams.getList();
-            if (CollUtil.isNotEmpty(teams)) {
-                List<TeamRespVO> teamResp = BeanUtils.toBean(teams, TeamRespVO.class);
-                expertPoolVO.setTeams(teamResp);
-            }
-        }
-        // 专家年龄
-        LocalDateTime birthday = expertPoolVO.getBirthday();
-        if (ObjUtil.isNotEmpty(birthday)) {
-            Integer age = DateUtil.ageOfNow(DateUtil.date(birthday));
-            expertPoolVO.setAge(age);
-        }
-        return expertPoolVO;
-    }
-
-    /**
-     * 根据数据字典类型获取数据字典值列表
-     * @param dictType
-     * @return
-     */
-    /* private Map<String, String> getDictData(String dictType) {
-        Map<String, String> dictDataPair = new HashMap<>();
-        List<DictDataDO> somethingDictData = dictDataService.getDictDataListByDictType(dictType);
-        if (CollUtil.isNotEmpty(somethingDictData)) {
-            somethingDictData.forEach(tech -> {
-                dictDataPair.put(tech.getValue(), tech.getLabel());
-            });
-        }
-        return dictDataPair;
-    } */
-
-    /**
-     * 根据数据字典类型获取数据字典值排序
-     * @param dictType
-     * @return
-     */
-    /* private Map<String, Integer> getDictDataSort(String dictType) {
-        Map<String, Integer> dictDataPair = new HashMap<>();
-        List<DictDataDO> somethingDictData = dictDataService.getDictDataListByDictType(dictType);
-        if (CollUtil.isNotEmpty(somethingDictData)) {
-            somethingDictData.forEach(tech -> {
-                dictDataPair.put(tech.getValue(), tech.getSort());
-            });
-        }
-        return dictDataPair;
-    } */
-
-    @GetMapping("/page")
-    @Operation(summary = "获得专家库分页")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:query')")
-    public CommonResult<PageResult<ExpertPoolRespVO>> getExpertPoolPage(@Valid ExpertPoolPageReqVO pageReqVO) {
-        PageResult<ExpertPoolDO> pageResult = expertPoolService.getExpertPoolPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ExpertPoolRespVO.class));
-    }
-
-
-    @GetMapping("/echelonExperts")
-    @Operation(summary = "将专家按照梯队汇总数据返回")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:query')")
-    public CommonResult<List<EchelonExpertPoolRespVO>> echelonExperts(@Valid ExpertPoolPageReqVO pageReqVO) {
-        List<EchelonExpertPoolRespVO> result = new ArrayList<>();
-        // 查询所有专家后组装
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        PageResult<ExpertPoolDO> pageResult = expertPoolService.getExpertPoolPage(pageReqVO);
-        List<ExpertPoolDO> experts = pageResult.getList();
-        // key梯队数据字典value   value梯队包含的专家列表
-        Map<String, List<ExpertPoolDO>> echelonExpertPair = new HashMap<>();
-        // 专家梯队 字典数据 key值   value标签
-        Map<String, String> expertEchelonPair = dictDataUtils.getDictData("rd_expert_echelon");
-        // 专家梯队 字典数据 排序值 key值  value排序sort
-        Map<String, Integer> expertEchelonSortPair = dictDataUtils.getDictDataSort("rd_expert_echelon");
-        // 按照梯队对专家分组
-        if (CollUtil.isNotEmpty(experts)) {
-            experts.forEach(expert -> {
-                // 梯队
-                String echelon = expert.getEchelon();
-                if (expertEchelonPair.containsKey(echelon)) {
-                    String echelonLabel = expertEchelonPair.get(echelon);
-                    if (echelonExpertPair.containsKey(echelon)) {
-                        List<ExpertPoolDO> tempExperts = echelonExpertPair.get(echelon);
-                        tempExperts.add(expert);
-                        echelonExpertPair.put(echelon, tempExperts);
-                    } else {
-                        List<ExpertPoolDO> tempExperts = new ArrayList<>();
-                        tempExperts.add(expert);
-                        echelonExpertPair.put(echelon, tempExperts);
-                    }
-
-                }
-
-            });
-        }
-        if (CollUtil.isNotEmpty(echelonExpertPair)) {
-            echelonExpertPair.forEach((echelon, relatedExperts) -> {
-                EchelonExpertPoolRespVO expertPool = new EchelonExpertPoolRespVO();
-                if (expertEchelonPair.containsKey(echelon)) {
-                    String echelonLabel = expertEchelonPair.get(echelon);
-                    expertPool.setEchelonLabel(echelonLabel);
-                }
-                expertPool.setNum(relatedExperts.size());
-                expertPool.setExperts(relatedExperts);
-                // 设置各专家梯队的排序值
-                if (expertEchelonSortPair.containsKey(echelon)) {
-                    Integer echelonSort = expertEchelonSortPair.get(echelon);
-                    expertPool.setSort(echelonSort);
-                }
-                result.add(expertPool);
-            });
-            result.sort(Comparator.comparing(EchelonExpertPoolRespVO::getSort));
-        }
-        return success(result);
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出专家库 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:expert-pool:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportExpertPoolExcel(@Valid ExpertPoolPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ExpertPoolDO> list = expertPoolService.getExpertPoolPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "专家库.xls", "数据", ExpertPoolRespVO.class,
-                        BeanUtils.toBean(list, ExpertPoolRespVO.class));
-    }
-
-}

+ 0 - 27
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/EchelonExpertPoolRespVO.java

@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo;
-
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertpool.ExpertPoolDO;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "管理后台 - 专家库 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class EchelonExpertPoolRespVO {
-
-    @Schema(description = "梯队名称", example = "第一梯队")
-    private String echelonLabel;
-
-    @Schema(description = "梯队下包含的专家数量", example = "30")
-    private Integer num;
-
-    @Schema(description = "梯队排序值", example = "3")
-    private Integer sort;
-
-    @Schema(description = "梯队包含的专家列表", example = "")
-    private List<ExpertPoolDO> experts;
-
-}

+ 0 - 77
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolPageReqVO.java

@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 专家库分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ExpertPoolPageReqVO extends PageParam {
-
-    @Schema(description = "所属部门", example = "30265")
-    private Long deptId;
-
-    @Schema(description = "梯队(第一 第二 第三)")
-    private String echelon;
-
-    @Schema(description = "序列(技术 商务 运营 法务 安全)")
-    private String expertRank;
-
-    @Schema(description = "所属团队(多个逗号分隔)")
-    private String teamIds;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "出生日期")
-    private LocalDateTime birthday;
-
-    @Schema(description = "学历")
-    private String education;
-
-    @Schema(description = "专业方向(多个逗号分隔)")
-    private String specialDirection;
-
-    @Schema(description = "主要业绩")
-    private String achievement;
-
-    @Schema(description = "专业软件技能")
-    private String softwareSkills;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "5592")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "队伍id", example = "65")
-    private Long teamId;
-}

+ 0 - 143
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolRespVO.java

@@ -1,143 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo;
-
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamRespVO;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Set;
-
-@Schema(description = "管理后台 - 专家库 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ExpertPoolRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24775")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "30265")
-    @ExcelProperty("所属部门")
-    private Long deptId;
-
-    @Schema(description = "专家姓名")
-    @ExcelProperty("专家姓名")
-    private String expertName;
-
-    @Schema(description = "梯队(第一 第二 第三)")
-    @ExcelProperty("梯队(第一 第二 第三)")
-    private String echelon;
-
-    @Schema(description = "序列(技术 商务 运营 法务 安全)")
-    @ExcelProperty("序列(技术 商务 运营 法务 安全)")
-    private Set<Long> expertRank;
-
-    @Schema(description = "职称")
-    @ExcelProperty("职称")
-    private String professionalTitle;
-
-    @Schema(description = "岗位")
-    @ExcelProperty("岗位")
-    private String jobTitle;
-
-    @Schema(description = "历任岗位")
-    @ExcelProperty("历任岗位")
-    private String formerPost;
-
-    @Schema(description = "所属团队(多个逗号分隔)")
-    @ExcelProperty("所属团队(多个逗号分隔)")
-    private Set<Long> teamIds;
-
-    @Schema(description = "头像url")
-    @ExcelProperty("头像url")
-    private String avatar;
-
-    @Schema(description = "出生日期")
-    @ExcelProperty("出生日期")
-    private LocalDateTime birthday;
-
-    @Schema(description = "毕业院校")
-    @ExcelProperty("毕业院校")
-    private String school;
-
-    @Schema(description = "学历")
-    @ExcelProperty("学历")
-    private String education;
-
-    @Schema(description = "专业方向(多个逗号分隔)")
-    @ExcelProperty("专业方向(多个逗号分隔)")
-    private Set<Long> specialDirection;
-
-    @Schema(description = "主要业绩")
-    @ExcelProperty("主要业绩")
-    private String achievement;
-
-    @Schema(description = "专业软件技能")
-    @ExcelProperty("专业软件技能")
-    private Set<Long> softwareSkills;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    @ExcelProperty("状态(0启用 1禁用)")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "5592")
-    @ExcelProperty("流程实例id")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    @ExcelProperty("审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "专业软件技能 label")
-    @ExcelProperty("专业软件技能 label")
-    private String softwareSkillsLabel;
-
-    @Schema(description = "专家序列 label")
-    @ExcelProperty("专家序列 label")
-    private String expertRankLabel;
-
-    @Schema(description = "专家所属团队 label")
-    @ExcelProperty("专家所属团队 label")
-    private String teamsLabel;
-
-    @Schema(description = "专家所属团队列表")
-    private List<TeamRespVO> teams;
-
-    @Schema(description = "专业方向 label")
-    @ExcelProperty("专业方向 label")
-    private String specialDirectionLabel;
-
-    @Schema(description = "学历 label")
-    @ExcelProperty("学历 label")
-    private String educationLabel;
-
-    @Schema(description = "梯队 label")
-    @ExcelProperty("梯队 label")
-    private String echelonLabel;
-
-    @Schema(description = "年龄")
-    @ExcelProperty("年龄")
-    private Integer age;
-}

+ 0 - 79
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolSaveReqVO.java

@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.Set;
-
-@Schema(description = "管理后台 - 专家库新增/修改 Request VO")
-@Data
-public class ExpertPoolSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24775")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "30265")
-    private Long deptId;
-
-    @Schema(description = "专家姓名")
-    private String expertName;
-
-    @Schema(description = "梯队(第一 第二 第三)")
-    private String echelon;
-
-    @Schema(description = "序列(技术 商务 运营 法务 安全)")
-    private Set<Long> expertRank;
-
-    @Schema(description = "职称")
-    private String professionalTitle;
-
-    @Schema(description = "岗位")
-    private String jobTitle;
-
-    @Schema(description = "历任岗位")
-    private String formerPost;
-
-    @Schema(description = "所属团队(多个逗号分隔)")
-    private Set<Long> teamIds;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "出生日期")
-    private LocalDateTime birthday;
-
-    @Schema(description = "毕业院校")
-    private String school;
-
-    @Schema(description = "学历")
-    private String education;
-
-    @Schema(description = "专业方向(多个逗号分隔)")
-    private Set<Long> specialDirection;
-
-    @Schema(description = "主要业绩")
-    private String achievement;
-
-    @Schema(description = "专业软件技能")
-    private Set<Long> softwareSkills;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "5592")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-}

+ 0 - 19
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/expertpool/vo/ExpertPoolSortReqVO.java

@@ -1,19 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 专家拖拽排序 Request VO")
-@Data
-public class ExpertPoolSortReqVO {
-
-    @Schema(description = "被拖拽的专家 ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "源专家 ID 不能为空")
-    private Long sourceId;
-
-    @Schema(description = "目标位置的专家 ID", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "目标专家 ID 不能为空")
-    private Long targetId;
-}

+ 0 - 146
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/NewsController.java

@@ -1,146 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.news;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
-import cn.iocoder.yudao.module.rd.service.news.NewsService;
-import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 资讯(政策信息 行业科技动态)")
-@RestController
-@RequestMapping("/rd/news")
-@Validated
-public class NewsController {
-
-    @Resource
-    private NewsService newsService;
-
-    @Resource
-    private DictDataUtils dictDataUtils;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建资讯(政策信息 行业科技动态)")
-    @PreAuthorize("@ss.hasPermission('rd:news:create')")
-    public CommonResult<Long> createNews(@Valid @RequestBody NewsSaveReqVO createReqVO) {
-        return success(newsService.createNews(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新资讯(政策信息 行业科技动态)")
-    @PreAuthorize("@ss.hasPermission('rd:news:update')")
-    public CommonResult<Boolean> updateNews(@Valid @RequestBody NewsSaveReqVO updateReqVO) {
-        newsService.updateNews(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除资讯(政策信息 行业科技动态)")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:news:delete')")
-    public CommonResult<Boolean> deleteNews(@RequestParam("id") Long id) {
-        newsService.deleteNews(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得资讯(政策信息 行业科技动态)")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:news:query')")
-    public CommonResult<NewsRespVO> getNews(@RequestParam("id") Long id) {
-        NewsDO news = newsService.getNews(id);
-        return success(buildNews(news));
-    }
-
-    /**
-     * 查询 资讯 详情
-     * @param news
-     * @return
-     */
-    private NewsRespVO buildNews(NewsDO news) {
-        // 如果 news 为空 返回空对象
-        if (ObjUtil.isEmpty(news)) {
-            return new NewsRespVO();
-        }
-        NewsRespVO newsVO = BeanUtils.toBean(news, NewsRespVO.class);
-        // 查询 资讯类别 字典数据
-        Map<String, String> newsCategoryPair = dictDataUtils.getDictData("rd_news_category");
-        // 资讯类别
-        String category = newsVO.getNewsCategory();
-        if (StrUtil.isNotBlank(category) && newsCategoryPair.containsKey(category)) {
-            newsVO.setNewsCategoryLabel(newsCategoryPair.get(category));
-        }
-        return newsVO;
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得资讯(政策信息 行业科技动态)分页")
-    @PreAuthorize("@ss.hasPermission('rd:news:query')")
-    public CommonResult<PageResult<NewsRespVO>> getNewsPage(@Valid NewsPageReqVO pageReqVO) {
-        PageResult<NewsDO> pageResult = newsService.getNewsPage(pageReqVO);
-        return success(new PageResult<>(buildNews(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    /**
-     * 设置日报的关联信息 部门(施工队伍) 项目 任务 带班干部 日报填报人
-     * @param news
-     * @return
-     */
-    private List<NewsRespVO> buildNews(List<NewsDO> news) {
-        if (CollUtil.isEmpty(news)) {
-            return Collections.emptyList();
-        }
-        // 查询数据字典值列表
-        // 资讯类别 key字典键值     value字典标签
-        // 查询 核心技术-状态 字典数据
-        Map<String, String> newsCategoryPair = dictDataUtils.getDictData("rd_news_category");
-        return BeanUtils.toBean(news, NewsRespVO.class, (newsVO) -> {
-            if (StrUtil.isNotBlank(newsVO.getNewsCategory())) {
-                if (newsCategoryPair.containsKey(newsVO.getNewsCategory())) {
-                    newsVO.setNewsCategoryLabel(newsCategoryPair.get(newsVO.getNewsCategory()));
-                }
-            }
-
-        });
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出资讯(政策信息 行业科技动态) Excel")
-    @PreAuthorize("@ss.hasPermission('rd:news:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportNewsExcel(@Valid NewsPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<NewsDO> list = newsService.getNewsPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "资讯(政策信息 行业科技动态).xls", "数据", NewsRespVO.class,
-                        BeanUtils.toBean(list, NewsRespVO.class));
-    }
-
-}

+ 0 - 79
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsPageReqVO.java

@@ -1,79 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态)分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class NewsPageReqVO extends PageParam {
-
-    @Schema(description = "所属部门", example = "18551")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "赵六")
-    private String newsName;
-
-    @Schema(description = "资讯类型(政策信息 科技动态)")
-    private String newsCategory;
-
-    @Schema(description = "资讯类型的子类别", example = "1")
-    private String newsSubType;
-
-    @Schema(description = "概述摘要")
-    private String summary;
-
-    @Schema(description = "正文内容(富文本html)")
-    private String content;
-
-    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
-    private String source;
-
-    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
-    private String sourceUrl;
-
-    @Schema(description = "原文发布时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] publishTime;
-
-    @Schema(description = "置顶标识 0否 1是")
-    private Boolean onTop;
-
-    @Schema(description = "封面图", example = "https://www.iocoder.cn")
-    private String coverUrl;
-
-    @Schema(description = "浏览次数", example = "6323")
-    private Integer browseCount;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "14226")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 101
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsRespVO.java

@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态) Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class NewsRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31116")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "18551")
-    @ExcelProperty("所属部门")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "赵六")
-    @ExcelProperty("核心技术名称")
-    private String newsName;
-
-    @Schema(description = "资讯类型(政策信息 科技动态)")
-    @ExcelProperty("资讯类型(政策信息 科技动态)")
-    private String newsCategory;
-
-    @Schema(description = "资讯类型的子类别", example = "1")
-    @ExcelProperty("资讯类型的子类别")
-    private String newsSubType;
-
-    @Schema(description = "概述摘要")
-    @ExcelProperty("概述摘要")
-    private String summary;
-
-    @Schema(description = "正文内容(富文本html)")
-    @ExcelProperty("正文内容(富文本html)")
-    private String content;
-
-    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
-    @ExcelProperty("资讯来源名称(网站 期刊 政府部门...)")
-    private String source;
-
-    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
-    @ExcelProperty("外部原文链接")
-    private String sourceUrl;
-
-    @Schema(description = "原文发布时间")
-    @ExcelProperty("原文发布时间")
-    private LocalDateTime publishTime;
-
-    @Schema(description = "置顶标识 0否 1是")
-    @ExcelProperty("置顶标识 0否 1是")
-    private Boolean onTop;
-
-    @Schema(description = "封面图", example = "https://www.iocoder.cn")
-    @ExcelProperty("封面图")
-    private String coverUrl;
-
-    @Schema(description = "浏览次数", example = "6323")
-    @ExcelProperty("浏览次数")
-    private Integer browseCount;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
-    @ExcelProperty("状态(0草稿 1已发布 2已下线)")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "14226")
-    @ExcelProperty("流程实例id")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    @ExcelProperty("审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "资讯类别")
-    @ExcelProperty("资讯类别")
-    private String newsCategoryLabel;
-}

+ 0 - 69
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsSaveReqVO.java

@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态)新增/修改 Request VO")
-@Data
-public class NewsSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31116")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "18551")
-    private Long deptId;
-
-    @Schema(description = "核心技术名称", example = "赵六")
-    private String newsName;
-
-    @Schema(description = "资讯类型(政策信息 科技动态)")
-    private String newsCategory;
-
-    @Schema(description = "资讯类型的子类别", example = "1")
-    private String newsSubType;
-
-    @Schema(description = "概述摘要")
-    private String summary;
-
-    @Schema(description = "正文内容(富文本html)")
-    private String content;
-
-    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
-    private String source;
-
-    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
-    private String sourceUrl;
-
-    @Schema(description = "原文发布时间")
-    private LocalDateTime publishTime;
-
-    @Schema(description = "置顶标识 0否 1是")
-    private Boolean onTop;
-
-    @Schema(description = "封面图", example = "https://www.iocoder.cn")
-    private String coverUrl;
-
-    @Schema(description = "浏览次数", example = "6323")
-    private Integer browseCount;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "14226")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-}

+ 0 - 146
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/ResearchProjectController.java

@@ -1,146 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectApproveReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchProject.ProjectDO;
-import cn.iocoder.yudao.module.rd.service.researchProject.ResearchProjectService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 项目立项")
-@RestController
-@RequestMapping("/rd/research-project")
-@Validated
-public class ResearchProjectController {
-
-    @Resource
-    private ResearchProjectService projectService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建项目立项")
-    @PreAuthorize("@ss.hasPermission('rd:project:create')")
-    public CommonResult<Long> createProject(@Valid @RequestBody ProjectSaveReqVO createReqVO) {
-        return success(projectService.createProject(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新项目立项")
-    @PreAuthorize("@ss.hasPermission('rd:project:update')")
-    public CommonResult<Boolean> updateProject(@Valid @RequestBody ProjectSaveReqVO updateReqVO) {
-        projectService.updateProject(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除项目立项")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:project:delete')")
-    public CommonResult<Boolean> deleteProject(@RequestParam("id") Long id) {
-        projectService.deleteProject(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得项目立项")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:project:query')")
-    public CommonResult<ProjectRespVO> getProject(@RequestParam("id") Long id) {
-        return success(projectService.getProject(id));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得项目立项分页")
-    @PreAuthorize("@ss.hasPermission('rd:project:query')")
-    public CommonResult<PageResult<ProjectRespVO>> getProjectPage(@Valid ProjectPageReqVO pageReqVO) {
-        return success(projectService.getProjectPage(pageReqVO));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出项目立项 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:project:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportProjectExcel(@Valid ProjectPageReqVO pageReqVO,
-                                   HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ProjectDO> list = projectService.getProjectList(pageReqVO);
-        // 导出 Excel
-        ExcelUtils.write(response, "项目立项.xls", "数据", ProjectRespVO.class,
-                BeanUtils.toBean(list, ProjectRespVO.class));
-    }
-
-
-    // ==================== 审批流 ====================
-
-    @GetMapping("/todo-page")
-    @Operation(summary = "待我审批的项目分页")
-    @PreAuthorize("@ss.hasPermission('rd:project:query')")
-    public CommonResult<PageResult<ProjectRespVO>> getTodoPage(@Valid ProjectPageReqVO pageReqVO) {
-        return success(projectService.getTodoPage(pageReqVO));
-    }
-
-    @PostMapping("/submit-pre")
-    @Operation(summary = "提交预审")
-    @Parameter(name = "id", description = "项目ID", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:project:submit')")
-    public CommonResult<Boolean> submitPre(@RequestParam("id") Long id) {
-        projectService.submitPreApproval(id);
-        return success(true);
-    }
-
-    @PostMapping("/approve-pre")
-    @Operation(summary = "预审审批")
-    @PreAuthorize("@ss.hasPermission('rd:project:approve')")
-    public CommonResult<Boolean> approvePre(@Valid @RequestBody ProjectApproveReqVO reqVO) {
-        projectService.approvePre(reqVO);
-        return success(true);
-    }
-
-    @PostMapping("/submit-formal")
-    @Operation(summary = "提交正式立项")
-    @Parameter(name = "id", description = "项目ID", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:project:submit')")
-    public CommonResult<Boolean> submitFormal(@RequestParam("id") Long id) {
-        projectService.submitFormalApproval(id);
-        return success(true);
-    }
-
-    @PostMapping("/approve-formal")
-    @Operation(summary = "正式立项审批")
-    @PreAuthorize("@ss.hasPermission('rd:project:approve')")
-    public CommonResult<Boolean> approveFormal(@Valid @RequestBody ProjectApproveReqVO reqVO) {
-        projectService.approveFormal(reqVO);
-        return success(true);
-    }
-
-    @PostMapping("/cancel")
-    @Operation(summary = "撤回审批")
-    @Parameter(name = "id", description = "项目ID", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:project:submit')")
-    public CommonResult<Boolean> cancel(@RequestParam("id") Long id) {
-        projectService.cancelApproval(id);
-        return success(true);
-    }
-
-
-}

+ 0 - 23
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectApproveReqVO.java

@@ -1,23 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 项目审批 Request VO")
-@Data
-public class ProjectApproveReqVO {
-
-    @Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "项目ID不能为空")
-    private Long projectId;
-
-    @Schema(description = "审批结果:1通过 2驳回", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "审批结果不能为空")
-    private Integer result;
-
-    @Schema(description = "审批意见", example = "同意立项")
-    private String opinion;
-
-}

+ 0 - 23
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectAttachmentVO.java

@@ -1,23 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-public class ProjectAttachmentVO {
-
-    @Schema(description = "文件名", example = "立项申请表.pdf")
-    private String fileName;
-
-    @Schema(description = "文件MIME类型", example = "application/pdf")
-    private String fileType;
-
-    @Schema(description = "文件大小(字节)", example = "3088617")
-    private Long fileSize;
-
-    @Schema(description = "文件访问路径", example = "https://xxx.com/file/xxx.pdf")
-    private String filePath;
-
-    @Schema(description = "附件类型:APPLICATION-立项申请表 OPENING_REPORT-开题报告 OTHER-其他", example = "APPLICATION")
-    private String type;
-}

+ 0 - 60
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectPageReqVO.java

@@ -1,60 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 项目立项分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ProjectPageReqVO extends PageParam {
-
-    @Schema(description = "项目级别", example = "国家级")
-    private String projectLevel;
-
-    @Schema(description = "执行单位", example = "某某研究院")
-    private String executingUnit;
-
-    @Schema(description = "项目名称", example = "智能仓储系统")
-    private String projectName;
-
-    @Schema(description = "项目负责人", example = "张三")
-    private String projectLeader;
-
-    @Schema(description = "项目组成员(多个逗号分隔)")
-    private String teamMembers;
-
-    @Schema(description = "项目类型", example = "研发类")
-    private String projectType;
-
-    @Schema(description = "目标和意义")
-    private String goalAndSignificance;
-
-    @Schema(description = "主要研究内容")
-    private String mainResearchContent;
-
-    @Schema(description = "创新点")
-    private String innovationPoint;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "0")
-    private Integer status;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 169
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectRespVO.java

@@ -1,169 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 项目立项 Response VO")
-@Data
-public class ProjectRespVO {
-
-    @Schema(description = "主键ID", example = "1024")
-    private Long id;
-
-    @Schema(description = "所属部门(专业公司)ID", example = "100")
-    private Long deptId;
-
-    @Schema(description = "所属部门名称", example = "XX石油技术公司")
-    private String deptName;
-
-    @Schema(description = "项目级别", example = "国家级")
-    private String projectLevel;
-
-    @Schema(description = "执行单位(部门ID)", example = "100")
-    private Long executingUnit;
-
-    @Schema(description = "执行单位名称", example = "XX石油技术公司")
-    private String executingUnitName;
-
-    @Schema(description = "项目名称", example = "智能仓储系统")
-    private String projectName;
-
-    @Schema(description = "项目负责人", example = "张三")
-    private String projectLeader;
-
-    @Schema(description = "项目组成员(多个逗号分隔)", example = "张三,李四,王五")
-    private String teamMembers;
-
-    @Schema(description = "项目类型", example = "研发类")
-    private String projectType;
-
-    @Schema(description = "目标和意义")
-    private String goalAndSignificance;
-
-    @Schema(description = "主要研究内容")
-    private String mainResearchContent;
-
-    @Schema(description = "创新点")
-    private String innovationPoint;
-
-    @Schema(description = "附件列表")
-    private List<ProjectAttachmentVO> attachments;
-
-    @Schema(description = "排序值", example = "1")
-    private Integer sort;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "0")
-    private Integer status;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    private LocalDateTime createTime;
-
-    // ==================== 预审阶段 ====================
-    @Schema(description = "预审状态:0未提交 1审批中 2通过 3驳回", example = "0")
-    private Integer preAuditStatus;
-
-    @Schema(description = "预审当前节点", example = "11")
-    private Integer preCurrentNode;
-
-    @Schema(description = "预审当前审批人ID", example = "1001")
-    private Long preCurrentApproverId;
-
-    @Schema(description = "预审当前节点角色code", example = "科技发展部负责人")
-    private String preCurrentRoleCode;
-
-    @Schema(description = "预审提交时间")
-    private LocalDateTime preSubmitTime;
-
-    // ==================== 正式立项阶段 ====================
-    @Schema(description = "正式审批状态:0未提交 1审批中 2通过 3驳回", example = "0")
-    private Integer formalAuditStatus;
-
-    @Schema(description = "正式当前节点", example = "21")
-    private Integer formalCurrentNode;
-
-    @Schema(description = "正式当前审批人ID", example = "1002")
-    private Long formalCurrentApproverId;
-
-    @Schema(description = "正式当前节点角色code", example = "技术副总")
-    private String formalCurrentRoleCode;
-
-    @Schema(description = "正式立项提交时间")
-    private LocalDateTime formalSubmitTime;
-
-    @Schema(description = "立项时间(正式立项通过时间)")
-    private LocalDateTime projectDate;
-
-    // ==================== 预算相关 ====================
-    @Schema(description = "是否涉及预算:0否 1是", example = "0")
-    private Integer involveBudget;
-
-    // ==================== 子表数据 ====================
-
-    @Schema(description = "进度安排列表")
-    private List<ScheduleVO> scheduleList;
-
-    @Schema(description = "费用预算明细列表")
-    private List<BudgetVO> budgetList;
-
-    @Schema(description = "审批记录列表")
-    private List<ApprovalRecordVO> approvalRecords;
-
-    // ==================== 子表 VO ====================
-
-    @Schema(description = "管理后台 - 项目进度安排 Response VO")
-    @Data
-    public static class ScheduleVO {
-        @Schema(description = "主键ID", example = "1")
-        private Long id;
-
-        @Schema(description = "工作计划", example = "完成需求调研")
-        private String workPlan;
-
-        @Schema(description = "截止时间", example = "2026-10-01")
-        private LocalDate deadline;
-
-        @Schema(description = "排序值", example = "0")
-        private Integer sort;
-    }
-
-    @Schema(description = "管理后台 - 项目费用预算 Response VO")
-    @Data
-    public static class BudgetVO {
-        @Schema(description = "主键ID", example = "1")
-        private Long id;
-
-        @Schema(description = "财务科目", example = "材料费")
-        private String financialSubject;
-
-        @Schema(description = "预算金额(元)", example = "10000.00")
-        private BigDecimal budgetAmount;
-
-        @Schema(description = "预算说明", example = "用于采购开发板")
-        private String budgetDescription;
-
-        @Schema(description = "排序值", example = "0")
-        private Integer sort;
-    }
-
-    @Schema(description = "项目审批记录 VO")
-    @Data
-    public static class ApprovalRecordVO {
-        private Long id;
-        private Integer stage;
-        private Integer node;
-        private String nodeName;
-        private Long approverId;
-        private String approverName;
-        private Integer result;
-        private String opinion;
-        private LocalDateTime approveTime;
-    }
-}

+ 0 - 118
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchProject/vo/ProjectSaveReqVO.java

@@ -1,118 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.util.List;
-
-@Schema(description = "管理后台 - 项目立项新增/修改 Request VO")
-@Data
-public class ProjectSaveReqVO {
-
-    @Schema(description = "主键ID", example = "1024")
-    private Long id;
-
-    @Schema(description = "创建部门(专业公司)ID")
-    private Long deptId;
-
-    @Schema(description = "项目级别", requiredMode = Schema.RequiredMode.REQUIRED, example = "国家级")
-    @NotEmpty(message = "项目级别不能为空")
-    private String projectLevel;
-
-    @Schema(description = "执行单位(部门ID)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
-    @NotNull(message = "执行单位不能为空")
-    private Long executingUnit;
-
-    @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "智能仓储系统")
-    @NotEmpty(message = "项目名称不能为空")
-    @Size(max = 200, message = "项目名称长度不能超过 200 个字符")
-    private String projectName;
-
-    @Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @NotEmpty(message = "项目负责人不能为空")
-    private String projectLeader;
-
-    @Schema(description = "项目组成员(多个逗号分隔)", example = "张三,李四,王五")
-    private String teamMembers;
-
-    @Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发类")
-    @NotEmpty(message = "项目类型不能为空")
-    private String projectType;
-
-    @Schema(description = "目标和意义")
-    @Size(max = 500, message = "目标和意义长度不能超过 500 个字符")
-    private String goalAndSignificance;
-
-    @Schema(description = "主要研究内容")
-    @Size(max = 2000, message = "主要研究内容长度不能超过 2000 个字符")
-    private String mainResearchContent;
-
-    @Schema(description = "创新点")
-    @Size(max = 500, message = "创新点长度不能超过 500 个字符")
-    private String innovationPoint;
-
-    @Schema(description = "排序值", example = "1")
-    private Integer sort;
-
-    @Schema(description = "附件列表")
-    private List<ProjectAttachmentVO> attachments;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "0")
-    private Integer status;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    // ==================== 子表数据 ====================
-
-    @Schema(description = "进度安排列表")
-    @Valid
-    private List<ScheduleVO> scheduleList;
-
-    @Schema(description = "费用预算明细列表")
-    @Valid
-    private List<BudgetVO> budgetList;
-
-    // ==================== 子表 VO ====================
-
-    @Schema(description = "管理后台 - 项目进度安排 VO")
-    @Data
-    public static class ScheduleVO {
-
-        @Schema(description = "工作计划", requiredMode = Schema.RequiredMode.REQUIRED, example = "完成需求调研")
-        @NotEmpty(message = "工作计划不能为空")
-        private String workPlan;
-
-        @Schema(description = "截止时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026-10-01")
-        @NotNull(message = "截止时间不能为空")
-        private java.time.LocalDate deadline;
-
-        @Schema(description = "排序值", example = "0")
-        private Integer sort;
-
-    }
-
-    @Schema(description = "管理后台 - 项目费用预算 VO")
-    @Data
-    public static class BudgetVO {
-
-        @Schema(description = "财务科目", requiredMode = Schema.RequiredMode.REQUIRED, example = "材料费")
-        @NotEmpty(message = "财务科目不能为空")
-        private String financialSubject;
-
-        @Schema(description = "预算金额(元)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000.00")
-        @NotNull(message = "预算金额不能为空")
-        private java.math.BigDecimal budgetAmount;
-
-        @Schema(description = "预算说明", example = "用于采购开发板")
-        private String budgetDescription;
-
-        @Schema(description = "排序值", example = "0")
-        private Integer sort;
-
-    }
-
-}

+ 0 - 206
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/ResearchAchievementController.java

@@ -1,206 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievement;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo.ResearchAchievementPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo.ResearchAchievementRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo.ResearchAchievementSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievement.ResearchAchievementDO;
-import cn.iocoder.yudao.module.rd.enums.AttachmentCategoryEnum;
-import cn.iocoder.yudao.module.rd.service.attachment.AttachmentService;
-import cn.iocoder.yudao.module.rd.service.researchachievement.ResearchAchievementService;
-import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 知识产权、荣誉证书等研究成果")
-@RestController
-@RequestMapping("/rd/research-achievement")
-@Validated
-public class ResearchAchievementController {
-
-    @Resource
-    private ResearchAchievementService researchAchievementService;
-
-    @Resource
-    private DictDataUtils dictDataUtils;
-
-    @Resource
-    private AttachmentService attachmentService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建知识产权、荣誉证书等研究成果")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:create')")
-    public CommonResult<Long> createResearchAchievement(@Valid @RequestBody ResearchAchievementSaveReqVO createReqVO) {
-        return success(researchAchievementService.createResearchAchievement(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新知识产权、荣誉证书等研究成果")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:update')")
-    public CommonResult<Boolean> updateResearchAchievement(@Valid @RequestBody ResearchAchievementSaveReqVO updateReqVO) {
-        researchAchievementService.updateResearchAchievement(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除知识产权、荣誉证书等研究成果")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:delete')")
-    public CommonResult<Boolean> deleteResearchAchievement(@RequestParam("id") Long id) {
-        researchAchievementService.deleteResearchAchievement(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得知识产权、荣誉证书等研究成果")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:query')")
-    public CommonResult<ResearchAchievementRespVO> getResearchAchievement(@RequestParam("id") Long id) {
-        ResearchAchievementDO researchAchievement = researchAchievementService.getResearchAchievement(id);
-        return success(buildAchievement(researchAchievement));
-    }
-
-    /**
-     * 查询研究成果 专利 软著 论文 荣誉证书 详情
-     * @param achievement
-     * @return
-     */
-    private ResearchAchievementRespVO buildAchievement(ResearchAchievementDO achievement) {
-        // 如果 technology 为空 返回空对象
-        if (ObjUtil.isEmpty(achievement)) {
-            return new ResearchAchievementRespVO();
-        }
-        ResearchAchievementRespVO achievementVO = BeanUtils.toBean(achievement, ResearchAchievementRespVO.class);
-        // 查询 研究成果类型 字典数据
-        Map<String, String> achievementTypePair = dictDataUtils.getDictData("rd_achievement_type");
-        // key 研究成果类型value值  value不同类型对应的子类型数据字典type
-        Map<String, String> achievementTypeRemarkPair = dictDataUtils.getDictDataRemark("rd_achievement_type");
-
-        // 研究成果类型
-        String achievementType = achievementVO.getAchievementType();
-        if (StrUtil.isNotBlank(achievementType) && achievementTypePair.containsKey(achievementType)) {
-            achievementVO.setAchievementTypeLabel(achievementTypePair.get(achievementType));
-        }
-
-        // 研究成果子类型
-        String subType = achievementVO.getSubType();
-        if (StrUtil.isNotBlank(achievementType) && achievementTypeRemarkPair.containsKey(achievementType)) {
-            // 当前研究成果类型 对应的子类型
-            String dictDataRemark = achievementTypeRemarkPair.get(achievementType);
-            if (StrUtil.isNotBlank(dictDataRemark)) {
-                Map<String, String> subTypePair = dictDataUtils.getDictData(dictDataRemark);
-                if (StrUtil.isNotBlank(subType) && subTypePair.containsKey(subType)) {
-                    achievementVO.setSubTypeLabel(subTypePair.get(subType));
-                }
-            }
-        }
-
-        // 查询当前 核心技术 附件列表
-        AttachmentPageReqVO reqVO = new AttachmentPageReqVO();
-        reqVO.setBizId(achievement.getId());
-        reqVO.setCategory(AttachmentCategoryEnum.ACHIEVEMENT.getCode());
-        List<AttachmentDO> attachments = attachmentService.getIotAttachments(reqVO);
-        if (CollUtil.isNotEmpty(attachments)) {
-            achievementVO.setAttachments(attachments);
-        }
-        return achievementVO;
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得知识产权、荣誉证书等研究成果分页")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:query')")
-    public CommonResult<PageResult<ResearchAchievementRespVO>> getResearchAchievementPage(@Valid ResearchAchievementPageReqVO pageReqVO) {
-        PageResult<ResearchAchievementDO> pageResult = researchAchievementService.getResearchAchievementPage(pageReqVO);
-        return success(new PageResult<>(buildAchievements(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    /**
-     * 设置研究成果列表中 每个 研究成果的 主类型 子类型 label
-     * @param achievements
-     * @return
-     */
-    private List<ResearchAchievementRespVO> buildAchievements(List<ResearchAchievementDO> achievements) {
-        if (CollUtil.isEmpty(achievements)) {
-            return Collections.emptyList();
-        }
-        // 查询数据字典值列表
-        // 研究成果 子类型 key研究成果id   value子类型标签
-        Map<Long, String> subTypesPair = new HashMap<>();
-
-        // 查询 研究成果 主类别 字典数据
-        Map<String, String> achievementTypePair = dictDataUtils.getDictData("rd_achievement_type");
-        // key 研究成果类型value值  value不同类型对应的子类型数据字典type
-        Map<String, String> achievementTypeRemarkPair = dictDataUtils.getDictDataRemark("rd_achievement_type");
-
-        achievements.forEach(achievement -> {
-            // 每个研究成果的 主类型
-            String achievementType = achievement.getAchievementType();
-
-            // 研究成果子类型
-            String subType = achievement.getSubType();
-            if (StrUtil.isNotBlank(achievementType) && achievementTypeRemarkPair.containsKey(achievementType)) {
-                // 当前研究成果类型 对应的子类型
-                String dictDataRemark = achievementTypeRemarkPair.get(achievementType);
-                if (StrUtil.isNotBlank(dictDataRemark)) {
-                    Map<String, String> subTypePair = dictDataUtils.getDictData(dictDataRemark);
-                    if (StrUtil.isNotBlank(subType) && subTypePair.containsKey(subType)) {
-                        subTypesPair.put(achievement.getId(), subTypePair.get(subType));
-                    }
-                }
-            }
-        });
-
-        return BeanUtils.toBean(achievements, ResearchAchievementRespVO.class, (achievementVO) -> {
-            if (StrUtil.isNotBlank(achievementVO.getAchievementType())) {
-                if (achievementTypePair.containsKey(achievementVO.getAchievementType())) {
-                    achievementVO.setAchievementTypeLabel(achievementTypePair.get(achievementVO.getAchievementType()));
-                }
-            }
-            if (StrUtil.isNotBlank(achievementVO.getSubType())) {
-                if (subTypesPair.containsKey(achievementVO.getId())) {
-                    achievementVO.setSubTypeLabel(subTypesPair.get(achievementVO.getId()));
-                }
-            }
-        });
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出知识产权、荣誉证书等研究成果 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportResearchAchievementExcel(@Valid ResearchAchievementPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ResearchAchievementDO> list = researchAchievementService.getResearchAchievementPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "知识产权、荣誉证书等研究成果.xls", "数据", ResearchAchievementRespVO.class,
-                        BeanUtils.toBean(list, ResearchAchievementRespVO.class));
-    }
-
-}

+ 0 - 69
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementPageReqVO.java

@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 知识产权、荣誉证书等研究成果分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ResearchAchievementPageReqVO extends PageParam {
-
-    @Schema(description = "所属部门(成果所有权)", example = "1444")
-    private Long deptId;
-
-    @Schema(description = "研究成果名称", example = "芋艿")
-    private String achievementName;
-
-    @Schema(description = "研究成果类型(论文 专利 软著 荣誉证书...)", example = "2")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类型(发明专利 实用新型 原始取得...)", example = "2")
-    private String subType;
-
-    @Schema(description = "所属单位id", example = "20713")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    private String department;
-
-    @Schema(description = "概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "扩展属性,存储各类型特有字段")
-    private String extAttributes;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "状态(0有效 1失效)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "27647")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 99
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementRespVO.java

@@ -1,99 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo;
-
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 知识产权、荣誉证书等研究成果 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ResearchAchievementRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7121")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属部门(成果所有权)", example = "1444")
-    @ExcelProperty("所属部门(成果所有权)")
-    private Long deptId;
-
-    @Schema(description = "研究成果名称", example = "芋艿")
-    @ExcelProperty("研究成果名称")
-    private String achievementName;
-
-    @Schema(description = "研究成果类型(论文 专利 软著 荣誉证书...)", example = "2")
-    @ExcelProperty("研究成果类型(论文 专利 软著 荣誉证书...)")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类型(发明专利 实用新型 原始取得...)", example = "2")
-    @ExcelProperty("研究成果子类型(发明专利 实用新型 原始取得...)")
-    private String subType;
-
-    @Schema(description = "所属单位id", example = "20713")
-    @ExcelProperty("所属单位id")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    @ExcelProperty("所属单位")
-    private String department;
-
-    @Schema(description = "概述")
-    @ExcelProperty("概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    @ExcelProperty("头像url")
-    private String avatar;
-
-    @Schema(description = "扩展属性,存储各类型特有字段")
-    @ExcelProperty("扩展属性,存储各类型特有字段")
-    private List<TemplateAttrModelProperty> extAttributes;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0有效 1失效)", example = "2")
-    @ExcelProperty("状态(0有效 1失效)")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "27647")
-    @ExcelProperty("流程实例id")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    @ExcelProperty("审批意见")
-    private String opinion;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "研究成果类型(论文 专利 软著 荣誉证书...) 数据字典 label", example = "2")
-    @ExcelProperty("研究成果类型")
-    private String achievementTypeLabel;
-
-    @Schema(description = "研究成果子类型(发明专利 实用新型 原始取得...) 数据字典 label", example = "2")
-    @ExcelProperty("研究成果子类型")
-    private String subTypeLabel;
-
-    @Schema(description = "附件列表", example = "https://aims.deepoil.cc/admin-api/infra/file/29/get/人力资源.png")
-    private List<AttachmentDO> attachments;
-}

+ 0 - 67
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievement/vo/ResearchAchievementSaveReqVO.java

@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo;
-
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-@Schema(description = "管理后台 - 知识产权、荣誉证书等研究成果新增/修改 Request VO")
-@Data
-public class ResearchAchievementSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7121")
-    private Long id;
-
-    @Schema(description = "所属部门(成果所有权)", example = "1444")
-    private Long deptId;
-
-    @Schema(description = "研究成果名称", example = "芋艿")
-    private String achievementName;
-
-    @Schema(description = "研究成果类型(论文 专利 软著 荣誉证书...)", example = "2")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类型(发明专利 实用新型 原始取得...)", example = "2")
-    private String subType;
-
-    @Schema(description = "所属单位id", example = "20713")
-    private Long departmentId;
-
-    @Schema(description = "所属单位")
-    private String department;
-
-    @Schema(description = "概述")
-    private String summary;
-
-    @Schema(description = "头像url")
-    private String avatar;
-
-    @Schema(description = "扩展属性,存储各类型特有字段")
-    private List<TemplateAttrModelProperty> extAttributes;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "状态(0有效 1失效)", example = "2")
-    private Integer status;
-
-    @Schema(description = "流程实例id", example = "27647")
-    private String processInstanceId;
-
-    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "审批意见")
-    private String opinion;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "附件列表")
-    private List<AttachmentSaveReqVO> attachments;
-}

+ 0 - 102
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/ResearchAchievementAttrsController.java

@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo.ResearchAchievementAttrsPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo.ResearchAchievementAttrsRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo.ResearchAchievementAttrsSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.ResearchAchievementAttrsDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import cn.iocoder.yudao.module.rd.service.researchachievementattrs.ResearchAchievementAttrsService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 研究成果 论文 专利 软著 荣誉证书 扩展属性")
-@RestController
-@RequestMapping("/rd/research-achievement-attrs")
-@Validated
-public class ResearchAchievementAttrsController {
-
-    @Resource
-    private ResearchAchievementAttrsService researchAchievementAttrsService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建研究成果 论文 专利 软著 荣誉证书 扩展属性")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:create')")
-    public CommonResult<Long> createResearchAchievementAttrs(@Valid @RequestBody ResearchAchievementAttrsSaveReqVO createReqVO) {
-        return success(researchAchievementAttrsService.createResearchAchievementAttrs(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新研究成果 论文 专利 软著 荣誉证书 扩展属性")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:update')")
-    public CommonResult<Boolean> updateResearchAchievementAttrs(@Valid @RequestBody ResearchAchievementAttrsSaveReqVO updateReqVO) {
-        researchAchievementAttrsService.updateResearchAchievementAttrs(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除研究成果 论文 专利 软著 荣誉证书 扩展属性")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:delete')")
-    public CommonResult<Boolean> deleteResearchAchievementAttrs(@RequestParam("id") Long id) {
-        researchAchievementAttrsService.deleteResearchAchievementAttrs(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得研究成果 论文 专利 软著 荣誉证书 扩展属性")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:query')")
-    public CommonResult<ResearchAchievementAttrsRespVO> getResearchAchievementAttrs(@RequestParam("id") Long id) {
-        ResearchAchievementAttrsDO researchAchievementAttrs = researchAchievementAttrsService.getResearchAchievementAttrs(id);
-        return success(BeanUtils.toBean(researchAchievementAttrs, ResearchAchievementAttrsRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得研究成果 论文 专利 软著 荣誉证书 扩展属性分页")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:query')")
-    public CommonResult<PageResult<ResearchAchievementAttrsRespVO>> getResearchAchievementAttrsPage(@Valid ResearchAchievementAttrsPageReqVO pageReqVO) {
-        PageResult<ResearchAchievementAttrsDO> pageResult = researchAchievementAttrsService.getResearchAchievementAttrsPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, ResearchAchievementAttrsRespVO.class));
-    }
-
-    @GetMapping("/attrs")
-    @Operation(summary = "获得研究成果 论文 专利 软著 荣誉证书 扩展属性 列表")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:query')")
-    public CommonResult<List<TemplateAttrModelProperty>> researchAchievementAttrs(@Valid ResearchAchievementAttrsPageReqVO pageReqVO) {
-        List<TemplateAttrModelProperty> achievementAttrs = researchAchievementAttrsService.achievementAttrs(pageReqVO);
-        return success(achievementAttrs);
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出研究成果 论文 专利 软著 荣誉证书 扩展属性 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:research-achievement-attrs:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportResearchAchievementAttrsExcel(@Valid ResearchAchievementAttrsPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<ResearchAchievementAttrsDO> list = researchAchievementAttrsService.getResearchAchievementAttrsPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "研究成果 论文 专利 软著 荣誉证书 扩展属性.xls", "数据", ResearchAchievementAttrsRespVO.class,
-                        BeanUtils.toBean(list, ResearchAchievementAttrsRespVO.class));
-    }
-
-}

+ 0 - 75
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsPageReqVO.java

@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 研究成果 论文 专利 软著 荣誉证书 扩展属性分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class ResearchAchievementAttrsPageReqVO extends PageParam {
-
-    @Schema(description = "扩展模板id", example = "626")
-    private Long templateId;
-
-    @Schema(description = "部门id", example = "27102")
-    private Long deptId;
-
-    @Schema(description = "研究成果主类别", example = "2")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类别", example = "1")
-    private String achievementSubType;
-
-    @Schema(description = "属性名称", example = "王五")
-    private String name;
-
-    @Schema(description = "属性标识符")
-    private String identifier;
-
-    @Schema(description = "数据类型(double text textarea date dropdown)", example = "1")
-    private String dataType;
-
-    @Schema(description = "是否必填(0非必填 1必填)")
-    private Integer required;
-
-    @Schema(description = "单位(MPa)")
-    private String unit;
-
-    @Schema(description = "访问模式(r读  w写)")
-    private String accessMode;
-
-    @Schema(description = "默认值")
-    private String defaultValue;
-
-    @Schema(description = "最大值")
-    private String maxValue;
-
-    @Schema(description = "最小值")
-    private String minValue;
-
-    @Schema(description = "不同类型研究成果的扩展属性")
-    private String extProperty;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 92
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsRespVO.java

@@ -1,92 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo;
-
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 研究成果 论文 专利 软著 荣誉证书 扩展属性 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class ResearchAchievementAttrsRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28619")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "扩展模板id", example = "626")
-    @ExcelProperty("扩展模板id")
-    private Long templateId;
-
-    @Schema(description = "部门id", example = "27102")
-    @ExcelProperty("部门id")
-    private Long deptId;
-
-    @Schema(description = "研究成果主类别", example = "2")
-    @ExcelProperty("研究成果主类别")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类别", example = "1")
-    @ExcelProperty("研究成果子类别")
-    private String achievementSubType;
-
-    @Schema(description = "属性名称", example = "王五")
-    @ExcelProperty("属性名称")
-    private String name;
-
-    @Schema(description = "属性标识符")
-    @ExcelProperty("属性标识符")
-    private String identifier;
-
-    @Schema(description = "数据类型(double text textarea date dropdown)", example = "1")
-    @ExcelProperty("数据类型(double text textarea date dropdown)")
-    private String dataType;
-
-    @Schema(description = "是否必填(0非必填 1必填)")
-    @ExcelProperty("是否必填(0非必填 1必填)")
-    private Integer required;
-
-    @Schema(description = "单位(MPa)")
-    @ExcelProperty("单位(MPa)")
-    private String unit;
-
-    @Schema(description = "访问模式(r读  w写)")
-    @ExcelProperty("访问模式(r读  w写)")
-    private String accessMode;
-
-    @Schema(description = "默认值")
-    @ExcelProperty("默认值")
-    private String defaultValue;
-
-    @Schema(description = "最大值")
-    @ExcelProperty("最大值")
-    private String maxValue;
-
-    @Schema(description = "最小值")
-    @ExcelProperty("最小值")
-    private String minValue;
-
-    @Schema(description = "不同类型研究成果的扩展属性")
-    @ExcelProperty("不同类型研究成果的扩展属性")
-    private TemplateAttrModelProperty extProperty;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    @ExcelProperty("状态(0启用 1禁用)")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 65
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/researchachievementattrs/vo/ResearchAchievementAttrsSaveReqVO.java

@@ -1,65 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo;
-
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "管理后台 - 研究成果 论文 专利 软著 荣誉证书 扩展属性新增/修改 Request VO")
-@Data
-public class ResearchAchievementAttrsSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28619")
-    private Long id;
-
-    @Schema(description = "扩展模板id", example = "626")
-    private Long templateId;
-
-    @Schema(description = "部门id", example = "27102")
-    private Long deptId;
-
-    @Schema(description = "研究成果主类别", example = "2")
-    private String achievementType;
-
-    @Schema(description = "研究成果子类别", example = "1")
-    private String achievementSubType;
-
-    @Schema(description = "属性名称", example = "王五")
-    private String name;
-
-    @Schema(description = "属性标识符")
-    private String identifier;
-
-    @Schema(description = "数据类型(double text textarea date dropdown)", example = "1")
-    private String dataType;
-
-    @Schema(description = "是否必填(0非必填 1必填)")
-    private Integer required;
-
-    @Schema(description = "单位(MPa)")
-    private String unit;
-
-    @Schema(description = "访问模式(r读  w写)")
-    private String accessMode;
-
-    @Schema(description = "默认值")
-    private String defaultValue;
-
-    @Schema(description = "最大值")
-    private String maxValue;
-
-    @Schema(description = "最小值")
-    private String minValue;
-
-    @Schema(description = "不同类型研究成果的扩展属性")
-    private TemplateAttrModelProperty extProperty;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "2")
-    private Integer status;
-
-}

+ 0 - 219
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/TeamController.java

@@ -1,219 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.team;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamPageReqVO;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamRespVO;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamSaveReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertpool.ExpertPoolDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.team.TeamDO;
-import cn.iocoder.yudao.module.rd.service.expertpool.ExpertPoolService;
-import cn.iocoder.yudao.module.rd.service.team.TeamService;
-import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 团队")
-@RestController
-@RequestMapping("/rd/team")
-@Validated
-public class TeamController {
-
-    @Resource
-    private TeamService teamService;
-    @Resource
-    private ExpertPoolService rdExpertPoolService;
-    @Resource
-    private DictDataUtils dictDataUtils;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建团队")
-    @PreAuthorize("@ss.hasPermission('rd:team:create')")
-    public CommonResult<Long> createTeam(@Valid @RequestBody TeamSaveReqVO createReqVO) {
-        return success(teamService.createTeam(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新团队")
-    @PreAuthorize("@ss.hasPermission('rd:team:update')")
-    public CommonResult<Boolean> updateTeam(@Valid @RequestBody TeamSaveReqVO updateReqVO) {
-        teamService.updateTeam(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除团队")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rd:team:delete')")
-    public CommonResult<Boolean> deleteTeam(@RequestParam("id") Long id) {
-        teamService.deleteTeam(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得团队")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rd:team:query')")
-    public CommonResult<TeamRespVO> getTeam(@RequestParam("id") Long id) {
-        TeamDO team = teamService.getTeam(id);
-        return success(buildTeam(team));
-    }
-
-    /**
-     * 查询专家库 团队详情
-     * @param team
-     * @return
-     */
-    private TeamRespVO buildTeam(TeamDO team) {
-        // 如果 team 为空 返回空对象
-        if (ObjUtil.isEmpty(team)) {
-            return new TeamRespVO();
-        }
-        TeamRespVO teamRespVO = BeanUtils.toBean(team, TeamRespVO.class);
-        // 查询每个团队下的专家列表
-        List<ExpertPoolRespVO> teamExperts = new ArrayList<>();
-        ExpertPoolPageReqVO reqVO = new ExpertPoolPageReqVO();
-        reqVO.setTeamId(teamRespVO.getId());
-        List<ExpertPoolDO> experts = rdExpertPoolService.getExpertPools(reqVO);
-        if (CollUtil.isNotEmpty(experts)) {
-            experts.forEach(expert -> {
-                ExpertPoolRespVO expertPoolVO = BeanUtils.toBean(expert, ExpertPoolRespVO.class);
-                // 专家梯队 字典数据
-                Map<String, String> expertEchelonPair = dictDataUtils.getDictData("rd_expert_echelon");
-                // 专家序列 数据字典
-                Map<String, String> expertRankPair = dictDataUtils.getDictData("rd_expert_rank");
-                // 专家学历 数据字典
-                Map<String, String> expertEducationPair = dictDataUtils.getDictData("rd_expert_education");
-                // 软件技能 数据字典
-                Map<String, String> expertSoftwarePair = dictDataUtils.getDictData("rd_expert_software");
-                // 专业方向 数据字典
-                Map<String, String> expertTechnicalPair = dictDataUtils.getDictData("rd_expert_technical");
-                // 学历
-                String education = expert.getEducation();
-                if (StrUtil.isNotBlank(education) && expertEducationPair.containsKey(education)) {
-                    expertPoolVO.setEducationLabel(expertEducationPair.get(education));
-                }
-                // 梯队
-                String echelon = expertPoolVO.getEchelon();
-                if (StrUtil.isNotBlank(echelon) && expertEchelonPair.containsKey(echelon)) {
-                    expertPoolVO.setEchelonLabel(expertEchelonPair.get(echelon));
-                }
-                // 专家技术序列
-                Set<Long> expertRankValues = expertPoolVO.getExpertRank();
-                if (CollUtil.isNotEmpty(expertRankValues)) {
-                    String rankLabels = expertRankValues.stream()
-                            .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                            .map(key -> expertRankPair.getOrDefault(key, key)) // 取label,无则用原key
-                            .collect(Collectors.joining(",")); // 逗号拼接
-                    expertPoolVO.setExpertRankLabel(rankLabels);
-                }
-                // 专家软件技能
-                Set<Long> expertSoftwareValues = expertPoolVO.getSoftwareSkills();
-                if (CollUtil.isNotEmpty(expertSoftwareValues)) {
-                    String softwareLabels = expertSoftwareValues.stream()
-                            .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                            .map(key -> expertSoftwarePair.getOrDefault(key, key)) // 取label,无则用原key
-                            .collect(Collectors.joining(",")); // 逗号拼接
-                    expertPoolVO.setSoftwareSkillsLabel(softwareLabels);
-                }
-                // 专家 专业方向
-                Set<Long> expertTechnicalValues = expertPoolVO.getSpecialDirection();
-                if (CollUtil.isNotEmpty(expertTechnicalValues)) {
-                    String technicalLabels = expertTechnicalValues.stream()
-                            .map(lg -> ObjUtil.isNotEmpty(lg) ? lg.toString() : StrUtil.EMPTY) // 将Long转为String,匹配techniqueDictPair的key类型
-                            .map(key -> expertTechnicalPair.getOrDefault(key, key)) // 取label,无则用原key
-                            .collect(Collectors.joining(",")); // 逗号拼接
-                    expertPoolVO.setSoftwareSkillsLabel(technicalLabels);
-                }
-                // 专家年龄
-                LocalDateTime birthday = expertPoolVO.getBirthday();
-                Integer age = DateUtil.ageOfNow(DateUtil.date(birthday));
-                expertPoolVO.setAge(age);
-                teamExperts.add(expertPoolVO);
-            });
-        }
-        teamRespVO.setExperts(teamExperts);
-        return teamRespVO;
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得团队分页")
-    @PreAuthorize("@ss.hasPermission('rd:team:query')")
-    public CommonResult<PageResult<TeamRespVO>> getTeamPage(@Valid TeamPageReqVO pageReqVO) {
-        PageResult<TeamDO> pageResult = teamService.getTeamPage(pageReqVO);
-        return success(new PageResult<>(buildTeamList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    /**
-     * 设置每个团队包含的专家姓名集合 逗号分隔
-     * @param teams
-     * @return
-     */
-    private List<TeamRespVO> buildTeamList(List<TeamDO> teams) {
-        if (CollUtil.isEmpty(teams)) {
-            return Collections.emptyList();
-        }
-        // 查询每个团队包含的专家姓名集合 逗号分隔
-        Map<Long, Set<String>> teamExpertNamePair = new HashMap<>();
-        teams.forEach(team -> {
-            Long teamId = team.getId();
-            ExpertPoolPageReqVO reqVO = new ExpertPoolPageReqVO();
-            reqVO.setTeamId(teamId);
-            List<ExpertPoolDO> teamExperts = rdExpertPoolService.getExpertPools(reqVO);
-            Set<String> expertNames = new HashSet<>();
-            if (CollUtil.isNotEmpty(teamExperts)) {
-                teamExperts.forEach(expert -> {
-                    expertNames.add(expert.getExpertName());
-                });
-                teamExpertNamePair.put(teamId, expertNames);
-            }
-        });
-        return BeanUtils.toBean(teams, TeamRespVO.class, (teamVO) -> {
-            Long teamId = teamVO.getId();
-            if (teamExpertNamePair.containsKey(teamId)) {
-                Set<String> tempExpertNames = teamExpertNamePair.get(teamId);
-                String expertNamesStr = StrUtil.join(",", tempExpertNames);
-                teamVO.setExpertNames(expertNamesStr);
-            }
-        });
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出团队 Excel")
-    @PreAuthorize("@ss.hasPermission('rd:team:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportTeamExcel(@Valid TeamPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<TeamDO> list = teamService.getTeamPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "团队.xls", "数据", TeamRespVO.class,
-                        BeanUtils.toBean(list, TeamRespVO.class));
-    }
-
-}

+ 0 - 54
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamPageReqVO.java

@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.team.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.Collection;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 团队分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class TeamPageReqVO extends PageParam {
-
-    @Schema(description = "所属部门", example = "22275")
-    private Long deptId;
-
-    @Schema(description = "团队类别")
-    private String category;
-
-    @Schema(description = "团队名称", example = "李四")
-    private String teamName;
-
-    @Schema(description = "团队logo地址")
-    private String avatar;
-
-    @Schema(description = "团队简介")
-    private String summary;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "专家所属团队id集合", example = "222,75")
-    private Collection<Long> teamIds;
-}

+ 0 - 65
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamRespVO.java

@@ -1,65 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.team.vo;
-
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolRespVO;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 团队 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class TeamRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7313")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "22275")
-    @ExcelProperty("所属部门")
-    private Long deptId;
-
-    @Schema(description = "团队类别")
-    @ExcelProperty("团队类别")
-    private String category;
-
-    @Schema(description = "团队名称", example = "李四")
-    @ExcelProperty("团队名称")
-    private String teamName;
-
-    @Schema(description = "团队logo地址")
-    @ExcelProperty("团队logo地址")
-    private String avatar;
-
-    @Schema(description = "团队简介")
-    @ExcelProperty("团队简介")
-    private String summary;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    @ExcelProperty("状态(0启用 1禁用)")
-    private Integer status;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    /**
-     * 扩展字段
-     */
-    @Schema(description = "团队包含的专家列表")
-    private List<ExpertPoolRespVO> experts;
-
-    @Schema(description = "团队包含的专家姓名集合 逗号分隔")
-    private String expertNames;
-}

+ 0 - 37
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/team/vo/TeamSaveReqVO.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.rd.controller.admin.team.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "管理后台 - 团队新增/修改 Request VO")
-@Data
-public class TeamSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7313")
-    private Long id;
-
-    @Schema(description = "所属部门", example = "22275")
-    private Long deptId;
-
-    @Schema(description = "团队类别")
-    private String category;
-
-    @Schema(description = "团队名称", example = "李四")
-    private String teamName;
-
-    @Schema(description = "团队logo地址")
-    private String avatar;
-
-    @Schema(description = "团队简介")
-    private String summary;
-
-    @Schema(description = "排序值")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "状态(0启用 1禁用)", example = "1")
-    private Integer status;
-
-}

+ 0 - 62
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/attachment/AttachmentDO.java

@@ -1,62 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.attachment;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * R&D 附件 DO
- *
- * @author ruiqi
- */
-@TableName("rd_attachment")
-@KeySequence("rd_attachment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class AttachmentDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属功能模块(专家库/核心技术/科研项目/政府项目...)
-     */
-    private String category;
-    /**
-     * 业务主键id
-     */
-    private Long bizId;
-    /**
-     * 类别(专利/论文/其他...)
-     */
-    private String type;
-    /**
-     * 文件名称
-     */
-    private String filename;
-    /**
-     * 文件类型
-     */
-    private String fileType;
-    /**
-     * 文件路径
-     */
-    private String filePath;
-    /**
-     * 文件大小
-     */
-    private String fileSize;
-    /**
-     * 备注
-     */
-    private String remark;
-
-}

+ 0 - 102
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/coretechnology/CoreTechnologyDO.java

@@ -1,102 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.coretechnology;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 核心技术 DO
- *
- * @author ruiqi
- */
-@TableName("rd_core_technology")
-@KeySequence("rd_core_technology_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class CoreTechnologyDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属部门
-     */
-    private Long deptId;
-    /**
-     * 核心技术名称
-     */
-    private String technologyName;
-    /**
-     * 核心技术类型
-     */
-    private String technologyType;
-    /**
-     * 当前状态
-     */
-    private String technologyStatus;
-    /**
-     * 技术级别
-     */
-    private String technologyLevel;
-    /**
-     * 所属单位id
-     */
-    private Long departmentId;
-    /**
-     * 所属单位
-     */
-    private String department;
-    /**
-     * 合作单位
-     */
-    private String partner;
-    /**
-     * 概述
-     */
-    private String summary;
-    /**
-     * 头像url
-     */
-    private String avatar;
-    /**
-     * 主要原理及内容
-     */
-    private String principles;
-    /**
-     * 应用场景和优势
-     */
-    private String advantages;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-    /**
-     * 流程实例id
-     */
-    private String processInstanceId;
-    /**
-     * 审批状态 未提交、审批中、审批通过、审批不通过、已取消
-     */
-    private Integer auditStatus;
-    /**
-     * 审批意见
-     */
-    private String opinion;
-
-}

+ 0 - 60
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/coretechnologydetail/CoreTechnologyDetailDO.java

@@ -1,60 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.coretechnologydetail;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDateTime;
-
-/**
- * 核心技术明细 DO
- *
- * @author ruiqi
- */
-@TableName("rd_core_technology_detail")
-@KeySequence("rd_core_technology_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class CoreTechnologyDetailDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 核心技术所属单位id
-     */
-    private Long deptId;
-    /**
-     * 核心技术id
-     */
-    private Long technologyId;
-    /**
-     * 进度日期
-     */
-    private LocalDateTime progressDate;
-    /**
-     * 进度描述
-     */
-    private String overview;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-
-}

+ 0 - 50
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertkeyword/ExpertKeywordDO.java

@@ -1,50 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.expertkeyword;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 专家热词字典 DO
- *
- * @author ruiqi
- */
-@TableName("rd_expert_keyword")
-@KeySequence("rd_expert_keyword_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ExpertKeywordDO extends BaseDO {
-
-    /**
-     * 主键
-     */
-    @TableId
-    private Long id;
-    /**
-     * 热词名称
-     */
-    private String keywordName;
-    /**
-     * 热词类型,如:技术方向/学历/头衔/软件/自定义等
-     */
-    private String keywordType;
-    /**
-     * 来源:1-系统预置, 2-用户自定义
-     */
-    private Integer source;
-    /**
-     * 状态:0-启用, 1-禁用
-     */
-    private Integer status;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-
-}

+ 0 - 38
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertkeywordrel/ExpertKeywordRelDO.java

@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.expertkeywordrel;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 专家热词关联 DO
- *
- * @author ruiqi
- */
-@TableName("rd_expert_keyword_rel")
-@KeySequence("rd_expert_keyword_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ExpertKeywordRelDO extends BaseDO {
-
-    /**
-     * 主键
-     */
-    @TableId
-    private Long id;
-    /**
-     * 专家ID
-     */
-    private Long expertId;
-    /**
-     * 热词ID
-     */
-    private Long keywordId;
-
-}

+ 0 - 123
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/expertpool/ExpertPoolDO.java

@@ -1,123 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.expertpool;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import lombok.*;
-
-import java.time.LocalDateTime;
-import java.util.Set;
-
-/**
- * 专家库 DO
- *
- * @author ruiqi
- */
-@TableName(value="rd_expert_pool", autoResultMap = true)
-@KeySequence("rd_expert_pool_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ExpertPoolDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属部门
-     */
-    private Long deptId;
-    /**
-     * 专家姓名
-     */
-    private String expertName;
-    /**
-     * 梯队(第一 第二 第三)
-     */
-    private String echelon;
-    /**
-     * 序列(技术 商务 运营 法务 安全)
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private Set<Long> expertRank;
-    /**
-     * 职称
-     */
-    private String professionalTitle;
-    /**
-     * 岗位
-     */
-    private String jobTitle;
-    /**
-     * 历任岗位
-     */
-    private String formerPost;
-    /**
-     * 所属团队(多个逗号分隔)
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private Set<Long> teamIds;
-    /**
-     * 头像url
-     */
-    private String avatar;
-    /**
-     * 出生日期
-     */
-    private LocalDateTime birthday;
-    /**
-     * 毕业院校
-     */
-    private String school;
-    /**
-     * 学历
-     */
-    private String education;
-    /**
-     * 专业方向(多个逗号分隔)
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private Set<Long> specialDirection;
-    /**
-     * 主要业绩
-     */
-    private String achievement;
-    /**
-     * 专业软件技能
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private Set<Long> softwareSkills;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-    /**
-     * 流程实例id
-     */
-    private String processInstanceId;
-    /**
-     * 审批状态 未提交、审批中、审批通过、审批不通过、已取消
-     */
-    private Integer auditStatus;
-    /**
-     * 审批意见
-     */
-    private String opinion;
-
-}

+ 0 - 104
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/news/NewsDO.java

@@ -1,104 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.news;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDateTime;
-
-/**
- * 资讯(政策信息 行业科技动态) DO
- *
- * @author ruiqi
- */
-@TableName("rd_news")
-@KeySequence("rd_news_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class NewsDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属部门
-     */
-    private Long deptId;
-    /**
-     * 核心技术名称
-     */
-    private String newsName;
-    /**
-     * 资讯类型(政策信息 科技动态)
-     */
-    private String newsCategory;
-    /**
-     * 资讯类型的子类别
-     */
-    private String newsSubType;
-    /**
-     * 概述摘要
-     */
-    private String summary;
-    /**
-     * 正文内容(富文本html)
-     */
-    private String content;
-    /**
-     * 资讯来源名称(网站 期刊 政府部门...)
-     */
-    private String source;
-    /**
-     * 外部原文链接
-     */
-    private String sourceUrl;
-    /**
-     * 原文发布时间
-     */
-    private LocalDateTime publishTime;
-    /**
-     * 置顶标识 0否 1是
-     */
-    private Boolean onTop;
-    /**
-     * 封面图
-     */
-    private String coverUrl;
-    /**
-     * 浏览次数
-     */
-    private Integer browseCount;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0草稿 1已发布 2已下线)
-     */
-    private Integer status;
-    /**
-     * 流程实例id
-     */
-    private String processInstanceId;
-    /**
-     * 审批状态 未提交、审批中、审批通过、审批不通过、已取消
-     */
-    private Integer auditStatus;
-    /**
-     * 审批意见
-     */
-    private String opinion;
-
-}

+ 0 - 40
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectApprovalRecordDO.java

@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchProject;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-import java.time.LocalDateTime;
-
-@TableName(value = "rd_project_approval_record", autoResultMap = true)
-@KeySequence("rd_project_approval_record_seq")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProjectApprovalRecordDO extends BaseDO {
-
-    @TableId
-    private Long id;
-    /** 项目ID */
-    private Long projectId;
-    /** 审批阶段:1预审 2正式立项 */
-    private Integer stage;
-    /** 审批节点:11预审二级 21一级 22二级 23财务 */
-    private Integer node;
-    /** 节点名称 */
-    private String nodeName;
-    /** 审批人ID */
-    private Long approverId;
-    /** 审批人姓名 */
-    private String approverName;
-    /** 审批结果:1通过 2驳回 3撤回 4提交 */
-    private Integer result;
-    /** 审批意见 */
-    private String opinion;
-    /** 审批时间 */
-    private LocalDateTime approveTime;
-
-}

+ 0 - 52
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectBudgetDO.java

@@ -1,52 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.math.BigDecimal;
-
-/**
- * 项目费用预算明细 DO
- *
- * @author ruiqi
- */
-@TableName(value = "rd_project_budget", autoResultMap = true)
-@KeySequence("rd_project_budget_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProjectBudgetDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 关联项目主表id
-     */
-    private Long projectId;
-    /**
-     * 财务科目
-     */
-    private String financialSubject;
-    /**
-     * 预算金额(元)
-     */
-    private BigDecimal budgetAmount;
-    /**
-     * 预算说明
-     */
-    private String budgetDescription;
-    /**
-     * 排序值(前端表格行号)
-     */
-    private Integer sort;
-
-}

+ 0 - 119
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectDO.java

@@ -1,119 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectAttachmentVO;
-
-/**
- * 项目立项 DO
- *
- * @author ruiqi
- */
-@TableName(value = "rd_project", autoResultMap = true)
-@KeySequence("rd_project_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProjectDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-
-    private Long deptId;
-    /**
-     * 项目级别
-     */
-    private String projectLevel;
-    /**
-     * 执行单位
-     */
-    private Long executingUnit;
-    /**
-     * 项目名称
-     */
-    private String projectName;
-    /**
-     * 项目负责人
-     */
-    private String projectLeader;
-    /**
-     * 项目组成员(多个逗号分隔)
-     */
-    private String teamMembers;
-    /**
-     * 项目类型
-     */
-    private String projectType;
-    /**
-     * 目标和意义
-     */
-    private String goalAndSignificance;
-    /**
-     * 主要研究内容
-     */
-    private String mainResearchContent;
-    /**
-     * 创新点
-     */
-    private String innovationPoint;
-
-    /** 附件列表(JSON) */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private List<ProjectAttachmentVO> attachments;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-    /**
-     * 备注
-     */
-    private String remark;
-
-    // ==================== 预审阶段 ====================
-    /** 预审状态:0未提交 1审批中 2通过 3驳回 */
-    private Integer preAuditStatus;
-    /** 预审当前节点:11预审二级 */
-    private Integer preCurrentNode;
-    /** 预审当前审批人ID */
-    private Long preCurrentApproverId;
-    /** 预审当前节点角色 code */
-    private String preCurrentRoleCode;
-    /** 预审提交时间 */
-    private LocalDateTime preSubmitTime;
-
-// ==================== 正式立项阶段 ====================
-    /** 正式审批状态:0未提交 1审批中 2通过 3驳回 */
-    private Integer formalAuditStatus;
-    /** 正式当前节点:21一级 22二级 23财务 */
-    private Integer formalCurrentNode;
-    /** 正式当前审批人ID */
-    private Long formalCurrentApproverId;
-    /** 正式当前节点角色 code */
-    private String formalCurrentRoleCode;
-    /** 正式立项提交时间 */
-    private LocalDateTime formalSubmitTime;
-
-
-// ==================== 预算相关 ====================
-    /** 是否涉及预算:0否 1是 */
-    private Integer involveBudget;
-
-}

+ 0 - 48
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchProject/ProjectScheduleDO.java

@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-import java.time.LocalDate;
-
-/**
- * 项目进度安排 DO
- *
- * @author ruiqi
- */
-@TableName(value = "rd_project_schedule", autoResultMap = true)
-@KeySequence("rd_project_schedule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProjectScheduleDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 关联项目主表id
-     */
-    private Long projectId;
-    /**
-     * 工作计划
-     */
-    private String workPlan;
-    /**
-     * 截止时间
-     */
-    private LocalDate deadline;
-    /**
-     * 排序值(前端表格行号)
-     */
-    private Integer sort;
-
-}

+ 0 - 96
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievement/ResearchAchievementDO.java

@@ -1,96 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchachievement;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.TemplateAttrModelProperty;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import lombok.*;
-
-import java.util.List;
-
-/**
- * 知识产权、荣誉证书等研究成果 DO
- *
- * @author ruiqi
- */
-@TableName(value="rd_research_achievement", autoResultMap = true)
-@KeySequence("rd_research_achievement_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ResearchAchievementDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属部门(成果所有权)
-     */
-    private Long deptId;
-    /**
-     * 研究成果名称
-     */
-    private String achievementName;
-    /**
-     * 研究成果类型(论文 专利 软著 荣誉证书...)
-     */
-    private String achievementType;
-    /**
-     * 研究成果子类型(发明专利 实用新型 原始取得...)
-     */
-    private String subType;
-    /**
-     * 所属单位id
-     */
-    private Long departmentId;
-    /**
-     * 所属单位
-     */
-    private String department;
-    /**
-     * 概述
-     */
-    private String summary;
-    /**
-     * 头像url
-     */
-    private String avatar;
-    /**
-     * 扩展属性,存储各类型特有字段
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private List<TemplateAttrModelProperty> extAttributes;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0有效 1失效)
-     */
-    private Integer status;
-    /**
-     * 流程实例id
-     */
-    private String processInstanceId;
-    /**
-     * 审批状态 未提交、审批中、审批通过、审批不通过、已取消
-     */
-    private Integer auditStatus;
-    /**
-     * 审批意见
-     */
-    private String opinion;
-
-}

+ 0 - 101
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/ResearchAchievementAttrsDO.java

@@ -1,101 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import lombok.*;
-
-/**
- * 研究成果 论文 专利 软著 荣誉证书 扩展属性 DO
- *
- * @author ruiqi
- */
-@TableName(value = "rd_research_achievement_attrs", autoResultMap = true)
-@KeySequence("rd_research_achievement_attrs_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ResearchAchievementAttrsDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 扩展模板id
-     */
-    private Long templateId;
-    /**
-     * 部门id
-     */
-    private Long deptId;
-    /**
-     * 研究成果主类别
-     */
-    private String achievementType;
-    /**
-     * 研究成果子类别
-     */
-    private String achievementSubType;
-    /**
-     * 属性名称
-     */
-    private String name;
-    /**
-     * 属性标识符
-     */
-    private String identifier;
-    /**
-     * 数据类型(double text textarea date dropdown)
-     */
-    private String dataType;
-    /**
-     * 是否必填(0非必填 1必填)
-     */
-    private Integer required;
-    /**
-     * 单位(MPa)
-     */
-    private String unit;
-    /**
-     * 访问模式(r读  w写)
-     */
-    private String accessMode;
-    /**
-     * 默认值
-     */
-    private String defaultValue;
-    /**
-     * 最大值
-     */
-    private String maxValue;
-    /**
-     * 最小值
-     */
-    private String minValue;
-    /**
-     * 不同类型研究成果的扩展属性
-     */
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private TemplateAttrModelProperty extProperty;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-
-}

+ 0 - 28
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/TemplateAttrEnumDataSpecs.java

@@ -1,28 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 模板属性 数据类型为下拉列表的 DataSpec 定义
- *
- * 数据类型 下拉列表。
- *
- * @author ruiqi
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class TemplateAttrEnumDataSpecs {
-
-    /**
-     * 枚举项的名称。
-     * 可包含中文、大小写英文字母、数字、下划线(_)和短划线(-)
-     * 必须以中文、英文字母或数字开头,长度不超过 20 个字符
-     */
-    private String name;
-    /**
-     * 枚举值。
-     */
-    private String value;
-
-}

+ 0 - 87
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/researchachievementattrs/TemplateAttrModelProperty.java

@@ -1,87 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs;
-
-import cn.iocoder.yudao.framework.common.validation.InEnum;
-import cn.iocoder.yudao.module.rd.enums.attrs.template.DataSpecsDataTypeEnum;
-import cn.iocoder.yudao.module.rd.enums.attrs.template.TemplateAttrAccessModeEnum;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-import java.util.List;
-
-/**
- * 属性 扩展模板
- *
- * @author ruiqi
- */
-@Data
-public class TemplateAttrModelProperty {
-
-    /**
-     * 属性名称
-     */
-    @NotEmpty(message = "属性名称不能为空")
-    private String name;
-
-    /**
-     * 属性标识符
-     */
-    @NotEmpty(message = "属性标识符不能为空")
-    private String identifier;
-
-    /**
-     * 参数值的数据类型 (double text textarea date)
-     *
-     * 枚举 {@link DataSpecsDataTypeEnum}
-     */
-    @NotEmpty(message = "数据类型不能为空")
-    @InEnum(DataSpecsDataTypeEnum.class)
-    private String dataType;
-
-    /**
-     * 是否必填(0非必填 1必填)
-     */
-    private Integer required;
-
-    /**
-     * 单位 MPa m
-     */
-    private String unit;
-
-    /**
-     * 可以对该属性进行的操作类型
-     *
-     * 枚举 {@link TemplateAttrAccessModeEnum}
-     */
-    @InEnum(TemplateAttrAccessModeEnum.class)
-    private String accessMode;
-
-    /**
-     * 默认值
-     */
-    private String defaultValue;
-
-    /**
-     * 最大值
-     */
-    private String maxValue;
-
-    /**
-     * 最小值
-     */
-    private String minValue;
-
-    /**
-     * 排序值
-     */
-    private Integer sort;
-
-    /**
-     * 字段值
-     */
-    private String actualValue;
-
-    /**
-     * 数据类型 为下拉列表型的数据规范
-     */
-    private List<TemplateAttrEnumDataSpecs> dropdownList;
-}

+ 0 - 62
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/team/TeamDO.java

@@ -1,62 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.dataobject.team;
-
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.*;
-
-/**
- * 团队 DO
- *
- * @author ruiqi
- */
-@TableName("rd_team")
-@KeySequence("rd_team_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class TeamDO extends BaseDO {
-
-    /**
-     * 主键id
-     */
-    @TableId
-    private Long id;
-    /**
-     * 所属部门
-     */
-    private Long deptId;
-    /**
-     * 团队类别
-     */
-    private String category;
-    /**
-     * 团队名称
-     */
-    private String teamName;
-    /**
-     * 团队logo地址
-     */
-    private String avatar;
-    /**
-     * 团队简介
-     */
-    private String summary;
-    /**
-     * 排序值
-     */
-    private Integer sort;
-    /**
-     * 备注
-     */
-    private String remark;
-    /**
-     * 状态(0启用 1禁用)
-     */
-    private Integer status;
-
-}

+ 0 - 49
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/attachment/AttachmentMapper.java

@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.attachment;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.attachment.vo.AttachmentPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.attachment.AttachmentDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * R&D 附件 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface AttachmentMapper extends BaseMapperX<AttachmentDO> {
-
-    default PageResult<AttachmentDO> selectPage(AttachmentPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<AttachmentDO>()
-                .eqIfPresent(AttachmentDO::getCategory, reqVO.getCategory())
-                .eqIfPresent(AttachmentDO::getBizId, reqVO.getBizId())
-                .eqIfPresent(AttachmentDO::getType, reqVO.getType())
-                .likeIfPresent(AttachmentDO::getFilename, reqVO.getFilename())
-                .eqIfPresent(AttachmentDO::getFileType, reqVO.getFileType())
-                .eqIfPresent(AttachmentDO::getFilePath, reqVO.getFilePath())
-                .eqIfPresent(AttachmentDO::getFileSize, reqVO.getFileSize())
-                .eqIfPresent(AttachmentDO::getRemark, reqVO.getRemark())
-                .betweenIfPresent(AttachmentDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(AttachmentDO::getId));
-    }
-
-    default List<AttachmentDO> attachments(AttachmentPageReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<AttachmentDO>()
-                .eqIfPresent(AttachmentDO::getCategory, reqVO.getCategory())
-                .eqIfPresent(AttachmentDO::getBizId, reqVO.getBizId())
-                .inIfPresent(AttachmentDO::getBizId, reqVO.getBizIds())
-                .eqIfPresent(AttachmentDO::getType, reqVO.getType())
-                .likeIfPresent(AttachmentDO::getFilename, reqVO.getFilename())
-                .eqIfPresent(AttachmentDO::getFileType, reqVO.getFileType())
-                .inIfPresent(AttachmentDO::getType, reqVO.getTypes())
-                .eqIfPresent(AttachmentDO::getFilePath, reqVO.getFilePath())
-                .eqIfPresent(AttachmentDO::getFileSize, reqVO.getFileSize())
-                .eqIfPresent(AttachmentDO::getRemark, reqVO.getRemark())
-                .betweenIfPresent(AttachmentDO::getCreateTime, reqVO.getCreateTime()));
-    }
-
-}

+ 0 - 42
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/coretechnology/CoreTechnologyMapper.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.coretechnology;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnology.vo.CoreTechnologyPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnology.CoreTechnologyDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 核心技术 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface CoreTechnologyMapper extends BaseMapperX<CoreTechnologyDO> {
-
-    default PageResult<CoreTechnologyDO> selectPage(CoreTechnologyPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<CoreTechnologyDO>()
-                .eqIfPresent(CoreTechnologyDO::getDeptId, reqVO.getDeptId())
-                .likeIfPresent(CoreTechnologyDO::getTechnologyName, reqVO.getTechnologyName())
-                .eqIfPresent(CoreTechnologyDO::getTechnologyType, reqVO.getTechnologyType())
-                .eqIfPresent(CoreTechnologyDO::getTechnologyStatus, reqVO.getTechnologyStatus())
-                .eqIfPresent(CoreTechnologyDO::getTechnologyLevel, reqVO.getTechnologyLevel())
-                .eqIfPresent(CoreTechnologyDO::getDepartmentId, reqVO.getDepartmentId())
-                .eqIfPresent(CoreTechnologyDO::getDepartment, reqVO.getDepartment())
-                .eqIfPresent(CoreTechnologyDO::getPartner, reqVO.getPartner())
-                .eqIfPresent(CoreTechnologyDO::getSummary, reqVO.getSummary())
-                .eqIfPresent(CoreTechnologyDO::getAvatar, reqVO.getAvatar())
-                .eqIfPresent(CoreTechnologyDO::getPrinciples, reqVO.getPrinciples())
-                .eqIfPresent(CoreTechnologyDO::getAdvantages, reqVO.getAdvantages())
-                .eqIfPresent(CoreTechnologyDO::getSort, reqVO.getSort())
-                .eqIfPresent(CoreTechnologyDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(CoreTechnologyDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(CoreTechnologyDO::getProcessInstanceId, reqVO.getProcessInstanceId())
-                .eqIfPresent(CoreTechnologyDO::getAuditStatus, reqVO.getAuditStatus())
-                .eqIfPresent(CoreTechnologyDO::getOpinion, reqVO.getOpinion())
-                .betweenIfPresent(CoreTechnologyDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(CoreTechnologyDO::getId));
-    }
-
-}

+ 0 - 46
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/coretechnologydetail/CoreTechnologyDetailMapper.java

@@ -1,46 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.coretechnologydetail;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.coretechnologydetail.vo.CoreTechnologyDetailPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.coretechnologydetail.CoreTechnologyDetailDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 核心技术明细 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface CoreTechnologyDetailMapper extends BaseMapperX<CoreTechnologyDetailDO> {
-
-    default PageResult<CoreTechnologyDetailDO> selectPage(CoreTechnologyDetailPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<CoreTechnologyDetailDO>()
-                .eqIfPresent(CoreTechnologyDetailDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(CoreTechnologyDetailDO::getTechnologyId, reqVO.getTechnologyId())
-                .betweenIfPresent(CoreTechnologyDetailDO::getProgressDate, reqVO.getProgressDate())
-                .eqIfPresent(CoreTechnologyDetailDO::getOverview, reqVO.getOverview())
-                .eqIfPresent(CoreTechnologyDetailDO::getSort, reqVO.getSort())
-                .eqIfPresent(CoreTechnologyDetailDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(CoreTechnologyDetailDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(CoreTechnologyDetailDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(CoreTechnologyDetailDO::getId));
-    }
-
-    default List<CoreTechnologyDetailDO> technologyDetails(CoreTechnologyDetailPageReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<CoreTechnologyDetailDO>()
-                .eqIfPresent(CoreTechnologyDetailDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(CoreTechnologyDetailDO::getTechnologyId, reqVO.getTechnologyId())
-                .betweenIfPresent(CoreTechnologyDetailDO::getProgressDate, reqVO.getProgressDate())
-                .eqIfPresent(CoreTechnologyDetailDO::getOverview, reqVO.getOverview())
-                .eqIfPresent(CoreTechnologyDetailDO::getSort, reqVO.getSort())
-                .eqIfPresent(CoreTechnologyDetailDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(CoreTechnologyDetailDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(CoreTechnologyDetailDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(CoreTechnologyDetailDO::getId));
-    }
-
-}

+ 0 - 29
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertkeyword/ExpertKeywordMapper.java

@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.expertkeyword;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeyword.vo.ExpertKeywordPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertkeyword.ExpertKeywordDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 专家热词字典 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ExpertKeywordMapper extends BaseMapperX<ExpertKeywordDO> {
-
-    default PageResult<ExpertKeywordDO> selectPage(ExpertKeywordPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ExpertKeywordDO>()
-                .likeIfPresent(ExpertKeywordDO::getKeywordName, reqVO.getKeywordName())
-                .eqIfPresent(ExpertKeywordDO::getKeywordType, reqVO.getKeywordType())
-                .eqIfPresent(ExpertKeywordDO::getSource, reqVO.getSource())
-                .eqIfPresent(ExpertKeywordDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(ExpertKeywordDO::getSort, reqVO.getSort())
-                .betweenIfPresent(ExpertKeywordDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ExpertKeywordDO::getId));
-    }
-
-}

+ 0 - 26
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertkeywordrel/ExpertKeywordRelMapper.java

@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.expertkeywordrel;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.expertkeywordrel.vo.ExpertKeywordRelPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertkeywordrel.ExpertKeywordRelDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 专家热词关联 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ExpertKeywordRelMapper extends BaseMapperX<ExpertKeywordRelDO> {
-
-    default PageResult<ExpertKeywordRelDO> selectPage(ExpertKeywordRelPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ExpertKeywordRelDO>()
-                .eqIfPresent(ExpertKeywordRelDO::getExpertId, reqVO.getExpertId())
-                .eqIfPresent(ExpertKeywordRelDO::getKeywordId, reqVO.getKeywordId())
-                .betweenIfPresent(ExpertKeywordRelDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ExpertKeywordRelDO::getId));
-    }
-
-}

+ 0 - 77
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/expertpool/ExpertPoolMapper.java

@@ -1,77 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.expertpool;
-
-import cn.hutool.core.util.ObjUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.expertpool.vo.ExpertPoolPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.expertpool.ExpertPoolDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 专家库 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ExpertPoolMapper extends BaseMapperX<ExpertPoolDO> {
-
-    default PageResult<ExpertPoolDO> selectPage(ExpertPoolPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ExpertPoolDO>()
-                .eqIfPresent(ExpertPoolDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(ExpertPoolDO::getEchelon, reqVO.getEchelon())
-                .eqIfPresent(ExpertPoolDO::getExpertRank, reqVO.getExpertRank())
-                .eqIfPresent(ExpertPoolDO::getTeamIds, reqVO.getTeamIds())
-                .eqIfPresent(ExpertPoolDO::getAvatar, reqVO.getAvatar())
-                .eqIfPresent(ExpertPoolDO::getBirthday, reqVO.getBirthday())
-                .eqIfPresent(ExpertPoolDO::getEducation, reqVO.getEducation())
-                .eqIfPresent(ExpertPoolDO::getSpecialDirection, reqVO.getSpecialDirection())
-                .eqIfPresent(ExpertPoolDO::getAchievement, reqVO.getAchievement())
-                .eqIfPresent(ExpertPoolDO::getSoftwareSkills, reqVO.getSoftwareSkills())
-                .eqIfPresent(ExpertPoolDO::getSort, reqVO.getSort())
-                .eqIfPresent(ExpertPoolDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ExpertPoolDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(ExpertPoolDO::getProcessInstanceId, reqVO.getProcessInstanceId())
-                .eqIfPresent(ExpertPoolDO::getAuditStatus, reqVO.getAuditStatus())
-                .eqIfPresent(ExpertPoolDO::getOpinion, reqVO.getOpinion())
-                .betweenIfPresent(ExpertPoolDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ExpertPoolDO::getId));
-    }
-
-    default List<ExpertPoolDO> selectList(ExpertPoolPageReqVO reqVO) {
-        LambdaQueryWrapperX<ExpertPoolDO> wrapper = buildCommonQuery(reqVO);
-        // 处理 teamId 特殊查询
-        if (ObjUtil.isNotEmpty(reqVO.getTeamId())) {
-            wrapper.apply("JSON_CONTAINS(CAST(team_ids AS JSON), CAST({0} AS JSON))", reqVO.getTeamId());
-        }
-        return selectList(wrapper);
-    }
-
-    /**
-     * 构建公共查询条件
-     * @param reqVO 查询条件
-     */
-    default LambdaQueryWrapperX<ExpertPoolDO> buildCommonQuery(ExpertPoolPageReqVO reqVO) {
-        return new LambdaQueryWrapperX<ExpertPoolDO>()
-                .eqIfPresent(ExpertPoolDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(ExpertPoolDO::getEchelon, reqVO.getEchelon())
-                .eqIfPresent(ExpertPoolDO::getExpertRank, reqVO.getExpertRank())
-                .eqIfPresent(ExpertPoolDO::getTeamIds, reqVO.getTeamIds())
-                .eqIfPresent(ExpertPoolDO::getAvatar, reqVO.getAvatar())
-                .eqIfPresent(ExpertPoolDO::getBirthday, reqVO.getBirthday())
-                .eqIfPresent(ExpertPoolDO::getEducation, reqVO.getEducation())
-                .eqIfPresent(ExpertPoolDO::getSpecialDirection, reqVO.getSpecialDirection())
-                .eqIfPresent(ExpertPoolDO::getAchievement, reqVO.getAchievement())
-                .eqIfPresent(ExpertPoolDO::getSoftwareSkills, reqVO.getSoftwareSkills())
-                .eqIfPresent(ExpertPoolDO::getSort, reqVO.getSort())
-                .eqIfPresent(ExpertPoolDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ExpertPoolDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(ExpertPoolDO::getProcessInstanceId, reqVO.getProcessInstanceId())
-                .eqIfPresent(ExpertPoolDO::getAuditStatus, reqVO.getAuditStatus())
-                .eqIfPresent(ExpertPoolDO::getOpinion, reqVO.getOpinion())
-                .betweenIfPresent(ExpertPoolDO::getCreateTime, reqVO.getCreateTime());
-    }
-
-}

+ 0 - 42
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/news/NewsMapper.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.news;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 资讯(政策信息 行业科技动态) Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface NewsMapper extends BaseMapperX<NewsDO> {
-
-    default PageResult<NewsDO> selectPage(NewsPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<NewsDO>()
-                .eqIfPresent(NewsDO::getDeptId, reqVO.getDeptId())
-                .likeIfPresent(NewsDO::getNewsName, reqVO.getNewsName())
-                .eqIfPresent(NewsDO::getNewsCategory, reqVO.getNewsCategory())
-                .eqIfPresent(NewsDO::getNewsSubType, reqVO.getNewsSubType())
-                .eqIfPresent(NewsDO::getSummary, reqVO.getSummary())
-                .eqIfPresent(NewsDO::getContent, reqVO.getContent())
-                .eqIfPresent(NewsDO::getSource, reqVO.getSource())
-                .eqIfPresent(NewsDO::getSourceUrl, reqVO.getSourceUrl())
-                .betweenIfPresent(NewsDO::getPublishTime, reqVO.getPublishTime())
-                .eqIfPresent(NewsDO::getOnTop, reqVO.getOnTop())
-                .eqIfPresent(NewsDO::getCoverUrl, reqVO.getCoverUrl())
-                .eqIfPresent(NewsDO::getBrowseCount, reqVO.getBrowseCount())
-                .eqIfPresent(NewsDO::getSort, reqVO.getSort())
-                .eqIfPresent(NewsDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(NewsDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(NewsDO::getProcessInstanceId, reqVO.getProcessInstanceId())
-                .eqIfPresent(NewsDO::getAuditStatus, reqVO.getAuditStatus())
-                .eqIfPresent(NewsDO::getOpinion, reqVO.getOpinion())
-                .betweenIfPresent(NewsDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(NewsDO::getId));
-    }
-
-}

+ 0 - 29
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ApproverQueryMapper.java

@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchProject;
-
-import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-
-@Mapper
-@DataPermission(enable = false)   // ⭐ 跳过数据权限
-                   // ⭐ 跳过多租户(如果类上能加的话)
-public interface ApproverQueryMapper {
-
-    @TenantIgnore
-    @Select("SELECT u.id FROM system_users u " +
-            "JOIN system_user_role ur ON ur.user_id = u.id " +
-            "JOIN system_role r ON r.id = ur.role_id " +
-            "WHERE r.code = #{roleCode} AND u.deleted = 0 LIMIT 1")
-    Long selectUserIdByRoleCode(@Param("roleCode") String roleCode);
-
-    @TenantIgnore
-    @Select("SELECT u.id FROM system_users u " +
-            "JOIN system_user_role ur ON ur.user_id = u.id " +
-            "JOIN system_role r ON r.id = ur.role_id " +
-            "WHERE r.code = #{roleCode} AND u.dept_id = #{deptId} AND u.deleted = 0 LIMIT 1")
-    Long selectUserIdByRoleCodeAndDept(@Param("roleCode") String roleCode,
-                                       @Param("deptId") Long deptId);
-
-}

+ 0 - 45
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectApprovalRecordMapper.java

@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchProject.ProjectApprovalRecordDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 项目审批记录 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ProjectApprovalRecordMapper extends BaseMapperX<ProjectApprovalRecordDO> {
-
-    /**
-     * 根据项目 ID 查询审批记录列表(按审批时间升序)
-     */
-    default List<ProjectApprovalRecordDO> selectListByProjectId(Long projectId) {
-        return selectList(new LambdaQueryWrapperX<ProjectApprovalRecordDO>()
-                .eq(ProjectApprovalRecordDO::getProjectId, projectId)
-                .orderByAsc(ProjectApprovalRecordDO::getApproveTime));
-    }
-
-    /**
-     * 根据项目 ID 和阶段查询审批记录
-     */
-    default List<ProjectApprovalRecordDO> selectListByProjectIdAndStage(Long projectId, Integer stage) {
-        return selectList(new LambdaQueryWrapperX<ProjectApprovalRecordDO>()
-                .eq(ProjectApprovalRecordDO::getProjectId, projectId)
-                .eq(ProjectApprovalRecordDO::getStage, stage)
-                .orderByAsc(ProjectApprovalRecordDO::getApproveTime));
-    }
-
-    /**
-     * 根据项目 ID 删除审批记录
-     */
-    default void deleteByProjectId(Long projectId) {
-        delete(new LambdaQueryWrapperX<ProjectApprovalRecordDO>()
-                .eq(ProjectApprovalRecordDO::getProjectId, projectId));
-    }
-
-}

+ 0 - 35
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectBudgetMapper.java

@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchProject.ProjectBudgetDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 项目费用预算明细 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ProjectBudgetMapper extends BaseMapperX<ProjectBudgetDO> {
-
-    /**
-     * 根据项目 ID 查询预算明细列表
-     */
-    default List<ProjectBudgetDO> selectListByProjectId(Long projectId) {
-        return selectList(new LambdaQueryWrapperX<ProjectBudgetDO>()
-                .eq(ProjectBudgetDO::getProjectId, projectId)
-                .orderByAsc(ProjectBudgetDO::getSort));
-    }
-
-    /**
-     * 根据项目 ID 删除预算明细
-     */
-    default void deleteByProjectId(Long projectId) {
-        delete(new LambdaQueryWrapperX<ProjectBudgetDO>()
-                .eq(ProjectBudgetDO::getProjectId, projectId));
-    }
-
-}

+ 0 - 69
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectMapper.java

@@ -1,69 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchProject;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.researchProject.vo.ProjectPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchProject.ProjectDO;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-
-
-
-import java.util.List;
-
-/**
- * 项目立项 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ProjectMapper extends BaseMapperX<ProjectDO> {
-
-    default PageResult<ProjectDO> selectPage(ProjectPageReqVO reqVO) {
-        return selectPage(reqVO, buildCommonQuery(reqVO)
-                .orderByDesc(ProjectDO::getId));
-    }
-
-    default List<ProjectDO> selectList(ProjectPageReqVO reqVO) {
-        return selectList(buildCommonQuery(reqVO)
-                .orderByDesc(ProjectDO::getId));
-    }
-
-    /**
-     * 构建公共查询条件
-     *
-     * @param reqVO 查询条件
-     */
-    default LambdaQueryWrapperX<ProjectDO> buildCommonQuery(ProjectPageReqVO reqVO) {
-        return new LambdaQueryWrapperX<ProjectDO>()
-                .likeIfPresent(ProjectDO::getProjectName, reqVO.getProjectName())
-                .eqIfPresent(ProjectDO::getProjectLevel, reqVO.getProjectLevel())
-                .eqIfPresent(ProjectDO::getExecutingUnit, reqVO.getExecutingUnit())   // ⭐ 改成 eqIfPresent
-                .eqIfPresent(ProjectDO::getProjectLeader, reqVO.getProjectLeader())
-                .eqIfPresent(ProjectDO::getProjectType, reqVO.getProjectType())
-                .eqIfPresent(ProjectDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(ProjectDO::getCreateTime, reqVO.getCreateTime());
-    }
-
-    /**
-     * 查询当前最大的 sort 值(用于新增时 sort + 1)
-     */
-    @Select("SELECT IFNULL(MAX(sort), 0) FROM rd_project WHERE deleted = 0")
-    Integer selectMaxSort();
-
-
-    default PageResult<ProjectDO> selectTodoPage(ProjectPageReqVO reqVO, Long userId) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ProjectDO>()
-                .likeIfPresent(ProjectDO::getProjectName, reqVO.getProjectName())   // ⭐ 放到前面
-                .and(w -> w
-                        .and(x -> x
-                                .eq(ProjectDO::getPreAuditStatus, 1)
-                                .eq(ProjectDO::getPreCurrentApproverId, userId))
-                        .or(x -> x
-                                .eq(ProjectDO::getFormalAuditStatus, 1)
-                                .eq(ProjectDO::getFormalCurrentApproverId, userId)))
-                .orderByDesc(ProjectDO::getId));
-    }
-
-}

+ 0 - 35
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchProject/ProjectScheduleMapper.java

@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchProject;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchProject.ProjectScheduleDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 项目进度安排 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ProjectScheduleMapper extends BaseMapperX<ProjectScheduleDO> {
-
-    /**
-     * 根据项目 ID 查询进度安排列表
-     */
-    default List<ProjectScheduleDO> selectListByProjectId(Long projectId) {
-        return selectList(new LambdaQueryWrapperX<ProjectScheduleDO>()
-                .eq(ProjectScheduleDO::getProjectId, projectId)
-                .orderByAsc(ProjectScheduleDO::getSort));
-    }
-
-    /**
-     * 根据项目 ID 删除进度安排
-     */
-    default void deleteByProjectId(Long projectId) {
-        delete(new LambdaQueryWrapperX<ProjectScheduleDO>()
-                .eq(ProjectScheduleDO::getProjectId, projectId));
-    }
-
-}

+ 0 - 39
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchachievement/ResearchAchievementMapper.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchachievement;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievement.vo.ResearchAchievementPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievement.ResearchAchievementDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 知识产权、荣誉证书等研究成果 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ResearchAchievementMapper extends BaseMapperX<ResearchAchievementDO> {
-
-    default PageResult<ResearchAchievementDO> selectPage(ResearchAchievementPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ResearchAchievementDO>()
-                .eqIfPresent(ResearchAchievementDO::getDeptId, reqVO.getDeptId())
-                .likeIfPresent(ResearchAchievementDO::getAchievementName, reqVO.getAchievementName())
-                .eqIfPresent(ResearchAchievementDO::getAchievementType, reqVO.getAchievementType())
-                .eqIfPresent(ResearchAchievementDO::getSubType, reqVO.getSubType())
-                .eqIfPresent(ResearchAchievementDO::getDepartmentId, reqVO.getDepartmentId())
-                .eqIfPresent(ResearchAchievementDO::getDepartment, reqVO.getDepartment())
-                .eqIfPresent(ResearchAchievementDO::getSummary, reqVO.getSummary())
-                .eqIfPresent(ResearchAchievementDO::getAvatar, reqVO.getAvatar())
-                .eqIfPresent(ResearchAchievementDO::getExtAttributes, reqVO.getExtAttributes())
-                .eqIfPresent(ResearchAchievementDO::getSort, reqVO.getSort())
-                .eqIfPresent(ResearchAchievementDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ResearchAchievementDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(ResearchAchievementDO::getProcessInstanceId, reqVO.getProcessInstanceId())
-                .eqIfPresent(ResearchAchievementDO::getAuditStatus, reqVO.getAuditStatus())
-                .eqIfPresent(ResearchAchievementDO::getOpinion, reqVO.getOpinion())
-                .betweenIfPresent(ResearchAchievementDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ResearchAchievementDO::getId));
-    }
-
-}

+ 0 - 66
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/researchachievementattrs/ResearchAchievementAttrsMapper.java

@@ -1,66 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.researchachievementattrs;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.researchachievementattrs.vo.ResearchAchievementAttrsPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.researchachievementattrs.ResearchAchievementAttrsDO;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 研究成果 论文 专利 软著 荣誉证书 扩展属性 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface ResearchAchievementAttrsMapper extends BaseMapperX<ResearchAchievementAttrsDO> {
-
-    default PageResult<ResearchAchievementAttrsDO> selectPage(ResearchAchievementAttrsPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<ResearchAchievementAttrsDO>()
-                .eqIfPresent(ResearchAchievementAttrsDO::getTemplateId, reqVO.getTemplateId())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAchievementType, reqVO.getAchievementType())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAchievementSubType, reqVO.getAchievementSubType())
-                .likeIfPresent(ResearchAchievementAttrsDO::getName, reqVO.getName())
-                .eqIfPresent(ResearchAchievementAttrsDO::getIdentifier, reqVO.getIdentifier())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDataType, reqVO.getDataType())
-                .eqIfPresent(ResearchAchievementAttrsDO::getRequired, reqVO.getRequired())
-                .eqIfPresent(ResearchAchievementAttrsDO::getUnit, reqVO.getUnit())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAccessMode, reqVO.getAccessMode())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDefaultValue, reqVO.getDefaultValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getMaxValue, reqVO.getMaxValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getMinValue, reqVO.getMinValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getExtProperty, reqVO.getExtProperty())
-                .eqIfPresent(ResearchAchievementAttrsDO::getSort, reqVO.getSort())
-                .eqIfPresent(ResearchAchievementAttrsDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ResearchAchievementAttrsDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(ResearchAchievementAttrsDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ResearchAchievementAttrsDO::getId));
-    }
-
-    default List<ResearchAchievementAttrsDO> achievementAttrs(ResearchAchievementAttrsPageReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<ResearchAchievementAttrsDO>()
-                .eqIfPresent(ResearchAchievementAttrsDO::getTemplateId, reqVO.getTemplateId())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAchievementType, reqVO.getAchievementType())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAchievementSubType, reqVO.getAchievementSubType())
-                .likeIfPresent(ResearchAchievementAttrsDO::getName, reqVO.getName())
-                .eqIfPresent(ResearchAchievementAttrsDO::getIdentifier, reqVO.getIdentifier())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDataType, reqVO.getDataType())
-                .eqIfPresent(ResearchAchievementAttrsDO::getRequired, reqVO.getRequired())
-                .eqIfPresent(ResearchAchievementAttrsDO::getUnit, reqVO.getUnit())
-                .eqIfPresent(ResearchAchievementAttrsDO::getAccessMode, reqVO.getAccessMode())
-                .eqIfPresent(ResearchAchievementAttrsDO::getDefaultValue, reqVO.getDefaultValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getMaxValue, reqVO.getMaxValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getMinValue, reqVO.getMinValue())
-                .eqIfPresent(ResearchAchievementAttrsDO::getExtProperty, reqVO.getExtProperty())
-                .eqIfPresent(ResearchAchievementAttrsDO::getSort, reqVO.getSort())
-                .eqIfPresent(ResearchAchievementAttrsDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(ResearchAchievementAttrsDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(ResearchAchievementAttrsDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(ResearchAchievementAttrsDO::getId));
-    }
-
-}

+ 0 - 33
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/team/TeamMapper.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.mysql.team;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.rd.controller.admin.team.vo.TeamPageReqVO;
-import cn.iocoder.yudao.module.rd.dal.dataobject.team.TeamDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 团队 Mapper
- *
- * @author ruiqi
- */
-@Mapper
-public interface TeamMapper extends BaseMapperX<TeamDO> {
-
-    default PageResult<TeamDO> selectPage(TeamPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<TeamDO>()
-                .eqIfPresent(TeamDO::getDeptId, reqVO.getDeptId())
-                .inIfPresent(TeamDO::getId, reqVO.getTeamIds())
-                .eqIfPresent(TeamDO::getCategory, reqVO.getCategory())
-                .likeIfPresent(TeamDO::getTeamName, reqVO.getTeamName())
-                .eqIfPresent(TeamDO::getAvatar, reqVO.getAvatar())
-                .eqIfPresent(TeamDO::getSummary, reqVO.getSummary())
-                .eqIfPresent(TeamDO::getSort, reqVO.getSort())
-                .eqIfPresent(TeamDO::getRemark, reqVO.getRemark())
-                .eqIfPresent(TeamDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(TeamDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(TeamDO::getId));
-    }
-
-}

+ 0 - 56
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/redis/BizNoRedisDAO.java

@@ -1,56 +0,0 @@
-package cn.iocoder.yudao.module.rd.dal.redis;
-
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.DateUtil;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.stereotype.Repository;
-
-import javax.annotation.Resource;
-import java.time.Duration;
-import java.time.LocalDateTime;
-
-
-/**
- * rd 业务单据的 Redis DAO
- *
- * @author ruiqi
- */
-@Repository
-public class BizNoRedisDAO {
-
-    /**
-     * 保养计划
-     */
-    public static final String MAIN_PLAN_NO_PREFIX = "BYJH";
-
-    /**
-     * 保养工单
-     */
-    public static final String MAIN_WORK_ORDER_NO_PREFIX = "BYGD";
-
-    /**
-     * 物料领用单
-     */
-    public static final String MATERIAL_REQ_ORDER_NO_PREFIX = "WLLY";
-
-    @Resource
-    private StringRedisTemplate stringRedisTemplate;
-
-    /**
-     * 生成序号,使用当前日期,格式为 {PREFIX} + yyyyMMdd + 6 位自增
-     * 例如说:BYJH 202109 000001 (没有中间空格)
-     *
-     * @param prefix 前缀
-     * @return 序号
-     */
-    public String generate(String prefix) {
-        // 递增序号
-        String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
-        String key = RedisKeyConstants.NO + noPrefix;
-        Long no = stringRedisTemplate.opsForValue().increment(key);
-        // 设置过期时间
-        stringRedisTemplate.expire(key, Duration.ofDays(1L));
-        return noPrefix + String.format("%06d", no);
-    }
-
-}

Некоторые файлы не были показаны из-за большого количества измененных файлов