Browse Source

1、分流方法实现。2、分流设置接口。

guanzi 4 years ago
parent
commit
3062839d5b

+ 44 - 33
src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/ocr/AipOcrUtils.java

@@ -3,7 +3,9 @@ package com.pavis.ai.app.fjsocrasy.common.utils.ocr;
 import com.alibaba.fastjson.JSON;
 import com.baidu.aip.ocr.AipOcr;
 import com.pavis.ai.app.fjsocrasy.common.config.constants.Constants;
+import com.pavis.ai.app.fjsocrasy.model.Shunt;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.json.JSONObject;
 
 import javax.imageio.stream.FileImageInputStream;
@@ -12,6 +14,8 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.*;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author guanhuijuan
@@ -121,38 +125,45 @@ public class AipOcrUtils {
         return data;
     }
 
-    int countFlag = 0;
-
-//    @Test
-    public void testArr() {
-        List<Integer> lists = arraysHundred(30);
-        List<Integer> uploadLists = new ArrayList<>();
-        uploadLists.add(1);
-        uploadLists.add(2);
-        uploadLists.add(3);
-        uploadLists.add(4);
-        uploadLists.add(5);
-        uploadLists.add(6);
-        uploadLists.add(7);
-        uploadLists.add(12);
-        for (Integer uploadList : uploadLists) {
-//            knowledgeCats.stream().filter(item -> item.getCategoryCode().equals(collectId)).findFirst();
-            System.out.println("lists:" + JSON.toJSONString(lists));
-            Boolean isHad = lists.stream().filter(m -> m.equals(countFlag)).findAny().isPresent();
-            System.err.println(String.valueOf(countFlag) + "存在吗?" + isHad);
-            if (isHad == true){
-                System.err.println("local...");
-            }else {
-                System.err.println("aliyun...");
-            }
-            countFlag = countFlag + 1;
-            if (countFlag == 8) {
-                countFlag = 0;
-            }
-            System.err.println("countFlag:" + countFlag);
-        }
-
+    /**
+     * 判断是调用local还是ali。
+     * @param shunts
+     * @return
+     */
+    public static String checkLocalOrAli(List<Shunt> shunts,int countFlag){
+        String arrStr = StringUtils.remove(StringUtils.remove(shunts.get(0).getCheckArr(),"["),"]");
+        List<Integer> checkLists = Pattern.compile(",").splitAsStream(arrStr).map((x) -> Integer.parseInt(x))
+                .collect(Collectors.toList());
+        System.err.println("checkLists:" + JSON.toJSONString(checkLists));
+        Boolean isHad = checkLists.stream().filter(m -> m.equals(countFlag)).findAny().isPresent();
+//        return isHad == true ? "0" : "1";
+        return isHad == true ? "local" : "ali";
     }
+//    @Test
+//    public void testArr(int randNum) {
+//        List<Integer> lists = arraysHundred(30,randNum);
+//        List<Integer> uploadLists = new ArrayList<>();
+//        uploadLists.add(1);uploadLists.add(2);uploadLists.add(3);
+//        uploadLists.add(4);uploadLists.add(5);uploadLists.add(6);
+//        uploadLists.add(7);uploadLists.add(12);
+//        for (Integer uploadList : uploadLists) {
+////            knowledgeCats.stream().filter(item -> item.getCategoryCode().equals(collectId)).findFirst();
+//            System.out.println("lists:" + JSON.toJSONString(lists));
+//            Boolean isHad = lists.stream().filter(m -> m.equals(countFlag)).findAny().isPresent();
+//            System.err.println(String.valueOf(countFlag) + "存在吗?" + isHad);
+//            if (isHad == true){
+//                System.err.println("local...");
+//            }else {
+//                System.err.println("aliyun...");
+//            }
+//            countFlag = countFlag + 1;
+//            if (countFlag == 8) {
+//                countFlag = 0;
+//            }
+//            System.err.println("countFlag:" + countFlag);
+//        }
+//
+//    }
 
     /**
      *@描述 随机生成30个数,(0-100)
@@ -162,10 +173,10 @@ public class AipOcrUtils {
      *@创建时间 2020/12/8 20:30
      *@修改人和其它信息
      */
-    private static List<Integer> arraysHundred(int arrLength) {
+    public static List<Integer> arraysHundred(int arrLength,int randNum) {
         Set<Integer> set = new HashSet<Integer>();
         while (true) {
-            set.add((int) (Math.random() * 100 + 1));
+            set.add((int) (Math.random() * randNum + 1));
             if (set.size() == arrLength)
                 break;
         }

+ 1 - 11
src/main/java/com/pavis/ai/app/fjsocrasy/controller/ShuntController.java

@@ -5,8 +5,6 @@ import com.github.xiaoymin.knife4j.annotations.ApiSort;
 import com.pavis.ai.app.fjsocrasy.common.http.ResultBody;
 import com.pavis.ai.app.fjsocrasy.form.ShuntParam;
 import com.pavis.ai.app.fjsocrasy.service.OcrService;
-import com.pavis.ai.app.fjsocrasy.service.RecommendInfoService;
-import com.pavis.ai.app.fjsocrasy.service.UploadService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -28,17 +26,9 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/api")
 public class ShuntController {
 
-
     @Autowired
     private OcrService ocrService;
 
-    @Autowired
-    private UploadService uploadService;
-
-
-    @Autowired
-    private RecommendInfoService recommendInfoService;
-
 
     /**
      *@描述 
@@ -52,7 +42,7 @@ public class ShuntController {
     @ApiOperationSupport(order = 1)
     @PostMapping("/fjs/shunt/set")
     public ResultBody res(@RequestBody ShuntParam shuntParam) throws Exception {
-        return ResultBody.failed().path("/api/fjs/shunt/set").data(null).msg("参数不能为空,请仔细检查参数后重试。");
+        return ResultBody.failed().path("/api/fjs/shunt/set").data(ocrService.shuntSet(shuntParam));
     }
 
 }

+ 20 - 2
src/main/java/com/pavis/ai/app/fjsocrasy/form/ShuntParam.java

@@ -1,14 +1,32 @@
 package com.pavis.ai.app.fjsocrasy.form;
 
+import lombok.*;
+
+import java.util.List;
+
 /**
  * ClassName:    ShuntParam
  * Package:    com.pavis.ai.app.fjsocrasy.form
- * Description:
+ * Description:  分流设置参数。
  * Datetime:    2020/12/8   20:38
  * Author:   Administrator
  */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
 public class ShuntParam {
-    private String type;
+    /**
+     * 文件类型
+     */
+    private List<String> type;
+    /**
+     * 比例1
+     */
     private String proportionPre;
+    /**
+     * 比例2
+     */
     private String proportion;
 }

+ 1 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/model/Shunt.java

@@ -24,6 +24,7 @@ public class Shunt {
     private String operator;
     private String operatorId;
     private String operateTime;
+    private String updateTime;
     private String operateIp;
     private String remarks;
 }

+ 19 - 2
src/main/java/com/pavis/ai/app/fjsocrasy/service/OcrService.java

@@ -1,8 +1,7 @@
 package com.pavis.ai.app.fjsocrasy.service;
 
 import com.pavis.ai.app.fjsocrasy.form.FileDetails;
-import com.pavis.ai.app.fjsocrasy.form.res.ResData;
-import org.springframework.stereotype.Service;
+import com.pavis.ai.app.fjsocrasy.form.ShuntParam;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -31,6 +30,13 @@ public interface OcrService {
      */
     void toOcr(String reqId, String fileType, String url, String fileName, String data, Long startTime) throws IOException;
 
+    /**
+     * 分流设置。
+     * @param shuntParam
+     * @return
+     */
+    Map<String,Object> shuntSet(ShuntParam shuntParam);
+
 
     /**
      * 识别处理。
@@ -64,6 +70,17 @@ public interface OcrService {
      */
     Map<String, Object> res(String reqId, String fileType, MultipartFile[] files, String data, Long startTime) throws Exception;
 
+    /**
+     * 单个文件同步识别。
+     * @param reqId
+     * @param fileType
+     * @param parsedFilePath
+     * @param paths
+     * @param sourceData
+     * @param startTime
+     * @return
+     * @throws Exception
+     */
     Map<String, Object> singleFileOcrSyn(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData,Long startTime) throws Exception;
 
 }

+ 196 - 115
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/OcrServiceImpl.java

@@ -3,15 +3,20 @@ package com.pavis.ai.app.fjsocrasy.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.pavis.ai.app.fjsocrasy.common.utils.DateUtils;
 import com.pavis.ai.app.fjsocrasy.common.utils.ocr.AipOcrUtils;
 import com.pavis.ai.app.fjsocrasy.common.utils.ocr.GeneralUtils;
 import com.pavis.ai.app.fjsocrasy.common.utils.ocr.ParseUtils;
 import com.pavis.ai.app.fjsocrasy.form.FileDetails;
+import com.pavis.ai.app.fjsocrasy.form.ShuntParam;
 import com.pavis.ai.app.fjsocrasy.form.res.ResData;
+import com.pavis.ai.app.fjsocrasy.mapper.ShuntMapper;
+import com.pavis.ai.app.fjsocrasy.model.Shunt;
 import com.pavis.ai.app.fjsocrasy.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -52,6 +57,9 @@ public class OcrServiceImpl implements OcrService {
 
     @Autowired
     private BackService backService;
+
+    @Autowired
+    private ShuntMapper shuntMapper;
     int countFlag = 0;
 
     @Async("ocrFjsExecutor")
@@ -61,33 +69,103 @@ public class OcrServiceImpl implements OcrService {
         // 2.2 获取ocr返回值。
         log.info("step ***2: to ocr***");
         data = fileType.equals("18") ? ParseUtils.changeSourceDataBy18(data) : data;
-        log.info("*******ocr******* pre:{}",System.currentTimeMillis());
+        log.info("*******ocr******* pre:{}", System.currentTimeMillis());
         // todo 分流:
+        List<Shunt> shunts = toSelShuntByType(fileType);
+        String shuntType = AipOcrUtils.checkLocalOrAli(shunts,countFlag);
 
-        Map<String,Object> ocrMap = toOcrMap(reqId,fileType,url,fileName,data,startTime);
+        Map<String, Object> ocrMap = toOcrMap(reqId, fileType, url, fileName, data, startTime);
 
         // 等于100时,置为0;可从数据库获取,按照比例来。
 
-        log.info("*******ocr******* end:{}",System.currentTimeMillis());
-        log.info("match-pre,only ocr:{}",JSON.toJSONString(ocrMap));
-        if (null != ocrMap && ocrMap.containsKey("req_id")){
-            log.info("*******match******* pre:{}",System.currentTimeMillis());
+        log.info("*******ocr******* end:{}", System.currentTimeMillis());
+        log.info("match-pre,only ocr:{}", JSON.toJSONString(ocrMap));
+        if (null != ocrMap && ocrMap.containsKey("req_id")) {
+            log.info("*******match******* pre:{}", System.currentTimeMillis());
             // 3、用户画像相似匹配。
-            linkService.match(ocrMap.get("req_id").toString(),ocrMap.get("type").toString(),startTime,
-                    ocrMap.get("source_data").toString(), ocrMap.get("ocr_data").toString(),ocrMap.get("mid_ocr").toString(),ocrMap.get("acc_json").toString(),
+            linkService.match(ocrMap.get("req_id").toString(), ocrMap.get("type").toString(), startTime,
+                    ocrMap.get("source_data").toString(), ocrMap.get("ocr_data").toString(), ocrMap.get("mid_ocr").toString(), ocrMap.get("acc_json").toString(),
                     ocrMap.get("recommends").toString());
-            log.info("*******match******* end:{}",System.currentTimeMillis());
+            log.info("*******match******* end:{}", System.currentTimeMillis());
             long endTime = System.currentTimeMillis();
             String excTime = DateUtils.getExcTime(startTime, endTime);
-            log.info("match exctime:{}",excTime);
-        }else{
+            log.info("match exctime:{}", excTime);
+        } else {
             // backService.back(fileType,reqId,startTime,new JSONObject());
-            log.info("step 2 error,maybe ocrmap null....:{}",reqId);
+            log.info("step 2 error,maybe ocrmap null....:{}", reqId);
+        }
+    }
+
+    @Override
+    public Map<String, Object> shuntSet(ShuntParam shuntParam) {
+        int changedId = 0;
+        for (String s : shuntParam.getType()) {
+            // 获取分流列表。
+            List<Shunt> params = toSelShuntByType(s);
+            // 更新or插入操作。
+            changedId = toShunt(params,shuntParam);
         }
+
+        Map<String, Object> resMap = new HashMap<>();
+        if (changedId > 0) {
+            // 成功
+            QueryWrapper<Shunt> shuntQueryWrapper = new QueryWrapper<>();
+            shuntQueryWrapper.lambda()
+                    .isNotNull(true, Shunt::getId);
+            List<Shunt> shunts = shuntMapper.selectList(shuntQueryWrapper);
+            resMap.put("code", 1);
+            resMap.put("data", shunts);
+        } else {
+            // 失败
+            resMap.put("code", 0);
+            resMap.put("data", null);
+        }
+        return resMap;
+    }
+
+    /**
+     * 根据类型获取分流列表。
+     * @param type
+     * @return
+     */
+    public List<Shunt> toSelShuntByType(String type){
+        QueryWrapper<Shunt> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(Shunt::getType, type);
+        return shuntMapper.selectList(queryWrapper);
+    }
+
+    /**
+     * 构建shunt。
+     *
+     * @param shuntParam
+     * @return
+     */
+    public int toShunt(List<Shunt> params, ShuntParam shuntParam) {
+        List<Integer> lists = AipOcrUtils.arraysHundred(Integer.valueOf(shuntParam.getProportionPre()),
+                Integer.valueOf(shuntParam.getProportion()));
+        Shunt shunt = new Shunt();
+        int changedId = 0;
+        BeanUtils.copyProperties(shuntParam, shunt);
+        shunt.setCheckArr(JSON.toJSONString(lists));
+        shunt.setOperator("sys");
+        shunt.setOperatorId("sys");
+        shunt.setOperateIp("sys");
+        if (params.size() > 0) {
+            // 比例设置已存在,做更新操作。
+            shunt.setUpdateTime(DateUtils.now());
+            shunt.setId(params.get(0).getId());
+        } else {
+            // 比例设置已存在,做新增操作。
+            shunt.setOperateTime(DateUtils.now());
+        }
+        changedId = params.size() > 0 ? shuntMapper.updateById(shunt) : shuntMapper.insert(shunt);
+        return changedId;
     }
 
     /**
      * ocr识别函数1。
+     *
      * @param reqId
      * @param fileType
      * @param url
@@ -96,9 +174,9 @@ public class OcrServiceImpl implements OcrService {
      * @param startTime
      * @return
      */
-    public Map<String,Object> toOcrMap(String reqId, String fileType, String url, String fileName, String data, Long startTime){
-        log.info("to Ocr Map:{}","开始调用ocr识别....");
-        Map<String,Object> ocrMap = new HashMap<>();
+    public Map<String, Object> toOcrMap(String reqId, String fileType, String url, String fileName, String data, Long startTime) {
+        log.info("to Ocr Map:{}", "开始调用ocr识别....");
+        Map<String, Object> ocrMap = new HashMap<>();
         try {
             // 解析已处理过的有效的图片url
             JSONArray recArr = JSON.parseArray(url);
@@ -116,22 +194,22 @@ public class OcrServiceImpl implements OcrService {
                     resData.setType(fileType);
                     resData.setRes(null);
                     long endTime = System.currentTimeMillis();
-                    log.info("to Ocr Map:{}","ocr识别....超出大小限制。");
-                    back(resData, reqId, DateUtils.getExcTime(startTime,endTime), "-3");
+                    log.info("to Ocr Map:{}", "ocr识别....超出大小限制。");
+                    back(resData, reqId, DateUtils.getExcTime(startTime, endTime), "-3");
                 } else {
                     // 单文件上传。
-                    ocrMap = toSingleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, data,startTime);
+                    ocrMap = toSingleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, data, startTime);
                     long endTime = System.currentTimeMillis();
-                    log.info("step2 ocrMap excTime:{}", DateUtils.getExcTime(startTime,endTime));
-                    log.info("to Ocr single Map:{}","结束调用ocr识别single....");
+                    log.info("step2 ocrMap excTime:{}", DateUtils.getExcTime(startTime, endTime));
+                    log.info("to Ocr single Map:{}", "结束调用ocr识别single....");
                     return ocrMap;
                 }
             } else if (effectiveImgpaths.size() > 1) {
                 // 多文件上传,pdf转图片&两张图片,第8、15、16种。
-                ocrMap = toSingleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, data,startTime);
+                ocrMap = toSingleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, data, startTime);
                 long endTime = System.currentTimeMillis();
-                log.info("step2 ocrMap excTime:{}", DateUtils.getExcTime(startTime,endTime));
-                log.info("to Ocr more Map:{}","结束调用ocr识别more....");
+                log.info("step2 ocrMap excTime:{}", DateUtils.getExcTime(startTime, endTime));
+                log.info("to Ocr more Map:{}", "结束调用ocr识别more....");
                 return ocrMap;
             } else {
                 // todo 没有图片,不合法等,待开发。
@@ -140,18 +218,19 @@ public class OcrServiceImpl implements OcrService {
                 resData.setType(fileType);
                 resData.setRes(null);
                 long endTime = System.currentTimeMillis();
-                back(resData, reqId, DateUtils.getExcTime(startTime,endTime), "0");
-                log.info("step2 ocrMap 无图/不合法等excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                back(resData, reqId, DateUtils.getExcTime(startTime, endTime), "0");
+                log.info("step2 ocrMap 无图/不合法等excTime:{}", DateUtils.getExcTime(startTime, endTime));
             }
         } catch (Exception e) {
             log.info("ocr map:{}", e);
         }
-        log.info("to Ocr Map:{}","调用ocr识别.,ocrMap为空...");
+        log.info("to Ocr Map:{}", "调用ocr识别.,ocrMap为空...");
         return ocrMap;
     }
 
     /**
      * ocr识别函数2。
+     *
      * @param reqId
      * @param fileType
      * @param parsedFilePath
@@ -160,7 +239,7 @@ public class OcrServiceImpl implements OcrService {
      * @param startTime
      * @return
      */
-    public Map<String,Object> toSingleFileOcr(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData,Long startTime) {
+    public Map<String, Object> toSingleFileOcr(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData, Long startTime) {
         System.err.println(reqId);
         System.err.println(fileType);
         System.err.println(JSON.toJSONString(parsedFilePath));
@@ -175,7 +254,7 @@ public class OcrServiceImpl implements OcrService {
             try {
                 ocr = JSON.parseObject(AipOcrUtils.sample(parsedFilePath.getUrls(), fileType));
                 long endTime = System.currentTimeMillis();
-                log.info("step2 ocr excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("step2 ocr excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 log.info("ocr-mid res:{}", JSON.toJSONString(ocr));
                 if (null != ocr && ocr.containsKey("image_status") && ocr.get("image_status").toString().equals("normal")) {
                     // 解析ocr数据。
@@ -183,27 +262,27 @@ public class OcrServiceImpl implements OcrService {
                     String ocrData = "";
                     if (fileType.equals("10")) {
                         ocrData = ParseUtils.front(ocr);
-                        midOcr = ParseUtils.midOcrFront(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrFront(true, "1", fileType, ocrData);
                     } else {
                         ocrData = ParseUtils.reverse(ocr);
-                        midOcr = ParseUtils.midOcrReverse(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrReverse(true, "1", fileType, ocrData);
                     }
                     // todo 张坤相似匹配算法
-                    matchMap.put("type",fileType);
+                    matchMap.put("type", fileType);
                     matchMap.put("source_data", sourceData);
                     matchMap.put("ocr_data", ocrData);
-                    matchMap.put("acc_json",ParseUtils.createIdCardAcc(fileType));
-                    matchMap.put("req_id",reqId);
-                    matchMap.put("mid_ocr",midOcr);
-                    matchMap.put("start_time",startTime);
-                    matchMap.put("recommends",fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
+                    matchMap.put("acc_json", ParseUtils.createIdCardAcc(fileType));
+                    matchMap.put("req_id", reqId);
+                    matchMap.put("mid_ocr", midOcr);
+                    matchMap.put("start_time", startTime);
+                    matchMap.put("recommends", fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
                     // 将ocr结果信息及其他信息封装后写入source表中。
                     // uploadService.updateByReqIdAndType(reqId,fileType,"time",JSON.toJSONString(matchMap));
                     // 返回map.
                     return matchMap;
                 } else {
                     // 返回至富士通。
-                    backService.back(fileType,reqId,startTime,ocr);
+                    backService.back(fileType, reqId, startTime, ocr);
                 }
             } catch (Exception e) {
                 log.info("singleFileOcr:{}", e);
@@ -215,20 +294,20 @@ public class OcrServiceImpl implements OcrService {
             ocrMap = getOcrMap(reqId, fileType, paths);
             ocr = internalSendService.ocr(ocrMap);
             long endTime = System.currentTimeMillis();
-            log.info("step2 ocr excTime:{}", DateUtils.getExcTime(startTime,endTime));
+            log.info("step2 ocr excTime:{}", DateUtils.getExcTime(startTime, endTime));
             log.info("ocr-mid result:{}", JSON.toJSONString(ocr));
             if (null != ocr && ocr.get("code").toString().equals("1")) {
-                matchMap = matchMap(matchMap,fileType,reqId,ocr,sourceData);
-                matchMap.put("start_time",startTime);
-                matchMap.put("mid_ocr",ocr);
+                matchMap = matchMap(matchMap, fileType, reqId, ocr, sourceData);
+                matchMap.put("start_time", startTime);
+                matchMap.put("mid_ocr", ocr);
                 // uploadService.updateByReqIdAndType(reqId,fileType,"time",JSON.toJSONString(matchMap));
                 return matchMap;
             } else if (null != ocr && ocr.get("code").toString().equals("-1")) {
                 // 返回至富士通。
-                backService.back(fileType,reqId,startTime,ocr);
+                backService.back(fileType, reqId, startTime, ocr);
             } else {
                 // 返回至富士通。
-                backService.back(fileType,reqId,startTime,ocr);
+                backService.back(fileType, reqId, startTime, ocr);
             }
         }
         return matchMap;
@@ -236,7 +315,7 @@ public class OcrServiceImpl implements OcrService {
 
 
     @Override
-    public void ocr(String reqId, String fileType, String url, String fileName, String sourceData,Long startTime) {
+    public void ocr(String reqId, String fileType, String url, String fileName, String sourceData, Long startTime) {
         try {
             // 解析已处理过的有效的图片url
             JSONArray recArr = JSON.parseArray(url);
@@ -253,18 +332,18 @@ public class OcrServiceImpl implements OcrService {
                     resData.setType(fileType);
                     resData.setRes(null);
                     long endTime = System.currentTimeMillis();
-                    back(resData, reqId, DateUtils.getExcTime(startTime,endTime), "-3");
+                    back(resData, reqId, DateUtils.getExcTime(startTime, endTime), "-3");
                 } else {
                     // 单文件上传。
-                    singleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, sourceData,startTime);
+                    singleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, sourceData, startTime);
                     long endTime = System.currentTimeMillis();
-                    log.info("res excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                    log.info("res excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 }
             } else if (effectiveImgpaths.size() > 1) {
                 // 多文件上传,pdf转图片&两张图片,第8、15、16种。
-                singleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, sourceData,startTime);
+                singleFileOcr(reqId, fileType, effectiveImgpaths.get(0), effectiveImgpaths, sourceData, startTime);
                 long endTime = System.currentTimeMillis();
-                log.info("res excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("res excTime:{}", DateUtils.getExcTime(startTime, endTime));
             } else {
                 // todo 没有图片,不合法等,待开发。
                 ResData resData = new ResData();
@@ -272,7 +351,7 @@ public class OcrServiceImpl implements OcrService {
                 resData.setType(fileType);
                 resData.setRes(null);
                 long endTime = System.currentTimeMillis();
-                back(resData, reqId, DateUtils.getExcTime(startTime,endTime), "0");
+                back(resData, reqId, DateUtils.getExcTime(startTime, endTime), "0");
             }
         } catch (Exception e) {
             log.info("ocr:{}", e);
@@ -283,7 +362,7 @@ public class OcrServiceImpl implements OcrService {
     @Override
     public Map<String, Object> res(String reqId, String fileType, MultipartFile[] files, String data, Long startTime) throws Exception {
         if (files != null && files.length > 0) {
-            return resDetails(reqId, fileType, files, data,startTime);
+            return resDetails(reqId, fileType, files, data, startTime);
         } else {
             return resFailed("-2", "文件不能为空,请选择文件后重试。", reqId, fileType);
         }
@@ -299,7 +378,7 @@ public class OcrServiceImpl implements OcrService {
      * @param sourceData
      * @throws IOException
      */
-    public void singleFileOcr(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData,Long startTime) {
+    public void singleFileOcr(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData, Long startTime) {
         Map<String, Object> matchMap = new HashMap<>();
         Map<String, Object> ocrMap = new HashMap<>();
         sourceData = fileType.equals("18") ? ParseUtils.changeSourceDataBy18(sourceData) : sourceData;
@@ -308,7 +387,7 @@ public class OcrServiceImpl implements OcrService {
             try {
                 ocr = JSON.parseObject(AipOcrUtils.sample(parsedFilePath.getUrls(), fileType));
                 long endTime = System.currentTimeMillis();
-                log.info("ocr excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 log.info("ocr-mid res:{}", JSON.toJSONString(ocr));
                 if (null != ocr && ocr.containsKey("image_status") && ocr.get("image_status").toString().equals("normal")) {
                     // 解析ocr数据。
@@ -316,33 +395,33 @@ public class OcrServiceImpl implements OcrService {
                     String ocrData = "";
                     if (fileType.equals("10")) {
                         ocrData = ParseUtils.front(ocr);
-                        midOcr = ParseUtils.midOcrFront(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrFront(true, "1", fileType, ocrData);
                     } else {
                         ocrData = ParseUtils.reverse(ocr);
-                        midOcr = ParseUtils.midOcrReverse(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrReverse(true, "1", fileType, ocrData);
                     }
                     // todo 张坤相似匹配算法
                     matchMap.put("source_data", sourceData);
                     matchMap.put("ocr_data", ocrData);
-                    matchMap.put("acc_json",ParseUtils.createIdCardAcc(fileType));
-                    matchMap.put("type",fileType);
-                    log.info("match pre:{}",JSON.toJSONString(matchMap));
+                    matchMap.put("acc_json", ParseUtils.createIdCardAcc(fileType));
+                    matchMap.put("type", fileType);
+                    log.info("match pre:{}", JSON.toJSONString(matchMap));
                     String matchRes = internalSendService.match(matchMap);
                     log.info("ocr-match singleFileOcr res test:{}", JSON.toJSONString(matchRes));
                     ResData resData = ParseUtils.parseRes(reqId, fileType, JSON.parseObject(sourceData),
                             JSON.parseObject(ocrData), JSON.parseObject(matchRes));
-                    uploadService.saveBack(resData,JSON.toJSONString(midOcr),startTime);
+                    uploadService.saveBack(resData, JSON.toJSONString(midOcr), startTime);
                     back(resData, reqId, fileType, "1");
                     endTime = System.currentTimeMillis();
-                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 } else {
-                    JSONObject midOcr = fileType.equals("10") ? ParseUtils.midOcrFront(false,"-1",fileType,"")
-                            : ParseUtils.midOcrReverse(false,"-1",fileType,"");
-                    uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(midOcr),startTime);
+                    JSONObject midOcr = fileType.equals("10") ? ParseUtils.midOcrFront(false, "-1", fileType, "")
+                            : ParseUtils.midOcrReverse(false, "-1", fileType, "");
+                    uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(midOcr), startTime);
                     boolean flag = null != ocr ? ocr.containsKey("image_status") ? ocr.get("image_status").equals("non_idcard") ? true : false : false : false;
                     back(backService.getNullBackResData(reqId, fileType), reqId, fileType, flag ? "-1" : "0");
                     endTime = System.currentTimeMillis();
-                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 }
             } catch (Exception e) {
                 log.info("singleFileOcr:{}", e);
@@ -354,33 +433,33 @@ public class OcrServiceImpl implements OcrService {
             ocrMap = getOcrMap(reqId, fileType, paths);
             ocr = internalSendService.ocr(ocrMap);
             long endTime = System.currentTimeMillis();
-            log.info("ocr ali excTime:{}", DateUtils.getExcTime(startTime,endTime));
+            log.info("ocr ali excTime:{}", DateUtils.getExcTime(startTime, endTime));
             log.info("ocr-mid result:{}", JSON.toJSONString(ocr));
             if (null != ocr && ocr.get("code").toString().equals("1")) {
                 // todo 张坤相似匹配算法
                 ResData resData = toParseData(matchMap, fileType, reqId, ocr, sourceData);
-                uploadService.saveBack(resData,JSON.toJSONString(ocr),startTime);
+                uploadService.saveBack(resData, JSON.toJSONString(ocr), startTime);
                 back(resData, reqId, fileType, ocr.get("code").toString());
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
             } else if (null != ocr && ocr.get("code").toString().equals("-1")) {
-                uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(ocr),startTime);
+                uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(ocr), startTime);
                 back(backService.getNullBackResData(reqId, fileType), reqId, fileType, ocr.get("code").toString());
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
             } else {
                 // todo 待处理。
-                uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(ocr),startTime);
+                uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(ocr), startTime);
                 back(backService.getNullBackResData(reqId, fileType), reqId, fileType, ocr.get("code").toString());
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
             }
         }
     }
 
     public Map<String, Object> resDetails(String reqId, String fileType, MultipartFile[] files, String sourceData, Long startTime) throws Exception {
         // 写入文件
-        List<FileDetails> parsedFilePaths = uploadService.writeToDisk(files, reqId, fileType, sourceData,startTime);
+        List<FileDetails> parsedFilePaths = uploadService.writeToDisk(files, reqId, fileType, sourceData, startTime);
         if (parsedFilePaths.size() == 1) {
             if (GeneralUtils.checkFileSizeIsLimit(parsedFilePaths.get(0).getUrls(), 4, "M")) {
                 ResData resData = new ResData();
@@ -390,11 +469,11 @@ public class OcrServiceImpl implements OcrService {
                 return backService.res("-3", backService.getNullBackResData(reqId, fileType));
             } else {
                 // 单文件上传。
-                return singleFileOcrSyn(reqId, fileType, parsedFilePaths.get(0), parsedFilePaths, sourceData,startTime);
+                return singleFileOcrSyn(reqId, fileType, parsedFilePaths.get(0), parsedFilePaths, sourceData, startTime);
             }
         } else if (parsedFilePaths.size() > 1) {
             // 多文件上传,pdf转图片多个,可能是第八种文件在内。
-            return singleFileOcrSyn(reqId, fileType, parsedFilePaths.get(0), parsedFilePaths, sourceData,startTime);
+            return singleFileOcrSyn(reqId, fileType, parsedFilePaths.get(0), parsedFilePaths, sourceData, startTime);
         } else {
             return resFailed("-2", "文件不能为空,请选择文件后重试。", reqId, fileType);
         }
@@ -409,7 +488,7 @@ public class OcrServiceImpl implements OcrService {
         map.put("fileType", fileType);
         map.put("data", "null");
         // 20200507 新增回传参数:
-        map.put("overallConfidence","");
+        map.put("overallConfidence", "");
         return map;
     }
 
@@ -433,6 +512,7 @@ public class OcrServiceImpl implements OcrService {
         ocrMap.put("files_list", files);
         ocrMap.put("type", fileType);
         ocrMap.put("reqId", reqId);
+//        ocrMap.put("shuntType","")
 
         // todo 20200421 单文件暂时抛弃,选用多文件上传。
         // File file = new File(parsedFilePath.getUrls());
@@ -454,7 +534,7 @@ public class OcrServiceImpl implements OcrService {
      * @throws IOException
      */
     @Override
-    public Map<String, Object> singleFileOcrSyn(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData,Long startTime) throws IOException {
+    public Map<String, Object> singleFileOcrSyn(String reqId, String fileType, FileDetails parsedFilePath, List<FileDetails> paths, String sourceData, Long startTime) throws IOException {
         Map<String, Object> matchMap = new HashMap<>();
         Map<String, Object> ocrMap = new HashMap<>();
         sourceData = fileType.equals("18") ? ParseUtils.changeSourceDataBy18(sourceData) : sourceData;
@@ -463,7 +543,7 @@ public class OcrServiceImpl implements OcrService {
             try {
                 ocr = JSON.parseObject(AipOcrUtils.sample(parsedFilePath.getUrls(), fileType));
                 long endTime = System.currentTimeMillis();
-                log.info("ocr excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 log.info("ocr-mid res:{}", JSON.toJSONString(ocr));
                 if (null != ocr && ocr.get("image_status").equals("normal")) {
                     // 解析ocr数据。
@@ -471,28 +551,28 @@ public class OcrServiceImpl implements OcrService {
                     String ocrData = "";
                     if (fileType.equals("10")) {
                         ocrData = ParseUtils.front(ocr);
-                        midOcr = ParseUtils.midOcrFront(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrFront(true, "1", fileType, ocrData);
                     } else {
                         ocrData = ParseUtils.reverse(ocr);
-                        midOcr = ParseUtils.midOcrReverse(true,"1",fileType,ocrData);
+                        midOcr = ParseUtils.midOcrReverse(true, "1", fileType, ocrData);
                     }
                     // todo 张坤相似匹配算法
                     // matchMap.put("source_data",JSON.toJSONString(JSON.parseObject(sourceData)));
                     matchMap.put("source_data", sourceData);
                     matchMap.put("ocr_data", ocrData);
-                    matchMap.put("type",fileType);
-                    matchMap.put("acc_json",ParseUtils.createIdCardAcc(fileType));
-                    matchMap.put("recommends",fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
-                    log.info("match pre:{}",JSON.toJSONString(matchMap));
+                    matchMap.put("type", fileType);
+                    matchMap.put("acc_json", ParseUtils.createIdCardAcc(fileType));
+                    matchMap.put("recommends", fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
+                    log.info("match pre:{}", JSON.toJSONString(matchMap));
                     String matchRes = internalSendService.match(matchMap);
                     // String matchRes = internalSendService.link(matchMap);
                     ResData resData = ParseUtils.parseRes(reqId, fileType, JSON.parseObject(sourceData),
                             JSON.parseObject(ocrData), JSON.parseObject(matchRes));
-                    uploadService.saveBack(resData,JSON.toJSONString(midOcr),startTime);
+                    uploadService.saveBack(resData, JSON.toJSONString(midOcr), startTime);
                     endTime = System.currentTimeMillis();
-                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                     return backService.res("1", resData);
-                }else {
+                } else {
                     // todo 待处理。
                     ResData resData = new ResData();
                     resData.setReqId(reqId);
@@ -500,16 +580,16 @@ public class OcrServiceImpl implements OcrService {
                     resData.setRes(null);
                     resData.setOverallConfidence("2");
                     resData.setMidConfidence("2");
-                    JSONObject midOcr = fileType.equals("10") ? ParseUtils.midOcrFront(false,"-1",fileType,"")
-                            : ParseUtils.midOcrReverse(false,"-1",fileType,"");
-                    uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(midOcr),startTime);
+                    JSONObject midOcr = fileType.equals("10") ? ParseUtils.midOcrFront(false, "-1", fileType, "")
+                            : ParseUtils.midOcrReverse(false, "-1", fileType, "");
+                    uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(midOcr), startTime);
                     endTime = System.currentTimeMillis();
-                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                    log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                     boolean flag = null != ocr ? ocr.get("image_status").equals("non_idcard") ? true : false : false;
                     return backService.res(flag ? "-1" : "0", backService.getNullBackResData(reqId, fileType));
                 }
             } catch (Exception e) {
-                log.info("singleFileOcrSyn:{}",  e);
+                log.info("singleFileOcrSyn:{}", e);
             }
 
         } else {
@@ -518,19 +598,19 @@ public class OcrServiceImpl implements OcrService {
             ocrMap = getOcrMap(reqId, fileType, paths);
             ocr = internalSendService.ocr(ocrMap);
             long endTime = System.currentTimeMillis();
-            log.info("ocr ali excTime:{}", DateUtils.getExcTime(startTime,endTime));
+            log.info("ocr ali excTime:{}", DateUtils.getExcTime(startTime, endTime));
             log.info("ocr-mid result:{}", JSON.toJSONString(ocr));
             if (null != ocr && ocr.get("code").toString().equals("1")) {
                 // todo 张坤相似匹配算法
                 ResData resData = toParseData(matchMap, fileType, reqId, ocr, sourceData);
-                uploadService.saveBack(resData,JSON.toJSONString(ocr),startTime);
+                uploadService.saveBack(resData, JSON.toJSONString(ocr), startTime);
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 return backService.res(ocr.get("code").toString(), resData);
             } else if (null != ocr && ocr.get("code").toString().equals("-1")) {
-                uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(ocr),startTime);
+                uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(ocr), startTime);
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 return backService.res(ocr.get("code").toString(), backService.getNullBackResData(reqId, fileType));
             } else {
                 // todo 待处理。
@@ -539,21 +619,22 @@ public class OcrServiceImpl implements OcrService {
                 resData.setType(fileType);
                 resData.setRes(null);
                 resData.setOverallConfidence("2");
-                    resData.setMidConfidence("2");
-                uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(ocr),startTime);
+                resData.setMidConfidence("2");
+                uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(ocr), startTime);
                 endTime = System.currentTimeMillis();
-                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
                 return backService.res(ocr.get("code").toString(), backService.getNullBackResData(reqId, fileType));
             }
         }
-        uploadService.saveBack(backService.getNullBackResData(reqId, fileType),JSON.toJSONString(ocr),startTime);
+        uploadService.saveBack(backService.getNullBackResData(reqId, fileType), JSON.toJSONString(ocr), startTime);
         long endTime = System.currentTimeMillis();
-        log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime,endTime));
+        log.info("ocr back excTime:{}", DateUtils.getExcTime(startTime, endTime));
         return resFailed(ocr.containsKey("code") ? ocr.get("code").toString() : "", "操作失败", reqId, fileType);
     }
 
     /**
      * 在调用相似匹配算法前判断是否存在关联数据。
+     *
      * @param matchMap
      * @param fileType
      * @param reqId
@@ -561,24 +642,24 @@ public class OcrServiceImpl implements OcrService {
      * @param sourceData
      * @return
      */
-    public Map<String,Object> matchMap(Map<String, Object> matchMap, String fileType, String reqId, JSONObject ocr, String sourceData){
+    public Map<String, Object> matchMap(Map<String, Object> matchMap, String fileType, String reqId, JSONObject ocr, String sourceData) {
         // String bo = StringUtils.substringBeforeLast(reqId,"-");
         // todo 201127
-        String bo = StringUtils.substringBefore(reqId,"-");
-        if (uploadService.findLinkByBo(bo).size() > 1){
+        String bo = StringUtils.substringBefore(reqId, "-");
+        if (uploadService.findLinkByBo(bo).size() > 1) {
             log.info("关联数据START...");
-            Map<String,Object> linkMap = uploadService.link(bo,ocr,fileType);
-            linkMap.put("req_id",reqId);
+            Map<String, Object> linkMap = uploadService.link(bo, ocr, fileType);
+            linkMap.put("req_id", reqId);
             return linkMap;
         }
         matchMap.put("source_data", fileType.equals("18") ? ParseUtils.changeSourceDataBy18(sourceData) : fileType.equals("2") || fileType.equals("13") || fileType.equals("14") || fileType.equals("17")
                 ? dealSource(sourceData) : sourceData);
         matchMap.put("ocr_data", JSON.toJSONString(ocr.get("data")));
-        matchMap.put("type",fileType);
-        matchMap.put("acc_json",ocr.containsKey("acc_json") ? JSON.toJSONString(ocr.get("acc_json")) : "");
+        matchMap.put("type", fileType);
+        matchMap.put("acc_json", ocr.containsKey("acc_json") ? JSON.toJSONString(ocr.get("acc_json")) : "");
         // todo 根据类型3判断该字段是否有值。类型为3时,有值,类型不为3时,已补充。
-        matchMap.put("recommends",fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
-        matchMap.put("req_id",reqId);
+        matchMap.put("recommends", fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
+        matchMap.put("req_id", reqId);
         return matchMap;
     }
 
@@ -595,10 +676,10 @@ public class OcrServiceImpl implements OcrService {
     public ResData toParseData(Map<String, Object> matchMap, String fileType, String reqId, JSONObject ocr, String sourceData) {
         // String bo = StringUtils.substringBeforeLast(reqId,"-");
         // todo 201127
-        String bo = StringUtils.substringBefore(reqId,"-");
-        if (uploadService.findLinkByBo(bo).size() > 1){
+        String bo = StringUtils.substringBefore(reqId, "-");
+        if (uploadService.findLinkByBo(bo).size() > 1) {
             log.info("关联数据START...");
-            Map<String,Object> linkMap = matchMap(matchMap,fileType,reqId,ocr,sourceData);
+            Map<String, Object> linkMap = matchMap(matchMap, fileType, reqId, ocr, sourceData);
             // todo ghj link数据部分也要新增类型三的findRecomInfo()数据。已补充。
             log.info("link:{}", JSON.toJSONString(linkMap));
             String matchRes = internalSendService.link(linkMap);
@@ -606,8 +687,8 @@ public class OcrServiceImpl implements OcrService {
                     ocr, JSON.parseObject(matchRes));
             return resData;
         }
-        matchMap = matchMap(matchMap,fileType,reqId,ocr,sourceData);
-        log.info("match pre:{}",JSON.toJSONString(matchMap));
+        matchMap = matchMap(matchMap, fileType, reqId, ocr, sourceData);
+        log.info("match pre:{}", JSON.toJSONString(matchMap));
         String matchRes = internalSendService.match(matchMap);
         ResData resData = ParseUtils.parseRes(reqId, fileType, JSON.parseObject(sourceData),
                 ocr, JSON.parseObject(matchRes));

+ 36 - 0
src/test/java/com/pavis/ai/app/fjsocrasy/FjsOcrAsyApplicationTests.java

@@ -6,11 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.pavis.ai.app.fjsocrasy.common.config.constants.Constants;
 import com.pavis.ai.app.fjsocrasy.common.utils.DateUtils;
 import com.pavis.ai.app.fjsocrasy.common.utils.DiskUtils;
+import com.pavis.ai.app.fjsocrasy.common.utils.ocr.AipOcrUtils;
 import com.pavis.ai.app.fjsocrasy.form.Desk;
 import com.pavis.ai.app.fjsocrasy.form.eighteen.Eighteen;
 import com.pavis.ai.app.fjsocrasy.mapper.ContractEighteenMapper;
+import com.pavis.ai.app.fjsocrasy.mapper.ShuntMapper;
 import com.pavis.ai.app.fjsocrasy.mapper.UploadMapper;
 import com.pavis.ai.app.fjsocrasy.model.ContractEighteen;
+import com.pavis.ai.app.fjsocrasy.model.Shunt;
 import com.pavis.ai.app.fjsocrasy.model.Upload;
 import com.pavis.ai.app.fjsocrasy.service.BackService;
 import com.pavis.ai.app.fjsocrasy.service.OcrService;
@@ -34,6 +37,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -57,6 +61,38 @@ public class FjsOcrAsyApplicationTests {
     @Autowired
     private UploadService uploadService;
 
+    @Autowired
+    private ShuntMapper shuntMapper;
+
+    int countFlag = 0;
+    @Test
+    public void testShuntType(){
+        List<Integer> uploadLists = new ArrayList<>();
+        uploadLists.add(1);uploadLists.add(2);uploadLists.add(3);
+        uploadLists.add(4);uploadLists.add(5);uploadLists.add(6);
+        uploadLists.add(7);uploadLists.add(12);uploadLists.add(13);
+        uploadLists.add(14);
+        for (Integer uploadList : uploadLists) {
+            System.err.println("countFlag:" + countFlag);
+            String type = "1";
+            QueryWrapper<Shunt> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda()
+                    .eq(Shunt::getType, uploadList);
+            List<Shunt> shunts = shuntMapper.selectList(queryWrapper);
+            System.out.println("此"+uploadList+"应该:");
+            String shuntType =  AipOcrUtils.checkLocalOrAli(shunts,countFlag);
+            System.err.println("shuntType:"+shuntType);
+            countFlag = countFlag + 1;
+            int proportion = Integer.valueOf(shunts.get(0).getProportion());
+            System.err.println("proportion:" + proportion);
+            if(countFlag == proportion){
+                countFlag = 0;
+            }
+        }
+
+    }
+
+
     @Test
     public void testPwd() throws Exception {
         String pwd = "B1nJH8SWMGimTLoI1rBKGA==";

BIN
target/classes/com/pavis/ai/app/fjsocrasy/common/utils/ocr/AipOcrUtils.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/controller/ShuntController.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/form/ShuntParam$ShuntParamBuilder.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/form/ShuntParam.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/mapper/ShuntMapper.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/model/Shunt$ShuntBuilder.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/model/Shunt.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/service/OcrService.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/service/impl/OcrServiceImpl.class


BIN
target/test-classes/com/pavis/ai/app/fjsocrasy/FjsOcrAsyApplicationTests.class