Просмотр исходного кода

业务处理单问题处理/发票助手改造

徐昊 8 месяцев назад
Родитель
Сommit
729039527c

+ 1 - 1
src/main/java/fi/em/editPlugin/BusinessProcessingEditPlugin.java → src/main/java/fi/em/formPlugin/BusinessProcessingEditPlugin.java

@@ -1,4 +1,4 @@
-package fi.em.editPlugin;
+package fi.em.formPlugin;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;

+ 1 - 1
src/main/java/fi/em/editPlugin/CostAllocationEditPlugin.java → src/main/java/fi/em/formPlugin/CostAllocationEditPlugin.java

@@ -1,4 +1,4 @@
-package fi.em.editPlugin;
+package fi.em.formPlugin;
 
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.exception.KDBizException;

+ 0 - 48
src/main/java/fi/rim/utils/ApiHttpUtils.java

@@ -1,48 +0,0 @@
-package fi.rim.utils;
-
-
-import com.alibaba.fastjson.JSON;
-import kd.bos.script.annotations.KSObject;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-@KSObject
-public class ApiHttpUtils {
-
-    public static String Posthttp(String url, String Params) throws Exception {
-        // 获得Http客户端
-        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
-        // 创建Post请求
-        //设置请求路径
-        HttpPost httpPost = new HttpPost(url);
-        httpPost.setHeader("Content-type", "application/json;charset=utf-8");
-        StringEntity entity = new StringEntity(Params,"UTF-8");
-        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
-        // 设置编码格式
-        entity.setContentEncoding("UTF-8");
-        // 发送Json格式的数据请求
-        entity.setContentType("application/json");
-        httpPost.setEntity(entity);
-        // 响应模型(发送post请求)
-        CloseableHttpResponse response = httpClient.execute(httpPost);
-        // 从响应模型中获取响应实体
-        HttpEntity responseEntity = response.getEntity();
-        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
-        if (responseEntity != null) {
-            jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
-            return jsonObject.toJSONString();
-        }
-        // 释放资源
-        if (httpClient != null) {
-            httpClient.close();
-        }
-        if (response != null) {
-            response.close();
-        }
-        return "";
-    }
-}

+ 26 - 40
src/main/java/fi/rim/fromPlugin/FpzsMainEXPlugin.java → src/main/java/kd/imc/rim/FpzsMainEXPlugin.java

@@ -1,4 +1,4 @@
-package fi.rim.fromPlugin;
+package kd.imc.rim;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -7,7 +7,17 @@ import com.google.common.collect.Maps;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import kd.bos.cache.CacheFactory;
@@ -79,7 +89,6 @@ import kd.imc.rim.common.constant.InputInvoiceTypeEnum;
 import kd.imc.rim.common.helper.ExcelHelper;
 import kd.imc.rim.common.helper.ImcSaveServiceHelper;
 import kd.imc.rim.common.invoice.collector.ScannerServiceEx;
-import kd.imc.rim.common.invoice.collector.ScannerService;
 import kd.imc.rim.common.invoice.fpzs.FpzsAwsService;
 import kd.imc.rim.common.invoice.fpzs.FpzsMainService;
 import kd.imc.rim.common.invoice.query.AttachQueryService;
