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 | 268 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 230 insertions(+), 38 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 26873ed..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,50 +1,69 @@
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.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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import javax.management.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
/**
* 閫氱敤璇锋眰澶勭悊
- *
+ *
* @author ruoyi
*/
@RestController
-public class CommonController
-{
+public class CommonController {
private static final Logger log = LoggerFactory.getLogger(CommonController.class);
@Autowired
private ServerConfig serverConfig;
+ @Value("${appcode}")
+ private String appcode;
+
/**
* 閫氱敤涓嬭浇璇锋眰
- *
+ *
* @param fileName 鏂囦欢鍚嶇О
- * @param delete 鏄惁鍒犻櫎
+ * @param delete 鏄惁鍒犻櫎
*/
@GetMapping("common/download")
- public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
- {
- try
- {
- if (!FileUtils.checkAllowDownload(fileName))
- {
+ public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
+ try {
+ if (!FileUtils.checkAllowDownload(fileName)) {
throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName));
}
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
@@ -53,53 +72,208 @@
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream());
- if (delete)
- {
+ if (delete) {
FileUtils.deleteFile(filePath);
}
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
log.error("涓嬭浇鏂囦欢澶辫触", e);
}
}
+
/**
* 閫氱敤涓婁紶璇锋眰,type 涓�0 浠h〃鏄樊鏃呮姤閿�锛屼负1浠h〃璐圭敤鐢宠,鍏跺畠鍊间笉鍙�
*/
@PostMapping("/common/upload")
- public AjaxResult uploadFile(MultipartFile file) throws Exception
- {
- try
- {
+ public AjaxResult uploadFile(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 url = serverConfig.getUrl() + fileName;
+ String url1 = serverConfig.getUrl();
+ log.info("url1鐨勫�紀ld :{}", url1);
+ if (url1.contains("8032")) {
+ //杩欓噷鐨�8032涓嶆槸tomcat鐨勶紝鎵�浠ヨ杞垚tomcat鐨�
+ url1 = url1.replace("8032", "8032/prod-api");
+ }
+ log.info("url1鐨勫�糿ew :{}", url1);
+ String url = url1 + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("fileName", fileName);
ajax.put("url", url);
return ajax;
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return AjaxResult.error(e.getMessage());
}
}
+ 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
+// int count = 0;
+// ;//杩欎釜鍙橀噺璁板綍姣忎釜UTF-8瀛楃鐨勫瓧鑺傛暟锛岃嚦灏�1瀛楄妭
+// for (int j = ; j < bits.length; ) {
+// //寰幆姣忎竴琛屾暟缁勬暟鎹�-浠庡ご鍘昏--鍏堣杩欎釜瀛楃鏄嚑涓瓧鑺傜粍鎴愮殑
+// // 鐒跺悗鎸塽tf-8鐨勭紪鐮佹牸寮忕粍鍚堝瓧绗︿覆锛岃浆鎹负瀛楃鍗冲彲
+// if (bits[j] == 1) {
+// count++;
+// index++;
+// } else {
+// index++;//杩欎竴浣嶆槸1鍚庨潰璺熺殑閭d竴涓猳
+// //涓嶄负1锛屽垯璇存槑宸茬粡瑙f瀽瀹屽瓧鑺傛暟锛宑ount閲岄潰瀛樼殑濡傛灉鏄疈琛ㄧず鏄崟瀛楄妭鏁版嵁
+// //濡傛灉涓嶆槸o鍒欒〃绀烘槸澶氬瓧鑺傛暟鎹�
+// String str = "";
+// }
+// }
+// }
+//
+//}
/**
* 鏈湴璧勬簮閫氱敤涓嬭浇
*/
@GetMapping("/common/download/resource")
- public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
- throws Exception
- {
- try
- {
- if (!FileUtils.checkAllowDownload(resource))
- {
+ public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try {
+ if (!FileUtils.checkAllowDownload(resource)) {
throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource));
}
// 鏈湴璧勬簮璺緞
@@ -111,10 +285,28 @@
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
FileUtils.writeBytes(downloadPath, response.getOutputStream());
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
log.error("涓嬭浇鏂囦欢澶辫触", e);
}
}
-}
+
+
+ public int getTomcatPort() {
+ MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
+ try {
+ QueryExp protocol = Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"));
+ ObjectName name = new ObjectName("*:type=Connector,*");
+ Set<ObjectName> objectNames = beanServer.queryNames(name, protocol);
+ for (ObjectName objectName : objectNames) {
+ String catalina = objectName.getDomain();
+ if ("Catalina".equals(catalina)) {
+ return Integer.parseInt(objectName.getKeyProperty("port"));
+ }
+ }
+ } catch (MalformedObjectNameException e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.3