From eec6adb6ea0f1c3ea222edfed296cd8b22da96c8 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 11 十一月 2026 09:41:15 +0800
Subject: [PATCH] 发票上传修改

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java |  108 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 71 insertions(+), 37 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java
index f656021..619c2d3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java
@@ -136,7 +136,7 @@
      * 閫氱敤涓婁紶璇锋眰
      */
     @PostMapping("/uploadOCR")
-    public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") String userId, @RequestParam("caseId") String caseId) throws Exception {
+    public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") String userId, @RequestParam("caseId") String caseId, @RequestParam(value = "voucher", required = false) String voucher) throws Exception {
 
         try {
             // 涓婁紶鏂囦欢璺緞
@@ -166,40 +166,72 @@
             String fileName = FileUploadUtils.upload(filePath, file);
             String url1 = serverConfig.getUrl();
             String url = url1 + fileName;
-            String base64= Base64.getEncoder().encodeToString(file.getBytes());
-            List<Map<String,Object>> lists=aliOCR(base64,userId,caseId);
-            List<ServiceInvoice> invoiceList=new ArrayList<>();
-            for(Map<String,Object> row : lists){
-                ServiceInvoice invoice=new ServiceInvoice();
-                if(ObjectUtils.isNotEmpty(userId)) {
-                    invoice.setUserId(Long.parseLong(userId));
+            // 鍕鹃�夆�滃嚟璇佲�濓細涓嶈皟鐢� OCR锛岀洿鎺ョ敓鎴愪竴鏉$被鍨嬩负鈥滃嚟璇佲�濈殑璁板綍锛岄噾棰�/鏃ユ湡绛夊埌绗簩姝ユ墜宸ヨˉ褰�
+            if ("1".equals(voucher) || "true".equalsIgnoreCase(voucher)) {
+                ServiceInvoice voucherInvoice = new ServiceInvoice();
+                if (ObjectUtils.isNotEmpty(userId)) {
+                    voucherInvoice.setUserId(Long.parseLong(userId));
                 }
-                if(ObjectUtils.isNotEmpty(caseId)) {
-                    invoice.setCaseId(Long.parseLong(caseId));
+                if (ObjectUtils.isNotEmpty(caseId)) {
+                    voucherInvoice.setCaseId(Long.parseLong(caseId));
                 }
-                invoice.setInvoiceType(row.get("鍙戠エ鍒嗙被")+"");
-                invoice.setInvoiceNo(row.get("鍙戠エ鍙风爜")+"");
-                invoice.setOccurDate(row.get("寮�绁ㄦ棩鏈�")+"");
-                invoice.setInvoiceAmount(row.get("閲戦")+"");
-                invoice.setSellerName(row.get("鍙楃エ鏂瑰悕绉�")+"");
-                invoice.setInvoiceUrl(url);
-                String invoiceName=newFilename.isEmpty() ? filename : newFilename;
-                invoice.setInvoiceName(invoiceName.split(".")[0]);
-                invoice.setExtContent(JSON.toJSONString(row));
-                invoice.setCreateBy(userId);
-                invoice.setCreateTime(DateUtils.getNowDate());
-                invoice.setUpdateBy(userId);
-                invoice.setUpdateTime(DateUtils.getNowDate());
-                serviceInvoiceService.save(invoice);
-                invoiceList.add(invoice);
-            }
+                String voucherFileName = newFilename.isEmpty() ? filename : newFilename;
+                int dotIndex = voucherFileName.lastIndexOf(".");
+                voucherInvoice.setInvoiceName(dotIndex > 0 ? voucherFileName.substring(0, dotIndex) : voucherFileName);
+                voucherInvoice.setInvoiceType("鍑瘉");
+                voucherInvoice.setInvoiceAmount("0");
+                voucherInvoice.setInvoiceUrl(url);
+                voucherInvoice.setCreateBy(userId);
+                voucherInvoice.setCreateTime(DateUtils.getNowDate());
+                voucherInvoice.setUpdateBy(userId);
+                voucherInvoice.setUpdateTime(DateUtils.getNowDate());
+                serviceInvoiceService.save(voucherInvoice);
 
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("fileName", fileName);
-            ajax.put("url", url);
-            ajax.put("OCRList", lists);
-            ajax.put("invoiceList", invoiceList);
-            return ajax;
+                List<ServiceInvoice> voucherList = new ArrayList<>();
+                voucherList.add(voucherInvoice);
+                AjaxResult ajax = AjaxResult.success();
+                ajax.put("fileName", fileName);
+                ajax.put("url", url);
+                ajax.put("OCRList", new ArrayList<>());
+                ajax.put("invoiceList", voucherList);
+                return ajax;
+            }else {
+                String base64 = Base64.getEncoder().encodeToString(file.getBytes());
+                List<Map<String, Object>> lists = aliOCR(base64, userId, caseId);
+                logger.info(JSON.toJSONString(lists));
+                List<ServiceInvoice> invoiceList = new ArrayList<>();
+                for (Map<String, Object> row : lists) {
+                    ServiceInvoice invoice = new ServiceInvoice();
+                    if (ObjectUtils.isNotEmpty(userId)) {
+                        invoice.setUserId(Long.parseLong(userId));
+                    }
+                    if (ObjectUtils.isNotEmpty(caseId)) {
+                        invoice.setCaseId(Long.parseLong(caseId));
+                    }
+                    //invoice.setInvoiceType(row.get("type")+"");
+                    invoice.setInvoiceNo(row.get("鍙戠エ鍙风爜") + "");
+                    invoice.setOccurDate(row.get("寮�绁ㄦ棩鏈�") + "");
+                    invoice.setInvoiceAmount(row.get("鍙戠エ閲戦") + "");
+                    invoice.setSellerName(row.get("鍙楃エ鏂瑰悕绉�") + "");
+                    invoice.setInvoiceUrl(url);
+                    String invoiceName = newFilename.isEmpty() ? filename : newFilename;
+                    invoice.setInvoiceName(invoiceName.substring(0, invoiceName.lastIndexOf(".")));
+                    invoice.setExtContent(JSON.toJSONString(row));
+                    invoice.setCreateBy(userId);
+                    invoice.setCreateTime(DateUtils.getNowDate());
+                    invoice.setUpdateBy(userId);
+                    invoice.setUpdateTime(DateUtils.getNowDate());
+                    serviceInvoiceService.save(invoice);
+                    invoiceList.add(invoice);
+                }
+
+                AjaxResult ajax = AjaxResult.success();
+                ajax.put("fileName", fileName);
+                ajax.put("url", url);
+                ajax.put("OCRList", lists);
+                ajax.put("invoiceList", invoiceList);
+                return ajax;
+            }
         } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
@@ -221,6 +253,7 @@
             HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
             //鑾峰彇response鐨刡ody
             String content= EntityUtils.toString(response.getEntity());
+            logger.info(content);
             JSONObject jsonContent=JSONObject.parseObject(content);
             JSONArray subMsgs=jsonContent.getJSONArray("subMsgs");
 
@@ -234,19 +267,20 @@
                 for(Map.Entry<String, Object> entry : result.entrySet()){
                     tempList.put(entry.getKey(),entry.getValue());
                 }
-                if(rowObject.getString("鍙戠エ鍒嗙被").equals("閾惰鎵垮厬姹囩エ")){
+                if(rowObject.getString("type").equals("閾惰鎵垮厬姹囩エ")){
                     BigDecimal totalAmount= ChineseUtils.chineseToNumber(result.getString("绁ㄦ嵁閲戦澶у啓"));
-                    tempList.put("閲戦",totalAmount);
+                    tempList.put("鍙戠エ閲戦",totalAmount);
                 }
-                if(rowObject.getString("鍙戠エ鍒嗙被").equals("鐏溅绁�")){
-                    tempList.put("閲戦",result.getString("绁ㄤ环"));
+                if(rowObject.getString("type").equals("鐏溅绁�")){
+                    tempList.put("鍙戠エ閲戦",result.getString("绁ㄤ环"));
                 }
-
+                tempList.put("type",rowObject.getString("type"));
                 lists.add(tempList);
             }
 
             return lists;
         } catch (Exception e) {
+            logger.error(e.getMessage());
             return lists;
         }
     }

--
Gitblit v1.9.3