Преглед изворни кода

复制crm_qr系统,仅保留二维码回调

yusm пре 3 недеља
родитељ
комит
ffa73c94a7
100 измењених фајлова са 7676 додато и 0 уклоњено
  1. BIN
      fhKeeper/formulahousekeeper/management-crm-qrcode/0AAE1300
  2. BIN
      fhKeeper/formulahousekeeper/management-crm-qrcode/ED622300
  3. 1 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/build_package.bat
  4. 56 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/my_prod.cnf
  5. 258 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/pom.xml
  6. 44 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/PlatformStartApplication.java
  7. 35 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/BeanConfig.java
  8. 67 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/Config.java
  9. 14 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/DefaultCommonModuleConfig.java
  10. 12 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/LimitRequest.java
  11. 14 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/MyExitCodeGenerator.java
  12. 19 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/PropertyMsg.java
  13. 87 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/RefererInterceptor.java
  14. 23 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/RefererProperties.java
  15. 22 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/SchedulerConfig.java
  16. 24 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/SuperSonicConfig.java
  17. 28 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/WebConfig.java
  18. 50 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/WebMvcConfig.java
  19. 62 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/Constant.java
  20. 27 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/MybatisPlusPageConfig.java
  21. 44 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/Parameter.java
  22. 204 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/controller/WechatCallbackController.java
  23. 50 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AIQuestion.java
  24. 86 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AIQuestionDetail.java
  25. 71 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ActionLog.java
  26. 41 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AlertTime.java
  27. 99 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AttachmentCenter.java
  28. 78 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditLogCenter.java
  29. 93 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditWorkflowSetting.java
  30. 87 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditWorkflowTimeSetting.java
  31. 47 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusObjRelation.java
  32. 27 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusObject.java
  33. 95 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusReportStore.java
  34. 48 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessItemCustom.java
  35. 89 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessItemProduct.java
  36. 223 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessOpportunity.java
  37. 73 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessProduct.java
  38. 183 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessTrip.java
  39. 67 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BustripAuditLog.java
  40. 82 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BustripProject.java
  41. 56 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CategoryRatioTblSetting.java
  42. 206 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Clue.java
  43. 56 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ClueLog.java
  44. 68 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ClueUploadfile.java
  45. 36 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ColumnFixTrans.java
  46. 54 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CommonUse.java
  47. 175 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Company.java
  48. 48 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyCert.java
  49. 56 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyCustomerContact.java
  50. 125 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyDingding.java
  51. 43 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyReport.java
  52. 58 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactSyncLog.java
  53. 170 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Contacts.java
  54. 112 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactsDocument.java
  55. 75 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactsLog.java
  56. 236 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Contract.java
  57. 129 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractCustom.java
  58. 106 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractDocument.java
  59. 76 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractLog.java
  60. 64 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractModifyRecord.java
  61. 98 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractPayCustomized.java
  62. 100 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractPayment.java
  63. 51 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractType.java
  64. 60 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractTypeSec.java
  65. 54 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxJobResult.java
  66. 53 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxPreAuthCode.java
  67. 46 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxRegisterCode.java
  68. 90 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CusReportForm.java
  69. 46 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CusTableColumn.java
  70. 275 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Custom.java
  71. 48 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomItemContacts.java
  72. 61 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomMultipartFile.java
  73. 78 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomerInfo.java
  74. 49 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DdCallback.java
  75. 13 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DdingCardTimeItem.java
  76. 108 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Department.java
  77. 57 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentDingding.java
  78. 60 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentFeishu.java
  79. 48 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentOtherManager.java
  80. 57 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentWx.java
  81. 105 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/EarningSnapshot.java
  82. 68 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/EstimateTimeSetting.java
  83. 59 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExcelMultipartFile.java
  84. 44 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseAuditSetting.java
  85. 119 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseItem.java
  86. 58 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseMainType.java
  87. 42 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpensePayWay.java
  88. 163 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseSheet.java
  89. 58 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseType.java
  90. 54 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FastAccess.java
  91. 75 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FeishuInfo.java
  92. 60 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FeishuSend.java
  93. 191 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Finance.java
  94. 38 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceAuditor.java
  95. 83 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceCalculate.java
  96. 205 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceFixedcolname.java
  97. 104 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceImport.java
  98. 68 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceProjects.java
  99. 51 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceTblcuscol.java
  100. 0 0
      fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FormFieldHead.java

BIN
fhKeeper/formulahousekeeper/management-crm-qrcode/0AAE1300


BIN
fhKeeper/formulahousekeeper/management-crm-qrcode/ED622300


+ 1 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/build_package.bat

@@ -0,0 +1 @@
+mvn package

+ 56 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/my_prod.cnf

@@ -0,0 +1,56 @@
+# For advice on how to change settings please see
+# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
+[mysqld_multi]
+
+mysqld =/usr/sbin/mysqld
+mysqladmin = /usr/bin/mysqladmin
+[mysqld]
+#
+# Remove leading # and set to the amount of RAM for the most important data
+# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
+# innodb_buffer_pool_size = 128M
+#
+# Remove leading # to turn on a very important data integrity option: logging
+# changes to the binary log between backups.
+# log_bin
+#
+# Remove leading # to set options mainly useful for reporting servers.
+# The server defaults are faster for transactions and fast SELECTs.
+# Adjust sizes as needed, experiment to find the optimal values.
+# join_buffer_size = 128M
+# sort_buffer_size = 2M
+# read_rnd_buffer_size = 2M
+port=7644
+datadir=/var/lib/mysql
+socket=/var/lib/mysql/mysql.sock
+server_id=2 
+# Disabling symbolic-links is recommended to prevent assorted security risks
+symbolic-links=0
+
+max_allowed_packet = 10M
+
+log-error=/var/log/mysqld.log
+pid-file=/var/run/mysqld/mysqld.pid
+sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+[mysqld1] 
+basedir=/usr
+
+datadir = /data/mysql1      
+
+port = 3307
+server_id=3
+socket = /tmp/mysql3307.sock
+
+skip-host-cache
+
+skip-name-resolve
+
+character-set-server=utf8
+
+sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
+
+wait_timeout=2147483 
+
+interactive_timeout=2147483
+
+max_allowed_packet = 10M

+ 258 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/pom.xml

@@ -0,0 +1,258 @@
+<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>formulahousekeeper</artifactId>
+        <groupId>com.hssx.parent</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.hssx.parent</groupId>
+    <artifactId>timesheet-crm-qrcode</artifactId>
+    <version>3.4.0</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.dingtalk</groupId>
+            <artifactId>taobao-sdk-java-auto_1479188381469-20210623.jar</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${basedir}/src/main/resources/lib/taobao-sdk-java-auto_1479188381469-20210623.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.9.8</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!--easyExcel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+        </dependency>
+        <!--Map依赖 -->
+        <dependency>
+            <groupId>net.jodah</groupId>
+            <artifactId>expiringmap</artifactId>
+            <version>0.5.10</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+        <!-- mybatis-plus代码生成器依赖 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+        </dependency>
+
+
+
+
+        <!-- fastjson -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>2.0.39</version>
+        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.dingtalk</groupId>-->
+<!--            <artifactId>taobao-sdk-java-auto_1479188381469-20210623.jar</artifactId>-->
+<!--            <version>1.0</version>-->
+<!--            <scope>system</scope>-->
+<!--            <systemPath>${basedir}/src/main/resources/lib/taobao-sdk-java-auto_1479188381469-20210623.jar</systemPath>-->
+<!--        </dependency>-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dingtalk</artifactId>
+            <version>1.1.50</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baidu.aip</groupId>
+            <artifactId>java-sdk</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
+        <!--开启aop支持-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <!-- logback -->
+        <!--<dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+            <version>6.3</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+            <version>1.2.3</version>
+        </dependency>-->
+
+
+        <!--     tess4j相关依赖   -->
+        <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
+        <dependency>
+            <groupId>net.sourceforge.tess4j</groupId>
+            <artifactId>tess4j</artifactId>
+        </dependency>
+
+        <!--微信模版消息推送三方sdk-->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-mp</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.55</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dysmsapi20170525</artifactId>
+            <version>2.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- 获取客户端信息 -->
+        <!-- https://mvnrepository.com/artifact/eu.bitwalker/UserAgentUtils -->
+        <dependency>
+            <groupId>eu.bitwalker</groupId>
+            <artifactId>UserAgentUtils</artifactId>
+            <version>1.21</version>
+        </dependency>
+        <!--热部署-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <version>2.0.1.RELEASE</version>
+        </dependency>
+         <dependency>
+             <groupId>org.apache.velocity</groupId>
+             <artifactId>velocity-engine-core</artifactId>
+             <version>2.0</version>
+         </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--配置阿里云仓库-->
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>bintray-qcloud-maven-repo</id>
+            <name>qcloud-maven-repo</name>
+            <url>https://dl.bintray.com/qcloud/maven-repo/</url>
+            <layout>default</layout>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+</project>

+ 44 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/PlatformStartApplication.java

@@ -0,0 +1,44 @@
+package com.management.platform;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+/**
+ * Author: 吴涛涛
+ * Date : 2019 - 12 - 31 9:23
+ * Description:<描述>
+ * Version: 1.0
+ */
+@SpringBootApplication
+@MapperScan("com.management.platform.mapper")
+@EnableTransactionManagement //开启事务支持
+@EnableAsync
+@EnableScheduling
+public class PlatformStartApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(PlatformStartApplication.class, args);
+        //ldap ssl链接很关键的
+        System.setProperty("com.sun.jndi.ldap.object.disableEndpointIdentification","true");
+    }
+
+    //防止存入redis数据后乱码
+    @Bean(name = "redisTemplate")
+    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, String> template = new RedisTemplate<>();
+        template.setConnectionFactory(factory);
+        template.setKeySerializer(new StringRedisSerializer());
+        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
+        template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
+        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
+        template.afterPropertiesSet();
+        return template;
+    }
+}

+ 35 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/BeanConfig.java

@@ -0,0 +1,35 @@
+package com.management.platform.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+@EnableAsync
+public class BeanConfig {
+
+    @Bean(name = "taskExecutor")
+    public TaskExecutor taskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        // 设置核心线程数
+        executor.setCorePoolSize(5);
+        // 设置最大线程数
+        executor.setMaxPoolSize(10);
+        // 设置队列容量
+        executor.setQueueCapacity(20);
+        // 设置线程活跃时间(秒)
+        executor.setKeepAliveSeconds(60);
+        // 设置默认线程名称
+        executor.setThreadNamePrefix("crm-");
+        // 设置拒绝策略
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 等待所有任务结束后再关闭线程池
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        System.out.println("初始化TaskExecutor");
+        return executor;
+    }
+}

+ 67 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/Config.java

@@ -0,0 +1,67 @@
+package com.management.platform.config;
+
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustStrategy;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.ssl.SSLContexts;
+import org.apache.tomcat.jni.SSL;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+import javax.net.ssl.SSLContext;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+
+@Configuration
+public class Config {
+
+  @Bean
+  public RestTemplate restTemplate()
+  {
+    ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());
+    System.out.println("@@@===初始化RestRemplate===@@");
+    return new RestTemplate(requestFactory);
+  }
+  /**
+   * Apache HttpClient
+   *
+   * @return
+   * @see [类、类#方法、类#成员]
+   */
+  private HttpClient httpClient()
+  {
+    // 支持HTTP、HTTPS
+    Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory> create()
+            .register("http", PlainConnectionSocketFactory.getSocketFactory())
+            .register("https", SSLConnectionSocketFactory.getSocketFactory())
+            .build();
+    PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
+    connectionManager.setMaxTotal(200);
+    connectionManager.setDefaultMaxPerRoute(100);
+    connectionManager.setValidateAfterInactivity(2000);
+    RequestConfig requestConfig = RequestConfig.custom()
+            // 服务器返回数据(response)的时间,超时抛出read timeout
+            .setSocketTimeout(65000)
+            // 连接上服务器(握手成功)的时间,超时抛出connect timeout
+            .setConnectTimeout(5000)
+            // 从连接池中获取连接的超时时间,超时抛出ConnectionPoolTimeoutException
+            .setConnectionRequestTimeout(1000)
+            .build();
+    return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager).build();
+  }
+}

+ 14 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/DefaultCommonModuleConfig.java

@@ -0,0 +1,14 @@
+package com.management.platform.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "defaultcommonmodules")
+public class DefaultCommonModuleConfig {
+    private List<String> path;
+}

+ 12 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/LimitRequest.java

@@ -0,0 +1,12 @@
+package com.management.platform.config;
+
+import java.lang.annotation.*;
+
+@Documented
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LimitRequest {
+    //毫秒,分钟,小时 之间的转换用算数
+    long time() default 60000; // 限制时间 单位:毫秒
+    int count() default Integer.MAX_VALUE; // 允许请求的次数
+}

+ 14 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/MyExitCodeGenerator.java

@@ -0,0 +1,14 @@
+package com.management.platform.config;
+
+import org.springframework.boot.ExitCodeGenerator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MyExitCodeGenerator implements ExitCodeGenerator {
+    @Override
+    public int getExitCode() {
+        System.out.println("Spring Boot shutting down.");
+        return 0;
+    }
+}
+

+ 19 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/PropertyMsg.java

