| | |
| | | import com.ruoyi.web.controller.tool.HttpUtils; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | String base64= Base64.getEncoder().encodeToString( Files.readAllBytes(filePath)); |
| | | |
| | | AjaxResult ajax = AjaxResult.success(); |
| | | ajax.put("OCRList", aliOCR(base64,0,0)); |
| | | ajax.put("OCRList", aliOCR(base64,"0","0")); |
| | | return ajax; |
| | | } |
| | | |
| | |
| | | * 通用上传请求 |
| | | */ |
| | | @PostMapping("/uploadOCR") |
| | | public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") long userId, @RequestParam("caseId") long caseId) throws Exception { |
| | | public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") String userId, @RequestParam("caseId") String caseId) throws Exception { |
| | | |
| | | try { |
| | | // 上传文件路径 |
| | |
| | | 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(); |
| | | invoice.setUserId(userId); |
| | | invoice.setCaseId(caseId); |
| | | invoice.setInvoiceType(row.get("type")+""); |
| | | if(ObjectUtils.isNotEmpty(userId)) { |
| | | invoice.setUserId(Long.parseLong(userId)); |
| | | } |
| | | if(ObjectUtils.isNotEmpty(caseId)) { |
| | | invoice.setCaseId(Long.parseLong(caseId)); |
| | | } |
| | | invoice.setInvoiceType(row.get("发票分类")+""); |
| | | invoice.setInvoiceNo(row.get("发票号码")+""); |
| | | invoice.setOccurDate(row.get("开票日期")+""); |
| | | invoice.setInvoiceAmount(row.get("发票金额")+""); |
| | | invoice.setInvoiceAmount(row.get("金额")+""); |
| | | invoice.setSellerName(row.get("受票方名称")+""); |
| | | invoice.setInvoiceUrl(url); |
| | | invoice.setInvoiceName(newFilename); |
| | | 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); |
| | | } |
| | | |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | public List<Map<String,Object>> aliOCR(String base64,long userId,long caseId) { |
| | | public List<Map<String,Object>> aliOCR(String base64,String userId,String caseId) { |
| | | String host = "https://mixedmulti.market.alicloudapi.com"; |
| | | String path = "/ocrservice/mixedMultiInvoice"; |
| | | String method = "POST"; |
| | |
| | | |
| | | 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("银行承兑汇票")){ |
| | | if(rowObject.getString("发票分类").equals("银行承兑汇票")){ |
| | | BigDecimal totalAmount= ChineseUtils.chineseToNumber(result.getString("票据金额大写")); |
| | | tempList.put("发票金额",totalAmount); |
| | | tempList.put("金额",totalAmount); |
| | | } |
| | | if(rowObject.getString("type").equals("火车票")){ |
| | | tempList.put("发票金额",result.getString("票价")); |
| | | if(rowObject.getString("发票分类").equals("火车票")){ |
| | | tempList.put("金额",result.getString("票价")); |
| | | } |
| | | |
| | | lists.add(tempList); |