From b6fa58652c12f0c61409cc44dfd8ad78f821b6c6 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Wed, 11 Sep 2024 01:19:25 +0800
Subject: [PATCH] 1、流程bug修复
---
dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java | 133 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 127 insertions(+), 6 deletions(-)
diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java
index 09a62b1..183f1e9 100644
--- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java
+++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java
@@ -8,14 +8,19 @@
import cn.huge.module.client.api.impl.CustClientImpl;
import cn.huge.module.constant.BaseConsts;
import cn.huge.module.cust.dto.CtUserDTO;
+import cn.huge.module.cust.dto.PaUserDTO;
import cn.huge.module.file.domain.dto.UploaderDTO;
import cn.huge.module.file.domain.po.FileInfo;
import cn.huge.module.file.service.FileInfoService;
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 cn.huge.module.sys.dto.IdcardOcrResultDTO;
+import cn.huge.module.utils.BaiduOcrUtils;
+import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -33,6 +38,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
/**
* @title: 附件信息表接口api-wechat端
@@ -59,19 +65,25 @@
/**
* 页面附件上传-文件流方式
- * @url {ctx}/api/wechat/fileInfo/upload/{ownerId}/{ownerType}
+ * @url {ctx}/api/wechat/fileInfo/upload?mainId=&ownerId=&ownerType=
+ * @param mainId 所属业务主体编号
* @param ownerId 所属业务编号
* @param ownerType 所属业务类型
* @param request 请求头
* @return Object
*/
- @PostMapping("/upload/{ownerId}/{ownerType}")
- public Object upload(@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);
+ PaUserDTO loginUser = custClient.paClientGetUserAll(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;
@@ -85,9 +97,15 @@
if (StringUtils.isEmpty(ownerType)) {
ownerType = FileOwnerTypeBaseEnum.OWNER_TYPE_000.getIndex();
}
- FileInfo fileInfo = service.webPploadFile(file, ownerId, ownerType, fileCount, uploaderDTO);
+ FileInfo fileInfo = service.wechatUploadFile(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 {
@@ -167,7 +185,110 @@
}
}
+ /**
+ * 删除附件
+ * @url {ctx}/api/wechat/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();
+ }
+ }
+ /**
+ * 根据多个所属编号查询附件
+ * @url {ctx}/api/wechat/fileInfo/listByMainId
+ * @return Object
+ */
+ @GetMapping("/listByMainId")
+ public Object listByMainId(@RequestParam(value = "mainId") String mainId) {
+ try {
+ return ReturnSucUtils.getRepInfo(service.listByMainId(mainId));
+ } catch (Exception e) {
+ return ReturnFailUtils.getRepInfo();
+ }
+ }
+ /**
+ * ocr识别身份证
+ * @url {ctx}/api/wechat/fileInfo/wecatRecognition?ownerId=&ownerType=
+ * @param request
+ * @return Object
+ */
+ @PostMapping(value = "/wecatRecognition")
+ public Object wecatRecognition(MultipartHttpServletRequest request, @CurrentUser String userId){
+ try{
+ // todo 判断是小程序还是PC
+// UploaderDTO uploaderDTO = new UploaderDTO();
+// PaUserDTO paUserDTO = custClient.paClientGetUserAll(userId);
+// BeanUtils.copyProperties(paUserDTO, uploaderDTO);
+ Map<String , Object> result = Maps.newHashMap();
+ Iterator<String> itr = request.getFileNames();
+ while (itr.hasNext()) {
+ MultipartFile file = request.getFile(itr.next());
+// try{
+// String ownerId = request.getParameter("ownerId");
+// if (StringUtils.isNotEmpty(ownerId)) {
+// String ownerType = request.getParameter("ownerType");
+// int fileCount = fileRelateService.countByOwnerIdAndType(ownerId, ownerType)+1;
+// if(StringUtils.isEmpty(ownerType)){
+// ownerType = FileOwnerTypeBaseEnum.OWNER_TYPE_000.getIndex();
+// }
+// FileInfo fileInfo = service.wechatUploadFile(file, ownerId,ownerId, ownerType, fileCount, uploaderDTO);
+// FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO();
+// BeanUtils.copyProperties(fileInfo, fileInfoBaseDTO);
+// result.put("attachment", fileInfoBaseDTO);
+// }
+// }catch (Exception e){
+// log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e);
+// }
+ try{
+ IdcardOcrResultDTO map = BaiduOcrUtils.ocrIdcard(file.getBytes());
+ result.put("ocrResult", map);
+ }catch (Exception e){
+ log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e);
+ return ReturnFailUtils.getRepInfo("OCR失败失败!");
+ }
+ }
+ return ReturnSucUtils.getRepInfo(result);
+ }catch (Exception e){
+ log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e);
+ return ReturnFailUtils.getRepInfo(e.getMessage());
+ }
+ }
+
+ /**
+ * ocr识别文字
+ * @url {ctx}/api/wechat/fileInfo/recognitionText
+ * @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接口[FileInfoWechatController.recognitionText]请求异常:"+e, e);
+ return ReturnFailUtils.getRepInfo("OCR失败!");
+ }
+ }
+ return ReturnSucUtils.getRepInfo("识别成功", result);
+ }catch (Exception e){
+ log.error("Controller接口[FileInfoWechatController.recognitionText]请求异常:"+e, e);
+ return ReturnFailUtils.getRepInfo(e.getMessage());
+ }
+ }
}
--
Gitblit v1.8.0