@@ -0,0 +1,19 @@
+package com.management.platform.config;
+
+import java.lang.annotation.*;
+
+/**
+ *  属性信息注解,仅仅可以用于域声明
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+public @interface PropertyMsg {
+    /**
+     * 提示语,用于标记哪个字段发生变更
+     *
+     * @return 提示语
+     */
+    String value();
+}

+ 87 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/RefererInterceptor.java

@@ -0,0 +1,87 @@
+package com.management.platform.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.AntPathMatcher;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.MalformedURLException;
+
+public class RefererInterceptor extends HandlerInterceptorAdapter {
+    static final Logger LOGGER = LoggerFactory.getLogger(RefererInterceptor.class);
+
+    // URL匹配器
+    private AntPathMatcher matcher = new AntPathMatcher();
+    @Resource
+    private RefererProperties properties;
+
+    @Value(value = "${excludeUrls}")
+    private String excludeUrls;
+    @Value("${configEnv.isDev}")
+    public boolean isDev;
+
+    @Override
+    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
+        if (isDev) return true;
+        String referer = req.getHeader("referer");
+        String host = req.getServerName();
+        //对外开放的回调url排除在外
+        String reqUrl = req.getRequestURI();
+//        System.out.println(reqUrl);
+        if (!StringUtils.isEmpty(excludeUrls)) {
+            String[] split = excludeUrls.split(",");
+            boolean isPass = false;
+            for (String pattern: split) {
+                if (matcher.match(pattern, reqUrl)) {
+                    isPass = true;
+                    break;
+                }
+            }
+            if (isPass) {
+                return true;
+            }
+        }
+        // 只验证POST请求
+        if ("POST".equals(req.getMethod())) {
+            //本地开发环境不验证
+            if (referer == null) {
+                System.out.println("===referer为Null, 返回404,拦截==");
+                // 状态置为404
+                resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                return false;
+            }
+            java.net.URL url = null;
+            try {
+                url = new java.net.URL(referer);
+            } catch (MalformedURLException e) {
+                // URL解析异常,也置为404
+                resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
+                return false;
+            }
+            boolean isSame = false;
+            if (host.equals(url.getHost())) {
+                isSame = true;
+            }
+            // 首先判断请求域名和referer域名是否相同
+            if (!isSame) {
+                // 如果不等,判断是否在白名单中
+                if (properties.getRefererDomain() != null) {
+                    for (String s : properties.getRefererDomain()) {
+                        if (s.equals(url.getHost())) {
+                            return true;
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+        return true;
+    }
+}
+

+ 23 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/RefererProperties.java

@@ -0,0 +1,23 @@
+package com.management.platform.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+@ConfigurationProperties(prefix = "referer")
+public class RefererProperties {
+    // 白名单域名
+    private List<String> refererDomain;
+    //setter,getter方法
+
+
+    public List<String> getRefererDomain() {
+        return refererDomain;
+    }
+
+    public void setRefererDomain(List<String> refererDomain) {
+        this.refererDomain = refererDomain;
+    }
+}

+ 22 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/SchedulerConfig.java

@@ -0,0 +1,22 @@
+package com.management.platform.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.TaskScheduler;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
+
+@Configuration
+@EnableScheduling
+public class SchedulerConfig {
+    @Bean
+    public TaskScheduler taskScheduler() {
+        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
+        //线程池大小
+        scheduler.setPoolSize(10);
+        //线程名字前缀
+        scheduler.setThreadNamePrefix("spring-task-thread");
+        return scheduler;
+    }
+}
+

+ 24 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/SuperSonicConfig.java

@@ -0,0 +1,24 @@
+package com.management.platform.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+public class SuperSonicConfig {
+    @Value("${supersonic.use:false}")
+    private Boolean supersonicUse;
+
+    @Value("${supersonic.ip:localhost}")
+    private String supersonicIP;
+
+    @Value("${supersonic.port:9080}")
+    private String supersonicPort;
+
+    @Value("${supersonic.username:admin}")
+    private String supersonicUserName;
+
+    @Value("${supersonic.password:e6+jQ26AESREiBBuKM1u1A==}")
+    private String supersonicPassWord;
+}

+ 28 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/WebConfig.java

@@ -0,0 +1,28 @@
+package com.management.platform.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@EnableWebMvc
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+    @Bean
+    public RefererInterceptor refererInterceptor() {
+        return new RefererInterceptor();
+    }
+
+    /**
+     * 注册拦截器
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        //referer拦截
+        registry.addInterceptor(refererInterceptor());
+    }
+
+
+}

+ 50 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/config/WebMvcConfig.java

@@ -0,0 +1,50 @@
+package com.management.platform.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.i18n.CookieLocaleResolver;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+
+import java.util.Locale;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    /**
+     * 国际化配置
+     */
+    @Bean
+    public LocaleResolver localeResolver(){
+//		SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
+//		sessionLocaleResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
+//		return sessionLocaleResolver;
+        //使用CookieLocaleResolver,也可使用SessionLocaleResolver,区别在于一个使用Cookie存储Locale信息,一个使用Session
+        CookieLocaleResolver localeResolver = new CookieLocaleResolver();
+        localeResolver.setCookieName("localeCookie");
+        //设置默认区域
+        localeResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
+        localeResolver.setCookieMaxAge(3600);//设置cookie有效期.
+        return localeResolver;
+    }
+
+    /**
+     *
+     * 添加Locale 拦截器,从请求参数lang中获取参数值,这样我们可以通过lang RequestParam来切换Locale信息
+     */
+    @Bean
+    public LocaleChangeInterceptor localeChangeInterceptor(){
+        LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
+        localeChangeInterceptor.setParamName("lang");
+        return localeChangeInterceptor;
+    }
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        //添加locale拦截器
+        registry.addInterceptor(localeChangeInterceptor());
+    }
+
+}
+

+ 62 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/Constant.java

@@ -0,0 +1,62 @@
+package com.management.platform.constant;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * Author: 吴涛涛
+ * Date : 2019 - 07 - 24 16:00
+ * Description:<描述>常量配置类
+ * Version: 1.0
+ */
+@Component
+public class Constant {
+//    public static final String API_KEY = "gtImOYhgcFBzwuT29tB7tM0Z";//百度文字识别apiKey
+//    public static final String SECRET_KEY = "RipT5kfF3Zqp7S2vTXPlNcMiYcA76jfq";//百度文字识别secretKey
+    public static final String API_KEY = "UgceK95dGkVbQKicVDU9D6s2";//百度文字识别apiKey
+    public static final String SECRET_KEY = "fGCbfC9CR1v8Pf1u6kG4fM9KEXHgitAA";//百度文字识别secretKey
+    public static final Integer UN_HANDLE = 0;//定时任务未处理的状态码
+    public static final String PIC_PATH_PREFIX = "";//定时任务未处理的状态码
+    public static final String COMMON_SOFTWARE_KEYWORDS = "keyWords";//常用软件关键字
+    public static final String[] keyWords = new String[]{"IntelliJ IDEA","Eclipse",
+            "Postman","MyEclipse","Visual Studio Code",
+            "Navicat","Pycharm","Android Studio",
+            "WebStorm","SQLyog","PhpStorm",
+            "JetBrains Datagrip","JetBrains Rider",
+            "Android Studio","Photoshop","Illustrator",
+            "Adobe After Effects","Axure RP","Sketch"};//定时任务未处理的状态码
+//    public static final String ACCESS_KEY = "280d6f0e4a774117905ba789a9f0b978";//百度图像识别accessKey
+//    public static final String SECRET_KEY = "43b460e124eb474c8cdb7441dc30d66d";//百度图像识别secretKey
+    //角色定义
+    public static final String[] ROLE_NAMES = {"普通员工","超级管理员", "系统管理员", "无","财务管理员","项目管理员","公司领导","项目经理"};
+
+    public static final String ROLE_SUPER_MANAGER = "超级管理员";
+
+    public static final String[] DEFAULT_BASE_COST_ITEMS = {"人工成本","一般费用","外包费用","其他"};
+
+    public static final String[] LEAVE_TYPES = {"事假","病假","年假","产假","婚假","丧假","调休假","陪产假","其他"};
+
+    public static final String[] EXPENSE_TYPES = {"材料费","办公用品","培训费","打印费","快递费","制作费","律师费","水费","电费","团建费","其他",
+                                        "城市间交通费","住宿费","伙食补助费","市内交通费","其他差旅费","项目外包费","劳务外包费","其他外包费"};
+
+    //项目报告审核通知
+    public static final String[] PROJECT_REPORT_CHECK = {"审核结果","项目名称","填报人员","工作日期"};
+    //工作日报漏填提醒
+    public static final String[] WORK_REPORT_MISSING_FILLING = {"提示"};
+    //新任务通知
+    public static final String[] NEW_TASK = {"任务内容"};
+    //日报待审核提醒
+    public static final String[] REPORT_WAIT_CHECK = {"待审核数量"};
+    //日报审核通过提醒
+    public static final String[] REPORT_CHECK_PASS = {"审核人","日期"};
+    //日报审核通过提醒(带评价)
+    public static final String[] REPORT_CHECK_PASS_WITH_APPRAISE = {"审核人","评价","日期"};
+    //任务进展通知
+    public static final String[] TASK_EVOLVE= {"项目名称","任务名称","进展内容","任务状态"};
+    //费用报销待审核提醒
+    public static final String[] EXPENSE_REIMBURSEMENT_WAIT_CHECK= {"报销人","填报日期","票据类型","金额","备注"};
+    //员工请假待审核
+    public static final String[] LEAVE_WAIT_CHECK= {"请假人","请假类型","请假时间","备注"};
+    //请假审核通知
+    public static final String[] LEAVE_CHECK= {"审核结果","审核人","请假时间","备注"};
+    public static final int JUN_TIAN_COMPANY_ID= 6666;
+}

+ 27 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/MybatisPlusPageConfig.java

@@ -0,0 +1,27 @@
+package com.management.platform.constant;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+//Spring boot方式
+@EnableTransactionManagement
+@Configuration
+@MapperScan("com.management.platform.mapper")
+public class MybatisPlusPageConfig {
+
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
+        // paginationInterceptor.setOverflow(false);
+        // 设置最大单页限制数量,默认 500 条,-1 不受限制
+        // paginationInterceptor.setLimit(500);
+        // 开启 count 的 join 优化,只针对部分 left join
+        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
+        return paginationInterceptor;
+    }
+}

+ 44 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/constant/Parameter.java

@@ -0,0 +1,44 @@
+package com.management.platform.constant;
+
+/**
+ * Author: 吴涛涛
+ * Date : 2020 - 01 - 06 11:19
+ * Description:<描述> 参数枚举
+ * Version: 1.0
+ */
+public enum Parameter {
+    //accessToken
+    ACCESS_TOKEN("accessToken", "accessToken"),
+    //accessToken 的有效时间 单位:s
+    EXPIRES_IN("expiresIn", "expiresIn");
+
+    private String code;
+    private String name;
+
+    private Parameter(String code, String name) {
+        this.code = code;
+//        this.name = name();
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+//    public static void main(String[] args) {
+//        System.out.println(Parameter.API_KEY.getName());
+//    }
+
+}

+ 204 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/controller/WechatCallbackController.java

@@ -0,0 +1,204 @@
+package com.management.platform.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Custom;
+import com.management.platform.entity.MiniBindUser;
+import com.management.platform.entity.User;
+import com.management.platform.service.CustomService;
+import com.management.platform.service.MiniBindUserService;
+import com.management.platform.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+@RestController
+@RequestMapping("/wechat")
+@Slf4j
+public class WechatCallbackController {
+    private final String TOKEN = "FireRockCRM2025";
+
+    @Resource
+    private MiniBindUserService miniBindUserService;
+
+    @Resource
+    private UserService userService;
+
+    @Resource
+    private CustomService customService;
+
+    // 微信配置验证接口(GET请求)
+    @GetMapping("/callback")
+    public String validate(@RequestParam("signature") String signature,
+                           @RequestParam("timestamp") String timestamp,
+                           @RequestParam("nonce") String nonce,
+                           @RequestParam("echostr") String echostr) {
+        log.info("进入了微信配置验证接口");
+
+        // 1. 将Token、timestamp、nonce按字典序排序
+        String[] arr = new String[]{TOKEN, timestamp, nonce};
+        Arrays.sort(arr);
+
+        // 2. 拼接后SHA1加密
+        String joined = String.join("", arr);
+        String calculatedSignature = DigestUtils.sha1Hex(joined);
+
+        // 3. 验证签名
+        if (calculatedSignature.equals(signature)) {
+            log.info("Invalid signature==>GET请求验证签名成功");
+            return echostr; // 验证成功返回echostr
+        }
+        log.info("Invalid signature==>GET请求验证失败");
+        return "Invalid signature"; // 验证失败
+    }
+
+    @PostMapping(produces = "application/xml;charset=UTF-8",value = "/callback")
+    public String handleMessage(@RequestBody String xmlData) {
+        log.info("接收到微信消息/事件:\n{}", xmlData);
+        try {
+            Document document = DocumentHelper.parseText(xmlData);
+            Element root = document.getRootElement();
+
+            String msgType = root.elementText("MsgType");
+            if (!"event".equals(msgType)) {
+                return successResponse(root);
+            }
+
+            String event = root.elementText("Event");
+            String openId = root.elementText("FromUserName");
+
+            switch (event) {
+                case "subscribe": // 关注事件
+                    log.info("用户关注: OpenID={}", openId);
+                    handleSubscribe(openId);
+                    return buildWelcomeMessage(root);
+
+                case "unsubscribe": // 取消关注事件
+                    log.info("用户取消关注: OpenID={}", openId);
+                    handleUnsubscribe(openId);
+                    return successResponse(root);
+
+                case "SCAN": // 扫码事件(已关注用户)
+                    log.info("已关注用户扫码: OpenID={}", openId);
+                    handleScan(openId);
+                    return successResponse(root);
+
+                default:
+                    log.info("忽略的事件类型: {}", event);
+                    return successResponse(root);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("回调处理逻辑失败==>"+e.getMessage());
+            return "";
+        }
+    }
+
+
+    private void handleSubscribe(String openId) {
+        // 实现用户关注的业务逻辑
+        log.info("处理用户关注逻辑: {}", openId);
+        List<MiniBindUser> miniBindUserList = miniBindUserService.list(new QueryWrapper<MiniBindUser>().eq("openid", openId));
+        if (!miniBindUserList.isEmpty()) {
+            if (customService.count(new QueryWrapper<Custom>().eq("custom_name", openId))==0){
+                MiniBindUser miniBindUser = miniBindUserList.get(0);
+                Custom custom = new Custom();
+                custom.setCustomName(openId);//用户的openId
+                custom.setIsDelete(0);
+                custom.setCreateTime(new Date());
+                if (StringUtils.isNotEmpty(miniBindUser.getUserId())) {
+                    custom.setInchargerId(miniBindUser.getUserId());
+                    User user = userService.getById(miniBindUser.getUserId());
+                    custom.setCompanyId(user != null ? user.getCompanyId() : null);
+                    customService.save(custom);
+                    log.info("新增客户成功");
+                }
+            }else {
+                log.info(openId+":系统中已存在对应的客户");
+            }
+        }else {
+            log.info(openId+":对应的客户,暂未绑定相关的销售人员");
+        }
+    }
+
+    private void handleUnsubscribe(String openId) {
+        // 实现用户取消关注的业务逻辑
+        customService.remove(new QueryWrapper<Custom>().eq("custom_name", openId));
+        log.info("处理用户取消关注逻辑: {}", openId);
+    }
+
+    private void handleScan(String openId) {
+        log.info("处理用户扫码逻辑: {}", openId);
+    }
+
+    // ========== 响应消息构建方法 ==========
+
+    private String successResponse(Element root) {
+        return String.format(
+                "<xml>" +
+                        "<ToUserName><![CDATA[%s]]></ToUserName>" +
+                        "<FromUserName><![CDATA[%s]]></FromUserName>" +
+                        "<CreateTime>%d</CreateTime>" +
+                        "<MsgType><![CDATA[text]]></MsgType>" +
+                        "<Content><![CDATA[success]]></Content>" +
+                        "</xml>",
+                root.elementText("FromUserName"),
+                root.elementText("ToUserName"),
+                System.currentTimeMillis() / 1000);
+    }
+
+    private String errorResponse() {
+        return "error";
+    }
+
+  /*  private String buildWelcomeMessage(Element root) {
+        String welcomeText = "感谢您的关注!\n" +
+                "请点击下方链接完成后续操作:\n" +
+                "https://mobcrm.ttkuaiban.com/guideAttentionToOfficialAccount\n" +
+                "(如果无法直接点击,请复制链接到浏览器打开)";
+
+        return String.format(
+                "<xml>" +
+                        "<ToUserName><![CDATA[%s]]></ToUserName>" +
+                        "<FromUserName><![CDATA[%s]]></FromUserName>" +
+                        "<CreateTime>%d</CreateTime>" +
+                        "<MsgType><![CDATA[text]]></MsgType>" +
+                        "<Content><![CDATA[%s]]></Content>" +
+                        "</xml>",
+                root.elementText("FromUserName"),
+                root.elementText("ToUserName"),
+                System.currentTimeMillis() / 1000,
+                welcomeText);
+    }*/
+
+    private String buildWelcomeMessage(Element root) {
+        return String.format(
+                "<xml>" +
+                        "<ToUserName><![CDATA[%s]]></ToUserName>" +
+                        "<FromUserName><![CDATA[%s]]></FromUserName>" +
+                        "<CreateTime>%d</CreateTime>" +
+                        "<MsgType><![CDATA[news]]></MsgType>" +
+                        "<ArticleCount>1</ArticleCount>" +
+                        "<Articles>" +
+                        "<item>" +
+                        "<Title><![CDATA[欢迎关注]]></Title>" +  // 必须字段
+                        "<Description><![CDATA[点击关注公众号]]></Description>" +
+                        "<Url><![CDATA[https://mobcrm.ttkuaiban.com/guideAttentionToOfficialAccount]]></Url>" +
+                        "</item>" +
+                        "</Articles>" +
+                        "</xml>",
+                root.elementText("FromUserName"),
+                root.elementText("ToUserName"),
+                System.currentTimeMillis() / 1000);
+    }
+
+}

+ 50 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AIQuestion.java

@@ -0,0 +1,50 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ai_question")
+public class AIQuestion extends Model<AIQuestion> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "question_id",type = IdType.AUTO)
+    private Integer questionId;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 会话名称
+     */
+    @TableField("name")
+    private String name;
+
+
+}

+ 86 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AIQuestionDetail.java

@@ -0,0 +1,86 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ai_question_detail")
+public class AIQuestionDetail extends Model<AIQuestionDetail> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "detail_id",type = IdType.AUTO)
+    private Integer detailId;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("question_id")
+    private Integer questionId;
+
+    /**对话类型 0ai 1客户*/
+    @TableField("type")
+    private Integer type;
+
+    /**对话内容*/
+    @TableField("content")
+    private String content;
+
+    /**排序*/
+    @TableField("seq")
+    private Integer seq;
+
+    /**数据来源 1系统表 2自定义报表 3本地上传 4自由对话*/
+    @TableField("question_data_source")
+    private Integer questionDataSource;
+
+    /**来源内容 系统表存表名 报表存formId 文件存文件名*/
+    @TableField("source_content")
+    private String sourceContent;
+
+    /**文件路径*/
+    @TableField("url")
+    private String url;
+
+    /**
+     * 系统表查询的开始时间
+     */
+    @TableField("start_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startDate;
+
+    /**
+     * 系统表查询的结束时间
+     */
+    @TableField("end_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endDate;
+
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+}

+ 71 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ActionLog.java

@@ -0,0 +1,71 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ActionLog extends Model<ActionLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模块id
+     */
+    @TableField("item_id")
+    private Integer itemId;
+
+    /**
+     * 操作时间
+     */
+    @TableField("creat_time")
+    private Date creatTime;
+
+    /**
+     * 操作内容
+     */
+    @TableField("name")
+    private String name;
+    @TableField(exist = false)
+    private String userName;
+
+    /**
+     * 创建人id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 模块代码
+     */
+    @TableField("code")
+    private String code;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 41 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AlertTime.java

@@ -0,0 +1,41 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-05-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class AlertTime extends Model<AlertTime> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 提醒时间; 例如18:00
+     */
+    @TableField("alert_time")
+    private String alertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 99 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AttachmentCenter.java

@@ -0,0 +1,99 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class AttachmentCenter extends Model<AttachmentCenter> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 附件名称
+     */
+    @TableField("attachment_name")
+    private String attachmentName;
+
+    /**
+     * 服务器生成的附件
+     */
+    @TableField("server_name")
+    private String serverName;
+
+    /**
+     * 对外访问地址
+     */
+    @TableField("url")
+    private String url;
+
+    @TableField("creator_id")
+    private String creatorId;
+
+    @TableField("creator_name")
+    private String creatorName;
+
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime indate;
+
+    /**
+     * 模块id
+     */
+    @TableField("module_id")
+    private Integer moduleId;
+
+    /**
+     * 模块代码
+     */
+    @TableField("module_code")
+    private String moduleCode;
+
+    /**
+     * 文件大小
+     */
+    @TableField("size")
+    private String size;
+
+    /**
+     * 文件类型
+     */
+    @TableField("attachment_type")
+    private Integer attachmentType;
+
+    /**
+     * 文件后缀
+     */
+    @TableField("attachment_suffix")
+    private String attachmentSuffix;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 78 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditLogCenter.java

@@ -0,0 +1,78 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-04-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class AuditLogCenter extends Model<AuditLogCenter> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模块id
+     */
+    @TableField("module_id")
+    private Integer moduleId;
+
+    /**
+     * 模块编码
+     */
+    @TableField("module_code")
+    private String moduleCode;
+
+    /**
+     * 操作时间
+     */
+    @TableField("audit_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime auditTime;
+
+    /**
+     * 操作人id
+     */
+    @TableField("auditor_id")
+    private String auditorId;
+
+    /**
+     * 操作人
+     */
+    @TableField("auditor_name")
+    private String auditorName;
+
+    /**
+     * 操作内容
+     */
+    @TableField("auditor_content")
+    private String auditorContent;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 93 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditWorkflowSetting.java

@@ -0,0 +1,93 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-03-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class AuditWorkflowSetting extends Model<AuditWorkflowSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 要设置的部门id,针对部门设置流程
+     */
+    @TableField("dept_id")
+    private Integer deptId;
+
+    /**
+     * 指定该节点的审核人员
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 指定该节点的审核姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 顺序
+     */
+    @TableField("seq")
+    private Integer seq;
+
+    /**
+     * 审核部门的id
+     */
+    @TableField("audit_dept_id")
+    private Integer auditDeptId;
+
+    /**
+     * 审核部门的名称
+     */
+    @TableField("audit_dept_name")
+    private String auditDeptName;
+
+    /**
+     * 1-部门审核,0-项目负责人审核,2-指定人员审核
+     */
+    @TableField("auditor_type")
+    private Integer auditorType;
+
+    /**
+     * 是否是最终审核
+     */
+    @TableField("is_final")
+    private Integer isFinal;
+
+    /**
+     * 类型:1-请假,2-出差,3-物资采购
+     */
+    @TableField("type")
+    private Integer type;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 87 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/AuditWorkflowTimeSetting.java

@@ -0,0 +1,87 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-02-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class AuditWorkflowTimeSetting extends Model<AuditWorkflowTimeSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 要设置的部门id,针对部门设置流程
+     */
+    @TableField("dept_id")
+    private Integer deptId;
+
+    /**
+     * 指定该节点的审核人员
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 指定该节点的审核姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 顺序
+     */
+    @TableField("seq")
+    private Integer seq;
+
+    /**
+     * 审核部门的id
+     */
+    @TableField("audit_dept_id")
+    private Integer auditDeptId;
+
+    /**
+     * 审核部门的名称
+     */
+    @TableField("audit_dept_name")
+    private String auditDeptName;
+
+    /**
+     * 1-部门审核,0-项目负责人审核
+     */
+    @TableField("is_dept_audit")
+    private Integer isDeptAudit;
+
+    /**
+     * 是否是最终审核
+     */
+    @TableField("is_final")
+    private Integer isFinal;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 47 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusObjRelation.java

@@ -0,0 +1,47 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusObjRelation extends Model<BusObjRelation> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**主表*/
+    @TableField("from_tbl")
+    private String fromTbl;
+
+    /**子表*/
+    @TableField("to_tbl")
+    private String toTbl;
+
+    /**主表字段*/
+    @TableField("from_col")
+    private String fromCol;
+
+    /**主表字段对应业务对象名称*/
+    @TableField("from_col_bus_name")
+    private String fromColBusName;
+
+    /**子表字段*/
+    @TableField("to_col")
+    private String toCol;
+
+    /**字典code对应的值*/
+    @TableField("dict_code")
+    private String dictCode;
+
+    /**是否一对多关系*/
+    @TableField("one_to_many")
+    private Integer oneToMany;
+}

+ 27 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusObject.java

@@ -0,0 +1,27 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusObject extends Model<BusObject> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**业务对象名称*/
+    @TableField("name")
+    private String name;
+
+    /**对应数据库里的表名*/
+    @TableField("tbl_name")
+    private String tblName;
+}

