Просмотр исходного кода

- 小程序接口基本对接
- 对接好了合合信息科技的转移接口

Huanyi 3 месяцев назад
Родитель
Сommit
a5ffe2cb7c
34 измененных файлов с 509 добавлено и 34 удалено
  1. 5 0
      ruoyi-admin/pom.xml
  2. 10 0
      ruoyi-admin/src/main/resources/application.yml
  3. 8 0
      ruoyi-common/yingpaipay-common-file/pom.xml
  4. 23 0
      ruoyi-common/yingpaipay-common-file/src/main/java/com/yingpaipay/common/file/config/TextInConfig.java
  5. 1 0
      ruoyi-common/yingpaipay-common-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  6. 26 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/AppletMyTaskController.java
  7. 32 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/AppletScanController.java
  8. 0 4
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/TextInController.java
  9. 12 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletMyTaskDocumentBo.java
  10. 12 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletScanBo.java
  11. 12 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletUploadBo.java
  12. 14 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/dto/TextInR.java
  13. 7 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletMineCountVo.java
  14. 35 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletMyTaskDocumentVo.java
  15. 15 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletRecentDocumentVo.java
  16. 12 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletScanVo.java
  17. 6 4
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/DocumentAuditLogVo.java
  18. 6 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/FolderListVo.java
  19. 6 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectCenterListVo.java
  20. 9 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectCenterMemberListVo.java
  21. 7 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectFolderVo.java
  22. 6 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectInDashboardWorkbenchVo.java
  23. 7 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectListByNameVo.java
  24. 6 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectMemberListVo.java
  25. 7 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectMemberNotInCenterVo.java
  26. 6 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectOnDocumentVo.java
  27. 6 4
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterAuditListVo.java
  28. 6 4
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterFilingListVo.java
  29. 6 4
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterSubmissionListVo.java
  30. 2 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IDocumentService.java
  31. 14 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/ITextInService.java
  32. 30 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/DocumentServiceImpl.java
  33. 152 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/TextInServiceImpl.java
  34. 3 3
      script/sql/business/create.sql

+ 5 - 0
ruoyi-admin/pom.xml

@@ -65,6 +65,11 @@
             <artifactId>ruoyi-common-mail</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.yingpaipay</groupId>
+            <artifactId>yingpaipay-common-file</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>ruoyi-system</artifactId>

+ 10 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -71,6 +71,9 @@ spring:
         format:
             date-time: yyyy-MM-dd HH:mm:ss
     jackson:
+        factory:
+            stream-read-constraints:
+                max-string-length: 50000000
         # 日期格式化
         date-format: yyyy-MM-dd HH:mm:ss
         serialization:
@@ -259,3 +262,10 @@ warm-flow:
     node-tooltip: true
     # 默认Authorization,如果有多个token,用逗号分隔
     token-name: ${sa-token.token-name},clientid
+
+textin:
+    image-to-pdf: https://api.textin.com/ai/service/v1/file-convert/image-to-pdf
+    image-to-word: https://api.textin.com/robot/v1.0/api/doc_restore
+    word-to-image: https://api.textin.com/ai/service/v1/file-convert/word-to-image
+    word-to-pdf: https://api.textin.com/ai/service/v1/file-convert/word-to-pdf
+

+ 8 - 0
ruoyi-common/yingpaipay-common-file/pom.xml

@@ -39,6 +39,14 @@
             <artifactId>imageio-jpeg</artifactId>
             <version>3.9.4</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 23 - 0
ruoyi-common/yingpaipay-common-file/src/main/java/com/yingpaipay/common/file/config/TextInConfig.java

@@ -0,0 +1,23 @@
+package com.yingpaipay.common.file.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+
+@Data
+@AutoConfiguration
+public class TextInConfig {
+
+    @Value("${textin.image-to-pdf}")
+    private String imageToPdf;
+
+    @Value("${textin.image-to-word}")
+    private String imageToWord;
+
+    @Value("${textin.word-to-image}")
+    private String wordToImage;
+
+    @Value("${textin.word-to-pdf}")
+    private String wordToPdf;
+
+}

+ 1 - 0
ruoyi-common/yingpaipay-common-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.yingpaipay.common.file.config.TextInConfig

+ 26 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/AppletMyTaskController.java

@@ -0,0 +1,26 @@
+package com.yingpaipay.business.controller.applet;
+
+import com.yingpaipay.business.domain.bo.AppletMyTaskDocumentBo;
+import com.yingpaipay.business.domain.vo.AppletMyTaskDocumentVo;
+import com.yingpaipay.business.service.IDocumentService;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/applet/myTask")
+@RequiredArgsConstructor
+public class AppletMyTaskController extends BaseController {
+
+    private final IDocumentService documentService;
+
+    @GetMapping("/listDocument")
+    public TableDataInfo<AppletMyTaskDocumentVo> listDocument(AppletMyTaskDocumentBo bo, PageQuery pageQuery) {
+        return documentService.listDocument(bo, pageQuery);
+    }
+
+}

+ 32 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/AppletScanController.java

@@ -0,0 +1,32 @@
+package com.yingpaipay.business.controller.applet;
+
+import com.yingpaipay.business.domain.bo.AppletScanBo;
+import com.yingpaipay.business.domain.vo.AppletScanVo;
+import com.yingpaipay.business.service.ITextInService;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.web.core.BaseController;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/applet/scan")
+@RequiredArgsConstructor
+public class AppletScanController extends BaseController {
+
+    private final ITextInService textInService;
+
+    @PostMapping("/scan")
+    public R<AppletScanVo> scan(@RequestBody AppletScanBo bo) {
+        return R.ok(new AppletScanVo(textInService.wordToPdf(textInService.imageToWord(bo.getFile()))));
+    }
+
+
+//    @PostMapping("/upload")
+//    public R upload(@RequestBody AppletUploadBo bo) {
+//
+//    }
+
+}

+ 0 - 4
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/applet/TextInController.java

@@ -1,4 +0,0 @@
-package com.yingpaipay.business.controller.applet;
-
-public class TextInController {
-}

+ 12 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletMyTaskDocumentBo.java

@@ -0,0 +1,12 @@
+package com.yingpaipay.business.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class AppletMyTaskDocumentBo {
+
+    private String name;
+
+    private Integer status;
+
+}

+ 12 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletScanBo.java

@@ -0,0 +1,12 @@
+package com.yingpaipay.business.domain.bo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AppletScanBo {
+
+    private String file;
+
+}

+ 12 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/AppletUploadBo.java

@@ -0,0 +1,12 @@
+package com.yingpaipay.business.domain.bo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AppletUploadBo {
+
+    private List<String> files;
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/dto/TextInR.java

@@ -0,0 +1,14 @@
+package com.yingpaipay.business.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class TextInR<E> {
+
+    private Integer code;
+
+    private String message;
+
+    private E result;
+
+}

+ 7 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletMineCountVo.java

@@ -2,8 +2,14 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
+
 @Data
-public class AppletMineCountVo {
+public class AppletMineCountVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Integer toSubmit;
 

+ 35 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletMyTaskDocumentVo.java

@@ -0,0 +1,35 @@
+package com.yingpaipay.business.domain.vo;
+
+import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class AppletMyTaskDocumentVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String name;
+
+    private Date createTime;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "ossId")
+    private String url;
+    private Long ossId;
+
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
+    private String createByName;
+    private Long createBy;
+
+    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "submitterId")
+    private String submitter;
+    private Long submitterId;
+
+}

+ 15 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletRecentDocumentVo.java

@@ -1,11 +1,18 @@
 package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class AppletRecentDocumentVo {
+public class AppletRecentDocumentVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 
@@ -13,4 +20,11 @@ public class AppletRecentDocumentVo {
 
     private Date createTime;
 
+    private Long ossId;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "ossId")
+    private String url;
+
+    private String suffix;
+
 }

+ 12 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/AppletScanVo.java

@@ -0,0 +1,12 @@
+package com.yingpaipay.business.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class AppletScanVo {
+
+    private String fileBase64;
+
+}

+ 6 - 4
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/DocumentAuditLogVo.java

@@ -3,19 +3,21 @@ package com.yingpaipay.business.domain.vo;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
 import com.yingpaipay.business.constant.DictTypeConst;
