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 | 97 ++++++++++++++++++++++++++++++++----------------
1 files changed, 64 insertions(+), 33 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 3394cd3..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,41 +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);
- 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));
+ // 鍕鹃�夆�滃嚟璇佲�濓細涓嶈皟鐢� 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("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);
- }
+ 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());
}
--
Gitblit v1.9.3