+ 95 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusReportStore.java

@@ -0,0 +1,95 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusReportStore extends Model<BusReportStore> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**文件类型 1文件夹 2报表*/
+    @TableField("store_type")
+    private Integer storeType;
+
+    /**名称*/
+    @TableField("store_name")
+    private String storeName;
+
+    /**父级文件夹id 默认0*/
+    @TableField("parent_store_id")
+    private Integer parentStoreId;
+
+    /**创建人id*/
+    @TableField("create_by")
+    private String createBy;
+
+    @TableField(exist = false)
+    private String createName;
+
+    /**创建时间*/
+    @TableField("create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**更新人id*/
+    @TableField("update_by")
+    private String updateBy;
+
+    @TableField(exist = false)
+    private String updateName;
+    /**更新时间*/
+    @TableField("update_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date updateTime;
+
+    /**描述*/
+    @TableField("description")
+    private String description;
+
+    /**排序*/
+    @TableField("order_item")
+    private Integer orderItem;
+
+    /**关联报表id*/
+    @TableField("relate_form_id")
+    private Integer relateFormId;
+
+    /**所属公司id*/
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField(exist = false)
+    private List<BusReportStore> childStoreList = new ArrayList<>();
+
+    @TableField(exist = false)
+    private String formSql;
+
+    @TableField(exist = false)
+    private List<ReportFormAccess> deptAccessList;
+
+
+    @TableField(exist = false)
+    private List<ReportFormAccess> userAccessList;
+
+    @TableField(exist = false)
+    private Integer privilege;
+}

+ 48 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessItemCustom.java

@@ -0,0 +1,48 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-04-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusinessItemCustom extends Model<BusinessItemCustom> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+
+    /**
+     * 联系人id
+     */
+    @TableField("business_id")
+    private Integer businessId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 89 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessItemProduct.java

@@ -0,0 +1,89 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusinessItemProduct extends Model<BusinessItemProduct> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *  
+     */
+    @TableId("id")
+    private Long id;
+
+    /**
+     * 产品id
+     */
+    @TableField("product_id")
+    private Integer productId;
+    /**
+     * 产品id
+     */
+    @TableField("inventory")
+    private Integer inventory;
+    @TableField(exist = false)
+    private String productName;
+    @TableField(exist = false)
+    private String unit;
+    @TableField("price")
+    private BigDecimal price;
+//    @TableField(exist = false)
+//    private String inventory;
+    @TableField(exist = false)
+    private String productType;
+
+    /**
+     * 商机id
+     */
+    @TableField("business_id")
+    private Integer businessId;
+
+    /**
+     * 数量
+     */
+    @TableField("quantity")
+    private Integer quantity;
+
+    /**
+     * 折扣率
+     */
+    @TableField("discount")
+    private Integer discount;
+
+    /**
+     * 合计价格
+     */
+    @TableField("total_price")
+    private BigDecimal totalPrice;
+    /**
+     * 商机售价
+     */
+    @TableField("selling_price")
+    private BigDecimal sellingPrice;
+
+
+//    @Override
+//    protected Serializable pkVal() {
+//        return this.id;
+//    }
+
+}