@@ -446,27 +455,8 @@ public class FpzsMainEXPlugin extends LicenseFormPlugin implements RowClickEvent
     }
 
     public void customEvent(CustomEventArgs e) {
-        //操作类型
         String eventName = e.getEventName();
-        //附件信息obj
         String eventArgs = e.getEventArgs();
-        JSONObject filejson = JSON.parseObject(eventArgs);
-        String  Fileurl = filejson.getString("url");
-        String  Filetype = filejson.getString("type");
-        boolean pdf = Filetype.contains("pdf");
-        boolean jpg = Filetype.contains("jpg");
-        boolean jpeg = Filetype.contains("jpeg");
-        boolean png = Filetype.contains("png");
-        String FileType="";
-        if(pdf){
-            FileType="pdf";
-        } else if (jpg){
-            FileType="jpg";
-        }else if (jpeg){
-            FileType="jpeg";
-        }else if (png){
-            FileType="png";
-        }
         if ("pushData".equals(eventName) || "onMessage".equals(eventName)) {
             this.dealWebSoceketMsag(eventArgs);
         }
@@ -589,6 +579,20 @@ public class FpzsMainEXPlugin extends LicenseFormPlugin implements RowClickEvent
                     json = JSON.parseObject(eventArgs);
                     type = json.getString("status");
                     name = json.getString("name");
+                    boolean pdf = name.contains("pdf");
+                    boolean jpg = name.contains("jpg");
+                    boolean jpeg = name.contains("jpeg");
+                    boolean png = name.contains("png");
+                    String FileType="";
+                    if(pdf){
+                        FileType="pdf";
+                    } else if (jpg){
+                        FileType="jpg";
+                    }else if (jpeg){
+                        FileType="jpeg";
+                    }else if (png){
+                        FileType="png";
+                    }
                     cache = json.getString("errcode");
                     description = json.getString("description");
                     if ("success".equals(type) && !"40002".equals(cache)) {
@@ -743,24 +747,6 @@ public class FpzsMainEXPlugin extends LicenseFormPlugin implements RowClickEvent
                         }
 
                         JSONObject data = FpzsMainService.getInvoiceDataCache(pageId);
-
-                       /*  if(!FileType.isEmpty()){
-                             if("pdf".equals(FileType) || "jpg".equals(FileType) || "png".equals(FileType)){
-                                 String cache = CacheHelper.get("fpzsinvoicecache" + pageId);
-                                 if (StringUtils.isNotEmpty(cache)) {
-                                     data = new JSONObject((Map) JSONObject.parseObject(cache, LinkedHashMap.class));
-                                     JSONObject jsonObject = data.getJSONObject(cache);
-                                     if(jsonObject!=null){
-                                         jsonObject.put("salerName","徐昊测试发票");
-                                         jsonObject.put("taxAmount","8888");
-                                         jsonObject.put("totalAmount","18888");
-                                         jsonObject.put("invoiceNo","123456789");
-                                         data.put(cache,jsonObject);
-                                     }
-                                 }
-                             }
-
-                         }*/
                         FpzsMainService.updateInvoiceGrid(this, data);
                         this.updateInvoiceCard(data);
                         Map<String, String> attIdSerialMap = Maps.newLinkedHashMap();

+ 1 - 1
src/main/java/kd/imc/rim/common/helper/RecognitionCheckHelperEx.java

@@ -157,7 +157,7 @@ public class RecognitionCheckHelperEx {
                             exceptionDecr = true;
                             threadCount = CacheHelper.inc("recogThread", countTimeOut);
                             logger.info("识别线程数量{}", threadCount);
-
+                            //调用接口
                             recognitionResult = RecognitionFactory.getRecognitionService(awsRecognitionImpl).recognitionInvoice(recognitionParam);
 
                             threadCount = CacheHelper.decr("recogThread", countTimeOut);

+ 13 - 11
src/main/java/kd/imc/rim/common/invoice/recognitionnew/impl/AwsRecognitionServiceEx.java

@@ -8,10 +8,12 @@ package kd.imc.rim.common.invoice.recognitionnew.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Maps;
-import java.io.ByteArrayInputStream;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+
+import kd.imc.rim.utils.FileOutputStreamExample;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.util.StringUtils;
@@ -22,8 +24,6 @@ import kd.imc.rim.common.invoice.recognitionnew.RecognitionService;
 import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionParam;
 import kd.imc.rim.common.invoice.recognitionnew.model.RecognitionResult;
 import kd.imc.rim.common.message.exception.MsgException;
-import kd.imc.rim.common.utils.AwsFpyService;
-import kd.imc.rim.common.utils.HttpUtil;
 import org.apache.commons.compress.utils.Lists;
 
 public class AwsRecognitionServiceEx implements RecognitionService {
@@ -51,19 +51,21 @@ public class AwsRecognitionServiceEx implements RecognitionService {
         bodyMap.put("taxNo", extMap.get("taxNo") + "");
         bodyMap.put("recogType", recognitionParam.getRecogType());
         bodyMap.put("overseaAppCode", recognitionParam.getAppCode());
-
+        String fileUrl = recognitionParam.getFileUrl();
+        String imgStrToBase64 = FileOutputStreamExample.getImgStrToBase64(fileUrl);
         try {
             String serviceType = this.getServiceType(recognitionParam);
-            String token = AwsFpyService.newInstance().getAccessToken(Long.parseLong(extMap.get("orgId") + ""));
-            if (StringUtils.isNotEmpty(token)) {
+            if (StringUtils.isNotEmpty(fileUrl)) {
                 long start = System.currentTimeMillis();
-                String url = AwsFpyService.newInstance().getUrl("pure_recognition", token);
-                ByteArrayInputStream valueInputStream = recognitionParam.getFileByteArrayInputStream();
-                String valueFileName = recognitionParam.getFileName();
+                String url = "http://ip:port/icr/demo/demo_receipt_crop_and_recog_image.html";
+                //ByteArrayInputStream valueInputStream = recognitionParam.getFileByteArrayInputStream();
+                //String valueFileName = recognitionParam.getFileName();
                 int retryTimes = 1;
-
                 for(int times = 1; times <= retryTimes; ++times) {
-                    String result = HttpUtil.postFormData(url + "&t=" + start, AwsFpyService.newInstance().getProxy(), (Map)null, valueInputStream, valueFileName, bodyMap, 3000, 60000);
+                    //调用接口位置
+                    String result = "";//ApiHttpUtils.Posthttp(url, imgStrToBase64)
+
+
                     logger.info("aws识别接口返回结果{}:{}", times, result);
                     boolean reTry = false;
                     if (!StringUtils.isNotEmpty(result)) {

+ 141 - 0
src/main/java/kd/imc/rim/utils/ApiHttpUtils.java

@@ -0,0 +1,141 @@
+package kd.imc.rim.utils;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import kd.bos.script.annotations.KSObject;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@KSObject
+public class ApiHttpUtils {
+
+    public static String Posthttp(String url, String Params) throws Exception {
+        // 获得Http客户端
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+        // 创建Post请求
+        //设置请求路径
+        HttpPost httpPost = new HttpPost(url);
+        httpPost.setHeader("Content-type", "application/json;charset=utf-8");
+        httpPost.setHeader("mesgtype", "bills_crop_base64");
+        httpPost.setHeader("channelcode", "JSX");
+        Date date = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String formatDate = dateFormat.format(date);
+        httpPost.setHeader("channeldate", formatDate);
+        long time = new Date().getTime();
+        String channeltime = Long.toString(time);
+        httpPost.setHeader("channeltime",channeltime);
+        long l = System.currentTimeMillis();
+        String channelserno = Long.toString(l);
+        httpPost.setHeader("channelserno", channelserno);
+        httpPost.setHeader("brno", "");
+        httpPost.setHeader("tellerno", "*DMY");
+        httpPost.setHeader("terminalno", "");
+        httpPost.setHeader("APP_", "");
+        httpPost.setHeader("reserve", "");
+        httpPost.setHeader("dealcode", "");
+        httpPost.setHeader("dealmsg", "");
+        StringEntity entity = new StringEntity(Params,"UTF-8");
+        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
+        // 设置编码格式
+        entity.setContentEncoding("UTF-8");
+        // 发送Json格式的数据请求
+        entity.setContentType("application/json");
+        httpPost.setEntity(entity);
+        // 响应模型(发送post请求)
+        CloseableHttpResponse response = httpClient.execute(httpPost);
+        // 从响应模型中获取响应实体
+        HttpEntity responseEntity = response.getEntity();
+        com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
+        if (responseEntity != null) {
+            jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
+            return jsonObject.toJSONString();
+        }
+        // 释放资源
+        if (httpClient != null) {
+            httpClient.close();
+        }
+        if (response != null) {
+            response.close();
+        }
+        return "";
+    }
+    public static String toJsonString(String Params) throws Exception {
+        JSONObject json = new JSONObject();//返回最外层json
+        json.put("errcode","");
+        json.put("traceId","");
+        json.put("description","");
+        JSONObject data = new JSONObject();//数据层json
+        json.put("batchNo","");
+        JSONArray recoginitionData = new JSONArray();//数据层数组
+        JSONObject fileObj = new JSONObject();//实际数据json
+        fileObj.put("canBeDeduction","");
+        fileObj.put("salerName","");
+        fileObj.put("invoiceMoney","");
+        fileObj.put("signStatus","");
+        fileObj.put("downloadUrl","");
+        fileObj.put("fileHash","");
+        fileObj.put("invoiceAmount","");
+        fileObj.put("localUrl","");
+        fileObj.put("deductionStatus","");
+        fileObj.put("salerTaxNo","");
+        fileObj.put("invoiceType","");
+        fileObj.put("invoiceNo","");
+        fileObj.put("isRepeat","");
+        fileObj.put("pixel","");
+        fileObj.put("oriImageSize","");
+        fileObj.put("pdfToImgSnapshotUrl","");
+        fileObj.put("orientation","");
+        fileObj.put("batchNo","");
+        fileObj.put("clientId","");
+        fileObj.put("buyerTaxNo","");
+        fileObj.put("warningCode","");
+        fileObj.put("originalState","");
+        fileObj.put("companySeal","");
+        fileObj.put("originalUrl","");
+        fileObj.put("invoiceDate","");
+        fileObj.put("buyerName","");
+        fileObj.put("invoiceCode","");
+        fileObj.put("serialNo","");
+        fileObj.put("totalAmount","");
+        fileObj.put("taxRate","");
+        fileObj.put("oriOrientation","");
+        fileObj.put("oriRegion","");
+        fileObj.put("rotationAngle","");
+        fileObj.put("snapshotUrl","");
+        fileObj.put("imageSerialNo","");
+        fileObj.put("recognitionSerialNo","");
+        fileObj.put("totalTaxAmount","");
+        fileObj.put("taxAmount","");
+        fileObj.put("region","");
+        fileObj.put("isExpend","");
+        fileObj.put("expendStatus","");
+        fileObj.put("fileType","");
+        JSONArray items = new JSONArray();//数据明细层数组
+        JSONObject mxFileObj = new JSONObject();//明细数据json
+        mxFileObj.put("unitPrice","");
+        mxFileObj.put("taxRate","");
+        mxFileObj.put("unit","");
+        mxFileObj.put("num","");
+        mxFileObj.put("detailAmount","");
+        mxFileObj.put("taxAmount","");
+        mxFileObj.put("goodsName","");
+        //值拼接完成后开始set数据结构
+        items.add(mxFileObj);
+        fileObj.put("items",items);
+        recoginitionData.add(fileObj);
+        data.put("recoginitionData",recoginitionData);
+        json.put("data",data);
+        return json.toJSONString();
+    }
+}

+ 1 - 1
src/main/java/fi/rim/utils/CodecUtil.java → src/main/java/kd/imc/rim/utils/CodecUtil.java

@@ -1,4 +1,4 @@
-package fi.rim.utils;
+package kd.imc.rim.utils;
 
 
 import com.alibaba.fastjson.JSON;

+ 1 - 1
src/main/java/fi/rim/utils/FileOutputStreamExample.java → src/main/java/kd/imc/rim/utils/FileOutputStreamExample.java

@@ -1,4 +1,4 @@
-package fi.rim.utils;
+package kd.imc.rim.utils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;