wangliang hai 1 ano
achega
3bcf9996c0
Modificáronse 100 ficheiros con 5455 adicións e 0 borrados
  1. 32 0
      .gitignore
  2. 9 0
      HELP.md
  3. 23 0
      README.md
  4. 401 0
      pom.xml
  5. 33 0
      sop-business/.gitignore
  6. 210 0
      sop-business/pom.xml
  7. 50 0
      sop-business/src/main/java/com/qmth/sop/business/activiti/listener/ProcessEventListener.java
  8. 112 0
      sop-business/src/main/java/com/qmth/sop/business/bean/FormPropertyBean.java
  9. 72 0
      sop-business/src/main/java/com/qmth/sop/business/bean/auth/AuthBean.java
  10. 33 0
      sop-business/src/main/java/com/qmth/sop/business/bean/auth/ExpireTimeBean.java
  11. 237 0
      sop-business/src/main/java/com/qmth/sop/business/cache/CommonCacheService.java
  12. 550 0
      sop-business/src/main/java/com/qmth/sop/business/cache/impl/CommonCacheServiceImpl.java
  13. 103 0
      sop-business/src/main/java/com/qmth/sop/business/entity/BasicAttachment.java
  14. 101 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysConfig.java
  15. 79 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysOrg.java
  16. 147 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysPrivilege.java
  17. 91 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysRole.java
  18. 69 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysRolePrivilege.java
  19. 134 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysUser.java
  20. 81 0
      sop-business/src/main/java/com/qmth/sop/business/entity/SysUserRole.java
  21. 203 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TBSession.java
  22. 225 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TBTask.java
  23. 226 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TDFormWidget.java
  24. 190 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TDTableProp.java
  25. 153 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TFCustomFlow.java
  26. 58 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TFCustomFlowEntity.java
  27. 154 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowApprove.java
  28. 130 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowJoin.java
  29. 189 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowLog.java
  30. 80 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TGError.java
  31. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/BasicAttachmentMapper.java
  32. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysConfigMapper.java
  33. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysOrgMapper.java
  34. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysPrivilegeMapper.java
  35. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysRoleMapper.java
  36. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysRolePrivilegeMapper.java
  37. 24 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysUserMapper.java
  38. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/SysUserRoleMapper.java
  39. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBSessionMapper.java
  40. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBTaskMapper.java
  41. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TDFormWidgetMapper.java
  42. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TDTablePropMapper.java
  43. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TFCustomFlowEntityMapper.java
  44. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TFCustomFlowMapper.java
  45. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowApproveMapper.java
  46. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowJoinMapper.java
  47. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowLogMapper.java
  48. 16 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TGErrorMapper.java
  49. 21 0
      sop-business/src/main/java/com/qmth/sop/business/service/ActivitiConsumerService.java
  50. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/BasicAttachmentService.java
  51. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysConfigService.java
  52. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysOrgService.java
  53. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysPrivilegeService.java
  54. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysRolePrivilegeService.java
  55. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysRoleService.java
  56. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysUserRoleService.java
  57. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/SysUserService.java
  58. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TBSessionService.java
  59. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TBTaskService.java
  60. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TDFormWidgetService.java
  61. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TDTablePropService.java
  62. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TFCustomFlowEntityService.java
  63. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TFCustomFlowService.java
  64. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TFFlowApproveService.java
  65. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TFFlowJoinService.java
  66. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TFFlowLogService.java
  67. 16 0
      sop-business/src/main/java/com/qmth/sop/business/service/TGErrorService.java
  68. 116 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/ActivitiConsumerServiceImpl.java
  69. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/BasicAttachmentServiceImpl.java
  70. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysConfigServiceImpl.java
  71. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysOrgServiceImpl.java
  72. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysPrivilegeServiceImpl.java
  73. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysRolePrivilegeServiceImpl.java
  74. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysRoleServiceImpl.java
  75. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserRoleServiceImpl.java
  76. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserServiceImpl.java
  77. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBSessionServiceImpl.java
  78. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBTaskServiceImpl.java
  79. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TDFormWidgetServiceImpl.java
  80. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TDTablePropServiceImpl.java
  81. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TFCustomFlowEntityServiceImpl.java
  82. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TFCustomFlowServiceImpl.java
  83. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowApproveServiceImpl.java
  84. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowJoinServiceImpl.java
  85. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowLogServiceImpl.java
  86. 20 0
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TGErrorServiceImpl.java
  87. 35 0
      sop-business/src/main/java/com/qmth/sop/business/templete/export/AsyncExportTaskTemplete.java
  88. 23 0
      sop-business/src/main/java/com/qmth/sop/business/templete/export/SyncExportTaskTemplete.java
  89. 38 0
      sop-business/src/main/java/com/qmth/sop/business/templete/importData/AsyncImportTaskTemplete.java
  90. 26 0
      sop-business/src/main/java/com/qmth/sop/business/templete/importData/SyncImportTaskTemplete.java
  91. 15 0
      sop-business/src/main/java/com/qmth/sop/business/templete/service/TaskLogicService.java
  92. 19 0
      sop-business/src/main/java/com/qmth/sop/business/templete/service/impl/TaskLogicServiceImpl.java
  93. 5 0
      sop-business/src/main/resources/mapper/BasicAttachmentMapper.xml
  94. 5 0
      sop-business/src/main/resources/mapper/SysConfigMapper.xml
  95. 5 0
      sop-business/src/main/resources/mapper/SysOrgMapper.xml
  96. 5 0
      sop-business/src/main/resources/mapper/SysPrivilegeMapper.xml
  97. 5 0
      sop-business/src/main/resources/mapper/SysRoleMapper.xml
  98. 5 0
      sop-business/src/main/resources/mapper/SysRolePrivilegeMapper.xml
  99. 8 0
      sop-business/src/main/resources/mapper/SysUserMapper.xml
  100. 5 0
      sop-business/src/main/resources/mapper/SysUserRoleMapper.xml

+ 32 - 0
.gitignore

@@ -0,0 +1,32 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 9 - 0
HELP.md

@@ -0,0 +1,9 @@
+公司:武汉启明泰和软件服务有限公司
+
+地址:武汉市东湖新技术开发区光谷大道当代梦工场2号楼10楼
+
+邮编:430070
+
+电话:400-876-1700
+
+邮箱:pr@qmth.com.cn

+ 23 - 0
README.md

@@ -0,0 +1,23 @@
+智控平台
+
+项目模块:
+1.sop-server
+服务端
+
+2.sop-common
+项目公用
+
+3.sop-task
+分布式job
+
+项目框架:
+java8,spring boot2.3.0
+
+数据库:
+mysql5.7or8.0
+
+部署:
+docker
+
+附件:
+本地或oss存储

+ 401 - 0
pom.xml