-import com.yingpaipay.business.domain.DocumentAuditLog;
-import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import org.dromara.common.excel.annotation.ExcelDictFormat;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
 @ExcelIgnoreUnannotated
-@AutoMapper(target = DocumentAuditLog.class)
-public class DocumentAuditLogVo {
+public class DocumentAuditLogVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     @ExcelProperty(value = "序号")
     private Long id;

+ 6 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/FolderListVo.java

@@ -2,10 +2,15 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.List;
 
 @Data
-public class FolderListVo {
+public class FolderListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectCenterListVo.java

@@ -2,10 +2,15 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class ProjectCenterListVo {
+public class ProjectCenterListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 9 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectCenterMemberListVo.java

@@ -1,9 +1,17 @@
 package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
+import java.io.Serial;
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class ProjectCenterMemberListVo extends ProjectMemberListVo {
+public class ProjectCenterMemberListVo extends ProjectMemberListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private String centers;
 

+ 7 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectFolderVo.java

@@ -2,8 +2,14 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
+
 @Data
-public class ProjectFolderVo {
+public class ProjectFolderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private String folders;
 

+ 6 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectInDashboardWorkbenchVo.java

@@ -2,10 +2,15 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class ProjectInDashboardWorkbenchVo {
+public class ProjectInDashboardWorkbenchVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 7 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectListByNameVo.java

@@ -2,6 +2,9 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
+
 /**
  * @Author: Huanyi
  * @CreateTime: 2025-12-08
@@ -9,7 +12,10 @@ import lombok.Data;
  */
 
 @Data
-public class ProjectListByNameVo {
+public class ProjectListByNameVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectMemberListVo.java

@@ -2,6 +2,8 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -12,7 +14,10 @@ import java.util.Date;
  */
 
 @Data
-public class ProjectMemberListVo {
+public class ProjectMemberListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 7 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectMemberNotInCenterVo.java

@@ -2,8 +2,14 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
+
 @Data
-public class ProjectMemberNotInCenterVo {
+public class ProjectMemberNotInCenterVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectOnDocumentVo.java

@@ -2,6 +2,8 @@ package com.yingpaipay.business.domain.vo;
 
 import lombok.Data;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -12,7 +14,10 @@ import java.util.Date;
  */
 
 @Data
-public class ProjectOnDocumentVo {
+public class ProjectOnDocumentVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 4
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterAuditListVo.java

@@ -1,16 +1,18 @@
 package com.yingpaipay.business.domain.vo;
 
-import com.yingpaipay.business.domain.Document;
-import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-@AutoMapper(target = Document.class)
-public class TaskCenterAuditListVo {
+public class TaskCenterAuditListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 4
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterFilingListVo.java

@@ -1,16 +1,18 @@
 package com.yingpaipay.business.domain.vo;
 
-import com.yingpaipay.business.domain.Document;
-import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-@AutoMapper(target = Document.class)
-public class TaskCenterFilingListVo {
+public class TaskCenterFilingListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 6 - 4
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/TaskCenterSubmissionListVo.java

@@ -1,16 +1,18 @@
 package com.yingpaipay.business.domain.vo;
 
-import com.yingpaipay.business.domain.Document;
-import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import org.dromara.common.translation.annotation.Translation;
 import org.dromara.common.translation.constant.TransConstant;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
-@AutoMapper(target = Document.class)
-public class TaskCenterSubmissionListVo {
+public class TaskCenterSubmissionListVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
 
     private Long id;
 

+ 2 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IDocumentService.java

@@ -95,4 +95,6 @@ public interface IDocumentService {
     AppletMineCountVo getCount();
 
     TableDataInfo<AppletRecentDocumentVo> listRecentOnApplet(AppletRecentDocumentBo bo, PageQuery pageQuery);
+
+    TableDataInfo<AppletMyTaskDocumentVo> listDocument(AppletMyTaskDocumentBo bo, PageQuery pageQuery);
 }

+ 14 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/ITextInService.java

@@ -0,0 +1,14 @@
+package com.yingpaipay.business.service;
+
+import com.yingpaipay.business.domain.bo.AppletScanBo;
+
+
+public interface ITextInService {
+    String imageToPdf(AppletScanBo bo);
+
+    String imageToWord(String image);
+
+    String wordToImage(String docx);
+
+    String wordToPdf(String docx);
+}

+ 30 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/DocumentServiceImpl.java

@@ -529,6 +529,36 @@ public class DocumentServiceImpl implements IDocumentService {
             vo.setId(e.getId());
             vo.setName(e.getName());
             vo.setCreateTime(e.getCreateTime());
+            vo.setOssId(e.getOssId());
+            return vo;
+        }));
+    }
+
+    @Override
+    public TableDataInfo<AppletMyTaskDocumentVo> listDocument(AppletMyTaskDocumentBo bo, PageQuery pageQuery) {
+        IPage<Document> page = baseMapper.selectPage(
+            pageQuery.build(),
+            Wrappers.lambdaQuery(Document.class)
+                .eq(bo.getStatus() != null && bo.getStatus().equals(DocumentStatusConst.UN_UPLOAD), Document::getSubmitterId, LoginHelper.getUserId())
+                .eq(bo.getStatus() != null && bo.getStatus().equals(DocumentStatusConst.UN_AUDIT), Document::getCreateBy, LoginHelper.getUserId())
+                .eq(bo.getStatus() != null, Document::getStatus, bo.getStatus())
+                .and(bo.getStatus() == null,
+                    wrapper -> wrapper
+                    .eq(Document::getSubmitterId, LoginHelper.getUserId())
+                    .or()
+                    .eq(Document::getCreateBy, LoginHelper.getUserId())
+                )
+                .like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName())
+                .orderByDesc(Document::getId)
+        );
+        return TableDataInfo.build(page.convert(e -> {
+            AppletMyTaskDocumentVo vo = new AppletMyTaskDocumentVo();
+            vo.setId(e.getId());
+            vo.setName(e.getName());
+            vo.setCreateTime(e.getCreateTime());
+            vo.setOssId(e.getOssId());
+            vo.setCreateBy(e.getCreateBy());
+            vo.setSubmitterId(e.getSubmitterId());
             return vo;
         }));
     }

+ 152 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/TextInServiceImpl.java

@@ -0,0 +1,152 @@
+package com.yingpaipay.business.service.impl;
+
+import cn.hutool.http.Header;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.yingpaipay.business.domain.bo.AppletScanBo;
+import com.yingpaipay.business.domain.dto.TextInR;
+import com.yingpaipay.business.service.ITextInService;
+import com.yingpaipay.common.file.config.TextInConfig;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.exception.BusinessException;
+import org.dromara.common.json.utils.JsonUtils;
+import org.jspecify.annotations.NonNull;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Base64;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+@Service
+@RequiredArgsConstructor
+public class TextInServiceImpl implements ITextInService {
+
+    private static final String APP_ID = "efb7393aac470f5af564ad91b2a79d2e";
+    private static final String SECRET_CODE = "027e0c7ceedf5c8b583ec53debbe9420";
+
+    private final TextInConfig config;
+
+    @Override
+    public String imageToPdf(AppletScanBo bo) {
+
+        HttpResponse response = HttpRequest.post(config.getImageToPdf())
+            .header("x-ti-app-id", APP_ID)
+            .header("x-ti-secret-code", SECRET_CODE)
+            .body(JsonUtils.toJsonString(bo))
+            .execute();
+
+        TextInR result = getR(response);
+
+        return result.getResult().toString();
+
+    }
+
+    private static @NonNull TextInR getR(HttpResponse response) {
+        if (response.getStatus() != 200) {
+            throw new BusinessException("网络异常");
+        }
+        String body = response.body();
+        TextInR result = JsonUtils.parseObject(body, TextInR.class);
+        if (result == null) {
+            throw new BusinessException("识别失败");
+        }
+
+        if (result.getCode() != 200) {
+            throw new BusinessException(result.getMessage());
+        }
+        return result;
+    }
+
+    @Override
+    public String imageToWord(String image) {
+
+        HttpResponse response = HttpRequest.post(config.getImageToWord())
+            .header("x-ti-app-id", APP_ID)
+            .header("x-ti-secret-code", SECRET_CODE)
+            .header(Header.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE)
+            .body(Base64.getDecoder().decode(image))
+            .execute();
+
+        TextInR result = getR(response);
+
+        return JsonUtils.parseMap(JsonUtils.toJsonString(result.getResult())).getStr("docx");
+    }
+
+    @Override
+    public String wordToImage(String docx) {
+
+        HttpResponse response = HttpRequest.post(config.getWordToImage())
+            .header("x-ti-app-id", APP_ID)
+            .header("x-ti-secret-code", SECRET_CODE)
+            .header(Header.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE)
+            .body(docx)
+            .execute();
+
+        TextInR result = getR(response);
+        String zipBase64 = result.getResult().toString();
+
+        if (zipBase64.contains(",")) {
+            zipBase64 = zipBase64.substring(zipBase64.indexOf(",") + 1);
+        }
+
+        try {
+            byte[] zipData = Base64.getDecoder().decode(zipBase64);
+
+            Path tempDir = Files.createTempDirectory("word_to_image_");
+
+            try (ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(zipData))) {
+                ZipEntry entry;
+                while ((entry = zis.getNextEntry()) != null) {
+                    String name = entry.getName();
+                    if (name.contains("..")) {
+                        continue; // 跳过非法路径
+                    }
+
+                    Path filePath = tempDir.resolve(name).normalize();
+
+                    Files.createDirectories(filePath.getParent());
+
+                    if (!entry.isDirectory()) {
+                        try (OutputStream fos = Files.newOutputStream(filePath)) {
+                            byte[] buffer = new byte[8192];
+                            int len;
+                            while ((len = zis.read(buffer)) > 0) {
+                                fos.write(buffer, 0, len);
+                            }
+                        }
+                    }
+                    zis.closeEntry();
+                }
+            }
+
+        } catch (IllegalArgumentException e) {
+            throw new RuntimeException("Base64 格式无效", e);
+        } catch (IOException e) {
+            throw new RuntimeException("解压失败", e);
+        }
+
+        return "";
+    }
+
+    @Override
+    public String wordToPdf(String docx) {
+
+        HttpResponse response = HttpRequest.post(config.getWordToPdf())
+            .header("x-ti-app-id", APP_ID)
+            .header("x-ti-secret-code", SECRET_CODE)
+            .header(Header.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE)
+            .body(Base64.getDecoder().decode(docx))
+            .execute();
+
+        TextInR result = getR(response);
+
+        return result.getResult().toString();
+    }
+
+}

+ 3 - 3
script/sql/business/create.sql

@@ -103,7 +103,7 @@ CREATE TABLE `document_quality_control_task`
 (
     `id`           bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
     `name`         varchar(128)                NOT NULL COMMENT '质控名称',
-    `initiator_id` bigint unsigned             NOT NULL COMMENT '发起人',
+    `initiator`    bigint unsigned             NOT NULL COMMENT '发起人',
     `project_id`   bigint unsigned             NOT NULL COMMENT '质控项目',
     `start_date`   date COMMENT '开始时间',
     `deadline`     date COMMENT '截止时间',
@@ -141,12 +141,12 @@ CREATE TABLE `document_quality_control_task_log`
     `id`            bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
     `task_id`       bigint unsigned             NOT NULL COMMENT '质控任务',
     `detail_id`     bigint unsigned             NOT NULL COMMENT '指控环节',
-    `executor_id`   bigint unsigned             NOT NULL COMMENT '执行人',
+    `executor`      bigint unsigned             NOT NULL COMMENT '执行人',
     `execute_time`  datetime COMMENT '执行时间',
     `result`        tinyint(1) unsigned COMMENT '质控结果',
     `question_type` char(1) COMMENT '问题分类',
     `option`        varchar(255) COMMENT '质控意见',
-    `dealer_id`     bigint COMMENT '指定处理人',
+    `dealer`        bigint COMMENT '指定处理人',
     `deadline`      date COMMENT '处理截止日期',
     `create_dept`   bigint(20) COMMENT '创建部门',
     `create_by`     bigint(20) COMMENT '创建者',