From 716f57dacce347ba154f3b6a994f4e383e3a97a4 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Thu, 05 Sep 2024 11:15:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java |  111 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 97 insertions(+), 14 deletions(-)

diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java
index 1d1ab60..a093e16 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java
@@ -1,6 +1,7 @@
 package cn.huge.module.file.controller.web;
 
 import cn.huge.base.common.exception.ClientException;
+import cn.huge.module.utils.BaiduOcrUtils;
 import cn.huge.base.common.utils.ContentTypeUtils;
 import cn.huge.base.common.utils.ReturnFailUtils;
 import cn.huge.base.common.utils.ReturnSucUtils;
@@ -14,6 +15,7 @@
 import cn.huge.module.file.service.FileRelateService;
 import cn.huge.module.file.utils.FileUtils;
 import cn.huge.module.file.utils.FtpUtils;
+import cn.huge.module.sys.constant.FileBaseConsts;
 import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum;
 import cn.huge.module.sys.dto.FileInfoBaseDTO;
 import com.google.common.collect.Maps;
@@ -22,9 +24,6 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -38,8 +37,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * @title: 附件信息表接口api-web端
@@ -66,22 +63,25 @@
 
     /**
      * 页面附件上传-文件流方式
-     * @url {ctx}/api/web/fileInfo/upload/{mainId}/{ownerId}/{ownerType}
+     * @url {ctx}/api/web/fileInfo/upload?mainId=&ownerId=&ownerType=
      * @param mainId 所属业务主体编号
      * @param ownerId 所属业务编号
      * @param ownerType 所属业务类型
      * @param request 请求头
      * @return Object
      */
-    @PostMapping("/upload/{ownerId}/{ownerType}")
-    public Object upload(@PathVariable(value = "mainId") String mainId,
-                         @PathVariable(value = "ownerId") String ownerId,
-                         @PathVariable(value = "ownerType") String ownerType,
+    @PostMapping("/upload")
+    public Object upload(@RequestParam(value = "mainId") String mainId,
+                         @RequestParam(value = "ownerId") String ownerId,
+                         @RequestParam(value = "ownerType") String ownerType,
                          @CurrentUser String userId, MultipartHttpServletRequest request) {
         try{
             CtUserDTO loginUser = custClient.clientGetUser(userId);
             UploaderDTO uploaderDTO = new UploaderDTO();
-            BeanUtils.copyProperties(loginUser, uploaderDTO);
+            uploaderDTO.setUploaderId(loginUser.getId());
+            uploaderDTO.setUploaderName(loginUser.getTrueName());
+            uploaderDTO.setUploaderType(FileBaseConsts.UPLOADER_TYPE_1);
+            uploaderDTO.setCustId(loginUser.getCustId());
             List<FileInfoBaseDTO> files = new ArrayList<>();
             Iterator<String> itr = request.getFileNames();
             int fileCount = fileRelateService.countByOwnerIdAndType(ownerId, ownerType)+1;
@@ -98,6 +98,12 @@
                         FileInfo fileInfo = service.webUploadFile(file, mainId, ownerId, ownerType, fileCount, uploaderDTO);
                         FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO();
                         BeanUtils.copyProperties(fileInfo, fileInfoBaseDTO);
+
+                        // 如果是身份证,就调用ocr识别
+                        if (FileOwnerTypeBaseEnum.OWNER_TYPE_202.getIndex().equals(ownerType)){
+                            fileInfoBaseDTO.setIdcardOcrResult(BaiduOcrUtils.ocrIdcard(file.getBytes()));
+                        }
+
                         files.add(fileInfoBaseDTO);
                         fileCount++;
                     } else {
@@ -112,7 +118,7 @@
     }
 
     /**
-     * 在线查附件
+     * 在线查附件-文件流方式
      * @url {ctx}/api/web/fileInfo/show/{id}
      * @param id 附件编号
      * @param response 响应头
@@ -145,7 +151,7 @@
             IOUtils.closeQuietly(inputStream);
             IOUtils.closeQuietly(outputStream);
         } catch (Exception e) {
-            log.error("controller接口[FileInfoWebController.show]请求异常:"+e, e);
+            log.error("controller接口[FileInfoWebController.show]请求失败,异常信息:"+e, e);
             throw new ClientException("FileInfoWebController.show", e);
         }
     }
@@ -172,12 +178,89 @@
             IOUtils.closeQuietly(inputStream);
             IOUtils.closeQuietly(outputStream);
         } catch (Exception e) {
-            log.error("controller接口[FileInfoWebController.down]请求异常:"+e, e);
+            log.error("controller接口[FileInfoWebController.down]请求失败,异常信息:"+e, e);
             throw new ClientException("FileInfoWebController.down", e);
         }
     }
 
+    /**
+     * ocr识别文字
+     * @url {ctx}/api/web/fileInfo/recognitionText?ownerId=&ownerType=
+     * @param request
+     * @return Object
+     */
+    @PostMapping(value = "/recognitionText")
+    public Object recognitionText(MultipartHttpServletRequest request){
+        try{
+            Map<String , Object> result = Maps.newHashMap();
+            Iterator<String> itr = request.getFileNames();
+            while (itr.hasNext()) {
+                MultipartFile file = request.getFile(itr.next());
+                try{
+                    Map<String , Object> map = BaiduOcrUtils.ocrText(file.getBytes());
+                    result.put("ocrResult", map);
+                }catch (Exception e){
+                    log.error("Controller接口[FileInfoController.recognitionText]请求异常:"+e, e);
+                    return ReturnFailUtils.getRepInfo("OCR失败!");
+                }
+            }
+            return ReturnSucUtils.getRepInfo("识别成功", result);
+        }catch (Exception e){
+            return ReturnFailUtils.getRepInfo(e.getMessage());
+        }
+    }
 
+    /**
+     * 查看附件组件-分类查询附件
+     * @url {ctx}/api/web/fileInfo/listFileByCat
+     * @param mainId 所属业务主体编号
+     * @return Object
+     */
+    @GetMapping("/listFileByCat")
+    public Object listFileByCat(@RequestParam(value = "mainId") String mainId, @CurrentUser String userId) {
+        try{
+            Map<String, Object> terms = Maps.newHashMap();
+            // 材料大类
+            String fileOwnerCat = request.getParameter("fileOwnerCat");
+            if (StringUtils.isNotBlank(fileOwnerCat)){
+                terms.put("ownerCat", fileOwnerCat);
+            }
+            // 上传时间区间
+            String createStart = request.getParameter("createStart");
+            String createEnd = request.getParameter("createEnd");
+            if(StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) {
+                terms.put("createStart", createStart);
+                terms.put("createEnd", createEnd);
+            }
+            // 上传人类型
+            String uploaderType = request.getParameter("uploaderType");
+            if (StringUtils.isNotBlank(uploaderType)){
+                terms.put("uploaderType", uploaderType);
+            }
+            // 所属主体编号
+            terms.put("mainId", mainId);
+            return ReturnSucUtils.getRepInfo(service.webListFileByCat(terms));
+        } catch (Exception e) {
+            log.error("service方法[FileInfoWebController.listFileByCat]请求失败,异常信息:"+e, e);
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
+
+    /**
+     * 删除附件
+     * @url {ctx}/api/web/fileInfo/deleteFileById?id=
+     * @param id 附件编号
+     * @return Object
+     */
+    @GetMapping("/deleteFileById")
+    public Object deleteFileById(@RequestParam(value = "id") String id) {
+        try {
+            service.deleteFileById(id);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo();
+        }
+    }
 
 
 }

--
Gitblit v1.8.0