@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.qmth.sop.service</groupId>
+    <artifactId>sop-service</artifactId>
+    <version>1.0.0.1</version>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>sop-server</module>
+        <module>sop-business</module>
+        <module>sop-common</module>
+        <module>sop-task</module>
+    </modules>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <qmth.boot.version>1.0.4</qmth.boot.version>
+        <swagger2.version>2.9.2</swagger2.version>
+        <fastjson.version>1.2.68</fastjson.version>
+        <fileupload.version>1.4</fileupload.version>
+        <poi.version>3.17</poi.version>
+        <aliyun.version>3.8.1</aliyun.version>
+        <guava.version>27.1-jre</guava.version>
+        <hutool.version>5.0.6</hutool.version>
+        <bcprov.version>1.52</bcprov.version>
+        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
+        <gson.version>2.8.6</gson.version>
+        <commons.version>3.10</commons.version>
+        <commons.codec.version>1.15</commons.codec.version>
+        <commons-io.version>2.6</commons-io.version>
+        <jackson.version>2.11.0</jackson.version>
+        <swagger2-bootstrap.version>1.9.6</swagger2-bootstrap.version>
+        <jetbrains.version>13.0</jetbrains.version>
+        <httpclient.version>4.5.12</httpclient.version>
+        <version-plugin.version>2.8.1</version-plugin.version>
+        <netty-all.version>4.1.49.Final</netty-all.version>
+        <itextpdf.version>5.5.13</itextpdf.version>
+        <itextasian.version>5.2.0</itextasian.version>
+        <googleBar.version>3.4.0</googleBar.version>
+        <freemarker.version>2.3.30</freemarker.version>
+        <commons-text.version>1.9</commons-text.version>
+        <junit.version>4.13</junit.version>
+        <activiti.version>6.0.0</activiti.version>
+        <activiti-modeler.version>5.22.0</activiti-modeler.version>
+        <zip4j.version>1.3.3</zip4j.version>
+        <nanoid.version>2.0.0</nanoid.version>
+        <jasypt.version>3.0.3</jasypt.version>
+        <httpmime.version>4.5.13</httpmime.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.qmth.sop.server</groupId>
+                <artifactId>sop-server</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.sop.common</groupId>
+                <artifactId>sop-common</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.sop.business</groupId>
+                <artifactId>sop-business</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.sop.task</groupId>
+                <artifactId>sop-task</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>starter-api</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-uid</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-cache</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-concurrent</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-fss</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>com.qmth.boot</groupId>-->
+<!--                <artifactId>data-redis</artifactId>-->
+<!--                <version>${qmth.boot.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>data-mybatis-plus</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>tools-device</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>com.qmth.boot</groupId>-->
+<!--                <artifactId>core-solar</artifactId>-->
+<!--                <version>${qmth.boot.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-logging</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-models</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-retrofit</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.qmth.boot</groupId>
+                <artifactId>core-sms</artifactId>
+                <version>${qmth.boot.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger-ui</artifactId>
+                <version>${swagger2.version}</version>
+            </dependency>
+            <!--            <dependency>-->
+            <!--                <groupId>com.github.xiaoymin</groupId>-->
+            <!--                <artifactId>swagger-bootstrap-ui</artifactId>-->
+            <!--                <version>${swagger2-bootstrap.version}</version>-->
+            <!--            </dependency>-->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger2</artifactId>
+                <version>${swagger2.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-lang3</artifactId>
+                <version>${commons.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-codec</groupId>
+                <artifactId>commons-codec</artifactId>
+                <version>${commons.codec.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-text</artifactId>
+                <version>${commons-text.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.code.gson</groupId>
+                <artifactId>gson</artifactId>
+                <version>${gson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>org.apache.poi</groupId>-->
+<!--                <artifactId>poi-ooxml</artifactId>-->
+<!--                <version>${poi.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>org.apache.poi</groupId>-->
+<!--                <artifactId>poi-ooxml-schemas</artifactId>-->
+<!--                <version>${poi.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>org.apache.poi</groupId>-->
+<!--                <artifactId>poi</artifactId>-->
+<!--                <version>${poi.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>commons-fileupload</groupId>
+                <artifactId>commons-fileupload</artifactId>
+                <version>${fileupload.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>com.aliyun.oss</groupId>-->
+<!--                <artifactId>aliyun-sdk-oss</artifactId>-->
+<!--                <version>${aliyun.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-core</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-annotations</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-databind</artifactId>
+                <version>${jackson.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+            <!-- aes PKCS7 -->
+            <dependency>
+                <groupId>org.bouncycastle</groupId>
+                <artifactId>bcprov-jdk15on</artifactId>
+                <version>${bcprov.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains</groupId>
+                <artifactId>annotations</artifactId>
+                <version>${jetbrains.version}</version>
+                <scope>compile</scope>
+            </dependency>
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons-io.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpclient</artifactId>
+                <version>${httpclient.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>${netty-all.version}</version>
+            </dependency>
+            <!--quartz-->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-quartz</artifactId>
+                <version>${spring-boot.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>com.itextpdf</groupId>-->
+<!--                <artifactId>itextpdf</artifactId>-->
+<!--                <version>${itextpdf.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>com.itextpdf</groupId>-->
+<!--                <artifactId>itext-asian</artifactId>-->
+<!--                <version>${itextasian.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>com.google.zxing</groupId>-->
+<!--                <artifactId>core</artifactId>-->
+<!--                <version>${googleBar.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>com.google.zxing</groupId>-->
+<!--                <artifactId>javase</artifactId>-->
+<!--                <version>${googleBar.version}</version>-->
+<!--            </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>org.freemarker</groupId>-->
+<!--                <artifactId>freemarker</artifactId>-->
+<!--                <version>${freemarker.version}</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-engine</artifactId>
+                <version>${activiti.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-spring</artifactId>
+                <version>${activiti.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-spring-boot-starter-basic</artifactId>
+                <version>${activiti.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-common-rest</artifactId>
+                <version>${activiti.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-modeler</artifactId>
+                <version>${activiti-modeler.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.activiti</groupId>
+                <artifactId>activiti-bpmn-layout</artifactId>
+                <version>${activiti.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>net.lingala.zip4j</groupId>
+                <artifactId>zip4j</artifactId>
+                <version>${zip4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.aventrix.jnanoid</groupId>
+                <artifactId>jnanoid</artifactId>
+                <version>${nanoid.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.ulisesbocchio</groupId>
+                <artifactId>jasypt-spring-boot-starter</artifactId>
+                <version>${jasypt.version}</version>
+            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>org.apache.maven</groupId>-->
+<!--                <artifactId>maven-model</artifactId>-->
+<!--                <version>3.0</version>-->
+<!--            </dependency>-->
+            <dependency>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpmime</artifactId>
+                <version>${httpmime.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <!-- 默认依赖测试JAR -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <version>${spring-boot.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>versions-maven-plugin</artifactId>
+                <version>${version-plugin.version}</version>
+                <configuration>
+                    <generateBackupPoms>false</generateBackupPoms>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.2.0</version>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                    <useDefaultDelimiters>false</useDefaultDelimiters>
+                    <delimiters>
+                        <delimiter>$[*]</delimiter>
+                    </delimiters>
+                    <!-- 过滤后缀不需要转码的文件后缀名pdf -->
+                    <nonFilteredFileExtensions>
+                        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
+                    </nonFilteredFileExtensions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 33 - 0
sop-business/.gitignore

@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 210 - 0
sop-business/pom.xml

@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.qmth.sop.business</groupId>
+    <artifactId>sop-business</artifactId>
+    <version>1.0.0.1</version>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <packaging>jar</packaging>
+
+    <parent>
+        <groupId>com.qmth.sop.service</groupId>
+        <artifactId>sop-service</artifactId>
+        <version>1.0.0.1</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity-engine-core</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.qmth.sop.common</groupId>
+            <artifactId>sop-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.itextpdf</groupId>-->
+<!--            <artifactId>itextpdf</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>com.itextpdf</groupId>-->
+<!--            <artifactId>itext-asian</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>com.google.zxing</groupId>-->
+<!--            <artifactId>core</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>com.google.zxing</groupId>-->
+<!--            <artifactId>javase</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>org.freemarker</groupId>-->
+<!--            <artifactId>freemarker</artifactId>-->
+<!--        </dependency>-->
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-engine</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.jackson</groupId>
+                    <artifactId>jackson-core-asl</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-context</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-jdbc</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-tx</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-orm</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>activation</artifactId>
+                    <groupId>javax.activation</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring-boot-starter-basic</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-boot-starter</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-boot-starter-jdbc</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- Activiti 流程图 -->
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-common-rest</artifactId>
+        </dependency>
+        <!-- Activiti 在线设计 -->
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-modeler</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-context</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-core</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-tx</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-web</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-config</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-core</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-crypto</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-web</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-webmvc</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>activation</artifactId>
+                    <groupId>javax.activation</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>commons-io</artifactId>
+                    <groupId>commons-io</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>5.2.12.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-bpmn-layout</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 50 - 0
sop-business/src/main/java/com/qmth/sop/business/activiti/listener/ProcessEventListener.java

@@ -0,0 +1,50 @@
+package com.qmth.sop.business.activiti.listener;
+
+import org.activiti.engine.delegate.event.ActivitiEvent;
+import org.activiti.engine.delegate.event.ActivitiEventListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 全局监听
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+@Component
+public class ProcessEventListener implements ActivitiEventListener, Serializable {
+    private final static Logger log = LoggerFactory.getLogger(ProcessEventListener.class);
+
+    @Override
+    public void onEvent(ActivitiEvent event) {
+        switch (event.getType()) {
+            case PROCESS_STARTED:
+                // 流程启动
+                log.info("流程启动_PROCESS_STARTED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                break;
+            case PROCESS_COMPLETED:
+                // 流程结束
+                log.info("流程结束_PROCESS_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                break;
+            case TASK_COMPLETED:
+                // 任务被完成了。它会在ENTITY_DELETE事件之前触发。当任务是流程一部分时,事件会在流程继续运行之前, 后续事件将是ACTIVITY_COMPLETE,对应着完成任务的节点。
+                log.info("流程任务完成_TASK_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                break;
+//            case TASK_ASSIGNED:
+//                log.info("流程分配人员_TASK_ASSIGNED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+//                break;
+            default:
+//                log.info("default->type:{},ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getType(), event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                break;
+        }
+    }
+
+    @Override
+    public boolean isFailOnException() {
+        return false;
+    }
+}

+ 112 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/FormPropertyBean.java

@@ -0,0 +1,112 @@
+package com.qmth.sop.business.bean.auth;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import org.activiti.engine.form.FormProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FormPropertyBean implements Serializable {
+
+    @ApiModelProperty(value = "流程id")
+    String flowId;
+
+    @ApiModelProperty(value = "流程任务id")
+    String taskId;
+
+    @ApiModelProperty(value = "用户id")
+    String userId;
+
+    @ApiModelProperty(value = "taskKey")
+    String taskDefinitionKey;
+
+    @ApiModelProperty(value = "流程id")
+    List<FormProperty> formProperty;
+
+    @ApiModelProperty(value = "html内容")
+    String htmlContent;
+
+    public FormPropertyBean() {
+
+    }
+
+    public FormPropertyBean(String flowId, String taskId, List<FormProperty> formProperty) {
+        this.flowId = flowId;
+        this.taskId = taskId;
+        this.formProperty = formProperty;
+    }
+
+    public FormPropertyBean(String flowId, String taskId, String htmlContent) {
+        this.flowId = flowId;
+        this.taskId = taskId;
+        this.htmlContent = htmlContent;
+    }
+
+    public FormPropertyBean(String flowId, String taskId, String userId, String taskDefinitionKey) {
+        this.flowId = flowId;
+        this.taskId = taskId;
+        this.userId = userId;
+        this.taskDefinitionKey = taskDefinitionKey;
+    }
+
+    public FormPropertyBean(String flowId, String taskId, String userId, List<FormProperty> formProperty) {
+        this.flowId = flowId;
+        this.taskId = taskId;
+        this.userId = userId;
+        this.formProperty = formProperty;
+    }
+
+    public String getHtmlContent() {
+        return htmlContent;
+    }
+
+    public void setHtmlContent(String htmlContent) {
+        this.htmlContent = htmlContent;
+    }
+
+    public String getTaskDefinitionKey() {
+        return taskDefinitionKey;
+    }
+
+    public void setTaskDefinitionKey(String taskDefinitionKey) {
+        this.taskDefinitionKey = taskDefinitionKey;
+    }
+
+    public FormPropertyBean(List<FormProperty> formProperty) {
+        this.formProperty = formProperty;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(String flowId) {
+        this.flowId = flowId;
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public List<FormProperty> getFormProperty() {
+        return formProperty;
+    }
+
+    public void setFormProperty(List<FormProperty> formProperty) {
+        this.formProperty = formProperty;
+    }
+}

+ 72 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/auth/AuthBean.java

@@ -0,0 +1,72 @@
+package com.qmth.sop.business.bean.auth;
+
+import com.qmth.sop.business.entity.SysOrg;
+import com.qmth.sop.business.entity.SysRole;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @Description: 鉴权 bean
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/6/26
+ */
+public class AuthBean implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(name = "角色集合")
+    private List<SysRole> roleList;
+
+    @ApiModelProperty(name = "url集合")
+    private Set<String> urls;
+
+    @ApiModelProperty(name = "机构信息")
+    private SysOrg org;
+
+    public AuthBean() {
+
+    }
+
+    public AuthBean(List<SysRole> roleList, Set<String> urls) {
+        this.roleList = roleList;
+        this.urls = urls;
+    }
+
+    public AuthBean(List<SysRole> roleList, Set<String> urls, SysOrg org) {
+        this.roleList = roleList;
+        this.urls = urls;
+        this.org = org;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public List<SysRole> getRoleList() {
+        return roleList;
+    }
+
+    public void setRoleList(List<SysRole> roleList) {
+        this.roleList = roleList;
+    }
+
+    public Set<String> getUrls() {
+        return urls;
+    }
+
+    public void setUrls(Set<String> urls) {
+        this.urls = urls;
+    }
+
+    public SysOrg getOrg() {
+        return org;
+    }
+
+    public void setOrg(SysOrg org) {
+        this.org = org;
+    }
+}

+ 33 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/auth/ExpireTimeBean.java

@@ -0,0 +1,33 @@
+package com.qmth.sop.business.bean.auth;
+
+import java.util.Date;
+
+/**
+ * @Description: 过期时间bean
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/25
+ */
+public class ExpireTimeBean {
+
+    private Date date;
+
+    private long expireSeconds;
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public long getExpireSeconds() {
+        return expireSeconds;
+    }
+
+    public void setExpireSeconds(long expireSeconds) {
+        this.expireSeconds = expireSeconds;
+    }
+}

+ 237 - 0
sop-business/src/main/java/com/qmth/sop/business/cache/CommonCacheService.java

@@ -0,0 +1,237 @@
+package com.qmth.sop.business.cache;
+
+import com.qmth.sop.business.bean.auth.AuthBean;
+import com.qmth.sop.business.entity.*;
+import com.qmth.sop.common.enums.PrivilegePropertyEnum;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @Description: 缓存操作service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/25
+ */
+public interface CommonCacheService {
+
+    /**
+     * 添加用户缓存
+     *
+     * @param userId
+     * @return
+     */
+    public SysUser userCache(Long userId);
+
+    /**
+     * 修改用户缓存
+     *
+     * @param userId
+     * @return
+     */
+    public SysUser updateUserCache(Long userId);
+
+    /**
+     * 删除用户缓存
+     *
+     * @param userId
+     */
+    public void removeUserCache(Long userId);
+
+    /**
+     * 添加系统参数缓存
+     *
+     * @param key
+     * @return
+     */
+    public SysConfig addSysConfigCache(String key);
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param key
+     * @return
+     */
+    public SysConfig updateSysConfigCache(String key);
+
+    /**
+     * 删除系统参数缓存
+     *
+     * @param key
+     */
+    public void removeSysConfigCache(String key);
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param key
+     * @param sysConfig
+     */
+    public void updateSysConfigCacheForDb(String key, SysConfig sysConfig);
+
+    /**
+     * 添加系统参数缓存
+     *
+     * @param schoolId
+     * @param key
+     * @return
+     */
+    public SysConfig addSysConfigCache(Long schoolId, String key);
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param schoolId
+     * @param key
+     * @return
+     */
+    public SysConfig updateSysConfigCache(Long schoolId, String key);
+
+    /**
+     * 删除系统参数缓存
+     *
+     * @param schoolId
+     * @param key
+     */
+    public void removeSysConfigCache(Long schoolId, String key);
+
+    /**
+     * 设置用户session信息
+     *
+     * @param sessionId
+     * @param o
+     */
+    public void setUserSession(String sessionId, Object o);
+
+    /**
+     * 获取用户会话信息
+     *
+     * @param sessionId
+     * @return
+     */
+    public Object getUserSession(String sessionId);
+
+    /**
+     * 删除用户会话缓存
+     *
+     * @param sessionId
+     */
+    public void deleteUserSession(String sessionId);
+
+    /**
+     * 添加用户鉴权缓存
+     *
+     * @param userId
+     * @return
+     */
+    public AuthBean userAuthCache(Long userId);
+
+    /**
+     * 修改用户鉴权缓存
+     *
+     * @param userId
+     * @return
+     */
+    public AuthBean updateUserAuthCache(Long userId);
+
+    /**
+     * 删除用户鉴权缓存
+     *
+     * @param userId
+     */
+    public void removeUserAuthCache(Long userId);
+
+    /**
+     * 添加用户角色权限缓存
+     *
+     * @param userId
+     * @return
+     */
+    public List<SysUserRole> userRolePrivilegeCache(Long userId);
+
+    /**
+     * 修改用户角色权限缓存
+     *
+     * @param userId
+     * @return
+     */
+    public List<SysUserRole> updateUserRolePrivilegeCache(Long userId);
+
+    /**
+     * 删除用户角色权限缓存
+     *
+     * @param userId
+     */
+    public void removeUserRolePrivilegeCache(Long userId);
+
+    /**
+     * 添加机构缓存
+     *
+     * @param orgId
+     * @return
+     */
+    public SysOrg orgCache(Long orgId);
+
+    /**
+     * 更新机构缓存
+     *
+     * @param orgId
+     * @return
+     */
+    public SysOrg updateOrgCache(Long orgId);
+
+    /**
+     * 删除机构缓存
+     *
+     * @param orgId
+     */
+    public void removeOrgCache(Long orgId);
+
+    /**
+     * 添加角色权限缓存
+     *
+     * @param roleId
+     * @return
+     */
+    public List<SysRolePrivilege> rolePrivilegeCache(Long roleId);
+
+    /**
+     * 修改角色权限缓存
+     *
+     * @param roleId
+     * @return
+     */
+    public List<SysRolePrivilege> updateRolePrivilegeCache(Long roleId);
+
+    /**
+     * 删除角色权限缓存
+     *
+     * @param roleId
+     */
+    public void removeRolePrivilegeCache(Long roleId);
+
+    /**
+     * 获取鉴权url
+     *
+     * @param privilegePropertyEnum
+     * @return
+     */
+    public Set<String> privilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);
+
+    /**
+     * 修改鉴权url
+     *
+     * @param privilegePropertyEnum
+     * @return
+     */
+    public Set<String> updatePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);
+
+
+    /**
+     * 删除鉴权url
+     *
+     * @param privilegePropertyEnum
+     */
+    public void removePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum);
+}

+ 550 - 0
sop-business/src/main/java/com/qmth/sop/business/cache/impl/CommonCacheServiceImpl.java

@@ -0,0 +1,550 @@
+package com.qmth.sop.business.cache.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.core.cache.service.CacheService;
+import com.qmth.sop.business.bean.auth.AuthBean;
+import com.qmth.sop.business.cache.CommonCacheService;
+import com.qmth.sop.business.entity.*;
+import com.qmth.sop.business.service.*;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.ExceptionResultEnum;
+import com.qmth.sop.common.enums.PrivilegeEnum;
+import com.qmth.sop.common.enums.PrivilegePropertyEnum;
+import com.qmth.sop.common.enums.RoleTypeEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.context.annotation.ScopedProxyMode;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 缓存操作serviceImpl 实现类
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/25
+ */
+@Service
+@Scope(proxyMode = ScopedProxyMode.INTERFACES)
+public class CommonCacheServiceImpl implements CommonCacheService {
+    private final static Logger log = LoggerFactory.getLogger(CommonCacheServiceImpl.class);
+
+    @Resource
+    SysUserService sysUserService;
+
+    @Resource
+    SysConfigService sysConfigService;
+
+    @Resource
+    CacheService cacheService;
+
+    @Resource
+    SysUserRoleService sysUserRoleService;
+
+    @Resource
+    SysRoleService sysRoleService;
+
+    @Resource
+    SysPrivilegeService sysPrivilegeService;
+
+    @Resource
+    SysOrgService sysOrgService;
+
+    @Resource
+    SysRolePrivilegeService sysRolePrivilegeService;
+
+    /**
+     * 添加用户缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+//    @Cacheable(value = SystemConstant.USER_ACCOUNT_CACHE, key = "#p0", unless = "#result == null")
+    public SysUser userCache(Long userId) {
+        return userCacheCommon(userId);
+    }
+
+    /**
+     * 修改用户缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+//    @CachePut(value = SystemConstant.USER_ACCOUNT_CACHE, key = "#p0", condition = "#result != null")
+    public SysUser updateUserCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_ACCOUNT_CACHE, String.valueOf(userId));
+        return userCacheCommon(userId);
+    }
+
+    /**
+     * 用户缓存共用
+     *
+     * @param userId
+     * @return
+     */
+    private SysUser userCacheCommon(Long userId) {
+        SysUser sysUser = (SysUser) cacheService.get(SystemConstant.USER_ACCOUNT_CACHE, String.valueOf(userId));
+        if (Objects.isNull(sysUser)) {
+            sysUser = sysUserService.getById(userId);
+            if (Objects.nonNull(sysUser)) {
+                cacheService.put(SystemConstant.USER_ACCOUNT_CACHE, String.valueOf(userId), sysUser);
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("userId[" + userId + "]用户不存在");
+            }
+        }
+        return sysUser;
+    }
+
+    /**
+     * 删除用户缓存
+     *
+     * @param userId
+     */
+    @Override
+//    @CacheEvict(value = SystemConstant.USER_ACCOUNT_CACHE, key = "#p0")
+    public void removeUserCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_ACCOUNT_CACHE, String.valueOf(userId));
+    }
+
+    /**
+     * 系统参数key缓存共用
+     *
+     * @param key
+     * @return
+     */
+    private SysConfig sysConfigCacheCommon(String key) {
+        SysConfig sysConfig = (SysConfig) cacheService.get(SystemConstant.SYS_CONFIG_CACHE, key);
+        if (Objects.isNull(sysConfig)) {
+            sysConfig = sysConfigService.getOne(new QueryWrapper<SysConfig>().lambda().eq(SysConfig::getConfigKey, key));
+            if (Objects.nonNull(sysConfig)) {
+                cacheService.put(SystemConstant.SYS_CONFIG_CACHE, key, sysConfig);
+            }
+        }
+        return sysConfig;
+    }
+
+    /**
+     * 添加系统参数缓存
+     *
+     * @param key
+     * @return
+     */
+    @Override
+//    @Cacheable(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0", unless = "#result == null")
+    public SysConfig addSysConfigCache(String key) {
+        return sysConfigCacheCommon(key);
+    }
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param key
+     * @return
+     */
+    @Override
+//    @CachePut(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0", condition = "#result != null")
+    public SysConfig updateSysConfigCache(String key) {
+        cacheService.evict(SystemConstant.SYS_CONFIG_CACHE, key);
+        return sysConfigCacheCommon(key);
+    }
+
+    /**
+     * 删除系统参数缓存
+     *
+     * @param key
+     */
+    @Override
+//    @CacheEvict(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0")
+    public void removeSysConfigCache(String key) {
+        cacheService.evict(SystemConstant.SYS_CONFIG_CACHE, key);
+    }
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param key
+     * @return
+     */
+    @Override
+    public void updateSysConfigCacheForDb(String key, SysConfig sysConfig) {
+//        cacheManager.getCache(SystemConstant.SYS_CONFIG_CACHE).put(key, sysConfig);
+        cacheService.put(SystemConstant.SYS_CONFIG_CACHE, key, sysConfig);
+    }
+
+    /**
+     * 系统参数key缓存共用
+     *
+     * @param orgId
+     * @param key
+     * @return
+     */
+    private SysConfig sysConfigCacheCommon(Long orgId, String key) {
+        SysConfig sysConfig = (SysConfig) cacheService.get(SystemConstant.SYS_CONFIG_CACHE, orgId + "_" + key);
+        if (Objects.isNull(sysConfig)) {
+            sysConfig = sysConfigService.getOne(new QueryWrapper<SysConfig>().lambda().eq(SysConfig::getOrgId, orgId).eq(SysConfig::getConfigKey, key));
+            if (Objects.nonNull(sysConfig)) {
+                cacheService.put(SystemConstant.SYS_CONFIG_CACHE, orgId + "_" + key, sysConfig);
+            }
+        }
+        return sysConfig;
+    }
+
+    /**
+     * 添加系统参数缓存
+     *
+     * @param orgId
+     * @param key
+     * @return
+     */
+    @Override
+//    @Cacheable(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0 + '-' + #p1", unless = "#result == null")
+    public SysConfig addSysConfigCache(Long orgId, String key) {
+        return sysConfigCacheCommon(orgId, key);
+    }
+
+    /**
+     * 更新系统参数缓存
+     *
+     * @param orgId
+     * @param key
+     * @return
+     */
+    @Override
+//    @CachePut(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0 + '-' + #p1", condition = "#result != null")
+    public SysConfig updateSysConfigCache(Long orgId, String key) {
+        cacheService.evict(SystemConstant.SYS_CONFIG_CACHE, orgId + "_" + key);
+        return sysConfigCacheCommon(orgId, key);
+    }
+
+    /**
+     * 删除系统参数缓存
+     *
+     * @param orgId
+     * @param key
+     */
+    @Override
+//    @CacheEvict(value = SystemConstant.SYS_CONFIG_CACHE, key = "#p0 + '-' + #p1")
+    public void removeSysConfigCache(Long orgId, String key) {
+        cacheService.evict(SystemConstant.SYS_CONFIG_CACHE, orgId + "_" + key);
+    }
+
+    /**
+     * 设置用户session
+     *
+     * @param sessionId
+     * @param o
+     */
+    @Override
+    public void setUserSession(String sessionId, Object o) {
+        cacheService.put(SystemConstant.SESSION, sessionId, o);
+    }
+
+    /**
+     * 获取用户session
+     *
+     * @param sessionId
+     * @return
+     */
+    @Override
+    public Object getUserSession(String sessionId) {
+        return cacheService.get(SystemConstant.SESSION, sessionId);
+    }
+
+    /**
+     * 删除用户session
+     *
+     * @param sessionId
+     */
+    @Override
+    public void deleteUserSession(String sessionId) {
+        cacheService.evict(SystemConstant.SESSION, sessionId);
+    }
+
+    /**
+     * 添加户鉴权缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public AuthBean userAuthCache(Long userId) {
+        AuthBean authBean = null;
+        try {
+            SysUser user = this.userCache(userId);
+            if (Objects.isNull(user)) {
+                throw ExceptionResultEnum.USER_NO_DATA.exception();
+            }
+            //查询用户角色和权限
+            List<SysUserRole> sysUserRoleList = this.userRolePrivilegeCache(user.getId());
+            if (Objects.nonNull(sysUserRoleList) && sysUserRoleList.size() > 0) {
+                Set<Long> roleIds = sysUserRoleList.stream().map(s -> s.getRoleId()).collect(Collectors.toSet());
+                List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
+                for (Long l : roleIds) {
+                    sysRolePrivilegeList.addAll(this.rolePrivilegeCache(l));
+                }
+                Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
+                QueryWrapper<SysRole> sysRoleQueryWrapper = new QueryWrapper<>();
+                sysRoleQueryWrapper.lambda().in(SysRole::getId, roleIds)
+                        .eq(SysRole::getEnable, true);
+                List<SysRole> sysRoleList = sysRoleService.list(sysRoleQueryWrapper);
+                int count = Objects.nonNull(sysRoleList) && sysRoleList.size() > 0 ? (int) sysRoleList.stream().filter(s -> Objects.equals(s.getName(), RoleTypeEnum.ADMIN.getDesc())).count() : 0;
+                QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+                if (count > 0) {//超级系统管理员
+                    sysPrivilegeQueryWrapper.lambda()
+                            .eq(SysPrivilege::getType, PrivilegeEnum.URL)
+                            .eq(SysPrivilege::getProperty, PrivilegePropertyEnum.AUTH);
+                    List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                    authBean = new AuthBean(sysRoleList, sysPrivilegeList.stream().map(s -> s.getUrl()).collect(Collectors.toSet()));
+                } else {
+                    SysOrg org = Objects.nonNull(user.getOrgId()) ? this.orgCache(user.getOrgId()) : null;
+                    List<SysPrivilege> sysPrivilegeList = new ArrayList<>();
+                    if (privilegeIds.size() > 0) {
+                        sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, privilegeIds)
+                                .eq(SysPrivilege::getType, PrivilegeEnum.URL)
+                                .eq(SysPrivilege::getProperty, PrivilegePropertyEnum.AUTH);
+                        sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                    }
+                    authBean = new AuthBean(sysRoleList, sysPrivilegeList.stream().map(s -> s.getUrl()).collect(Collectors.toSet()), org);
+                }
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            throw ExceptionResultEnum.ERROR.exception("添加用户鉴权缓存失败");
+        }
+        cacheService.put(SystemConstant.USER_OAUTH_CACHE, String.valueOf(userId), authBean);
+        return authBean;
+    }
+
+    /**
+     * 更新用户鉴权缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public AuthBean updateUserAuthCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_OAUTH_CACHE, String.valueOf(userId));
+        return userAuthCache(userId);
+    }
+
+    /**
+     * 删除用户鉴权换成
+     *
+     * @param userId
+     */
+    @Override
+    public void removeUserAuthCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_OAUTH_CACHE, String.valueOf(userId));
+    }
+
+    /**
+     * 添加用户角色权限缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<SysUserRole> userRolePrivilegeCache(Long userId) {
+        return userRoleCacheCommon(userId);
+    }
+
+    /**
+     * 更新用户角色权限缓存
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<SysUserRole> updateUserRolePrivilegeCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_ROLE_PRIVILEGE_CACHE, String.valueOf(userId));
+        return userRoleCacheCommon(userId);
+    }
+
+    /**
+     * 删除用户角色权限缓存
+     *
+     * @param userId
+     */
+    @Override
+    public void removeUserRolePrivilegeCache(Long userId) {
+        cacheService.evict(SystemConstant.USER_ROLE_PRIVILEGE_CACHE, String.valueOf(userId));
+    }
+
+    /**
+     * 添加机构缓存
+     *
+     * @param orgId
+     * @return
+     */
+    @Override
+    public SysOrg orgCache(Long orgId) {
+        return orgCacheCommon(orgId);
+    }
+
+    /**
+     * 更新机构缓存
+     *
+     * @param orgId
+     * @return
+     */
+    @Override
+    public SysOrg updateOrgCache(Long orgId) {
+        cacheService.evict(SystemConstant.ORG_CACHE, String.valueOf(orgId));
+        return orgCacheCommon(orgId);
+    }
+
+    /**
+     * 删除机构缓存
+     *
+     * @param orgId
+     */
+    @Override
+    public void removeOrgCache(Long orgId) {
+        cacheService.evict(SystemConstant.ORG_CACHE, String.valueOf(orgId));
+    }
+
+    /**
+     * 添加角色权限缓存
+     *
+     * @param roleId
+     * @return
+     */
+    @Override
+    public List<SysRolePrivilege> rolePrivilegeCache(Long roleId) {
+        return rolePrivilegeCacheCommon(roleId);
+    }
+
+    /**
+     * 修改角色权限缓存
+     *
+     * @param roleId
+     * @return
+     */
+    @Override
+    public List<SysRolePrivilege> updateRolePrivilegeCache(Long roleId) {
+        cacheService.evict(SystemConstant.ROLE_PRIVILEGE_CACHE, String.valueOf(roleId));
+        return rolePrivilegeCacheCommon(roleId);
+    }
+
+    /**
+     * 删除角色权限缓存
+     *
+     * @param roleId
+     */
+    @Override
+    public void removeRolePrivilegeCache(Long roleId) {
+        cacheService.evict(SystemConstant.ROLE_PRIVILEGE_CACHE, String.valueOf(roleId));
+    }
+
+    /**
+     * 获取鉴权url
+     *
+     * @param privilegePropertyEnum
+     * @return
+     */
+    @Override
+    public Set<String> privilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum) {
+        return privilegeUrlCacheCommon(privilegePropertyEnum);
+    }
+
+    /**
+     * 更新鉴权url
+     *
+     * @param privilegePropertyEnum
+     * @return
+     */
+    @Override
+    public Set<String> updatePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum) {
+        cacheService.evict(SystemConstant.PRIVILEGE_URL_CACHE, privilegePropertyEnum.name());
+        return privilegeUrlCacheCommon(privilegePropertyEnum);
+    }
+
+    /**
+     * 删除鉴权url
+     *
+     * @param privilegePropertyEnum
+     */
+    @Override
+    public void removePrivilegeUrlCache(PrivilegePropertyEnum privilegePropertyEnum) {
+        cacheService.evict(SystemConstant.PRIVILEGE_URL_CACHE, privilegePropertyEnum.name());
+    }
+
+    /**
+     * 鉴权url缓存共用
+     *
+     * @param privilegePropertyEnum
+     * @return
+     */
+    private Set<String> privilegeUrlCacheCommon(PrivilegePropertyEnum privilegePropertyEnum) {
+        Set<String> privilegeUrlSet = (Set<String>) cacheService.get(SystemConstant.PRIVILEGE_URL_CACHE, privilegePropertyEnum.name());
+        if (CollectionUtils.isEmpty(privilegeUrlSet)) {
+            List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(new QueryWrapper<SysPrivilege>().lambda().eq(SysPrivilege::getType, PrivilegeEnum.URL).eq(SysPrivilege::getProperty, privilegePropertyEnum).eq(SysPrivilege::getEnable, true));
+            if (!CollectionUtils.isEmpty(sysPrivilegeList)) {
+                privilegeUrlSet = sysPrivilegeList.stream().map(s -> s.getUrl()).collect(Collectors.toSet());
+                cacheService.put(SystemConstant.PRIVILEGE_URL_CACHE, privilegePropertyEnum.name(), privilegeUrlSet);
+            }
+        }
+        return privilegeUrlSet;
+    }
+
+    /**
+     * 机构缓存共用
+     *
+     * @param orgId
+     * @return
+     */
+    private SysOrg orgCacheCommon(Long orgId) {
+        SysOrg sysOrg = (SysOrg) cacheService.get(SystemConstant.ORG_CACHE, String.valueOf(orgId));
+        if (Objects.isNull(sysOrg)) {
+            sysOrg = sysOrgService.getById(orgId);
+            if (Objects.nonNull(sysOrg)) {
+                cacheService.put(SystemConstant.ORG_CACHE, String.valueOf(orgId), sysOrg);
+            }
+        }
+        return sysOrg;
+    }
+
+    /**
+     * 用户角色缓存共用
+     *
+     * @param userId
+     * @return
+     */
+    private List<SysUserRole> userRoleCacheCommon(Long userId) {
+        List<SysUserRole> sysUserRoleList = (List<SysUserRole>) cacheService.get(SystemConstant.USER_ROLE_PRIVILEGE_CACHE, String.valueOf(userId));
+        if (CollectionUtils.isEmpty(sysUserRoleList)) {
+            sysUserRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, userId).eq(SysUserRole::getEnable, true));
+            if (!CollectionUtils.isEmpty(sysUserRoleList)) {
+                cacheService.put(SystemConstant.USER_ROLE_PRIVILEGE_CACHE, String.valueOf(userId), sysUserRoleList);
+            }
+        }
+        return sysUserRoleList;
+    }
+
+    /**
+     * 角色权限缓存共用
+     *
+     * @param roleId
+     * @return
+     */
+    private List<SysRolePrivilege> rolePrivilegeCacheCommon(Long roleId) {
+        List<SysRolePrivilege> sysRolePrivilegeList = (List<SysRolePrivilege>) cacheService.get(SystemConstant.ROLE_PRIVILEGE_CACHE, String.valueOf(roleId));
+        if (CollectionUtils.isEmpty(sysRolePrivilegeList)) {
+            sysRolePrivilegeList = sysRolePrivilegeService.list(new QueryWrapper<SysRolePrivilege>().lambda().eq(SysRolePrivilege::getRoleId, roleId));
+            if (!CollectionUtils.isEmpty(sysRolePrivilegeList)) {
+                cacheService.put(SystemConstant.ROLE_PRIVILEGE_CACHE, String.valueOf(roleId), sysRolePrivilegeList);
+            }
+        }
+        return sysRolePrivilegeList;
+    }
+}

+ 103 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/BasicAttachment.java

@@ -0,0 +1,103 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 所有附件记录表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "BasicAttachment对象", description = "所有附件记录表")
+public class BasicAttachment extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "文件名")
+    private String name;
+
+    @ApiModelProperty(value = "文件类型")
+    private String type;
+
+    @ApiModelProperty(value = "单位(KB)")
+    private BigDecimal size;
+
+    @ApiModelProperty(value = "文件md5值")
+    private String md5;
+
+    @ApiModelProperty(value = "存储路径")
+    private String path;
+
+    @ApiModelProperty(value = "关联业务id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long objId;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public BigDecimal getSize() {
+        return size;
+    }
+
+    public void setSize(BigDecimal size) {
+        this.size = size;
+    }
+
+    public String getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Long getObjId() {
+        return objId;
+    }
+
+    public void setObjId(Long objId) {
+        this.objId = objId;
+    }
+}

+ 101 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysConfig.java

@@ -0,0 +1,101 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 参数表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysConfig对象", description = "参数表")
+public class SysConfig extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "参数键名")
+    private String configKey;
+
+    @ApiModelProperty(value = "参数名称")
+    private String configName;
+
+    @ApiModelProperty(value = "参数键值")
+    private String configValue;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getConfigKey() {
+        return configKey;
+    }
+
+    public void setConfigKey(String configKey) {
+        this.configKey = configKey;
+    }
+
+    public String getConfigName() {
+        return configName;
+    }
+
+    public void setConfigName(String configName) {
+        this.configName = configName;
+    }
+
+    public String getConfigValue() {
+        return configValue;
+    }
+
+    public void setConfigValue(String configValue) {
+        this.configValue = configValue;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+}

+ 79 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysOrg.java

@@ -0,0 +1,79 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 学校组织架构
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysOrg对象", description = "学校组织架构")
+public class SysOrg extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "类型")
+    private String type;
+
+    @ApiModelProperty(value = "机构代码")
+    private String code;
+
+    @ApiModelProperty(value = "机构名称")
+    private String name;
+
+    @ApiModelProperty(value = "上级机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 147 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysPrivilege.java

@@ -0,0 +1,147 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.enums.PrivilegeEnum;
+import com.qmth.sop.common.enums.PrivilegePropertyEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 菜单权限表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysPrivilege对象", description = "菜单权限表")
+public class SysPrivilege implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "菜单名称")
+    private String name;
+
+    @ApiModelProperty(value = "URL地址")
+    private String url;
+
+    @ApiModelProperty(value = "类型,MENU:菜单,BUTTON:按钮,LINK:链接,URL:接口地址,LIST:列表,CONDITION:查询条件,TAB:选项卡")
+    private PrivilegeEnum type;
+
+    @ApiModelProperty(value = "上级菜单")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    @ApiModelProperty(value = "序号")
+    private Integer sequence;
+
+    @ApiModelProperty(value = "属性,NO_AUTH:无需鉴权,AUTH:鉴权,SYS:系统公用")
+    private PrivilegePropertyEnum property;
+
+    @ApiModelProperty(value = "关联属性,type为URL且property为AUTH才有")
+    private String related;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "默认权限,0:否,1:是")
+    private Boolean defaultAuth;
+
+    @ApiModelProperty(value = "是否前端展示")
+    private Boolean frontDisplay;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public PrivilegeEnum getType() {
+        return type;
+    }
+
+    public void setType(PrivilegeEnum type) {
+        this.type = type;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(Integer sequence) {
+        this.sequence = sequence;
+    }
+
+    public PrivilegePropertyEnum getProperty() {
+        return property;
+    }
+
+    public void setProperty(PrivilegePropertyEnum property) {
+        this.property = property;
+    }
+
+    public String getRelated() {
+        return related;
+    }
+
+    public void setRelated(String related) {
+        this.related = related;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Boolean getDefaultAuth() {
+        return defaultAuth;
+    }
+
+    public void setDefaultAuth(Boolean defaultAuth) {
+        this.defaultAuth = defaultAuth;
+    }
+
+    public Boolean getFrontDisplay() {
+        return frontDisplay;
+    }
+
+    public void setFrontDisplay(Boolean frontDisplay) {
+        this.frontDisplay = frontDisplay;
+    }
+}

+ 91 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysRole.java

@@ -0,0 +1,91 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.RoleTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 角色表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysRole对象", description = "角色表")
+public class SysRole extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "角色名称")
+    private String name;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "角色类别,ADMIN:超级管理员")
+    private RoleTypeEnum type;
+
+    @ApiModelProperty(value = "是否系统内置角色,1:是,0:不是")
+    private Boolean defaultRole;
+
+    @ApiModelProperty(value = "角色说明")
+    private String interpret;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public RoleTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(RoleTypeEnum type) {
+        this.type = type;
+    }
+
+    public Boolean getDefaultRole() {
+        return defaultRole;
+    }
+
+    public void setDefaultRole(Boolean defaultRole) {
+        this.defaultRole = defaultRole;
+    }
+
+    public String getInterpret() {
+        return interpret;
+    }
+
+    public void setInterpret(String interpret) {
+        this.interpret = interpret;
+    }
+}

+ 69 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysRolePrivilege.java

@@ -0,0 +1,69 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 角色和菜单关联表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysRolePrivilege对象", description = "角色和菜单关联表")
+public class SysRolePrivilege implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "角色id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long roleId;
+
+    @ApiModelProperty(value = "菜单id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long privilegeId;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public Long getPrivilegeId() {
+        return privilegeId;
+    }
+
+    public void setPrivilegeId(Long privilegeId) {
+        this.privilegeId = privilegeId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 134 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysUser.java

@@ -0,0 +1,134 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysUser对象", description = "用户表")
+public class SysUser extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户名")
+    private String loginName;
+
+    @ApiModelProperty(value = "姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "工号")
+    private String code;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobileNumber;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "密码修改次数,默认为0")
+    private Integer pwdCount;
+
+    @ApiModelProperty(value = "密码修改时间")
+    private Long pwdUpdateTime;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getMobileNumber() {
+        return mobileNumber;
+    }
+
+    public void setMobileNumber(String mobileNumber) {
+        this.mobileNumber = mobileNumber;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Integer getPwdCount() {
+        return pwdCount;
+    }
+
+    public void setPwdCount(Integer pwdCount) {
+        this.pwdCount = pwdCount;
+    }
+
+    public Long getPwdUpdateTime() {
+        return pwdUpdateTime;
+    }
+
+    public void setPwdUpdateTime(Long pwdUpdateTime) {
+        this.pwdUpdateTime = pwdUpdateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 81 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/SysUserRole.java

@@ -0,0 +1,81 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户和角色关联表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "SysUserRole对象", description = "用户和角色关联表")
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "用户id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long userId;
+
+    @ApiModelProperty(value = "角色id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long roleId;
+
+    @ApiModelProperty(value = "权限id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long privilegeId;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public Long getPrivilegeId() {
+        return privilegeId;
+    }
+
+    public void setPrivilegeId(Long privilegeId) {
+        this.privilegeId = privilegeId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 203 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBSession.java

@@ -0,0 +1,203 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.enums.AppSourceEnum;
+import com.qmth.sop.common.util.ServletUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 会话表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TBSession对象", description = "会话表")
+public class TBSession implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    private String id;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "用户标识")
+    private String identity;
+
+    @ApiModelProperty(value = "用户类型")
+    private String type;
+
+    @ApiModelProperty(value = "访问来源")
+    private String source;
+
+    @ApiModelProperty(value = "设备分类")
+    private String platform;
+
+    @ApiModelProperty(value = "设备标识")
+    private String deviceId;
+
+    @ApiModelProperty(value = "登录IP地址")
+    private String address;
+
+    @ApiModelProperty(value = "访问令牌")
+    private String accessToken;
+
+    @ApiModelProperty(value = "最近访问时间")
+    private Long lastAccessTime;
+
+    @ApiModelProperty(value = "最近访问IP地址")
+    private String lastAccessIp;
+
+    @ApiModelProperty(value = "令牌更新时间")
+    private Long updateTime;
+
+    @ApiModelProperty(value = "令牌强制失效时间")
+    private Long expireTime;
+
+    @ApiModelProperty(value = "应用来源")
+    private AppSourceEnum appSource;
+
+    public TBSession() {
+
+    }
+
+    public TBSession(String id, String identity, String type, String source, String platform, String deviceId, String address, String accessToken, Long expireTime, AppSourceEnum appSource) {
+        this.id = id;
+        this.identity = identity;
+        this.type = type;
+        this.source = source;
+        this.platform = platform;
+        this.deviceId = deviceId;
+        this.address = address;
+        this.accessToken = accessToken;
+        this.expireTime = expireTime;
+        this.lastAccessTime = System.currentTimeMillis();
+        this.lastAccessIp = address;
+        this.appSource = appSource;
+    }
+
+    public void setLastInfo() {
+        this.lastAccessTime = System.currentTimeMillis();
+        this.lastAccessIp = ServletUtil.getRequest().getLocalAddr();
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public Long getLastAccessTime() {
+        return lastAccessTime;
+    }
+
+    public void setLastAccessTime(Long lastAccessTime) {
+        this.lastAccessTime = lastAccessTime;
+    }
+
+    public String getLastAccessIp() {
+        return lastAccessIp;
+    }
+
+    public void setLastAccessIp(String lastAccessIp) {
+        this.lastAccessIp = lastAccessIp;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(Long expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public AppSourceEnum getAppSource() {
+        return appSource;
+    }
+
+    public void setAppSource(AppSourceEnum appSource) {
+        this.appSource = appSource;
+    }
+}

+ 225 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBTask.java

@@ -0,0 +1,225 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.TaskStatusEnum;
+import com.qmth.sop.common.enums.TaskTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 导入导出任务表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TBTask对象", description = "导入导出任务表")
+public class TBTask extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "任务类型")
+    private TaskTypeEnum type;
+
+    @ApiModelProperty(value = "关联业务对象id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long entityId;
+
+    @ApiModelProperty(value = "任务状态,INIT:未开始,RUNNING:进行中,FINISH:已完成")
+    private TaskStatusEnum status;
+
+    @ApiModelProperty(value = "实时摘要信息")
+    private String summary;
+
+    @ApiModelProperty(value = "执行进度")
+    private Double progress;
+
+    @ApiModelProperty(value = "数据结果,SUCCESS:成功,ERROR:失败")
+    private TaskTypeEnum result;
+
+    @ApiModelProperty(value = "是否启用,false:停用,true:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "导入文件名")
+    private String importFileName;
+
+    @ApiModelProperty(value = "导入文件路径")
+    private String importFilePath;
+
+    @ApiModelProperty(value = "导出文件路径")
+    private String resultFilePath;
+
+    @ApiModelProperty(value = "错误数据文件路径")
+    private String errorFilePath;
+
+    @ApiModelProperty(value = "报告路径")
+    private String reportFilePath;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "实体名称")
+    private String objName;
+
+    @ApiModelProperty(value = "重试次数")
+    private Integer resetCount;
+
+    @ApiModelProperty(value = "更新版本号")
+    private Integer version;
+
+    @ApiModelProperty(value = "人工错误原因")
+    private String errorMessage;
+
+    public TaskTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(TaskTypeEnum type) {
+        this.type = type;
+    }
+
+    public Long getEntityId() {
+        return entityId;
+    }
+
+    public void setEntityId(Long entityId) {
+        this.entityId = entityId;
+    }
+
+    public TaskStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatusEnum status) {
+        this.status = status;
+    }
+
+    public String getSummary() {
+        return summary;
+    }
+
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+    public Double getProgress() {
+        return progress;
+    }
+
+    public void setProgress(Double progress) {
+        this.progress = progress;
+    }
+
+    public TaskTypeEnum getResult() {
+        return result;
+    }
+
+    public void setResult(TaskTypeEnum result) {
+        this.result = result;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getImportFileName() {
+        return importFileName;
+    }
+
+    public void setImportFileName(String importFileName) {
+        this.importFileName = importFileName;
+    }
+
+    public String getImportFilePath() {
+        return importFilePath;
+    }
+
+    public void setImportFilePath(String importFilePath) {
+        this.importFilePath = importFilePath;
+    }
+
+    public String getResultFilePath() {
+        return resultFilePath;
+    }
+
+    public void setResultFilePath(String resultFilePath) {
+        this.resultFilePath = resultFilePath;
+    }
+
+    public String getErrorFilePath() {
+        return errorFilePath;
+    }
+
+    public void setErrorFilePath(String errorFilePath) {
+        this.errorFilePath = errorFilePath;
+    }
+
+    public String getReportFilePath() {
+        return reportFilePath;
+    }
+
+    public void setReportFilePath(String reportFilePath) {
+        this.reportFilePath = reportFilePath;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getObjName() {
+        return objName;
+    }
+
+    public void setObjName(String objName) {
+        this.objName = objName;
+    }
+
+    public Integer getResetCount() {
+        return resetCount;
+    }
+
+    public void setResetCount(Integer resetCount) {
+        this.resetCount = resetCount;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+}

+ 226 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TDFormWidget.java

@@ -0,0 +1,226 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.WidgetCodeEnum;
+import com.qmth.sop.common.enums.WidgetFitEnum;
+import com.qmth.sop.common.enums.WidgetInputTypeEnum;
+import com.qmth.sop.common.enums.WidgetTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 动态表单控件表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TDFormWidget对象", description = "动态表单控件表")
+public class TDFormWidget extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "编码,TEXT:文本,TEXTAREA:文本域,SELECT:下拉框,RADIO:单选框,CHECKBOX:复选框,DATE:日期,BUTTON:按钮,IMG:图片,VIDEO:视频,AUDIO:音频,FILE:文件,POP_SELECT:弹出选择框,LABLE:标签,TABEL:表格,OTHER:其它")
+    private WidgetCodeEnum code;
+
+    @ApiModelProperty(value = "类型,FORM:表单,TABLE:表格,OTHER:其它")
+    private WidgetTypeEnum type;
+
+    @ApiModelProperty(value = "适用,PC:电脑端,MOBILE:移动端,COMMON:共用")
+    private WidgetFitEnum fit;
+
+    @ApiModelProperty(value = "表单id")
+    private String formId;
+
+    @ApiModelProperty(value = "表单名称")
+    private String formName;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "输入类型,STRING:字符串,INT:整型,LONG:长整型,DOUBLE:浮点型,ENUM:枚举,DATE:日期,BOOL:布尔,BIGDECIMAL:精确浮点")
+    private WidgetInputTypeEnum inputType;
+
+    @ApiModelProperty(value = "是否必填,0:非必填,1:必填")
+    private Boolean required;
+
+    @ApiModelProperty(value = "是否只读,0:非只读,1:只读")
+    private Boolean readable;
+
+    @ApiModelProperty(value = "是否可写,0:非可写,1:可写")
+    private Boolean writable;
+
+    @ApiModelProperty(value = "是否可见,0:不可见,1:可见")
+    private Boolean visable;
+
+    @ApiModelProperty(value = "保留小数点几位")
+    private Integer scale;
+
+    @ApiModelProperty(value = "长度")
+    private Integer length;
+
+    @ApiModelProperty(value = "控件用值")
+    private String value;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "数据来源")
+    private String dataGrid;
+
+    @ApiModelProperty(value = "提示")
+    private String tips;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public WidgetCodeEnum getCode() {
+        return code;
+    }
+
+    public void setCode(WidgetCodeEnum code) {
+        this.code = code;
+    }
+
+    public WidgetTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(WidgetTypeEnum type) {
+        this.type = type;
+    }
+
+    public WidgetFitEnum getFit() {
+        return fit;
+    }
+
+    public void setFit(WidgetFitEnum fit) {
+        this.fit = fit;
+    }
+
+    public String getFormId() {
+        return formId;
+    }
+
+    public void setFormId(String formId) {
+        this.formId = formId;
+    }
+
+    public String getFormName() {
+        return formName;
+    }
+
+    public void setFormName(String formName) {
+        this.formName = formName;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public WidgetInputTypeEnum getInputType() {
+        return inputType;
+    }
+
+    public void setInputType(WidgetInputTypeEnum inputType) {
+        this.inputType = inputType;
+    }
+
+    public Boolean getRequired() {
+        return required;
+    }
+
+    public void setRequired(Boolean required) {
+        this.required = required;
+    }
+
+    public Boolean getReadable() {
+        return readable;
+    }
+
+    public void setReadable(Boolean readable) {
+        this.readable = readable;
+    }
+
+    public Boolean getWritable() {
+        return writable;
+    }
+
+    public void setWritable(Boolean writable) {
+        this.writable = writable;
+    }
+
+    public Boolean getVisable() {
+        return visable;
+    }
+
+    public void setVisable(Boolean visable) {
+        this.visable = visable;
+    }
+
+    public Integer getScale() {
+        return scale;
+    }
+
+    public void setScale(Integer scale) {
+        this.scale = scale;
+    }
+
+    public Integer getLength() {
+        return length;
+    }
+
+    public void setLength(Integer length) {
+        this.length = length;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getDataGrid() {
+        return dataGrid;
+    }
+
+    public void setDataGrid(String dataGrid) {
+        this.dataGrid = dataGrid;
+    }
+
+    public String getTips() {
+        return tips;
+    }
+
+    public void setTips(String tips) {
+        this.tips = tips;
+    }
+}

+ 190 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TDTableProp.java

@@ -0,0 +1,190 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 表格属性表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value="TDTableProp对象", description="表格属性表")
+public class TDTableProp extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "控件id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long widgetId;
+
+    @ApiModelProperty(value = "序号")
+    private Integer tdIndex;
+
+    @ApiModelProperty(value = "列id")
+    private String tdId;
+
+    @ApiModelProperty(value = "列名称")
+    private String tdName;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "宽度")
+    private Double width;
+
+    @ApiModelProperty(value = "高度")
+    private Double height;
+
+    @ApiModelProperty(value = "颜色")
+    private String color;
+
+    @ApiModelProperty(value = "跨行")
+    private Integer rowspan;
+
+    @ApiModelProperty(value = "跨列")
+    private Integer colspan;
+
+    @ApiModelProperty(value = "提示")
+    private String tips;
+
+    @ApiModelProperty(value = "是否排序,0:不排序,1:排序")
+    private Boolean tdOrder;
+
+    @ApiModelProperty(value = "是否搜索,0:不搜索,1:搜索")
+    private Boolean tdSearch;
+
+    @ApiModelProperty(value = "编辑控件id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long editWidgetId;
+
+    @ApiModelProperty(value = "实体内容")
+    private String obj;
+
+    public Long getWidgetId() {
+        return widgetId;
+    }
+
+    public void setWidgetId(Long widgetId) {
+        this.widgetId = widgetId;
+    }
+
+    public Integer getTdIndex() {
+        return tdIndex;
+    }
+
+    public void setTdIndex(Integer tdIndex) {
+        this.tdIndex = tdIndex;
+    }
+
+    public Boolean getTdOrder() {
+        return tdOrder;
+    }
+
+    public void setTdOrder(Boolean tdOrder) {
+        this.tdOrder = tdOrder;
+    }
+
+    public Boolean getTdSearch() {
+        return tdSearch;
+    }
+
+    public void setTdSearch(Boolean tdSearch) {
+        this.tdSearch = tdSearch;
+    }
+
+    public String getTdId() {
+        return tdId;
+    }
+
+    public void setTdId(String tdId) {
+        this.tdId = tdId;
+    }
+
+    public String getTdName() {
+        return tdName;
+    }
+
+    public void setTdName(String tdName) {
+        this.tdName = tdName;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Double getWidth() {
+        return width;
+    }
+
+    public void setWidth(Double width) {
+        this.width = width;
+    }
+
+    public Double getHeight() {
+        return height;
+    }
+
+    public void setHeight(Double height) {
+        this.height = height;
+    }
+
+    public String getColor() {
+        return color;
+    }
+
+    public void setColor(String color) {
+        this.color = color;
+    }
+
+    public Integer getRowspan() {
+        return rowspan;
+    }
+
+    public void setRowspan(Integer rowspan) {
+        this.rowspan = rowspan;
+    }
+
+    public Integer getColspan() {
+        return colspan;
+    }
+
+    public void setColspan(Integer colspan) {
+        this.colspan = colspan;
+    }
+
+    public String getTips() {
+        return tips;
+    }
+
+    public void setTips(String tips) {
+        this.tips = tips;
+    }
+
+    public Long getEditWidgetId() {
+        return editWidgetId;
+    }
+
+    public void setEditWidgetId(Long editWidgetId) {
+        this.editWidgetId = editWidgetId;
+    }
+
+    public String getObj() {
+        return obj;
+    }
+
+    public void setObj(String obj) {
+        this.obj = obj;
+    }
+}

+ 153 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TFCustomFlow.java

@@ -0,0 +1,153 @@
+package com.qmth.sop.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.TFCustomModelTypeEnum;
+import com.qmth.sop.common.enums.TFCustomTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 自定义流程表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TFCustomFlow对象", description = "自定义流程表")
+public class TFCustomFlow extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField(value = "org_id", updateStrategy = FieldStrategy.IGNORED)
+    private Long orgId;
+
+    @ApiModelProperty(value = "流程名称")
+    private String name;
+
+    @ApiModelProperty(value = "模式类型")
+    private TFCustomModelTypeEnum modelType;
+
+    @ApiModelProperty(value = "流程类型,OFFICE_SOP_FLOW:教务处SOP,CLOUD_MARK_SOP_FLOW:云悦君SOP")
+    private TFCustomTypeEnum type;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @TableField(value = "enable", updateStrategy = FieldStrategy.IGNORED)
+    private Boolean enable;
+
+    @ApiModelProperty(value = "是否发布,0:否,1:是")
+    @TableField(value = "publish", updateStrategy = FieldStrategy.IGNORED)
+    private Boolean publish;
+
+    @ApiModelProperty(value = "自定义流程源数据")
+    private String objectData;
+
+    @ApiModelProperty(value = "版本号")
+    private Integer version;
+
+    @ApiModelProperty(value = "流程key")
+    private String flowKey;
+
+    @ApiModelProperty(value = "流程版本id")
+    @TableField(value = "act_flow_id", updateStrategy = FieldStrategy.IGNORED)
+    private String actFlowId;
+
+    @ApiModelProperty(value = "流程过程变量数据")
+    private String flowProcessVar;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public TFCustomModelTypeEnum getModelType() {
+        return modelType;
+    }
+
+    public void setModelType(TFCustomModelTypeEnum modelType) {
+        this.modelType = modelType;
+    }
+
+    public TFCustomTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(TFCustomTypeEnum type) {
+        this.type = type;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public Boolean getPublish() {
+        return publish;
+    }
+
+    public void setPublish(Boolean publish) {
+        this.publish = publish;
+    }
+
+    public String getObjectData() {
+        return objectData;
+    }
+
+    public void setObjectData(String objectData) {
+        this.objectData = objectData;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public String getFlowKey() {
+        return flowKey;
+    }
+
+    public void setFlowKey(String flowKey) {
+        this.flowKey = flowKey;
+    }
+
+    public String getActFlowId() {
+        return actFlowId;
+    }
+
+    public void setActFlowId(String actFlowId) {
+        this.actFlowId = actFlowId;
+    }
+
+    public String getFlowProcessVar() {
+        return flowProcessVar;
+    }
+
+    public void setFlowProcessVar(String flowProcessVar) {
+        this.flowProcessVar = flowProcessVar;
+    }
+}

+ 58 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TFCustomFlowEntity.java

@@ -0,0 +1,58 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 自定义流程实体数据
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TFCustomFlowEntity对象", description = "自定义流程实体数据")
+public class TFCustomFlowEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "自定义流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long tFCustomFlowId;
+
+    @ApiModelProperty(value = "流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowId;
+
+    @ApiModelProperty(value = "流程过程变量")
+    private String flowProcessVar;
+
+    public Long gettFCustomFlowId() {
+        return tFCustomFlowId;
+    }
+
+    public void settFCustomFlowId(Long tFCustomFlowId) {
+        this.tFCustomFlowId = tFCustomFlowId;
+    }
+
+    public Long getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(Long flowId) {
+        this.flowId = flowId;
+    }
+
+    public String getFlowProcessVar() {
+        return flowProcessVar;
+    }
+
+    public void setFlowProcessVar(String flowProcessVar) {
+        this.flowProcessVar = flowProcessVar;
+    }
+}

+ 154 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowApprove.java

@@ -0,0 +1,154 @@
+package com.qmth.sop.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.FlowStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 流程审核表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TFFlowApprove对象", description = "流程审核表")
+public class TFFlowApprove extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowId;
+
+    @ApiModelProperty(value = "审核id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long approveId;
+
+    @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
+    private FlowStatusEnum status;
+
+    @ApiModelProperty(value = "计划步骤")
+    private Integer setup;
+
+    @ApiModelProperty(value = "审批步骤")
+    @TableField(value = "approve_setup", updateStrategy = FieldStrategy.IGNORED)
+    private Integer approveSetup;
+
+    @ApiModelProperty(value = "最大审批步骤")
+    @TableField(value = "approve_max_setup", updateStrategy = FieldStrategy.IGNORED)
+    private Integer approveMaxSetup;
+
+    @ApiModelProperty(value = "流程转办")
+    private String transferAssignee;
+
+    @ApiModelProperty(value = "会签审批人")
+    @TableField(value = "all_assignee", updateStrategy = FieldStrategy.IGNORED)
+    private String allAssignee;
+
+    @ApiModelProperty(value = "驳回路线")
+    @TableField(value = "reject_link", updateStrategy = FieldStrategy.IGNORED)
+    private String rejectLink;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(Long flowId) {
+        this.flowId = flowId;
+    }
+
+    public Long getApproveId() {
+        return approveId;
+    }
+
+    public void setApproveId(Long approveId) {
+        this.approveId = approveId;
+    }
+
+    public FlowStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(FlowStatusEnum status) {
+        this.status = status;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public Integer getApproveSetup() {
+        return approveSetup;
+    }
+
+    public void setApproveSetup(Integer approveSetup) {
+        this.approveSetup = approveSetup;
+    }
+
+    public Integer getApproveMaxSetup() {
+        return approveMaxSetup;
+    }
+
+    public void setApproveMaxSetup(Integer approveMaxSetup) {
+        this.approveMaxSetup = approveMaxSetup;
+    }
+
+    public String getTransferAssignee() {
+        return transferAssignee;
+    }
+
+    public void setTransferAssignee(String transferAssignee) {
+        this.transferAssignee = transferAssignee;
+    }
+
+    public String getAllAssignee() {
+        return allAssignee;
+    }
+
+    public void setAllAssignee(String allAssignee) {
+        this.allAssignee = allAssignee;
+    }
+
+    public String getRejectLink() {
+        return rejectLink;
+    }
+
+    public void setRejectLink(String rejectLink) {
+        this.rejectLink = rejectLink;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 130 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowJoin.java

@@ -0,0 +1,130 @@
+package com.qmth.sop.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.enums.FlowJoinTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 实体和流程关联表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TFFlowJoin对象", description = "实体和流程关联表")
+public class TFFlowJoin implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "自定义流程实体id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowEntityId;
+
+    @ApiModelProperty(value = "实体表")
+    private String objectTable;
+
+    @ApiModelProperty(value = "实体id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long objectId;
+
+    @ApiModelProperty(value = "流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowId;
+
+    @ApiModelProperty(value = "流程等级")
+    private Integer level;
+
+    @ApiModelProperty(value = "类型,NEW:新增,RESTART:重新提交")
+    private FlowJoinTypeEnum type;
+
+    @ApiModelProperty(value = "创建人")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long createId;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)//新增执行
+    private Long createTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getFlowEntityId() {
+        return flowEntityId;
+    }
+
+    public void setFlowEntityId(Long flowEntityId) {
+        this.flowEntityId = flowEntityId;
+    }
+
+    public String getObjectTable() {
+        return objectTable;
+    }
+
+    public void setObjectTable(String objectTable) {
+        this.objectTable = objectTable;
+    }
+
+    public Long getObjectId() {
+        return objectId;
+    }
+
+    public void setObjectId(Long objectId) {
+        this.objectId = objectId;
+    }
+
+    public Long getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(Long flowId) {
+        this.flowId = flowId;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public FlowJoinTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(FlowJoinTypeEnum type) {
+        this.type = type;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+}

+ 189 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TFFlowLog.java

@@ -0,0 +1,189 @@
+package com.qmth.sop.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.sop.common.base.BaseEntity;
+import com.qmth.sop.common.enums.CustomFlowMultipleUserApproveTypeEnum;
+import com.qmth.sop.common.enums.FlowApproveOperationEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 流程流水表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TFFlowLog对象", description = "流程流水表")
+public class TFFlowLog extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long flowId;
+
+    @ApiModelProperty(value = "实体表")
+    private String objectTable;
+
+    @ApiModelProperty(value = "实体id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long objectId;
+
+    @ApiModelProperty(value = "审核人id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long approveId;
+
+    @ApiModelProperty(value = "审核步骤")
+    private Integer approveSetup;
+
+    @ApiModelProperty(value = "审核意见")
+    private String approveRemark;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    @ApiModelProperty(value = "审批操作,SUBMIT:提交,APPROVE:审批,REJECT:驳回,END:终止")
+    private FlowApproveOperationEnum approveOperation;
+
+    @ApiModelProperty(value = "待审核人id")
+    private String pendApproveId;
+
+    @ApiModelProperty(value = "附件")
+    @TableField(value = "paper_attachment_id", updateStrategy = FieldStrategy.IGNORED)
+    private String paperAttachmentId;
+
+    @ApiModelProperty(value = "审批步骤")
+    @TableField(value = "approve_multi_setup", updateStrategy = FieldStrategy.IGNORED)
+    private Integer approveMultiSetup;
+
+    @ApiModelProperty(value = "审批用户类别,ORDER:依次审批,ALL:会签(所有人必须审批),SOME:或签(一名审批人同意或拒绝即可)")
+    @TableField(value = "approve_user_approve_type", updateStrategy = FieldStrategy.IGNORED)
+    private CustomFlowMultipleUserApproveTypeEnum approveUserApproveType;
+
+    @ApiModelProperty(value = "流程节点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long taskId;
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(Long flowId) {
+        this.flowId = flowId;
+    }
+
+    public String getObjectTable() {
+        return objectTable;
+    }
+
+    public void setObjectTable(String objectTable) {
+        this.objectTable = objectTable;
+    }
+
+    public Long getObjectId() {
+        return objectId;
+    }
+
+    public void setObjectId(Long objectId) {
+        this.objectId = objectId;
+    }
+
+    public Long getApproveId() {
+        return approveId;
+    }
+
+    public void setApproveId(Long approveId) {
+        this.approveId = approveId;
+    }
+
+    public Integer getApproveSetup() {
+        return approveSetup;
+    }
+
+    public void setApproveSetup(Integer approveSetup) {
+        this.approveSetup = approveSetup;
+    }
+
+    public String getApproveRemark() {
+        return approveRemark;
+    }
+
+    public void setApproveRemark(String approveRemark) {
+        this.approveRemark = approveRemark;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public FlowApproveOperationEnum getApproveOperation() {
+        return approveOperation;
+    }
+
+    public void setApproveOperation(FlowApproveOperationEnum approveOperation) {
+        this.approveOperation = approveOperation;
+    }
+
+    public String getPendApproveId() {
+        return pendApproveId;
+    }
+
+    public void setPendApproveId(String pendApproveId) {
+        this.pendApproveId = pendApproveId;
+    }
+
+    public String getPaperAttachmentId() {
+        return paperAttachmentId;
+    }
+
+    public void setPaperAttachmentId(String paperAttachmentId) {
+        this.paperAttachmentId = paperAttachmentId;
+    }
+
+    public Integer getApproveMultiSetup() {
+        return approveMultiSetup;
+    }
+
+    public void setApproveMultiSetup(Integer approveMultiSetup) {
+        this.approveMultiSetup = approveMultiSetup;
+    }
+
+    public CustomFlowMultipleUserApproveTypeEnum getApproveUserApproveType() {
+        return approveUserApproveType;
+    }
+
+    public void setApproveUserApproveType(CustomFlowMultipleUserApproveTypeEnum approveUserApproveType) {
+        this.approveUserApproveType = approveUserApproveType;
+    }
+
+    public Long getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(Long taskId) {
+        this.taskId = taskId;
+    }
+}

+ 80 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TGError.java

@@ -0,0 +1,80 @@
+package com.qmth.sop.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 全局异常错误信息表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@ApiModel(value = "TGError对象", description = "全局异常错误信息表")
+public class TGError implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    @ApiModelProperty(value = "实体id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long objId;
+
+    @ApiModelProperty(value = "实时摘要信息")
+    private String summary;
+
+    @ApiModelProperty(value = "创建时间")
+    private Long createTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getObjId() {
+        return objId;
+    }
+
+    public void setObjId(Long objId) {
+        this.objId = objId;
+    }
+
+    public String getSummary() {
+        return summary;
+    }
+
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/BasicAttachmentMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.BasicAttachment;
+
+/**
+ * <p>
+ * 所有附件记录表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface BasicAttachmentMapper extends BaseMapper<BasicAttachment> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysConfigMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysConfig;
+
+/**
+ * <p>
+ * 参数表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysConfigMapper extends BaseMapper<SysConfig> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysOrgMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysOrg;
+
+/**
+ * <p>
+ * 学校组织架构 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysOrgMapper extends BaseMapper<SysOrg> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysPrivilegeMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysPrivilege;
+
+/**
+ * <p>
+ * 菜单权限表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysPrivilegeMapper extends BaseMapper<SysPrivilege> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysRoleMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysRole;
+
+/**
+ * <p>
+ * 角色表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysRoleMapper extends BaseMapper<SysRole> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysRolePrivilegeMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysRolePrivilege;
+
+/**
+ * <p>
+ * 角色和菜单关联表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysRolePrivilegeMapper extends BaseMapper<SysRolePrivilege> {
+
+}

+ 24 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysUserMapper.java

@@ -0,0 +1,24 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysUser;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 用户表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysUserMapper extends BaseMapper<SysUser> {
+
+    /**
+     * 根据deploymentId查找processDefinitionId
+     *
+     * @param deploymentId
+     * @return
+     */
+    String findProcessDefinitionIdByDeploymentId(@Param("deploymentId") String deploymentId);
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/SysUserRoleMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.SysUserRole;
+
+/**
+ * <p>
+ * 用户和角色关联表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBSessionMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TBSession;
+
+/**
+ * <p>
+ * 会话表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TBSessionMapper extends BaseMapper<TBSession> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBTaskMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TBTask;
+
+/**
+ * <p>
+ * 导入导出任务表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TBTaskMapper extends BaseMapper<TBTask> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TDFormWidgetMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TDFormWidget;
+
+/**
+ * <p>
+ * 动态表单控件表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TDFormWidgetMapper extends BaseMapper<TDFormWidget> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TDTablePropMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TDTableProp;
+
+/**
+ * <p>
+ * 表格属性表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TDTablePropMapper extends BaseMapper<TDTableProp> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TFCustomFlowEntityMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TFCustomFlowEntity;
+
+/**
+ * <p>
+ * 自定义流程实体数据 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFCustomFlowEntityMapper extends BaseMapper<TFCustomFlowEntity> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TFCustomFlowMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TFCustomFlow;
+
+/**
+ * <p>
+ * 自定义流程表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFCustomFlowMapper extends BaseMapper<TFCustomFlow> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowApproveMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TFFlowApprove;
+
+/**
+ * <p>
+ * 流程审核表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowApproveMapper extends BaseMapper<TFFlowApprove> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowJoinMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TFFlowJoin;
+
+/**
+ * <p>
+ * 实体和流程关联表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowJoinMapper extends BaseMapper<TFFlowJoin> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TFFlowLogMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TFFlowLog;
+
+/**
+ * <p>
+ * 流程流水表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowLogMapper extends BaseMapper<TFFlowLog> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TGErrorMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.entity.TGError;
+
+/**
+ * <p>
+ * 全局异常错误信息表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TGErrorMapper extends BaseMapper<TGError> {
+
+}

+ 21 - 0
sop-business/src/main/java/com/qmth/sop/business/service/ActivitiConsumerService.java

@@ -0,0 +1,21 @@
+package com.qmth.sop.business.service;
+
+public interface ActivitiConsumerService {
+    boolean createDeployment();
+
+    boolean startActivityDemo(String key);
+
+    boolean getTaskList();
+
+    boolean complete(String taskId);
+
+    boolean deleteProcessInstance(String runId);
+
+    /**
+     * 根据deploymentId查找processDefinitionId
+     *
+     * @param deploymentId
+     * @return
+     */
+    String findProcessDefinitionIdByDeploymentId(String deploymentId);
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/BasicAttachmentService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.BasicAttachment;
+
+/**
+ * <p>
+ * 所有附件记录表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface BasicAttachmentService extends IService<BasicAttachment> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysConfigService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysConfig;
+
+/**
+ * <p>
+ * 参数表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysConfigService extends IService<SysConfig> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysOrgService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysOrg;
+
+/**
+ * <p>
+ * 学校组织架构 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysOrgService extends IService<SysOrg> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysPrivilegeService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysPrivilege;
+
+/**
+ * <p>
+ * 菜单权限表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysPrivilegeService extends IService<SysPrivilege> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysRolePrivilegeService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysRolePrivilege;
+
+/**
+ * <p>
+ * 角色和菜单关联表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysRolePrivilegeService extends IService<SysRolePrivilege> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysRoleService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysRole;
+
+/**
+ * <p>
+ * 角色表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysRoleService extends IService<SysRole> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysUserRoleService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysUserRole;
+
+/**
+ * <p>
+ * 用户和角色关联表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysUserRoleService extends IService<SysUserRole> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/SysUserService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.SysUser;
+
+/**
+ * <p>
+ * 用户表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface SysUserService extends IService<SysUser> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBSessionService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TBSession;
+
+/**
+ * <p>
+ * 会话表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TBSessionService extends IService<TBSession> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBTaskService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TBTask;
+
+/**
+ * <p>
+ * 导入导出任务表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TBTaskService extends IService<TBTask> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TDFormWidgetService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TDFormWidget;
+
+/**
+ * <p>
+ * 动态表单控件表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TDFormWidgetService extends IService<TDFormWidget> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TDTablePropService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TDTableProp;
+
+/**
+ * <p>
+ * 表格属性表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TDTablePropService extends IService<TDTableProp> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TFCustomFlowEntityService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TFCustomFlowEntity;
+
+/**
+ * <p>
+ * 自定义流程实体数据 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFCustomFlowEntityService extends IService<TFCustomFlowEntity> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TFCustomFlowService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TFCustomFlow;
+
+/**
+ * <p>
+ * 自定义流程表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFCustomFlowService extends IService<TFCustomFlow> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TFFlowApproveService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TFFlowApprove;
+
+/**
+ * <p>
+ * 流程审核表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowApproveService extends IService<TFFlowApprove> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TFFlowJoinService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TFFlowJoin;
+
+/**
+ * <p>
+ * 实体和流程关联表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowJoinService extends IService<TFFlowJoin> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TFFlowLogService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TFFlowLog;
+
+/**
+ * <p>
+ * 流程流水表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TFFlowLogService extends IService<TFFlowLog> {
+
+}

+ 16 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TGErrorService.java

@@ -0,0 +1,16 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.entity.TGError;
+
+/**
+ * <p>
+ * 全局异常错误信息表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+public interface TGErrorService extends IService<TGError> {
+
+}

+ 116 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/ActivitiConsumerServiceImpl.java

@@ -0,0 +1,116 @@
+package com.qmth.sop.business.service.impl;
+
+import com.qmth.sop.business.mapper.SysUserMapper;
+import com.qmth.sop.business.service.ActivitiConsumerService;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.repository.DeploymentBuilder;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class ActivitiConsumerServiceImpl implements ActivitiConsumerService {
+
+    @Resource
+    private RuntimeService runtimeService;
+
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private RepositoryService repositoryService;
+
+    @Resource
+    SysUserMapper sysUserMapper;
+
+    /**
+     * 注册一个流程
+     *
+     * @return
+     */
+    @Override
+    public boolean createDeployment() {
+        DeploymentBuilder builder = repositoryService.createDeployment();
+        builder.addClasspathResource("test1.bpmn");
+        builder.deploy();
+        return true;
+    }
+
+    /**
+     * 查询待办
+     *
+     * @return
+     */
+    @Override
+    public boolean getTaskList() {
+        //获取待办的一些信息,这里可以传入需要查询的用户,
+        //我这里查询的所有待办
+        List<Task> tasks = taskService.createTaskQuery().list();
+        for (Task t : tasks) {
+            System.out.println(t.getCreateTime());
+            System.out.println(t.getId());
+            System.out.println(t.getName());
+            System.out.println(t.getProcessInstanceId());
+            System.out.println(t.getTaskDefinitionKey());
+            System.out.println(t.getParentTaskId());
+        }
+        return true;
+    }
+
+
+    /**
+     * 根据流程key开启一个流程
+     *
+     * @param key
+     * @return
+     */
+    @Override
+    public boolean startActivityDemo(String key) {
+        ProcessInstance test01 = runtimeService.startProcessInstanceByKey(key);
+        String id = test01.getId();
+        System.out.println("流程id=" + id);
+        /*  */
+        /*    String assignee = "abc";*/
+        return true;
+    }
+
+    /**
+     * 根据任务id提交任务
+     *
+     * @param taskId
+     * @return
+     */
+    @Override
+    public boolean complete(String taskId) {
+        taskService.complete(taskId);
+        return true;
+    }
+
+    /**
+     * 根据流程id直接结束流程
+     *
+     * @param runId
+     * @return
+     */
+    @Override
+    public boolean deleteProcessInstance(String runId) {
+        runtimeService.deleteProcessInstance(runId, "结束");
+        return true;
+    }
+
+    /**
+     * 根据deploymentId查找processDefinitionId
+     *
+     * @param deploymentId
+     * @return
+     */
+    @Override
+    public String findProcessDefinitionIdByDeploymentId(String deploymentId) {
+        return sysUserMapper.findProcessDefinitionIdByDeploymentId(deploymentId);
+    }
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/BasicAttachmentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.BasicAttachment;
+import com.qmth.sop.business.mapper.BasicAttachmentMapper;
+import com.qmth.sop.business.service.BasicAttachmentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 所有附件记录表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMapper, BasicAttachment> implements BasicAttachmentService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysConfig;
+import com.qmth.sop.business.mapper.SysConfigMapper;
+import com.qmth.sop.business.service.SysConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 参数表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysOrgServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysOrg;
+import com.qmth.sop.business.mapper.SysOrgMapper;
+import com.qmth.sop.business.service.SysOrgService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 学校组织架构 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> implements SysOrgService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysPrivilegeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysPrivilege;
+import com.qmth.sop.business.mapper.SysPrivilegeMapper;
+import com.qmth.sop.business.service.SysPrivilegeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 菜单权限表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, SysPrivilege> implements SysPrivilegeService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysRolePrivilegeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysRolePrivilege;
+import com.qmth.sop.business.mapper.SysRolePrivilegeMapper;
+import com.qmth.sop.business.service.SysRolePrivilegeService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色和菜单关联表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysRolePrivilegeServiceImpl extends ServiceImpl<SysRolePrivilegeMapper, SysRolePrivilege> implements SysRolePrivilegeService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysRoleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysRole;
+import com.qmth.sop.business.mapper.SysRoleMapper;
+import com.qmth.sop.business.service.SysRoleService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserRoleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysUserRole;
+import com.qmth.sop.business.mapper.SysUserRoleMapper;
+import com.qmth.sop.business.service.SysUserRoleService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户和角色关联表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.SysUser;
+import com.qmth.sop.business.mapper.SysUserMapper;
+import com.qmth.sop.business.service.SysUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBSessionServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TBSession;
+import com.qmth.sop.business.mapper.TBSessionMapper;
+import com.qmth.sop.business.service.TBSessionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 会话表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TBSessionServiceImpl extends ServiceImpl<TBSessionMapper, TBSession> implements TBSessionService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBTaskServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TBTask;
+import com.qmth.sop.business.mapper.TBTaskMapper;
+import com.qmth.sop.business.service.TBTaskService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 导入导出任务表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> implements TBTaskService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TDFormWidgetServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TDFormWidget;
+import com.qmth.sop.business.mapper.TDFormWidgetMapper;
+import com.qmth.sop.business.service.TDFormWidgetService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 动态表单控件表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TDFormWidgetServiceImpl extends ServiceImpl<TDFormWidgetMapper, TDFormWidget> implements TDFormWidgetService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TDTablePropServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TDTableProp;
+import com.qmth.sop.business.mapper.TDTablePropMapper;
+import com.qmth.sop.business.service.TDTablePropService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 表格属性表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TDTablePropServiceImpl extends ServiceImpl<TDTablePropMapper, TDTableProp> implements TDTablePropService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TFCustomFlowEntityServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TFCustomFlowEntity;
+import com.qmth.sop.business.mapper.TFCustomFlowEntityMapper;
+import com.qmth.sop.business.service.TFCustomFlowEntityService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 自定义流程实体数据 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TFCustomFlowEntityServiceImpl extends ServiceImpl<TFCustomFlowEntityMapper, TFCustomFlowEntity> implements TFCustomFlowEntityService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TFCustomFlowServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TFCustomFlow;
+import com.qmth.sop.business.mapper.TFCustomFlowMapper;
+import com.qmth.sop.business.service.TFCustomFlowService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 自定义流程表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TFCustomFlowServiceImpl extends ServiceImpl<TFCustomFlowMapper, TFCustomFlow> implements TFCustomFlowService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowApproveServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TFFlowApprove;
+import com.qmth.sop.business.mapper.TFFlowApproveMapper;
+import com.qmth.sop.business.service.TFFlowApproveService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 流程审核表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TFFlowApproveServiceImpl extends ServiceImpl<TFFlowApproveMapper, TFFlowApprove> implements TFFlowApproveService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowJoinServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TFFlowJoin;
+import com.qmth.sop.business.mapper.TFFlowJoinMapper;
+import com.qmth.sop.business.service.TFFlowJoinService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 实体和流程关联表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TFFlowJoinServiceImpl extends ServiceImpl<TFFlowJoinMapper, TFFlowJoin> implements TFFlowJoinService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TFFlowLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TFFlowLog;
+import com.qmth.sop.business.mapper.TFFlowLogMapper;
+import com.qmth.sop.business.service.TFFlowLogService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 流程流水表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TFFlowLogServiceImpl extends ServiceImpl<TFFlowLogMapper, TFFlowLog> implements TFFlowLogService {
+
+}

+ 20 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TGErrorServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.entity.TGError;
+import com.qmth.sop.business.mapper.TGErrorMapper;
+import com.qmth.sop.business.service.TGErrorService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 全局异常错误信息表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2023-07-17
+ */
+@Service
+public class TGErrorServiceImpl extends ServiceImpl<TGErrorMapper, TGError> implements TGErrorService {
+
+}

+ 35 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/export/AsyncExportTaskTemplete.java

@@ -0,0 +1,35 @@
+package com.qmth.sop.business.templete.export;
+
+import com.qmth.sop.business.templete.importData.AsyncImportTaskTemplete;
+import com.qmth.sop.common.util.Result;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+
+import java.util.Map;
+
+/**
+ * @Description: 异步导出模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public abstract class AsyncExportTaskTemplete {
+    private final static Logger log = LoggerFactory.getLogger(AsyncImportTaskTemplete.class);
+    public static final String BEGIN_TITLE = "->开始准备处理导出的";
+    public static final String FINISH_TITLE = "->数据处理结束,共处理了";
+    public static final String FINISH_SIZE = "条数据。";
+    public static final String EXCEPTION_TITLE = "->数据处理发生异常!";
+    public static final String EXCEPTION_DATA = "错误信息:";
+    public static final String EXCEPTION_CREATE_TXT_TITLE = "->创建导出日志时发生异常!";
+
+    /**
+     * 异步导出任务
+     *
+     * @param map
+     * @return
+     */
+    @Async
+    public abstract Result exportTask(Map<String, Object> map) throws Exception;
+}

+ 23 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/export/SyncExportTaskTemplete.java

@@ -0,0 +1,23 @@
+package com.qmth.sop.business.templete.export;
+
+import com.qmth.sop.common.util.Result;
+
+import java.util.Map;
+
+/**
+ * @Description: 同步导出模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public interface SyncExportTaskTemplete {
+
+    /**
+     * 同步导出任务
+     *
+     * @param map
+     * @return
+     */
+    Result exportTask(Map<String, Object> map);
+}

+ 38 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/importData/AsyncImportTaskTemplete.java

@@ -0,0 +1,38 @@
+package com.qmth.sop.business.templete.importData;
+
+import com.qmth.sop.common.util.Result;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @Description: 异步导入模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public abstract class AsyncImportTaskTemplete {
+    private final static Logger log = LoggerFactory.getLogger(AsyncImportTaskTemplete.class);
+    public static final String BEGIN_TITLE = "->开始准备处理导入的";
+    public static final String EXCEPTION_TITLE = "->数据处理发生异常!";
+    public static final String EXCEPTION_DATA = "错误信息:";
+    public static final String FINISH_TITLE = "->数据处理结束,共处理了";
+    public static final String FINISH_TOTAL_SIZE = "条数据,成功";
+    public static final String FINISH_SUCCESS_SIZE = "条数据,失败";
+    public static final String FINISH_ERROR_SIZE = "条数据";
+    public static final String EXCEPTION_CREATE_TXT_TITLE = "->创建导出日志时发生异常!";
+
+    /**
+     * 异步导入任务
+     *
+     * @param map
+     * @return
+     * @throws IOException
+     */
+    @Async
+    public abstract Result importTask(Map<String, Object> map) throws IOException, Exception;
+}

+ 26 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/importData/SyncImportTaskTemplete.java

@@ -0,0 +1,26 @@
+package com.qmth.sop.business.templete.importData;
+
+
+import com.qmth.sop.common.util.Result;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @Description: 同步导入模版
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public interface SyncImportTaskTemplete {
+
+    /**
+     * 同步导入任务
+     *
+     * @param map
+     * @return
+     * @throws IOException,NoSuchFieldException
+     */
+    Result importTask(Map<String, Object> map) throws IOException, NoSuchFieldException;
+}

+ 15 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/service/TaskLogicService.java

@@ -0,0 +1,15 @@
+package com.qmth.sop.business.templete.service;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @Description: 任务处理逻辑
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+public interface TaskLogicService {
+
+}

+ 19 - 0
sop-business/src/main/java/com/qmth/sop/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -0,0 +1,19 @@
+package com.qmth.sop.business.templete.service.impl;
+
+import com.qmth.sop.business.templete.service.TaskLogicService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 任务处理逻辑impl
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/3/29
+ */
+@Service
+public class TaskLogicServiceImpl implements TaskLogicService {
+    private final static Logger log = LoggerFactory.getLogger(TaskLogicServiceImpl.class);
+
+}

+ 5 - 0
sop-business/src/main/resources/mapper/BasicAttachmentMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.BasicAttachmentMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysConfigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysConfigMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysOrgMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysOrgMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysPrivilegeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysPrivilegeMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysRoleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysRoleMapper">
+
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysRolePrivilegeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysRolePrivilegeMapper">
+
+</mapper>

+ 8 - 0
sop-business/src/main/resources/mapper/SysUserMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysUserMapper">
+
+    <select id="findProcessDefinitionIdByDeploymentId" resultType="java.lang.String">
+        select ARP.ID_ from ACT_RE_PROCDEF ARP where ARP.DEPLOYMENT_ID_ = #{deploymentId}
+    </select>
+</mapper>

+ 5 - 0
sop-business/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.SysUserRoleMapper">
+
+</mapper>

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio