From 83942be780d0560baa75c15e1124cc2bc997510b Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 20 十月 2026 15:07:40 +0800
Subject: [PATCH] 捐献器官移植新增,修改,删除新新数据同步捐献器官费用表明细
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 151 +++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 129 insertions(+), 22 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index 16be382..e6364fc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -1,28 +1,31 @@
package com.ruoyi.web.controller.common;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.ChineseUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;
+import com.ruoyi.web.controller.tool.HttpUtils;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.apache.coyote.AbstractProtocol;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.text.PDFTextStripper;
+import org.apache.http.HttpResponse;
+import org.apache.http.util.EntityUtils;
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.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.management.*;
@@ -30,7 +33,11 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.lang.management.ManagementFactory;
-import java.util.Set;
+import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
/**
* 閫氱敤璇锋眰澶勭悊
@@ -44,6 +51,8 @@
@Autowired
private ServerConfig serverConfig;
+ @Value("${appcode}")
+ private String appcode;
/**
* 閫氱敤涓嬭浇璇锋眰
@@ -122,6 +131,120 @@
}
}
+ public String aliOCR(String base64) {
+ String host = "https://mixedmulti.market.alicloudapi.com";
+ String path = "/ocrservice/mixedMultiInvoice";
+ String method = "POST";
+ Map<String, String> headers = new HashMap<String, String>();
+ //鏈�鍚庡湪header涓殑鏍煎紡(涓棿鏄嫳鏂囩┖鏍�)涓篈uthorization:APPCODE 83359fd73fe94948385f570e3c139105
+ headers.put("Authorization", "APPCODE " + appcode);
+ //鏍规嵁API鐨勮姹傦紝瀹氫箟鐩稿搴旂殑Content-Type
+ headers.put("Content-Type", "application/json; charset=UTF-8");
+ Map<String, String> querys = new HashMap<String, String>();
+ String bodys = "{\"img\":\""+base64+"\"}";
+
+
+ try {
+
+ HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
+ System.out.println(response.toString());
+ //鑾峰彇response鐨刡ody
+ String content=EntityUtils.toString(response.getEntity());
+ JSONObject jsonContent=JSONObject.parseObject(content);
+ JSONArray subMsgs=jsonContent.getJSONArray("subMsgs");
+ List<Map<String,Object>> lists=new ArrayList<>();
+ for(Object row: subMsgs){
+ Map<String,Object> tempList=new HashMap<>();
+ JSONObject rowObject=(JSONObject)row;
+ tempList.put("鍙戠エ鍒嗙被",rowObject.getString("type"));
+ JSONObject result=((JSONObject)rowObject.get("result")).getJSONObject("data");
+ for(Map.Entry<String, Object> entry : result.entrySet()){
+ tempList.put(entry.getKey(),entry.getValue());
+ }
+ if(rowObject.getString("type").equals("閾惰鎵垮厬姹囩エ")){
+ BigDecimal totalAmount= ChineseUtils.chineseToNumber(result.getString("绁ㄦ嵁閲戦澶у啓"));
+ tempList.put("鍙戠エ閲戦",totalAmount);
+ }
+ if(rowObject.getString("type").equals("鐏溅绁�")){
+ tempList.put("鍙戠エ閲戦",result.getString("绁ㄤ环"));
+ }
+
+ lists.add(tempList);
+ }
+ System.out.println(content);
+ return JSON.toJSONString(lists);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "{}";
+ }
+ }
+
+ /**
+ * 閫氱敤涓婁紶璇锋眰
+ */
+ @ApiOperation("testOCR")
+ @PostMapping("/common/testOCR")
+ public AjaxResult testOCR(@RequestBody String fileName) throws Exception {
+ Path filePath= Paths.get(fileName);
+ String base64= Base64.getEncoder().encodeToString( Files.readAllBytes(filePath));
+
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("OCRList", aliOCR(base64));
+ return ajax;
+ }
+
+ /**
+ * 閫氱敤涓婁紶璇锋眰
+ */
+ @PostMapping("/common/uploadOCR")
+ public AjaxResult uploadOCR(MultipartFile file) throws Exception {
+
+ try {
+ // 涓婁紶鏂囦欢璺緞
+ String filePath = RuoYiConfig.getUploadPath();
+
+ //鍒ゆ柇鏂囦欢鏄惁瀛樺湪
+ String filename = file.getOriginalFilename().trim();
+ String felinamePath = FileUploadUtils.extractFilename(file);
+// String pathFileName = FileUploadUtils.getPathFileName(filePath, s);
+ for (int i=1;i<500;i++) {
+ File file1 = new File(filePath + "/" + felinamePath);
+ boolean exists = file1.exists();
+ if (exists) {
+ int index = filename.lastIndexOf(".");
+ String startStr = filename.substring(0, index);
+ String endStr = filename.substring(index, filename.length());
+
+ String newFilename = startStr + "-" + i + endStr; // your new filename
+ felinamePath = DateUtils.datePath() + "/" + newFilename;
+ String contentType = file.getContentType();
+ byte[] bytes = file.getBytes();
+ file = new MockMultipartFile(newFilename, newFilename, contentType, bytes);
+ }else{
+ break;
+ }
+ }
+ // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+ String fileName = FileUploadUtils.upload(filePath, file);
+ String url1 = serverConfig.getUrl();
+ log.info("url1鐨勫�紀ld :{}", url1);
+ if (url1.contains("8032")) {
+ //杩欓噷鐨�8032涓嶆槸tomcat鐨勶紝鎵�浠ヨ杞垚tomcat鐨�
+ url1 = url1.replace("8032", "8032/prod-api");
+ }
+ String base64= Base64.getEncoder().encodeToString(file.getBytes());
+
+ log.info("url1鐨勫�糿ew :{}", url1);
+ String url = url1 + fileName;
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("fileName", fileName);
+ ajax.put("url", url);
+ ajax.put("OCRList", aliOCR(base64));
+ return ajax;
+ } catch (Exception e) {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
// private static void parseUTF(int[] bits) {
// int index = 0;//杩欎釜鎸囬拡鎸囧悜姣忎竴琛屽惊鐜椂鍒椾笅鏍囩殑浣嶇疆锛屼笅涓�琛屽紑濮嬫椂閲嶆柊缃綅0
@@ -186,20 +309,4 @@
return 0;
}
- @ApiOperation("pdf璇嗗埆")
- @GetMapping("/common/pdfBox")
- public String pdfBox(String filePath) throws Exception {
- try (PDDocument document = PDDocument.load(new File(filePath))) {
- PDFTextStripper stripper = new PDFTextStripper();
- stripper.setSortByPosition(true); // 鎸夐〉闈㈡帓鐗堥『搴忚緭鍑烘枃瀛楋紝鍙戠エ蹇呴』寮�杩欎釜
- // 鍙戠エ浠g爜
- String codeReg = "鍙戠エ浠g爜[:锛歖(\\d{10,12})";
- // 鍙戠エ鍙风爜
- String noReg = "鍙戠エ鍙风爜[:锛歖(\\d{8})";
- // 浠风◣鍚堣
- String amountReg = "浠风◣鍚堣.*?楼([0-9.]+)";
- String text=stripper.getText(document);
- return text;
- }
- }
}
\ No newline at end of file
--
Gitblit v1.9.3