+ 223 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessOpportunity.java

@@ -0,0 +1,223 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-12-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusinessOpportunity extends Model<BusinessOpportunity> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField(exist = false)
+    private String productName;
+    @TableField("clue_id")
+    private Integer clueId;
+
+    /**
+     * 商机名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 联系人id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+    /**
+     * 赢单\输单 理由
+     */
+    @TableField("reason")
+    private String reason;
+    @TableField(exist = false)
+    private String contactsName;
+
+    /**
+     * 客户id
+     */
+    @TableField("customer_id")
+    private Integer customerId;
+    @TableField(exist = false)
+    private String customerName;
+
+
+    /**
+     * 商机金额
+     */
+    @TableField("amount_of_money")
+    private BigDecimal amountOfMoney;
+
+    /**
+     * 预计成交日期
+     */
+    @TableField("expected_transaction_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate expectedTransactionDate;
+
+    /**
+     * 商机阶段
+     */
+    @TableField("stage_id")
+    private Integer stageId;
+
+    @TableField(exist = false)
+    private String stageValue;
+    @TableField(exist = false)
+    private String total;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+    @TableField(exist = false)
+    private String startTime;
+    @TableField(exist = false)
+    private String endTime;
+    /**
+     * 修改时间
+     */
+    @TableField("edit_time")
+    private Date editTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+    @TableField(exist = false)
+    private String creatorName;
+    /**
+     * 负责人
+     */
+    @TableField("incharger_id")
+    private String inchargerId;
+    @TableField(exist = false)
+    private String inchargerName;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+    @TableField(exist = false)
+    private String ids;
+    @TableField(exist = false)
+    private BigDecimal finalPrice;
+
+    /**
+     * 回收站(是否删除) 0-否 1-是
+     */
+    @TableField("is_delete")
+    private Integer isDelete;
+    @TableField(exist = false)
+    private Integer pageIndex;
+    @TableField(exist = false)
+    private Integer pageFrom;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate1")
+    private String plate1;
+    @TableField(exist = false)
+    private String userId;
+    @TableField(exist = false)
+    private Integer productId;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate2")
+    private String plate2;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate3")
+    private String plate3;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate4")
+    private String plate4;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate5")
+    private String plate5;
+
+    /**是否需要置顶 0/Flase 1/True*/
+    @TableField("need_pin")
+    private Boolean needPin;
+
+    /**被置顶时间*/
+    @TableField("pin_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date pinTime;
+
+    /**阶段颜色*/
+    @TableField(exist = false)
+    private String stageColor;
+
+
+//    @JsonDeserialize(using = BusinessItemProductListDeserializer.class)
+    @TableField(exist = false)
+    private String businessItemProductList;
+    @TableField(exist = false)
+    private List<BusinessItemProduct> businessItemProducts;
+    @TableField(exist = false)
+    private List<ActionLog> actionLogList;
+    @TableField(exist = false)
+    private List<Task> taskList;
+    @TableField(exist = false)
+    private List<UploadFile> uploadFilePList;
+
+    /**
+     * 排序
+     */
+    @TableField("seq")
+    private Integer seq;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 73 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessProduct.java

@@ -0,0 +1,73 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusinessProduct extends Model<BusinessProduct> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 产品id
+     */
+    @TableField("product_id")
+    private Integer productId;
+
+    /**
+     * 商机id
+     */
+    @TableField("business_id")
+    private Integer businessId;
+
+    /**
+     * 售价
+     */
+    @TableField("selling_price")
+    private BigDecimal sellingPrice;
+
+    /**
+     * 数量
+     */
+    @TableField("count")
+    private Integer count;
+
+    /**
+     * 折扣
+     */
+    @TableField("discount")
+    private BigDecimal discount;
+
+    /**
+     * 合计
+     */
+    @TableField("total")
+    private BigDecimal total;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 183 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BusinessTrip.java

@@ -0,0 +1,183 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BusinessTrip extends Model<BusinessTrip> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 申请人id
+     */
+    @TableField("owner_id")
+    private String ownerId;
+
+    /**
+     * 申请人姓名
+     */
+    @TableField("owner_name")
+    private String ownerName;
+
+    /**
+     * 出差事由
+     */
+    @TableField("reason")
+    private String reason;
+
+    /**
+     * 开始时间
+     */
+    @TableField("start_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    /**
+     * 结束时间
+     */
+    @TableField("end_date")
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    /**
+     * 0-飞机,1-火车,2-汽车,3-轮船,4-其他
+     */
+    @TableField("way")
+    private Integer way;
+
+    /**
+     * 出发城市
+     */
+    @TableField("city_from")
+    private String cityFrom;
+
+    /**
+     * 目的城市
+     */
+    @TableField("city_to")
+    private String cityTo;
+
+    /**
+     * 0-单程,1-往返
+     */
+    @TableField("go_back")
+    private Integer goBack;
+
+    /**
+     * 出差天数
+     */
+    @TableField("day_count")
+    private Integer dayCount;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 0-审核通过,1-待审核,2-驳回,3-已撤回
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 驳回原因
+     */
+    @TableField("deny_reason")
+    private String denyReason;
+
+    /**
+     * 申请时间
+     */
+    @TableField("indate")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime indate;
+
+    /**
+     * 是否已经关联
+     */
+    @TableField("is_linked")
+    private Integer isLinked;
+
+    /**
+     * 钉钉审批实例procInst_id
+     */
+    @TableField("procinst_id")
+    private String procinstId;
+
+    /**
+     * 钉钉审批实例的审批通过时间
+     */
+    @TableField("gmt_finished")
+    private String gmtFinished;
+
+    /**
+     * 审核人id
+     */
+    @TableField("auditor_id")
+    private String auditorId;
+
+    /**
+     * 审核人姓名
+     */
+    @TableField("auditor_name")
+    private String auditorName;
+
+    /**
+     * 1-部门审核,2-指定人员审核
+     */
+    @TableField("auditor_type")
+    private Integer auditorType;
+
+    /**
+     * 当前审核节点id
+     */
+    @TableField("cur_audit_setting_id")
+    private Integer curAuditSettingId;
+
+    @TableField(exist = false)
+    private String departmentName;
+
+    @TableField(exist = false)
+    List<BustripProject> projectList;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 67 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BustripAuditLog.java

@@ -0,0 +1,67 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-12-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BustripAuditLog extends Model<BustripAuditLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 表单id
+     */
+    @TableField("sheet_id")
+    private Integer sheetId;
+
+    /**
+     * 审批节点id
+     */
+    @TableField("audit_node_id")
+    private Integer auditNodeId;
+
+    @TableField("auditor_id")
+    private String auditorId;
+
+    @TableField("auditor_name")
+    private String auditorName;
+
+    /**
+     * 是否审核通过,1-通过,0-驳回
+     */
+    @TableField("is_pass")
+    private Integer isPass;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    @TableField("deny_reason")
+    private String denyReason;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 82 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/BustripProject.java

@@ -0,0 +1,82 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class BustripProject extends Model<BustripProject> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 出差记录id
+     */
+    @TableField("bustrip_id")
+    private Integer bustripId;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 开始日期
+     */
+    @TableField("start_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    /**
+     * 结束日期
+     */
+    @TableField("end_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    /**
+     * 自定义维度id
+     */
+    @TableField("degree_id")
+    private Integer degreeId;
+
+    /**
+     * 自定义维度内容
+     */
+    @TableField("degree_name")
+    private String degreeName;
+    @TableField(exist = false)
+    private String projectName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 56 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CategoryRatioTblSetting.java

@@ -0,0 +1,56 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CategoryRatioTblSetting extends Model<CategoryRatioTblSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id做主键
+     */
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 检测的项目分类id
+     */
+    @TableField("monitor_category_id")
+    private Integer monitorCategoryId;
+
+    /**
+     * 百分比
+     */
+    @TableField("ratio")
+    private Integer ratio;
+
+    /**
+     * 0-低于,1-高于
+     */
+    @TableField("more_or_less")
+    private Integer moreOrLess;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 206 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Clue.java

@@ -0,0 +1,206 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-02-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@Setter
+@Getter
+public class Clue extends Model<Clue> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;/**
+     * 公司id
+     */
+    @TableField("is_bo")
+    private Integer isBo;
+    //创建人
+    @TableField("create_id")
+    private String createId;
+    @TableField(exist = false)
+    private String createName;
+
+    /**
+     * 线索名称
+     */
+    @TableField("clue_name")
+    private String clueName;
+
+    @TableField(exist = false)
+    private String companyName;
+
+    /**
+     * 线索来源
+     */
+    @TableField("clue_source_id")
+    private Integer clueSourceId;
+    @TableField(exist = false)
+    private String clueSourceValue;
+
+    /**
+     * 电话
+     */
+    @TableField("phone")
+    private String phone;
+    /**
+     * 邮箱
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 客户行业
+     */
+    @TableField("customer_industry_id")
+    private Integer customerIndustryId;
+    @TableField(exist = false)
+    private String customerIndustryValue;
+
+    /**
+     * 客户级别
+     */
+    @TableField("customer_level_id")
+    private Integer customerLevelId;
+    @TableField(exist = false)
+    private String customerLevelValue;
+
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+    @TableField(exist = false)
+    private String ids;
+
+
+    /**
+     * 负责人id
+     */
+    @TableField("incharger_id")
+    private String inchargerId;
+    @TableField(exist = false)
+    private String inchargerName;
+
+
+//    private String tempInchargerId;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 回收站(是否删除) 0-否 1-是
+     */
+    @TableField("is_delete")
+    private Integer isDelete;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate1")
+    private String plate1;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate2")
+    private String plate2;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate3")
+    private String plate3;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate4")
+    private String plate4;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate5")
+    private String plate5;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 是否需要置顶 0/Flase 1/True
+     */
+    @TableField("need_pin")
+    private Boolean needPin;
+
+    /**
+     * 被置顶时间
+     */
+    @TableField("pin_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date pinTime;
+
+
+    @TableField(exist = false)
+    private String startTime;
+    @TableField(exist = false)
+    private String endTime;
+    @TableField(exist = false)
+    private Integer pageIndex;
+    @TableField(exist = false)
+    private Integer pageFrom;
+    @TableField(exist = false)
+    private List<ActionLog> clueLogList;
+    @TableField(exist = false)
+    private List<UploadFile> files;
+    @TableField(exist = false)
+    private List<Task> taskList;
+    @TableField(exist = false)
+    private Integer isDesc;
+    @TableField(exist = false)
+    private String userId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 56 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ClueLog.java

@@ -0,0 +1,56 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ClueLog extends Model<ClueLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("id")
+    private Long id;
+
+    @TableField("clue_id")
+    private Integer clueId;
+
+    /**
+     * 操作时间
+     */
+    @TableField("creat_time")
+    private Date creatTime;
+
+    /**
+     * 操作内容
+     */
+    @TableField("name")
+    private String name;
+
+    @TableField("user_id")
+    private String userId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 68 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ClueUploadfile.java

@@ -0,0 +1,68 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ClueUploadfile extends Model<ClueUploadfile> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 文件地址
+     */
+    @TableField("path")
+    private String path;
+    /**
+     * 上传人
+     */
+    @TableField("create_id")
+    private String createId;
+
+    /**
+     * 线索id
+     */
+    @TableField("clue_id")
+    private Integer clueId;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 36 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ColumnFixTrans.java

@@ -0,0 +1,36 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ColumnFixTrans extends Model<ColumnFixTrans> {
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**表名*/
+    @TableField("tbl_name")
+    private String tblName;
+
+    /**字段名*/
+    @TableField("col_name")
+    private String colName;
+
+    /**值*/
+    @TableField("col_val")
+    private String colVal;
+
+    /**值对应含义*/
+    @TableField("val_mean")
+    private String valMean;
+
+}

+ 54 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CommonUse.java

@@ -0,0 +1,54 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-06-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CommonUse extends Model<CommonUse> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 新建设置名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 新建设置路由
+     */
+    @TableField("router")
+    private String router;
+
+    @TableField("seq")
+    private Integer seq;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 175 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Company.java

@@ -0,0 +1,175 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-12-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Company extends Model<Company> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司名
+     */
+    @TableField("company_name")
+    private String companyName;
+
+    /**
+     * 公司规模
+     */
+    @TableField("staff_count_max")
+    private Integer staffCountMax;
+
+    /**
+     * 会员到期时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @TableField("expiration_date")
+    private LocalDateTime expirationDate;
+
+    /**
+     * 是否签约
+     */
+    @TableField("set_meal")
+    private Integer setMeal;
+
+    /**
+     * 工时平台
+     */
+    @TableField("package_worktime")
+    private Integer packageWorktime;
+
+    /**
+     * 项目协作平台
+     */
+    @TableField("package_project")
+    private Integer packageProject;
+
+    /**
+     * 合同平台
+     */
+    @TableField("package_contract")
+    private Integer packageContract;
+
+    /**
+     * OA平台;请假,出差等
+     */
+    @TableField("package_oa")
+    private Integer packageOa;
+
+    /**
+     * 生产车间平台
+     */
+    @TableField("package_etimecard")
+    private Integer packageEtimecard;
+
+    /**
+     * 费用报销
+     */
+    @TableField("package_expense")
+    private Integer packageExpense;
+
+    /**
+     * 客户管理
+     */
+    @TableField("package_customer")
+    private Integer packageCustomer;
+
+    /**
+     * 工程专业
+     */
+    @TableField("package_engineering")
+    private Integer packageEngineering;
+
+    /**
+     * 简单表格版本
+     */
+    @TableField("package_simple")
+    private Integer packageSimple;
+
+    /**
+     * 财务核算成本
+     */
+    @TableField("package_finance")
+    private Integer packageFinance;
+
+    /**
+     * 供应商模块
+     */
+    @TableField("package_provider")
+    private Integer packageProvider;
+
+    /**
+     * 是否是国际化版本
+     */
+    @TableField("is_international")
+    private Integer isInternational;
+
+    /**
+     * 创建日期
+     */
+    @TableField("create_date")
+    private LocalDateTime createDate;
+
+    /**
+     * 注册来源
+     */
+    @TableField("reg_from")
+    private String regFrom;
+
+
+    /**
+     * 非项目采用简易模式,非项目工时由部门主要负责人审核
+     */
+    @TableField("non_project_simple")
+    private Integer nonProjectSimple;
+
+    /**
+     * 是否存在商机模式 默认存在1, 不存在0
+     */
+    @TableField("is_exist_business")
+    private Integer isExistBusiness;
+
+    /**版本控制 1专业 2旗舰*/
+    @TableField("version_control")
+    private Integer versionControl;
+
+    /**
+     * 默认0, 1表示简易模式
+     */
+    @TableField("is_simple")
+    private Integer isSimple;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 48 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyCert.java

@@ -0,0 +1,48 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-04-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyCert extends Model<CompanyCert> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 证书名称
+     */
+    @TableField("name")
+    private String name;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 56 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyCustomerContact.java

@@ -0,0 +1,56 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyCustomerContact extends Model<CompanyCustomerContact> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 是否联系过
+     */
+    @TableField("contacted")
+    private Boolean contacted;
+
+    /**
+     * 客户反馈
+     */
+    @TableField("feedback")
+    private String feedback;
+
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime indate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 125 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyDingding.java

@@ -0,0 +1,125 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-04-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyDingding extends Model<CompanyDingding> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 钉钉企业id
+     */
+    @TableId("corpid")
+    private String corpid;
+
+    @TableField("corp_name")
+    private String corpName;
+
+    @TableField("auth_user_id")
+    private String authUserId;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 内部系统公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("access_token")
+    private String accessToken;
+
+    /**
+     * accessToken过期时间
+     */
+    @TableField("expire_time")
+    private LocalDateTime expireTime;
+
+    /**
+     * 企业应用id
+     */
+    @TableField("agent_id")
+    private Long agentId;
+
+    /**
+     * 企业内部应用appkey
+     */
+    @TableField("inner_appkey")
+    private String innerAppkey;
+
+    /**
+     * 企业内部应用appsecret
+     */
+    @TableField("inner_appsecret")
+    private String innerAppsecret;
+
+    /**
+     * 企业内部应用token
+     */
+    @TableField("inner_token")
+    private String innerToken;
+
+    /**
+     * 企业内部应用token过期时间
+     */
+    @TableField("inner_expire_time")
+    private LocalDateTime innerExpireTime;
+
+    /**
+     * 企业链接地址
+     */
+    @TableField("web_url")
+    private String webUrl;
+
+    /**
+     * pc端企业链接地址
+     */
+    @TableField("pc_web_url")
+    private String pcWebUrl;
+
+    /**
+     * 具有OA审批权限的管理员钉钉id
+     */
+    @TableField("oa_manager_dingid")
+    private String oaManagerDingid;
+
+    /**
+     * 与钉钉通讯录结构一致
+     */
+    @TableField("sync_contact")
+    private Integer syncContact;
+
+    /**
+     * 通讯录是否需要转译
+     */
+//    @TableField("contact_need_translate")
+    @TableField(exist = false)
+    private Integer contactNeedTranslate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.corpid;
+    }
+
+}

+ 43 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CompanyReport.java

@@ -0,0 +1,43 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyReport extends Model<CompanyReport> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 报表id
+     */
+    @TableField("report_form_id")
+    private Integer reportFormId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 58 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactSyncLog.java

@@ -0,0 +1,58 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContactSyncLog extends Model<ContactSyncLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 1-成功,0失败
+     */
+    @TableField("result")
+    private Integer result;
+
+    /**
+     * 同步记录内容,失败原因
+     */
+    @TableField("msg")
+    private String msg;
+
+    /**
+     * 时间戳
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 170 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Contacts.java

@@ -0,0 +1,170 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-06-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Contacts extends Model<Contacts> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 性别: 0女  1男
+     */
+    @TableField("sex")
+    private Integer sex;
+    @TableField(exist = false)
+    private String sexValue;
+
+    /**
+     * 联系人名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 客户id
+     */
+    @TableField("custom_id")
+    private Integer customId;
+
+    /**
+     * 联系人邮箱
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 联系人电话
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 负责人
+     */
+    @TableField("owner_id")
+    private String ownerId;
+    @TableField(exist = false)
+    private String ownerName;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+    @TableField(exist = false)
+    private String creatorName;
+
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 回收站(是否删除) 0-否 1-是
+     */
+    @TableField("is_delete")
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime createTime;
+
+    /**
+     * 职务
+     */
+    @TableField("position")
+    private String position;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate1")
+    private String plate1;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate2")
+    private String plate2;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate3")
+    private String plate3;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate4")
+    private String plate4;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate5")
+    private String plate5;
+
+    /**
+     * 是否为常用联系人 0否1是
+     */
+    @TableField("is_frequent")
+    private Integer isFrequent;
+
+    /**是否需要置顶 0/Flase 1/True*/
+    @TableField("need_pin")
+    private Boolean needPin;
+
+    /**被置顶时间*/
+    @TableField("pin_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date pinTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 112 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactsDocument.java

@@ -0,0 +1,112 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContactsDocument extends Model<ContactsDocument> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件名
+     */
+    @TableField("document_name")
+    private String documentName;
+
+    /**
+     * 服务器生成的文件名
+     */
+    @TableField("server_name")
+    private String serverName;
+
+    /**
+     * 对外访问地址
+     */
+    @TableField("url")
+    private String url;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime indate;
+
+    /**
+     * 联系人id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 文件大小
+     */
+    @TableField("size")
+    private String size;
+
+    /**
+     * 文件类型
+     * 0-图片文件,1-文本文件 ,2-压缩文件,3-txt,4-excle文件,5-压缩文件,6-视频文件,7-音频文件
+     */
+    @TableField("document_type")
+    private Integer documentType;
+
+    /**
+     * 文件状态0-存在,1-删除
+     */
+    @TableField("is_deleted")
+    private Integer isDeleted;
+
+    /**
+     * 是否是文件夹
+     */
+    @TableField("is_folder")
+    private Integer isFolder;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 75 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContactsLog.java

@@ -0,0 +1,75 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContactsLog extends Model<ContactsLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 联系人的id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+
+    /**
+     * 操作时间
+     */
+    @TableField("operate_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime operateDate;
+
+    /**
+     * 操作者id
+     */
+    @TableField("operate_id")
+    private String operateId;
+
+    /**
+     * 操作信息
+     */
+    @TableField("msg")
+    private String msg;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField(exist = false)
+    private String operateName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 236 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Contract.java

@@ -0,0 +1,236 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Contract extends Model<Contract> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 创建者姓名
+     */
+    @TableField(exist = false)
+    private String creatorName;
+
+    /**
+     * 创建者wxCorpId
+     */
+    @TableField(exist = false)
+    private String creatorWxCorpId;
+
+    /**
+     * 创建者id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+
+    /**
+     * 合同开始时间
+     */
+    @TableField("start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    /**
+     * 合同结束时间
+     */
+    @TableField("end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    /**
+     * 合同编号
+     */
+    @TableField("number")
+    private String number;
+
+    /**
+     * 关联项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 合同名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 金额
+     */
+    @TableField("amounts")
+    private BigDecimal amounts;
+
+    /**
+     * 合同类型的id
+     */
+    @TableField("type_id")
+    private Integer typeId;
+
+    /**
+     * 合同类型的名称
+     */
+    @TableField(exist = false)
+    private String typeName;
+
+
+    /**
+     * 审核人Id
+     */
+    @TableField("checkerId")
+    private String checkerId;
+
+    /**
+     * 0-审核通过,1-待审核,2-驳回
+     */
+    @TableField("status")
+    private Integer status;
+
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate indate;
+
+    /**
+     * 备注
+     */
+    @TableField("remarks")
+    private String remarks;
+
+    /**
+     * 到款金额
+     */
+    @TableField("payment")
+    private BigDecimal payment;
+
+    /**
+     * 下次到款时间
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate nextPaymentDate;
+
+    /**
+     * 下次到款金额
+     */
+    @TableField(exist = false)
+    private BigDecimal nextPaymentAmount;
+
+    @TableField(exist = false)
+    public ContractCustom customData;
+
+    @TableField(exist = false)
+    public ContractPayCustomized payCustomizedData;
+
+    /**
+     * 二级分类id
+     */
+    @TableField("sec_type_id")
+    private Integer secTypeId;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate1")
+    private String plate1;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate2")
+    private String plate2;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate3")
+    private String plate3;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate4")
+    private String plate4;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate5")
+    private String plate5;
+
+    /**
+     * 二级分类名称
+     */
+    @TableField(exist = false)
+    private String secTypeName;
+
+    /**是否需要置顶 0/Flase 1/True*/
+    @TableField("need_pin")
+    private Boolean needPin;
+
+    /**被置顶时间*/
+    @TableField("pin_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date pinTime;
+
+    @TableField("department_id")
+    private Integer departmentId;
+
+    @TableField(exist = false)
+    private String departmentName;
+
+    @TableField(exist = false)
+    private BigDecimal invoicedAmount;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 129 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractCustom.java

@@ -0,0 +1,129 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-11-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractCustom extends Model<ContractCustom> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同Id
+     */
+    @TableId("contract_id")
+    private Integer contractId;
+
+    /**
+     * 对方单位
+     */
+    @TableField("customer_org")
+    private String customerOrg;
+
+    /**
+     * 对方联系人
+     */
+    @TableField("customer_contact")
+    private String customerContact;
+
+    /**
+     * 对方电话
+     */
+    @TableField("customer_phone")
+    private String customerPhone;
+
+    /**
+     * 使用部门
+     */
+    @TableField("use_department")
+    private String useDepartment;
+
+    /**
+     * 经费来源
+     */
+    @TableField("funds_source")
+    private String fundsSource;
+
+    /**
+     * 合同承办人
+     */
+    @TableField("undertaker")
+    private String undertaker;
+
+    /**
+     * 代理人
+     */
+    @TableField("agent")
+    private String agent;
+
+    /**
+     * 签订日期
+     */
+    @TableField("sign_date")
+    private String signDate;
+
+    /**
+     * 备案日期
+     */
+    @TableField("filings_date")
+    private String filingsDate;
+
+    /**
+     * 增值税税率(%)
+     */
+    @TableField("tax_rate")
+    private Integer taxRate;
+
+    /**
+     * 合同金额(元)/不含税价
+     */
+    @TableField("amounts_no_tax")
+    private BigDecimal amountsNoTax;
+
+    /**
+     * 币种
+     */
+    @TableField("currency")
+    private String currency;
+
+    /**
+     * 是否固定金额 0否,1是
+     */
+    @TableField("is_amount_fixed")
+    private Boolean isAmountFixed;
+
+    /**
+     * 合同状态(是否结清):1-履约中,2-履约结束
+     */
+    @TableField("finish_status")
+    private Integer finishStatus;
+
+    /**
+     * 印花税税目
+     */
+    @TableField("stamp_duty_items")
+    private String stampDutyItems;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.contractId;
+    }
+
+}

+ 106 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractDocument.java

@@ -0,0 +1,106 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractDocument extends Model<ContractDocument> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件名
+     */
+    @TableField("document_name")
+    private String documentName;
+
+    /**
+     * 服务器生成的文件名
+     */
+    @TableField("server_name")
+    private String serverName;
+
+    /**
+     * 对外访问地址
+     */
+    @TableField("url")
+    private String url;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 合同id
+     */
+    @TableField("contract_id")
+    private Integer contractId;
+
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 文件大小
+     */
+    @TableField("size")
+    private String size;
+
+    /**
+     * 文件类型
+     */
+    @TableField("document_type")
+    private Integer documentType;
+
+    /**
+     * 文件状态0-存在,1-删除
+     */
+    @TableField("is_deleted")
+    private Integer isDeleted;
+
+    /**
+     * 是否是文件夹
+     */
+    @TableField("is_folder")
+    private Integer isFolder;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 76 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractLog.java

@@ -0,0 +1,76 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-12-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractLog extends Model<ContractLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 合同的id
+     */
+    @TableField("contract_id")
+    private Integer contractId;
+
+    /**
+     * 操作时间
+     */
+    @TableField("operate_date")
+    private LocalDateTime operateDate;
+
+    /**
+     * 创建者id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 操作者id
+     */
+    @TableField("operator_id")
+    private String operatorId;
+
+    /**
+     * 0-新增操作;1-编辑操作;2-审核通过;3-审核驳回;4-批量导入;5-删除合同
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 操作信息
+     */
+    @TableField("msg")
+    private String msg;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 64 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractModifyRecord.java

@@ -0,0 +1,64 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractModifyRecord extends Model<ContractModifyRecord> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 修改前金额
+     */
+    @TableField("old_contract_amount")
+    private Double oldContractAmount;
+
+    /**
+     * 修改后金额
+     */
+    @TableField("new_contract_amount")
+    private Double newContractAmount;
+
+    @TableField("update_date")
+    private LocalDateTime updateDate;
+
+    @TableField("project_id")
+    private Integer projectId;
+
+    @TableField("reason")
+    private String reason;
+
+    /**
+     * 操作人
+     */
+    @TableField("edit_user_id")
+    private String editUserId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 98 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractPayCustomized.java

@@ -0,0 +1,98 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-11-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractPayCustomized extends Model<ContractPayCustomized> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同id
+     */
+    @TableField("contract_id")
+    private Integer contractId;
+
+    /**
+     * 付款日期
+     */
+    @TableField("pay_date")
+    private String payDate;
+
+    /**
+     * 已付款金额(元)
+     */
+    @TableField("payed_amount")
+    private BigDecimal payedAmount;
+
+    /**
+     * 付款类型:1-预付,2-报账
+     */
+    @TableField("pay_way")
+    private Integer payWay;
+
+    /**
+     * 凭证号
+     */
+    @TableField("bill_number")
+    private String billNumber;
+
+    /**
+     * 已冲销金额
+     */
+    @TableField("reserved_amounts")
+    private BigDecimal reservedAmounts;
+
+    /**
+     * 冲销凭证号
+     */
+    @TableField("reserved_bill_number")
+    private String reservedBillNumber;
+
+    /**
+     * 付款总金额
+     */
+    @TableField("total_payed_amounts")
+    private BigDecimal totalPayedAmounts;
+
+    /**
+     * 待付款金额
+     */
+    @TableField("pending_amounts")
+    private BigDecimal pendingAmounts;
+
+    /**
+     * 是否已付款
+     */
+    @TableField("is_payed")
+    private Boolean isPayed;
+
+    /**
+     * 付款类型:0报账,1预付
+     */
+    @TableField("pay_type")
+    private Boolean payType;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 100 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractPayment.java

@@ -0,0 +1,100 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-05-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractPayment extends Model<ContractPayment> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("contract_id")
+    private Integer contractId;
+
+    /**
+     * 计划回款日期
+     */
+    @TableField("pay_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate payDate;
+
+    /**
+     * 回款金额
+     */
+    @TableField("amount")
+    private BigDecimal amount;
+
+    /**
+     * 是否
+     */
+    @TableField("is_payed")
+    private Boolean isPayed;
+
+
+    /**
+     * 是否开票 1是 0否
+     */
+    @TableField("is_billed")
+    private Integer isBilled;
+
+    /**
+     * 开票日期
+     */
+    @TableField("bill_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate billDate;
+
+    /**
+     * 发票类型 0专票 1普票
+     */
+    @TableField("invoice_type")
+    private Integer invoiceType;
+
+    @TableField(exist = false)
+    private String  invoiceTypeName;
+
+    /**
+     * 税额
+     */
+    @TableField("tax_amount")
+    private BigDecimal taxAmount;
+
+    /**
+     * 税率
+     */
+    @TableField("tax_rate")
+    private BigDecimal taxRate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 51 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractType.java

@@ -0,0 +1,51 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractType extends Model<ContractType> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同类型id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 合同类型
+     */
+    @TableField("type_name")
+    private String typeName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 60 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ContractTypeSec.java

@@ -0,0 +1,60 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-11-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractTypeSec extends Model<ContractTypeSec> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 合同类型id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 合同类型
+     */
+    @TableField("sec_type_name")
+    private String secTypeName;
+
+    /**
+     * 主类型id
+     */
+    @TableField("main_type_id")
+    private Integer mainTypeId;
+
+    @TableField(exist = false)
+    private String mainTypeName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 54 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxJobResult.java

@@ -0,0 +1,54 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-10-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CorpwxJobResult extends Model<CorpwxJobResult> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("job_id")
+    private String jobId;
+
+    @TableField("job_type")
+    private String jobType;
+
+    @TableField("err_code")
+    private Integer errCode;
+
+    @TableField("err_msg")
+    private String errMsg;
+
+    /**
+     * 授权企业corpid
+     */
+    @TableField("auth_corp_id")
+    private String authCorpId;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.jobId;
+    }
+
+}

+ 53 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxPreAuthCode.java

@@ -0,0 +1,53 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CorpwxPreAuthCode extends Model<CorpwxPreAuthCode> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("code")
+    private String code;
+
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime indate;
+
+    @TableField("expire_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime expireTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 46 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CorpwxRegisterCode.java

@@ -0,0 +1,46 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CorpwxRegisterCode extends Model<CorpwxRegisterCode> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("code")
+    private String code;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    @TableField("expire_time")
+    private LocalDateTime expireTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 90 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CusReportForm.java

@@ -0,0 +1,90 @@
+package com.management.platform.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CusReportForm extends Model<CusReportForm> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**报表名称*/
+    @TableField("report_form_name")
+    private String reportFormName;
+
+    /**1公开 2私有*/
+    @TableField("privilege")
+    private Integer privilege;
+
+    /**创建人id*/
+    @TableField("create_by")
+    private String createBy;
+
+    /**创建时间*/
+    @TableField("create_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+    /**执行sql*/
+    @TableField("execute_sql")
+    private String executeSql;
+
+    /**所属公司id*/
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("form_json")
+    private String formJson;
+
+    @TableField("form_field_head")
+    private String formFieldHead;
+
+    @TableField(exist = false)
+    private String departmentIds;
+
+
+    @TableField(exist = false)
+    private String userIds;
+
+    @TableField(exist = false)
+    private List<ReportFormAccess> deptAccessList;
+
+
+    @TableField(exist = false)
+    private List<ReportFormAccess> userAccessList;
+
+    @TableField(exist = false)
+    private Integer orderItem;
+
+    @TableField(exist = false)
+    private Integer parentStoreId;
+
+    @TableField(exist = false)
+    private String description;
+
+    /**承接前端需要转义的条件*/
+    @TableField(exist = false)
+    private String formTransConditionJson;
+
+//    /**承接前端需要转义的条件*/
+//    @TableField(exist = false)
+//    private List<FormTransCondition> formTransConditionList;
+
+}

+ 46 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CusTableColumn.java

@@ -0,0 +1,46 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CusTableColumn extends Model<CusTableColumn> {
+//    private String TABLE_CATALOG;
+    private String tableCatalog;
+//    private String IS_NULLABLE;
+    private String isNullable;
+//    private String TABLE_NAME;
+    private String tableName;
+//    private String TABLE_SCHEMA;
+    private String tableSchema;
+//    private String EXTRA;
+    private String extra;
+//    private String COLUMN_NAME;
+    private String columnName;
+//    private String COLUMN_KEY;
+    private String columnKey;
+//    private String NUMERIC_PRECISION;
+    private String numericPrecision;
+//    private String PRIVILEGES;
+    private String privileges;
+//    private String COLUMN_COMMENT;
+    private String columnComment;
+//    private String NUMERIC_SCALE;
+    private String numericScale;
+//    private String COLUMN_TYPE;
+    private String columnType;
+//    private String GENERATION_EXPRESSION;
+    private String generationExpression;
+//    private String ORDINAL_POSITION;
+    private String ordinalPosition;
+//    private String DATA_TYPE;
+    private String dataType;
+
+    /**转义类型 0不需要 1人名 2部门*/
+    private Integer transType=0;
+
+}

+ 275 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Custom.java

@@ -0,0 +1,275 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Custom extends Model<Custom> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 客户名称
+     */
+    @TableField("custom_name")
+    private String customName;
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+    /**
+     * 负责人
+     */
+    @TableField("incharger_id")
+    private String inchargerId;
+    @TableField(exist = false)
+    private String inchargerName;
+
+    /**
+     * 公司电话
+     */
+    @TableField("company_phone")
+    private String companyPhone;
+
+    /**
+     * 客户来源id
+     */
+    @TableField("custom_source_id")
+    private Integer customSourceId;
+    @TableField(exist = false)
+    private String customSourceValue;
+
+    /**
+     * 客户行业id
+     */
+    @TableField("customer_industry_id")
+    private Integer customerIndustryId;
+    @TableField(exist = false)
+    private String customerIndustryValue;
+
+    /**
+     * 客户级别id
+     */
+    @TableField("customer_level_id")
+    private Integer customerLevelId;
+    @TableField(exist = false)
+    private String customerLevelValue;
+
+    /**
+     * 邮箱
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 客户所有者
+     */
+    @TableField("owner_id")
+    private String ownerId;
+    @TableField(exist = false)
+    private String ownerName;
+
+    /**
+     * 客户编号
+     */
+    @TableField("custom_code")
+    private String customCode;
+
+    /**
+     * 电话
+     */
+    @TableField("tel_phone")
+    private String telPhone;
+    @TableField("contacts_name")
+    private String contactsName;
+
+    /**
+     * 传真
+     */
+    @TableField("fax")
+    private String fax;
+
+    /**
+     * 开单地址-国家/地区
+     */
+    @TableField("country_billing")
+    private String countryBilling;
+    @TableField(exist = false)
+    private String userId;
+    @TableField(exist = false)
+    private List<Contacts> contacts;
+    @TableField(exist = false)
+    private List<SalesOrder> salesOrders;
+
+    /**
+     * 开单地址-省/市
+     */
+    @TableField("province_billing")
+    private String provinceBilling;
+
+    /**
+     * 开单地址-市
+     */
+    @TableField("city_billing")
+    private String cityBilling;
+
+    /**
+     * 开单地址-街道
+     */
+    @TableField("street_billing")
+    private String streetBilling;
+
+    /**
+     * 发货地址-国家/地区
+     */
+    @TableField("country_delivery")
+    private String countryDelivery;
+
+    /**
+     * 发货地址-省/市
+     */
+    @TableField("province_delivery")
+    private String provinceDelivery;
+
+    /**
+     * 发货地址-市
+     */
+    @TableField("city_delivery")
+    private String cityDelivery;
+
+    /**
+     * 发货地址-街道
+     */
+    @TableField("street_delivery")
+    private String streetDelivery;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate1")
+    private String plate1;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate2")
+    private String plate2;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate3")
+    private String plate3;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate4")
+    private String plate4;
+
+    /**
+     * 自定义字段存值
+     */
+    @TableField("plate5")
+    private String plate5;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+    @TableField(exist = false)
+    private String creatorName;
+
+    /**
+     * 描述
+     */
+    @TableField("custom_desc")
+    private String customDesc;
+
+    /**
+     * 回收站(是否删除) 0-否 1-是
+     */
+    @TableField("is_delete")
+    private Integer isDelete;
+
+    /**
+     * 是否成交 0-否 1-是
+     */
+    @TableField("close_deal")
+    private Integer closeDeal;
+
+    /**是否需要置顶 0/Flase 1/True*/
+    @TableField("need_pin")
+    private Boolean needPin;
+
+    /**被置顶时间*/
+    @TableField("pin_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date pinTime;
+
+    @TableField(exist = false)
+    private String ids;
+    @TableField(exist = false)
+    private String startTime;
+    @TableField(exist = false)
+    private String endTime;
+    @TableField(exist = false)
+    private Integer pageIndex;
+    @TableField(exist = false)
+    private Integer pageFrom;
+    @TableField(exist = false)
+    private List<UploadFile> files;
+    @TableField(exist = false)
+    private List<BusinessOpportunity> BusinessOpportunitys;
+    @TableField(exist = false)
+    private List<ActionLog> actionLogs;
+    @TableField(exist = false)
+    private List<Contacts> contactsList;
+    @TableField(exist = false)
+    private Integer isDesc;
+
+    @TableField(exist = false)
+    private List<Task> tasks;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 48 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomItemContacts.java

@@ -0,0 +1,48 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-04-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CustomItemContacts extends Model<CustomItemContacts> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+
+    /**
+     * 联系人id
+     */
+    @TableField("custom_id")
+    private Integer customId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 61 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomMultipartFile.java

@@ -0,0 +1,61 @@
+package com.management.platform.entity;
+
+import org.springframework.web.multipart.MultipartFile;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class CustomMultipartFile implements MultipartFile {
+
+    private final byte[] content;
+    private final String name;
+    private final String originalFilename;
+    private final String contentType;
+
+    public CustomMultipartFile(byte[] content, String name, String originalFilename, String contentType) {
+        this.content = content;
+        this.name = name;
+        this.originalFilename = originalFilename;
+        this.contentType = contentType;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String getOriginalFilename() {
+        return originalFilename;
+    }
+
+    @Override
+    public String getContentType() {
+        return contentType;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return content == null || content.length == 0;
+    }
+
+    @Override
+    public long getSize() {
+        return content.length;
+    }
+
+    @Override
+    public byte[] getBytes() throws IOException {
+        return content;
+    }
+
+    @Override
+    public InputStream getInputStream() throws IOException {
+        return new ByteArrayInputStream(content);
+    }
+
+    @Override
+    public void transferTo(java.io.File dest) throws IOException, IllegalStateException {
+        new java.io.FileOutputStream(dest).write(content);
+    }
+}

+ 78 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/CustomerInfo.java

@@ -0,0 +1,78 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-07-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CustomerInfo extends Model<CustomerInfo> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户编码
+     */
+    @TableField("customer_code")
+    private String customerCode;
+
+    /**
+     * 客户公司名称
+     */
+    @TableField("customer_name")
+    private String customerName;
+
+    /**
+     * 联系人
+     */
+    @TableField("contact_name")
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    @TableField("contact_phone")
+    private String contactPhone;
+
+    /**
+     * 邮箱
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+
+    /**
+     * 系统公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 49 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DdCallback.java

@@ -0,0 +1,49 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DdCallback extends Model<DdCallback> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 插入的时间
+     */
+    @TableField("datetime")
+    private LocalDateTime datetime;
+
+    @TableField("event_type")
+    private String eventType;
+
+    @TableField("decrypt_msg")
+    private String decryptMsg;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 13 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DdingCardTimeItem.java

@@ -0,0 +1,13 @@
+package com.management.platform.entity;
+
+import lombok.Data;
+
+@Data
+public class DdingCardTimeItem {
+    private Long workDate;
+    private String checkType;
+    private String userId;
+    private Long userCheckTime;
+    private String corpId;
+
+}

+ 108 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Department.java

@@ -0,0 +1,108 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 部门
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Department extends Model<Department> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "department_id", type = IdType.AUTO)
+    private Integer departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField("department_name")
+    private String departmentName;
+
+    /**
+     * 部门顺序
+     */
+    @TableField("seq")
+    private Integer seq;
+
+    /**
+     * 上级部门id
+     */
+    @TableField("superior_id")
+    private Integer superiorId;
+
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 部门负责人id
+     */
+    @TableField(value = "manager_id", updateStrategy = FieldStrategy.IGNORED)
+    private String managerId;
+
+    /**
+     * 日报导入审核人
+     */
+    @TableField(value = "report_audit_userid", updateStrategy = FieldStrategy.IGNORED)
+    private String reportAuditUserid;
+
+
+    /**
+     * 企业微信的部门id
+     */
+    @TableField("corpwx_deptid")
+    private Integer corpwxDeptid;
+
+
+    /**
+     * 企业微信部门的父部门id
+     */
+    @TableField("corpwx_deptpid")
+    private Integer corpwxDeptpid;
+
+    /**
+     * 钉钉的部门id
+     */
+    @TableField("dd_deptid")
+    private Integer ddDeptid;
+
+    /**
+     * 飞书的部门id
+     */
+    @TableField("feishu_deptid")
+    private String feishuDeptid;
+
+    /**
+     * 是否推送到SAP
+     */
+    @TableField("push_to_sap")
+    private Integer pushToSap;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.departmentId;
+    }
+
+}

+ 57 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentDingding.java

@@ -0,0 +1,57 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DepartmentDingding extends Model<DepartmentDingding> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("dd_deptid")
+    private Integer ddDeptid;
+
+    @TableField("dd_parentid")
+    private Integer ddParentid;
+
+    /**
+     * 企业corpid
+     */
+    @TableField("corpid")
+    private String corpid;
+
+    @TableField("name")
+    private String name;
+
+    /**
+     * 内部部门id
+     */
+    @TableField("sys_deptid")
+    private Integer sysDeptid;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 60 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentFeishu.java

@@ -0,0 +1,60 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DepartmentFeishu extends Model<DepartmentFeishu> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("feishu_open_deptid")
+    private String feishuOpenDeptid;
+
+    @TableField("feishu_deptid")
+    private String feishuDeptid;
+
+    @TableField("feishu_parentid")
+    private String feishuParentid;
+
+    /**
+     * 企业corpid
+     */
+    @TableField("corpid")
+    private String corpid;
+
+    @TableField("name")
+    private String name;
+
+    /**
+     * 内部部门id
+     */
+    @TableField("sys_deptid")
+    private Integer sysDeptid;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 48 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentOtherManager.java

@@ -0,0 +1,48 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DepartmentOtherManager extends Model<DepartmentOtherManager> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("department_id")
+    private Integer departmentId;
+
+    /**
+     * 其他部门管理员
+     */
+    @TableField("other_manager_id")
+    private String otherManagerId;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 57 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/DepartmentWx.java

@@ -0,0 +1,57 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-11-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DepartmentWx extends Model<DepartmentWx> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("wx_deptid")
+    private Integer wxDeptid;
+
+    @TableField("wx_parentid")
+    private Integer wxParentid;
+
+    /**
+     * 企业corpid
+     */
+    @TableField("corpid")
+    private String corpid;
+
+    @TableField("name")
+    private String name;
+
+    /**
+     * 内部部门id
+     */
+    @TableField("sys_deptid")
+    private Integer sysDeptid;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 105 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/EarningSnapshot.java

@@ -0,0 +1,105 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-10-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class EarningSnapshot extends Model<EarningSnapshot> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 发生时间
+     */
+    @TableField("indate")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime indate;
+
+    /**
+     * 变更人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 变更人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 项目金额
+     */
+    @TableField("contract_amount")
+    private Double contractAmount;
+
+    /**
+     * 利润
+     */
+    @TableField("profit")
+    private Double profit;
+
+    /**
+     * 利润率
+     */
+    @TableField("profit_percent")
+    private Double profitPercent;
+
+    /**
+     * 总成本
+     */
+    @TableField("cost_total")
+    private Double costTotal;
+
+    /**
+     * 细分项
+     */
+    @TableField("cost_data")
+    private String costData;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+
+    @TableField(exist = false)
+    List<ProjectBasecost> costList;
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 68 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/EstimateTimeSetting.java

@@ -0,0 +1,68 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class EstimateTimeSetting extends Model<EstimateTimeSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 项目人天填写要求:0-非必填,1-工时系统必填,同步的非必填,2-全部必填
+     */
+    @TableField("project_man_day_fill_mode")
+    private Integer projectManDayFillMode;
+
+    /**
+     * 项目剩余工时低于xx%时开始提示
+     */
+    @TableField("project_warning_percent")
+    private Integer projectWarningPercent;
+
+    /**
+     * 项目预估工时不足时是否禁止填报
+     */
+    @TableField("project_fronze_on_lack")
+    private Integer projectFronzeOnLack;
+
+    /**
+     * 分组剩余工时低于xx%时开始提示
+     */
+    @TableField("group_warning_percent")
+    private Integer groupWarningPercent;
+
+    /**
+     * 分组预估工时不足时是否禁止填报
+     */
+    @TableField("group_fronze_on_lack")
+    private Integer groupFronzeOnLack;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 59 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExcelMultipartFile.java

@@ -0,0 +1,59 @@
+package com.management.platform.entity;
+
+import org.springframework.web.multipart.MultipartFile;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ExcelMultipartFile implements MultipartFile {
+
+    private final byte[] excelBytes;
+    private final String fileName;
+
+    public ExcelMultipartFile(byte[] excelBytes, String fileName) {
+        this.excelBytes = excelBytes;
+        this.fileName = fileName;
+    }
+
+    @Override
+    public String getName() {
+        return "file";
+    }
+
+    @Override
+    public String getOriginalFilename() {
+        return fileName;
+    }
+
+    @Override
+    public String getContentType() {
+        return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return excelBytes == null || excelBytes.length == 0;
+    }
+
+    @Override
+    public long getSize() {
+        return excelBytes.length;
+    }
+
+    @Override
+    public byte[] getBytes() throws IOException {
+        return excelBytes;
+    }
+
+    @Override
+    public InputStream getInputStream() throws IOException {
+        return new ByteArrayInputStream(excelBytes);
+    }
+
+    @Override
+    public void transferTo(java.io.File dest) throws IOException, IllegalStateException {
+        try (java.io.FileOutputStream fos = new java.io.FileOutputStream(dest)) {
+            fos.write(excelBytes);
+        }
+    }
+}

+ 44 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseAuditSetting.java

@@ -0,0 +1,44 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpenseAuditSetting extends Model<ExpenseAuditSetting> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 0-统一审核人(由权限模块控制), 1-项目经理审核
+     */
+    @TableField("audit_type")
+    private Integer auditType;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 119 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseItem.java

@@ -0,0 +1,119 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpenseItem extends Model<ExpenseItem> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 报销单id
+     */
+    @TableField("expense_id")
+    private Integer expenseId;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 费用日期
+     */
+    @TableField("happen_date")
+    private String happenDate;
+
+    /**
+     * 0-增值税专用发票,1-增值税普通发票
+     */
+    @TableField("invoice_type")
+    private Integer invoiceType;
+
+    /**
+     * 发票号
+     */
+    @TableField("invoice_no")
+    private String invoiceNo;
+
+    /**
+     * 税率
+     */
+    @TableField("tax_percent")
+    private Double taxPercent;
+
+    /**
+     * 税额
+     */
+    @TableField("tax_value")
+    private Double taxValue;
+
+    /**
+     * 费用金额
+     */
+    @TableField("amount")
+    private Double amount;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 费用类型
+     */
+    @TableField("expense_type")
+    private String expenseType;
+
+    /**
+     * 报销凭证
+     */
+    @TableField("pic")
+    private String pic;
+
+    /**
+     * 项目经理审核模式下需要:0-审核通过,1-待审核,2-驳回,3-已撤回
+     */
+    @TableField("status")
+    private Integer status;
+
+
+    @TableField(exist = false)
+    private String projectName;
+
+    @TableField(exist = false)
+    private Integer isIncharger;
+
+    @TableField(exist = false)
+    private String projectManagerId;
+    @TableField(exist = false)
+    private String projectManagerName;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 58 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseMainType.java

@@ -0,0 +1,58 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-05-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpenseMainType extends Model<ExpenseMainType> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 系统自带
+     */
+    @TableField("is_system")
+    private Integer isSystem;
+
+    /**
+     * 成本预算项id
+     */
+    @TableField(value = "basecost_setting_id", updateStrategy = FieldStrategy.IGNORED)
+    private Integer basecostSettingId;
+
+
+    @TableField(exist = false)
+    private String basecostSettingName;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 42 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpensePayWay.java

@@ -0,0 +1,42 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpensePayWay extends Model<ExpensePayWay> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("name")
+    private String name;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 163 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseSheet.java

@@ -0,0 +1,163 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpenseSheet extends Model<ExpenseSheet> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 单据编号
+     */
+    @TableField("code")
+    private String code;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 填报人id
+     */
+    @TableField("owner_id")
+    private String ownerId;
+
+    /**
+     * 填报人姓名
+     */
+    @TableField("owner_name")
+    private String ownerName;
+
+    /**
+     * 填报日期
+     */
+    @TableField("create_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createDate;
+
+    /**
+     * 发票张数
+     */
+    @TableField("ticket_num")
+    private Integer ticketNum;
+
+    /**
+     * 费用主类型id
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 0-审核通过,1-待审核,2-驳回,3-已撤回
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 总费用
+     */
+    @TableField("total_amount")
+    private Double totalAmount;
+
+    /**
+     * 录入人
+     */
+    @TableField("operator_id")
+    private String operatorId;
+
+    /**
+     * 驳回原因
+     */
+    @TableField("deny_reason")
+    private String denyReason;
+
+    /**
+     * 发送状态 0-未发送 1-已发送
+     */
+    @TableField("send_state")
+    private Integer sendState;
+
+    /**
+     * 第一审核人id
+     */
+    @TableField("first_checker_id")
+    private String firstCheckerId;
+
+    /**
+     * 第二审核人id
+     */
+    @TableField("second_checker_id")
+    private String secondCheckerId;
+
+    /**
+     * 0-待第一审核人审核 1-待第二审核人审核 2-审核完成
+     */
+    @TableField("review_process")
+    private Integer reviewProcess;
+
+    @TableField(exist = false)
+    private List<ExpenseItem> invoiceList;
+
+    @TableField(exist = false)
+    private String expenseMainTypeName;
+
+    @TableField(exist = false)
+    private String firstCheckerName;
+
+    @TableField(exist = false)
+    private String secondCheckerName;
+
+    /**
+     * 支付方式id
+     */
+    @TableField("pay_way_id")
+    private Integer payWayId;
+
+    /**
+     * 支付方式名称
+     */
+    @TableField("pay_way_name")
+    private String payWayName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 58 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/ExpenseType.java

@@ -0,0 +1,58 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ExpenseType extends Model<ExpenseType> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 主类型: 0-一般费用,1-差旅费用,2-外包费用
+     */
+    @TableField("main_type")
+    private Integer mainType;
+
+    /**
+     * 费用类型名称
+     */
+    @TableField("type_name")
+    private String typeName;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField(exist = false)
+    private String expenseMainTypeName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 54 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FastAccess.java

@@ -0,0 +1,54 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-06-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FastAccess extends Model<FastAccess> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 新建设置名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 新建设置路由
+     */
+    @TableField("router")
+    private String router;
+
+    @TableField("seq")
+    private Integer seq;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 75 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FeishuInfo.java

@@ -0,0 +1,75 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-03-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FeishuInfo extends Model<FeishuInfo> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("corpid")
+    private String corpid;
+
+    @TableField("corp_name")
+    private String corpName;
+
+    /**
+     * 企业token
+     */
+    @TableField("access_token")
+    private String accessToken;
+
+    /**
+     * token有效期
+     */
+    @TableField("expire_time")
+    private LocalDateTime expireTime;
+
+    /**
+     * 系统内部的公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 授权企业内应用的id
+     */
+    @TableField("agentid")
+    private Integer agentid;
+
+    /**
+     * 飞书企业自建应用APPID
+     */
+    @TableField("app_id")
+    private String appId;
+
+    /**
+     * 飞书企业自建应用APPSecret
+     */
+    @TableField("app_secret")
+    private String appSecret;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.corpid;
+    }
+
+}

+ 60 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FeishuSend.java

@@ -0,0 +1,60 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FeishuSend extends Model<FeishuSend> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模板名称
+     */
+    @TableField("template_name")
+    private String templateName;
+
+    /**
+     * 飞书卡片消息模板Id
+     */
+    @TableField("template_id")
+    private String templateId;
+
+    /**
+     * 卡片相关变量  发送消息需要注意按照变量赋值
+     */
+    @TableField("template_variable")
+    private String templateVariable;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 191 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/Finance.java

@@ -0,0 +1,191 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-08-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Finance extends Model<Finance> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 工号
+     */
+    @TableField("job_number")
+    private String jobNumber;
+
+    /**
+     * 用户姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 部门名称
+     */
+    @TableField("dept_name")
+    private String deptName;
+
+    /**
+     * 月成本
+     */
+    @TableField("month_cost")
+    private BigDecimal monthCost;
+
+    /**
+     * 奖金
+     */
+    @TableField("bonus")
+    private BigDecimal bonus;
+
+    /**
+     * 津贴
+     */
+    @TableField("allowance")
+    private BigDecimal allowance;
+
+    /**
+     * 养老保险
+     */
+    @TableField("insurance_old")
+    private BigDecimal insuranceOld;
+
+    /**
+     * 医疗保险
+     */
+    @TableField("insurance_medical")
+    private BigDecimal insuranceMedical;
+
+    /**
+     * 失业保险
+     */
+    @TableField("insurance_losejob")
+    private BigDecimal insuranceLosejob;
+
+    /**
+     * 工伤保险
+     */
+    @TableField("insurance_injury")
+    private BigDecimal insuranceInjury;
+
+    /**
+     * 住房公积金
+     */
+    @TableField("house_fund")
+    private BigDecimal houseFund;
+
+    /**
+     * 其他
+     */
+    @TableField("others")
+    private BigDecimal others;
+
+    /**
+     * 总成本
+     */
+    @TableField("total_cost")
+    private BigDecimal totalCost;
+
+    /**
+     * 年月
+     */
+    @TableField("ymonth")
+    private String ymonth;
+
+    /**
+     * 自定义1
+     */
+    @TableField("custom_field1")
+    private BigDecimal customField1;
+
+    /**
+     * 自定义2
+     */
+    @TableField("custom_field2")
+    private BigDecimal customField2;
+
+    /**
+     * 自定义3
+     */
+    @TableField("custom_field3")
+    private BigDecimal customField3;
+
+    @TableField(exist = false)
+    private BigDecimal hourCost;
+
+    @TableField(exist = false)
+    private Integer hasReport;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    //按比例折算后的各项收入
+    public static Finance getByPercent(Finance from, double percent) {
+        Finance target = new Finance();
+        BigDecimal per = new BigDecimal(percent).divide(new BigDecimal(100));
+        target.setTotalCost(from.getTotalCost().multiply(per));
+        target.setMonthCost(from.getMonthCost().multiply(per));
+        target.setBonus(from.getBonus().multiply(per));
+        target.setAllowance(from.getAllowance().multiply(per));
+        target.setInsuranceOld(from.getInsuranceOld().multiply(per));
+        target.setInsuranceMedical(from.getInsuranceMedical().multiply(per));
+        target.setInsuranceLosejob(from.getInsuranceLosejob().multiply(per));
+        target.setInsuranceInjury(from.getInsuranceInjury().multiply(per));
+        target.setHouseFund(from.getHouseFund().multiply(per));
+        if (from.getCustomField1() != null) {
+            target.setCustomField1(from.getCustomField1().multiply(per));
+        } else {
+            target.setCustomField1(new BigDecimal(0));
+        }
+        if (from.getCustomField2() != null) {
+            target.setCustomField2(from.getCustomField2().multiply(per));
+        } else {
+            target.setCustomField2(new BigDecimal(0));
+        }
+        if (from.getCustomField3() != null) {
+            target.setCustomField3(from.getCustomField3().multiply(per));
+        } else {
+            target.setCustomField3(new BigDecimal(0));
+        }
+
+        return target;
+    }
+}

+ 38 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceAuditor.java

@@ -0,0 +1,38 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-03-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceAuditor extends Model<FinanceAuditor> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    @TableField("auditor_id")
+    private String auditorId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 83 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceCalculate.java

@@ -0,0 +1,83 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-04-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceCalculate extends Model<FinanceCalculate> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 工资字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("month_cost_calculate")
+    private Integer monthCostCalculate;
+
+    /**
+     * 奖金字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("bonus_calculate")
+    private Integer bonusCalculate;
+
+    /**
+     * 津贴字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("allowance_calculate")
+    private Integer allowanceCalculate;
+
+    /**
+     * 养老保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("insurance_old_calculate")
+    private Integer insuranceOldCalculate;
+
+    /**
+     * 医疗保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("insurance_medical_calculate")
+    private Integer insuranceMedicalCalculate;
+
+    /**
+     * 失业保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("insurance_losejob_calculate")
+    private Integer insuranceLosejobCalculate;
+
+    /**
+     * 工伤保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("insurance_injury_calculate")
+    private Integer insuranceInjuryCalculate;
+
+    /**
+     * 住房公积金字段, 1-参与计算,0-不参与计算
+     */
+    @TableField("house_fund_calculate")
+    private Integer houseFundCalculate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 205 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceFixedcolname.java

@@ -0,0 +1,205 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-03-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceFixedcolname extends Model<FinanceFixedcolname> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 工资字段
+     */
+    @TableField("month_cost")
+    private String monthCost;
+
+    /**
+     * 奖金字段
+     */
+    @TableField("bonus")
+    private String bonus;
+
+    /**
+     * 津贴字段
+     */
+    @TableField("allowance")
+    private String allowance;
+
+    /**
+     * 养老保险字段
+     */
+    @TableField("insurance_old")
+    private String insuranceOld;
+
+    /**
+     * 医疗保险字段
+     */
+    @TableField("insurance_medical")
+    private String insuranceMedical;
+
+    /**
+     * 失业保险字段
+     */
+    @TableField("insurance_losejob")
+    private String insuranceLosejob;
+
+    /**
+     * 工伤保险字段
+     */
+    @TableField("insurance_injury")
+    private String insuranceInjury;
+
+    /**
+     * 住房公积金字段
+     */
+    @TableField("house_fund")
+    private String houseFund;
+
+    @TableField(exist = false)
+    private String field1;
+
+    @TableField(exist = false)
+    private String field2;
+
+    @TableField(exist = false)
+    private String field3;
+
+    @TableField(exist = false)
+    private String field4;
+
+    @TableField(exist = false)
+    private String field5;
+
+    @TableField(exist = false)
+    private String field6;
+
+    @TableField(exist = false)
+    private String field7;
+
+
+    /**
+     * 自定义字段1 是否计入合计成本,1-参与,0-不参与
+     */
+    @TableField(exist = false)
+    private Integer field1Calculate;
+    /**
+     * 自定义字段2 是否计入合计成本,1-参与,0-不参与
+     */
+    @TableField(exist = false)
+    private Integer field2Calculate;
+    /**
+     * 自定义字段3 是否计入合计成本,1-参与,0-不参与
+     */
+    @TableField(exist = false)
+    private Integer field3Calculate;
+
+    @TableField(exist = false)
+    private Integer field4Calculate;
+
+    @TableField(exist = false)
+    private Integer field5Calculate;
+
+    @TableField(exist = false)
+    private Integer field6Calculate;
+
+    @TableField(exist = false)
+    private Integer field7Calculate;
+
+    /**
+     * 工资字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer monthCostCalculate;
+
+    /**
+     * 奖金字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer bonusCalculate;
+
+    /**
+     * 津贴字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer allowanceCalculate;
+
+    /**
+     * 养老保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer insuranceOldCalculate;
+
+    /**
+     * 医疗保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer insuranceMedicalCalculate;
+
+    /**
+     * 失业保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer insuranceLosejobCalculate;
+
+    /**
+     * 工伤保险字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer insuranceInjuryCalculate;
+
+    /**
+     * 住房公积金字段, 1-参与计算,0-不参与计算
+     */
+    @TableField(exist = false)
+    private Integer houseFundCalculate;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+    public FinanceFixedcolname copyFromCalculate(FinanceCalculate calculate) {
+        this.monthCostCalculate = calculate.getMonthCostCalculate();
+        this.bonusCalculate = calculate.getBonusCalculate();
+        this.allowanceCalculate = calculate.getAllowanceCalculate();
+        this.insuranceOldCalculate = calculate.getInsuranceOldCalculate();
+        this.insuranceMedicalCalculate = calculate.getInsuranceMedicalCalculate();
+        this.insuranceLosejobCalculate = calculate.getInsuranceLosejobCalculate();
+        this.insuranceInjuryCalculate = calculate.getInsuranceInjuryCalculate();
+        this.houseFundCalculate = calculate.getHouseFundCalculate();
+        return this;
+    }
+
+    public FinanceCalculate toCalculateObj() {
+        FinanceCalculate calculate = new FinanceCalculate();
+        calculate.setCompanyId(companyId);
+        calculate.setAllowanceCalculate(1);
+        calculate.setBonusCalculate(bonusCalculate);
+        calculate.setHouseFundCalculate(houseFundCalculate);
+        calculate.setInsuranceInjuryCalculate(insuranceInjuryCalculate);
+        calculate.setInsuranceMedicalCalculate(insuranceMedicalCalculate);
+        calculate.setInsuranceLosejobCalculate(insuranceLosejobCalculate);
+        calculate.setInsuranceOldCalculate(insuranceOldCalculate);
+        calculate.setMonthCostCalculate(monthCostCalculate);
+        return calculate;
+    }
+}

+ 104 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceImport.java

@@ -0,0 +1,104 @@
+package com.management.platform.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-03-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceImport extends Model<FinanceImport> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("ymonth")
+    private String ymonth;
+
+    @TableField("file_name")
+    private String fileName;
+
+    @TableField("server_name")
+    private String serverName;
+
+    @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime indate;
+
+    /**
+     * 操作人id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 操作人姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 0-待审核,1-已通过,2-已驳回,-1 -已撤销
+     */
+    @TableField("state")
+    private Integer state;
+
+    /**
+     * 审核人id
+     */
+    @TableField("auditor_id")
+    private String auditorId;
+
+    /**
+     * 审核人姓名
+     */
+    @TableField("auditor_name")
+    private String auditorName;
+
+    /**
+     * 是否重新计算日报
+     */
+    @TableField("recover_report")
+    private Integer recoverReport;
+
+    /**
+     * 是否覆盖月薪
+     */
+    @TableField("recover_monthcost")
+    private Integer recoverMonthcost;
+
+    /**
+     * 驳回原因
+     */
+    @TableField("reject_reason")
+    private String rejectReason;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 68 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceProjects.java

@@ -0,0 +1,68 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceProjects extends Model<FinanceProjects> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 年月
+     */
+    @TableField("ymonth")
+    private String ymonth;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 项目名称
+     */
+    @TableField("project_name")
+    private String projectName;
+
+    /**
+     * 项目编号
+     */
+    @TableField("project_code")
+    private String projectCode;
+
+    @TableField(exist = false)
+    private String categoryName;
+
+    @TableField(exist = false)
+    private Integer categoryId;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 51 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FinanceTblcuscol.java

@@ -0,0 +1,51 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-04-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class FinanceTblcuscol extends Model<FinanceTblcuscol> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 自定义字段名称
+     */
+    @TableField("field_name")
+    private String fieldName;
+
+    /**
+     * 1-参与计算,0-不参与计算
+     */
+    @TableField("need_calculate")
+    private Integer needCalculate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 0 - 0
fhKeeper/formulahousekeeper/management-crm-qrcode/src/main/java/com/management/platform/entity/FormFieldHead.java


Неке датотеке нису приказане због велике количине промена