Bläddra i källkod

1、ca证书配置

guanzi 4 år sedan
förälder
incheckning
9e6bdbd94a
41 ändrade filer med 1203 tillägg och 118 borttagningar
  1. 9 0
      pom.xml
  2. 49 0
      src/main/java/com/pavis/ai/app/fjsocrasy/common/config/SslConfig.java
  3. 33 0
      src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/DateUtils.java
  4. 93 0
      src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/MyX509TrustManager.java
  5. 1 1
      src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/ocr/AipOcrUtils.java
  6. 14 4
      src/main/java/com/pavis/ai/app/fjsocrasy/controller/BackController.java
  7. 27 0
      src/main/java/com/pavis/ai/app/fjsocrasy/controller/OcrController.java
  8. 2 0
      src/main/java/com/pavis/ai/app/fjsocrasy/service/OtherService.java
  9. 3 1
      src/main/java/com/pavis/ai/app/fjsocrasy/service/UploadService.java
  10. 1 1
      src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/BackServiceImpl.java
  11. 1 0
      src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/LinkServiceImpl.java
  12. 44 22
      src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/OcrServiceImpl.java
  13. 1 0
      src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/OtherServiceImpl.java
  14. 30 0
      src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/UploadServiceImpl.java
  15. 9 7
      src/main/resources/application-dev.yml
  16. 8 1
      src/main/resources/application-prod.yml
  17. 1 1
      src/main/resources/application-test.yml
  18. 13 2
      src/main/resources/application.yml
  19. BIN
      src/main/resources/sslFjsTestServer.p12
  20. 827 67
      src/test/java/com/pavis/ai/app/fjsocrasy/FjsOcrAsyApplicationTests.java
  21. 10 7
      target/classes/application-dev.yml
  22. 8 1
      target/classes/application-prod.yml
  23. 1 1
      target/classes/application-test.yml
  24. 13 2
      target/classes/application.yml
  25. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/common/config/SslConfig$1.class
  26. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/common/config/SslConfig.class
  27. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/common/utils/DateUtils.class
  28. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/common/utils/MyX509TrustManager.class
  29. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/common/utils/ocr/AipOcrUtils.class
  30. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/controller/BackController.class
  31. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/controller/OcrController.class
  32. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/service/UploadService.class
  33. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/service/impl/LinkServiceImpl.class
  34. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/service/impl/OcrServiceImpl.class
  35. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/service/impl/OtherServiceImpl.class
  36. BIN
      target/classes/com/pavis/ai/app/fjsocrasy/service/impl/UploadServiceImpl.class
  37. BIN
      target/classes/sslFjsTestServer.p12
  38. BIN
      target/fjs-ocr-asy-1.0.0.jar
  39. BIN
      target/fjs-ocr-asy-1.0.0.jar.original
  40. 3 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  41. 2 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

+ 9 - 0
pom.xml

@@ -241,6 +241,15 @@
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
+        <resources>
+            <resource>
+                <!-- 防止JKS被maven错误解析 -->
+                <directory>src/main/resources</directory>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
     </build>
 
+
+
 </project>

+ 49 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/common/config/SslConfig.java

@@ -0,0 +1,49 @@
+package com.pavis.ai.app.fjsocrasy.common.config;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.connector.Connector;
+import org.apache.tomcat.util.descriptor.web.SecurityCollection;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+@Configuration
+public class SslConfig{
+
+    @Bean
+    public TomcatServletWebServerFactory servletContainer() {
+        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
+
+            @Override
+            protected void postProcessContext(Context context) {
+                SecurityConstraint constraint = new SecurityConstraint();
+                constraint.setUserConstraint("CONFIDENTIAL");
+                SecurityCollection collection = new SecurityCollection();
+                collection.addPattern("/*");
+                constraint.addCollection(collection);
+                context.addConstraint(constraint);
+            }
+        };
+        tomcat.addAdditionalTomcatConnectors(httpConnector());
+        return tomcat;
+    }
+
+    public Connector httpConnector() {
+        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
+        connector.setScheme("http");
+
+        // connector监听的http端口号
+        // connector.setPort(8080);
+        connector.setPort(8003);
+        connector.setSecure(false);
+
+        // 监听到http的端口号后转向到的https的端口号
+        // connector.setRedirectPort(8443);
+        connector.setRedirectPort(8000);
+        return connector;
+    }
+
+
+}

+ 33 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/DateUtils.java

@@ -8,6 +8,9 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.List;
 
 public class DateUtils {
 
@@ -72,4 +75,34 @@ public class DateUtils {
         String dt = StringUtils.remove(d,"-");
         return dt;
     }
+
+    /**
+     * 根据当天日期,获取一个月前的日期。
+     * @return
+     */
+    public static String getBeforeMonthDate(){
+        LocalDate today = LocalDate.now();
+        LocalDate lastWeek = today.minus(1, ChronoUnit.MONTHS);
+        System.out.println("Today is : " + today);
+        System.out.println("Date before 1 months : " + lastWeek);
+
+        String beforeDate = StringUtils.remove(lastWeek.toString(), "-");
+        System.err.println("delDate:" + beforeDate);
+        return beforeDate;
+    }
+
+    /**
+     * 获取一个月之间。
+     * @return
+     */
+    public static List<String> getMonthBetweenDate(){
+        LocalDate today = LocalDate.now();
+        LocalDate lastWeek = today.minus(1, ChronoUnit.MONTHS);
+        System.out.println("Today is : " + today);
+        System.out.println("Date before 1 months : " + lastWeek);
+        List<String> betweens = new ArrayList<>();
+        betweens.add(lastWeek + " 00:00:00");
+        betweens.add(today + " 23:59:59");
+        return betweens;
+    }
 }

+ 93 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/common/utils/MyX509TrustManager.java

@@ -0,0 +1,93 @@
+package com.pavis.ai.app.fjsocrasy.common.utils;
+
+import com.alibaba.fastjson.JSON;
+
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+import java.io.FileInputStream;
+import java.security.KeyStore;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+public class MyX509TrustManager implements X509TrustManager {
+    /*
+     * The default X509TrustManager returned by SunX509.  We'll delegate
+     * decisions to it, and fall back to the logic in this class if the
+     * default X509TrustManager doesn't trust it.
+     */
+    X509TrustManager sunJSSEX509TrustManager;
+    MyX509TrustManager() throws Exception {
+        // create a "default" JSSE X509TrustManager.
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(new FileInputStream("cancert.keystore"),
+                "changeit".toCharArray());
+        TrustManagerFactory tmf =
+                TrustManagerFactory.getInstance("SunX509", "SunJSSE");
+        tmf.init(ks);
+        TrustManager tms [] = tmf.getTrustManagers();
+        /*
+         * Iterate over the returned trustmanagers, look
+         * for an instance of X509TrustManager.  If found,
+         * use that as our "default" trust manager.
+         */
+        for (int i = 0; i < tms.length; i++) {
+            if (tms[i] instanceof X509TrustManager) {
+                sunJSSEX509TrustManager = (X509TrustManager) tms[i];
+                return;
+            }
+        }
+        /*
+         * Find some other way to initialize, or else we have to fail the
+         * constructor.
+         */
+        throw new Exception("Couldn't initialize");
+    }
+    /*
+     * Delegate to the default trust manager.
+     */
+    public void checkClientTrusted(X509Certificate[] chain, String authType)
+            throws CertificateException {
+        try {
+            sunJSSEX509TrustManager.checkClientTrusted(chain, authType);
+        } catch (CertificateException excep) {
+            // do any special handling here, or rethrow exception.
+        }
+    }
+    /*
+     * Delegate to the default trust manager.
+     */
+    public void checkServerTrusted(X509Certificate[] chain, String authType)
+            throws CertificateException {
+        try {
+            sunJSSEX509TrustManager.checkServerTrusted(chain, authType);
+        } catch (CertificateException excep) {
+            /*
+             * Possibly pop up a dialog box asking whether to trust the
+             * cert chain.
+             */
+        }
+    }
+    /*
+     * Merely pass this through.
+     */
+    public X509Certificate[] getAcceptedIssuers() {
+        return sunJSSEX509TrustManager.getAcceptedIssuers();
+    }
+
+    public static void main(String[] args) throws Exception {
+        System.err.println(JSON.toJSONString(getKeyStore("guanzi","F:\\ghj\\git\\fjs-ocr-asy\\src\\main\\resources\\guanz.jks")));
+    }
+
+    public static KeyStore getKeyStore(String password, String keyStorePath)
+            throws Exception {
+        // 实例化密钥库
+        KeyStore ks = KeyStore.getInstance("JKS");
+        // 获得密钥库文件流
+        FileInputStream is = new FileInputStream(keyStorePath);
+        // 加载密钥库
+        ks.load(is, password.toCharArray());
+        // 关闭密钥库文件流
+        is.close();
+        return ks;
+    }
+}

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

@@ -138,7 +138,7 @@ public class AipOcrUtils {
         Boolean isHad = checkLists.stream().filter(m -> m.equals(countFlag)).findAny().isPresent();
         String res = isHad == true ? "0" : "1";
         log.info("res:{}",res.equals("0") ? "local" : "aliyun");
-        System.out.println(res.equals("0") ? "local" : "aliyun");
+        // System.out.println(res.equals("0") ? "local" : "aliyun");
         return res;
 //        return isHad == true ? "local" : "ali";
     }

+ 14 - 4
src/main/java/com/pavis/ai/app/fjsocrasy/controller/BackController.java

@@ -346,14 +346,24 @@ public class BackController {
     public static List<ProVersion> getVersions() {
         List<ProVersion> vers = new ArrayList<>();
 
+        vers.add(ProVersion.builder()
+                .date("2020-12-04 测试环境")
+                .version("V3.15 ")
+                .descriptionOne("1、优化类型15,16;原本只抽取两张图片,现优化为三张图也可以正常识别。")
+                .descriptionTwo("2020-12-23 生产环境")
+                .descriptionThree("V1.20")
+                // .2、多线程异常解决。
+                .descriptionFour("1、因ocr识别时间过长,部分单号未能返回,故做超时时间设置。")
+                .build());
+
         vers.add(ProVersion.builder()
                 .date("2020-11-04 测试环境")
                 .version("V3.15 ")
                 .descriptionOne("1、OCR引擎替换  类型1,3,12,15,16,18,10,11。")
                 .descriptionTwo("2020-09-29 生产环境")
-                .descriptionThree("V1.17")
+                .descriptionThree("V1.19")
                 // .2、多线程异常解决。
-                .descriptionFour("1、fileType=10 异常捕获。2、请求参数data中字段校验优化.")
+                .descriptionFour("1、修复部分类型的图片调用多张联合的时候出现问题。")
                 .build());
 
         vers.add(ProVersion.builder()
@@ -361,9 +371,9 @@ public class BackController {
                 .version("V3.14 ")
                 .descriptionOne("1、后端与算法异常捕获新增log.")
                 .descriptionTwo("2020-09-29 生产环境")
-                .descriptionThree("V1.17")
+                .descriptionThree("V1.18")
                 // .2、多线程异常解决。
-                .descriptionFour("1、fileType=10 异常捕获。2、请求参数data中字段校验优化.")
+                .descriptionFour("1、OCR引擎替换 :类型1,3,12,15,16,5,10,11。2、推荐函文件识别中,推荐人识别冲突修改。")
                 .build());
 
         vers.add(ProVersion.builder()

+ 27 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/controller/OcrController.java

@@ -82,6 +82,8 @@ public class OcrController {
     }
 
 
+
+
         /**
          * 同步请求。
          * @param reqId
@@ -133,4 +135,29 @@ public class OcrController {
         }
     }
 
+    /**
+     * 异步请求。
+     * @param file
+     * @return
+     */
+    @ApiOperation("富士通图片转文字接口")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/fjs/ocr/test")
+    // public ResultBody imgToWord(@RequestParam("files") MultipartFile[] files) throws Exception {
+    public ResultBody imgToWord(@RequestParam("file") MultipartFile file) throws Exception {
+        long startTime = System.currentTimeMillis();
+        if (!file.isEmpty()){
+            Map<String,Object> map = uploadService.imgToWord(file);
+            if (map.containsKey("code") && map.get("code").equals("1")){
+                long endTime = System.currentTimeMillis();
+                log.info("step1 upload excTime:{}", DateUtils.getExcTime(startTime,endTime));
+                return ResultBody.ok().path("/api/fjs/ocr/test").data(map.get("data")).msg("成功");
+            }else {
+                return ResultBody.ok().path("/api/fjs/ocr/test").data(map.get("data")).msg("失败");
+            }
+        }else {
+            return ResultBody.failed().path("/api/fjs/ocr/test").data(null).msg("文件不能为空,请仔细检查后重试。");
+        }
+    }
+
 }

+ 2 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/service/OtherService.java

@@ -5,6 +5,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author guanhuijuan
@@ -31,4 +32,5 @@ public interface OtherService {
     boolean checkDiskSpace();
 
     void checkUnbackBo();
+
 }

+ 3 - 1
src/main/java/com/pavis/ai/app/fjsocrasy/service/UploadService.java

@@ -6,7 +6,6 @@ import com.pavis.ai.app.fjsocrasy.form.res.ResData;
 import com.pavis.ai.app.fjsocrasy.model.Upload;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -94,4 +93,7 @@ public interface UploadService {
     String tes();
 
     List findByReqId(String type,String reqId);
+
+
+    Map<String,Object> imgToWord(MultipartFile file);
 }

+ 1 - 1
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/BackServiceImpl.java

@@ -134,7 +134,7 @@ public class BackServiceImpl implements BackService {
         map.put("midConfidence", code.equals("-1") ? "0" : resData.getMidConfidence());
         return map;
     }
-
+   
     @Override
     public ResData getNullBackResData(String reqId, String templateType) {
         ResData resData = new ResData();

+ 1 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/LinkServiceImpl.java

@@ -100,6 +100,7 @@ public class LinkServiceImpl implements LinkService {
 //            }
             // todo 20201211
             log.info("link param:{}", JSON.toJSONString(matchMap));
+            System.err.println(JSON.toJSONString(matchMap));
             String matchRes = internalSendService.link(matchMap);
             resData = ParseUtils.parseRes(reqId, type, JSON.parseObject(sourceData),
                     JSON.parseObject(ocrData), JSON.parseObject(matchRes));

+ 44 - 22
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/OcrServiceImpl.java

@@ -74,8 +74,8 @@ public class OcrServiceImpl implements OcrService {
 //        int countFlag = Integer.valueOf(toSelShuntByType("-1").get(0).getRemarks());
         int countFlag = Integer.valueOf(toSelShuntByType(fileType).get(0).getRemarks());
         List<Shunt> shunts = toSelShuntByType(fileType);
-//        String shuntType = AipOcrUtils.checkLocalOrAli(shunts, countFlag);
-        String shuntType = "0";
+       String shuntType = AipOcrUtils.checkLocalOrAli(shunts, countFlag);
+        // String shuntType = "0";
         log.info("shuntType调取结果为:{}", shuntType);
         Map<String, Object> ocrMap = toOcrMap(reqId, fileType, url, fileName, data, startTime, shuntType);
         // todo 等于数据库存取的proportion如:100时,置为0;可从数据库获取,按照比例来。
@@ -254,9 +254,9 @@ public class OcrServiceImpl implements OcrService {
                 log.info("step2 ocrMap 无图/不合法等excTime:{}", DateUtils.getExcTime(startTime, endTime));
             }
         } catch (Exception e) {
-            log.info("ocr map:{}", e);
+            log.info("ocr map:{}", e.getMessage());
         }
-        log.info("to Ocr Map:{}", "调用ocr识别.,ocrMap为空...");
+        log.info("to Ocr Map:{}", "调用ocr识别,ocrMap为空...");
         return ocrMap;
     }
 
@@ -307,6 +307,7 @@ public class OcrServiceImpl implements OcrService {
                     matchMap.put("req_id", reqId);
                     matchMap.put("mid_ocr", midOcr);
                     matchMap.put("start_time", startTime);
+                    log.info("matchMap not recommends:{}",JSON.toJSONString(matchMap));
                     matchMap.put("recommends", fileType.equals("3") ? JSON.toJSONString(recommendInfoService.findRecomInfo()) : "[]");
                     // 将ocr结果信息及其他信息封装后写入source表中。
                     // uploadService.updateByReqIdAndType(reqId,fileType,"time",JSON.toJSONString(matchMap));
@@ -325,23 +326,29 @@ public class OcrServiceImpl implements OcrService {
             // 4,8,15,后期可能不要。
             ocrMap = getOcrMap(reqId, fileType, paths, shuntType);
             log.info("to suanfa ocrMap:{}",JSON.toJSONString(ocrMap));
-            ocr = internalSendService.ocr(ocrMap);
-            long endTime = System.currentTimeMillis();
-            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);
-                // 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);
-            } else {
-                // 返回至富士通。
-                backService.back(fileType, reqId, startTime, ocr);
+            // todo ghj 20201223
+            try {
+                ocr = internalSendService.ocr(ocrMap);
+                long endTime = System.currentTimeMillis();
+                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);
+                    // 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);
+                } else {
+                    // 返回至富士通。
+                    backService.back(fileType, reqId, startTime, ocr);
+                }
+            }catch (Exception e){
+                log.info("Read timed out executing POST test:{}","请求ocr结果超时啦。。。");
             }
+
         }
         return matchMap;
     }
@@ -624,8 +631,8 @@ public class OcrServiceImpl implements OcrService {
                     matchMap.put("ocr_data", ocrData);
                     matchMap.put("type", fileType);
                     matchMap.put("acc_json", ParseUtils.createIdCardAcc(fileType));
+                    log.info("match with no recommends pre:{}",JSON.toJSONString(matchMap));
                     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),
@@ -758,6 +765,7 @@ public class OcrServiceImpl implements OcrService {
         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));
@@ -768,9 +776,23 @@ public class OcrServiceImpl implements OcrService {
         }
         matchMap = matchMap(matchMap, fileType, reqId, ocr, sourceData);
         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),
                 ocr, JSON.parseObject(matchRes));
+
+
+
+        // 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);
+        //     return linkMap;
+        // }
+        // matchMap = uploadService.link(bo, ocr, fileType);
+        // matchMap.remove("req_id");
+        // matchMap.put("req_id",reqId);
+
         return resData;
     }
 

+ 1 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/OtherServiceImpl.java

@@ -117,6 +117,7 @@ public class OtherServiceImpl implements OtherService {
         deleteBacked(backCheckQueryWrapper);
     }
 
+
     /**
      * 删除已经back的数据。
      * @param backCheckQueryWrapper

+ 30 - 0
src/main/java/com/pavis/ai/app/fjsocrasy/service/impl/UploadServiceImpl.java

@@ -1175,6 +1175,36 @@ public class UploadServiceImpl implements UploadService {
         return ocrLists;
     }
 
+    @Override
+    public Map<String, Object> imgToWord(MultipartFile file) {
+        String strOriginalFilename = file.getOriginalFilename();
+        String strFileType = org.apache.commons.lang.StringUtils.substringAfter(strOriginalFilename, ".");
+        log.info("后缀名--->" + strFileType);
+        // 后缀名转换 如:JPG--jpg
+        if (org.apache.commons.lang.StringUtils.isAllUpperCase(strFileType)) {
+            strFileType = org.apache.commons.lang.StringUtils.lowerCase(strFileType);
+            log.info("后缀名转换-->" + strFileType);
+        }
+        Map<String,Object> map = new HashMap<>();
+        if (strFileType.contains("jpg") || strFileType.contains("png") || strFileType.contains("jpeg")){
+            String res = "识别";
+            JSONObject js = JSON.parseObject(res);
+            if (js.containsKey("code") && js.get("code").equals(1)){
+                map.put("code","1");
+                map.put("data",js.get("data"));
+                return map;
+            }else {
+                map.put("code","-1");
+                map.put("data",null);
+                return map;
+            }
+        }else {
+            map.put("code",2);
+            map.put("data",null);
+            return map;
+        }
+    }
+
     /**
      * 原始数据入库。
      *

+ 9 - 7
src/main/resources/application-dev.yml

@@ -4,7 +4,7 @@ spring:
 #    url: jdbc:mysql://192.168.1.73/fjs_ocr_12?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.37/fjs_ocr_13?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.27/fjs_ocr_16?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
-    url: jdbc:mysql://192.168.1.27/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
+    url: jdbc:mysql://192.168.0.27/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.73/fjs_ocr_14?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
@@ -14,7 +14,7 @@ spring:
 #    username: root
 #    password: Semi.1001
   rabbitmq:
-    host: 192.168.1.27
+    host: 192.168.0.27
 #    host: 47.104.109.52
     port: 5672
     username: fjs
@@ -29,7 +29,8 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+#    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465
@@ -41,7 +42,7 @@ ocr:
       upload: ${ocr.common.dir.base}\upload\rec\
     url:
       # ip
-      base: http://192.168.1.27:18000
+      base: http://192.168.0.27:18000
       path: ${ocr.common.url.base}/down/fjs/
 logging:
   level:
@@ -50,10 +51,11 @@ logging:
     com.pavis.ai.app.fjsocrasy.mapper: debug
 alg-client:
   # 测试时使用,与测试环境保持一致.
-#  internal: http://180.76.146.227:8099
+  internal: http://180.76.146.227:8099
 #  internal: http://180.76.146.227:8089
 #  internal: http://47.104.109.52:8099
   # 使用场景: 生产环境部署时,调试后再上线.
-  internal: http://47.104.109.52:8089
+#  internal: http://47.104.109.52:8089
   # 先上回调。
-  eternal: http://192.168.1.27:8000
+  eternal: https://192.168.0.27:8000
+#  eternal: http://61.155.215.241:52090

+ 8 - 1
src/main/resources/application-prod.yml

@@ -1,6 +1,7 @@
 spring:
   datasource:
     url: jdbc:mysql://47.104.109.52:18006/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
+#    url: jdbc:mysql://47.104.109.52:18007/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
     password: Semi.1001
@@ -15,7 +16,7 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465
@@ -28,6 +29,12 @@ ocr:
       # ip
       base: http://47.104.109.52:18000
       path: ${ocr.common.url.base}/down/fjs/
+feign:
+  client:
+    config:
+      default:
+        connectTimeout: 5000
+        readTimeout: 600000
 logging:
   level:
     org.springframework.cloud: llinfo

+ 1 - 1
src/main/resources/application-test.yml

@@ -15,7 +15,7 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465

+ 13 - 2
src/main/resources/application.yml

@@ -1,8 +1,19 @@
 server:
 #  测试环境
   port: 8000
-#  生产环境
-#  port: 18000
+  ssl:
+    enabled: true
+    key-store-type: JKS
+    key-store: src/main/resources/sslFjsTestServer.p12
+#    key-store: classpath:sslFjsTestServer.p12
+    key-store-password: fjs210207
+    key-alias: sslFjsTestServer
+    trust-store-password: fjs210207
+    trust-store-type: JKS
+    trust-store-provider: SUN
+    client-auth: need
+    address: 192.168.0.27
+#   address: 180.76.146.227
 spring:
   application:
     name: fujisu-ocr-server

BIN
src/main/resources/sslFjsTestServer.p12


+ 827 - 67
src/test/java/com/pavis/ai/app/fjsocrasy/FjsOcrAsyApplicationTests.java

@@ -1,54 +1,50 @@
-//package com.pavis.ai.app.fjsocrasy;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONObject;
-//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.ContractFiveBackMapper;
-//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.ContractFiveBack;
-//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;
-//import com.pavis.ai.app.fjsocrasy.service.UploadService;
-//import lombok.extern.slf4j.Slf4j;
-//import org.apache.commons.lang3.StringUtils;
-//import org.junit.Test;
-//import org.junit.runner.RunWith;
-//import org.springframework.beans.BeanUtils;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.test.context.SpringBootTest;
-//import org.springframework.test.context.junit4.SpringRunner;
-//import sun.misc.BASE64Decoder;
-//import sun.misc.BASE64Encoder;
-//
-//import java.io.BufferedReader;
-//import java.io.File;
-//import java.io.IOException;
-//import java.io.InputStreamReader;
-//import java.security.MessageDigest;
-//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;
-//
-//@RunWith(SpringRunner.class)
-//@SpringBootTest
-//@Slf4j
-//public class FjsOcrAsyApplicationTests {
+// package com.pavis.ai.app.fjsocrasy;
+//
+// 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.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.*;
+// import com.pavis.ai.app.fjsocrasy.model.*;
+// import com.pavis.ai.app.fjsocrasy.service.BackService;
+// import com.pavis.ai.app.fjsocrasy.service.OcrService;
+// import com.pavis.ai.app.fjsocrasy.service.UploadService;
+// import lombok.extern.slf4j.Slf4j;
+// import org.apache.commons.lang3.StringUtils;
+// import org.junit.Test;
+// import org.junit.runner.RunWith;
+// import org.springframework.beans.BeanUtils;
+// import org.springframework.beans.factory.annotation.Autowired;
+// import org.springframework.boot.test.context.SpringBootTest;
+// import org.springframework.test.context.junit4.SpringRunner;
+// import sun.misc.BASE64Decoder;
+// import sun.misc.BASE64Encoder;
+//
+// import java.io.BufferedReader;
+// import java.io.File;
+// import java.io.IOException;
+// import java.io.InputStreamReader;
+// import java.security.MessageDigest;
+// import java.text.SimpleDateFormat;
+// import java.time.LocalDate;
+// import java.time.LocalDateTime;
+// import java.time.format.DateTimeFormatter;
+// import java.time.temporal.ChronoUnit;
+// import java.util.*;
+// import java.util.regex.Matcher;
+// import java.util.regex.Pattern;
+// import java.util.stream.Collectors;
+//
+// @RunWith(SpringRunner.class)
+// @SpringBootTest
+// @Slf4j
+// public class FjsOcrAsyApplicationTests {
 //
 //    @Autowired
 //    private BackService backService;
@@ -69,7 +65,138 @@
 //    private ShuntMapper shuntMapper;
 //
 //    @Autowired
-//            private ContractFiveBackMapper contractFiveBackMapper;
+//    private ContractFiveBackMapper contractFiveBackMapper;
+//
+//     private static final String TYPE_ONE = "1";
+//     private static final String TYPE_TWO = "2";
+//     private static final String TYPE_THREE = "3";
+//     private static final String TYPE_FOUR = "4";
+//     private static final String TYPE_FIVE = "5";
+//     private static final String TYPE_SIX = "6";
+//     private static final String TYPE_SEVEN = "7";
+//     private static final String TYPE_EIGHT = "8";
+//     private static final String TYPE_NINE = "9";
+//     private static final String TYPE_TEN = "10";
+//     private static final String TYPE_ELEVEN = "11";
+//     private static final String TYPE_TWELVE = "12";
+//     private static final String TYPE_THIRTEEN = "13";
+//     private static final String TYPE_FOURTEEN = "14";
+//     private static final String TYPE_FIFTEEN = "15";
+//     private static final String TYPE_SIXTEEN = "16";
+//     private static final String TYPE_SEVENTEEN = "17";
+//     private static final String TYPE_EIGHTEEN = "18";
+//     private static final String TYPE_NINETEEN = "19";
+//
+//
+//     @Autowired
+//     private ContractOneMapper contractOneMapper;
+//
+//     @Autowired
+//     private ContractTwoMapper contractTwoMapper;
+//
+//     @Autowired
+//     private ContractThreeMapper contractThreeMapper;
+//
+//     @Autowired
+//     private ContractFourMapper contractFourMapper;
+//
+//     @Autowired
+//     private ContractFiveMapper contractFiveMapper;
+//
+//     @Autowired
+//     private ContractSixMapper contractSixMapper;
+//
+//     @Autowired
+//     private ContractSevenMapper contractSevenMapper;
+//
+//     @Autowired
+//     private ContractEightMapper contractEightMapper;
+//
+//     @Autowired
+//     private ContractNineMapper contractNineMapper;
+//
+//     @Autowired
+//     private ContractOneBackMapper contractOneBackMapper;
+//
+//     @Autowired
+//     private ContractTwoBackMapper contractTwoBackMapper;
+//
+//     @Autowired
+//     private ContractThreeBackMapper contractThreeBackMapper;
+//
+//     @Autowired
+//     private ContractFourBackMapper contractFourBackMapper;
+//
+//
+//     @Autowired
+//     private ContractSixBackMapper contractSixBackMapper;
+//
+//     @Autowired
+//     private ContractSevenBackMapper contractSevenBackMapper;
+//
+//     @Autowired
+//     private ContractEightBackMapper contractEightBackMapper;
+//
+//     @Autowired
+//     private ContractNineBackMapper contractNineBackMapper;
+//
+//     @Autowired
+//     private IdCodeFrontMapper idCodeFrontMapper;
+//
+//     @Autowired
+//     private IdCodeFrontBackMapper idCodeFrontBackMapper;
+//
+//     @Autowired
+//     private IdCodeReverseBackMapper idCodeReverseBackMapper;
+//
+//     @Autowired
+//     private IdCodeReverseMapper idCodeReverseMapper;
+//
+//     @Autowired
+//     private ContractTwelveMapper contractTwelveMapper;
+//
+//     @Autowired
+//     private ContractTwelveBackMapper contractTwelveBackMapper;
+//
+//     @Autowired
+//     private ContractThirteenMapper contractThirteenMapper;
+//
+//     @Autowired
+//     private ContractThirteenBackMapper contractThirteenBackMapper;
+//
+//     @Autowired
+//     private ContractFourteenMapper contractFourteenMapper;
+//
+//     @Autowired
+//     private ContractFourteenBackMapper contractFourteenBackMapper;
+//
+//     @Autowired
+//     private ContractFifteenMapper contractFifteenMapper;
+//
+//     @Autowired
+//     private ContractFifteenBackMapper contractFifteenBackMapper;
+//
+//     @Autowired
+//     private ContractSixteenMapper contractSixteenMapper;
+//
+//     @Autowired
+//     private ContractSixteenBackMapper contractSixteenBackMapper;
+//
+//     @Autowired
+//     private ContractSeventeenMapper contractSeventeenMapper;
+//
+//     @Autowired
+//     private ContractSeventeenBackMapper contractSeventeenBackMapper;
+//
+//
+//     @Autowired
+//     private ContractEighteenBackMapper contractEighteenBackMapper;
+//
+//     @Autowired
+//     private ContractNineTeenMapper contractNineTeenMapper;
+//
+//     @Autowired
+//     private ContractNineTeenBackMapper contractNineTeenBackMapper;
 //
 //    int countFlag = 1;
 //
@@ -135,7 +262,7 @@
 //            System.err.println("sql:" + countFlag);
 //            List<Shunt> shunts = toSelShuntByType(fileType);
 //            String shuntType = AipOcrUtils.checkLocalOrAli(shunts, countFlag);
-////            log.info("shuntType调取结果为:{}", shuntType);
+// //            log.info("shuntType调取结果为:{}", shuntType);
 //            System.err.println("shuntType调取结果为:{}" + shuntType);
 //            lists.add(shuntType);
 //            System.out.println("to ocr ..........");
@@ -153,7 +280,7 @@
 //
 //    public void initShuntVal(int countFlag, int proportion,Boolean isReset) {
 //        if (isReset == true){
-////            if (countFlag == (proportion - 1)) {
+// //            if (countFlag == (proportion - 1)) {
 //            if (countFlag > proportion) {
 //                List<Shunt> tmpShunts = toSelShuntByType("-1");
 //                for (Shunt tmpShunt : tmpShunts) {
@@ -414,18 +541,7 @@
 //
 //    }
 //
-//    /**
-//     * MD5加密字符串
-//     *
-//     * @param str 加密字符串
-//     * @return 加密后的字符串
-//     * @throws Exception 异常
-//     */
-//    public static String getEncryptPwd(String str) throws Exception {
-//        MessageDigest md = MessageDigest.getInstance("MD5");
-//        BASE64Encoder encoder = new BASE64Encoder();
-//        return encoder.encode(md.digest(str.getBytes("utf-8")));
-//    }
+//
 //
 //    /**
 //     * base64解密
@@ -532,4 +648,648 @@
 //        return Math.abs(ChronoUnit.MINUTES.between(localDate1, localDate2));
 //    }
 //
-//}
+//    @Test
+//     public void testLength(){
+//         String str = "";
+//         System.err.println(toLength(str,200));
+//    }
+//
+//     // 判断大小是否超过200个字。
+//     public static boolean toLength(String val,int compare){
+//         int finalLength = toChineseLength(val) + toEnglishLength(val);
+//         return finalLength <= compare ? true : false;
+//     }
+//
+//     public static int toChineseLength(String value) {
+//         int valueLength = 0;
+//         String chinese = "[\u4e00-\u9fa5]";
+//         String english = "[a-zA-Z]";
+//         for (int i = 0; i < value.length(); i++) {
+//             String temp = value.substring(i, i + 1);
+//             if (temp.equals(" ")) {
+//                 valueLength += 0;
+//             } else if (temp.matches(chinese)) {
+//                 valueLength += 1;
+//             } else if (temp.matches(english)) {
+//                 valueLength += 0;
+//             } else {
+//                 valueLength += 1;
+//             }
+//         }
+//         return valueLength;
+//     }
+//     public static int toEnglishLength(String value) {
+//         int valueLength = 0;
+//         String chinese = "[\u4e00-\u9fa5]";
+//         String english = "[a-zA-Z]";
+//         int k = 0;
+//         for (int i = 0; i < value.length(); i++) {
+//             String temp = value.substring(i, i + 1);
+//             if (temp.equals(" ")) {
+//                 if (k == 1) {
+//                     valueLength += 1;
+//                     k = 0;
+//                 }
+//                 valueLength += 0;
+//             } else if (temp.matches(chinese)) {
+//                 if (k == 1) {
+//                     valueLength += 1;
+//                     k = 0;
+//                 }
+//                 valueLength += 0;
+//             } else if (temp.matches(english)) {
+//                 if (i == value.length() - 1) {//循环到最后一位是字母时长度也要加1
+//                     valueLength += 1;
+//                 }
+//                 k = 1;
+//                 valueLength += 0;
+//             } else {
+//                 if (k == 1) {
+//                     valueLength += 1;
+//                     k = 0;
+//                 }
+//                 valueLength += 0;//标点符号
+//             }
+//         }
+//         return valueLength;
+//     }
+//
+//     @Test
+//     public void testTek(){
+//
+//         System.err.println(isTelephone(""));
+//         System.err.println(isHandset(""));
+//     }
+//     public static boolean isTelephone(String str) {
+//         String TEL = "^(\\d{3,4}-)?\\d{6,8}$";
+//         return match(TEL, str);
+//     }
+//     public static boolean isHandset(String str) {
+//         String PHONE = "^[1]+[3,5]+\\d{9}$";
+//         return match(PHONE, str);
+//     }
+//     private static boolean match(String regex, String str) {
+//         Pattern pattern = Pattern.compile(regex);
+//         Matcher matcher = pattern.matcher(str);
+//         return matcher.matches();
+//     }
+//
+//     @Test
+//     public void testPasswd() throws Exception {
+//         String pwdStr = "123456";
+//         System.err.println(getEncryptPwd(pwdStr));
+//     }
+//
+//     /**
+//      * MD5加密字符串
+//      *
+//      * @param str 加密字符串
+//      * @return 加密后的字符串
+//      * @throws Exception 异常
+//      */
+//     public static String getEncryptPwd(String str) throws Exception {
+//         MessageDigest md = MessageDigest.getInstance("MD5");
+//         BASE64Encoder encoder = new BASE64Encoder();
+//         return encoder.encode(md.digest(str.getBytes("utf-8")));
+//     }
+//
+//     @Test
+//     public void testObj(){
+//         Upload upload = Upload.builder().id("1").build();
+//         List<Upload> uploads = new ArrayList<>();
+//         uploads.add(upload);
+//         List<Cron> crons = new ArrayList<>();
+//         Cron cron = new Cron();
+//         cron.setId("1");
+//         crons.add(cron);
+//         // System.err.println(compare(uploads,crons));
+//         // System.err.println(compare(uploads,uploads));
+//         if(uploads.containsAll(uploads) && uploads.containsAll(uploads)){
+//             System.out.println("the same");
+//         }else {
+//             System.err.println("unsame");
+//         }
+//     }
+//     public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b) {
+//         if (a.size() != b.size())
+//             return false;
+//         Collections.sort(a);
+//         Collections.sort(b);
+//         for (int i = 0; i < a.size(); i++) {
+//             if (!a.get(i).equals(b.get(i)))
+//                 return false;
+//         }
+//         return true;
+//     }
+//
+//
+//     @Test
+//     public void testDelSql(){
+//         List<String> dates = DateUtils.getMonthBetweenDate();
+//         System.out.println(dates.get(0).toString());
+//         System.out.println(dates.get(1).toString());
+//         // 1.1 先查询近一个月的数据库的upload获取reqid
+//         QueryWrapper<Upload> uploadQueryWrapper = new QueryWrapper<>();
+//         uploadQueryWrapper.lambda()
+//                 .between(Upload::getOperateTime,dates.get(0).toString(),dates.get(1).toString());
+//         // List<Upload> uploads = uploadMapper.selectList(uploadQueryWrapper);
+//         // System.err.println(uploads.size());
+//         // System.out.println(JSON.toJSONString(uploads));
+//         // 1.2 根据reqid和type获取数据,
+//
+//         // 1.3 然后批量删除数据。
+//
+//         // 测试数据分组。
+//         selDelUpload(dates.get(0).toString(),dates.get(1).toString(),"2");
+//
+//     }
+//
+//     public List<Upload> selDelUpload(String lastDate,String currDate,String type){
+//         // 1.1 先查询近一个月的数据库的upload获取reqid
+//         QueryWrapper<Upload> uploadQueryWrapper = new QueryWrapper<>();
+//         uploadQueryWrapper.lambda()
+//                 // .eq(Upload::getType,type)
+//                 .between(Upload::getOperateTime,lastDate,currDate);
+//         List<Upload> uploads = uploadMapper.selectList(uploadQueryWrapper);
+//
+//         System.err.println(uploads.size());
+//         System.out.println(JSON.toJSONString(uploads));
+//
+//         // uploads.stream().filter(m -> m.getType().equals(type)).
+//         // Map<String, Integer> collect2 = uploads.stream().collect(Collectors.groupingBy(Upload::getType,Collectors.summarizingLong(Upload::getId)));
+//         Map<String, List<Upload>> collectMap = uploads.stream().collect(Collectors.groupingBy(Upload::getType));
+//         System.out.println(JSON.toJSONString(collectMap));
+//
+//         List<String> strs = new ArrayList<>();
+//         strs.add("11");
+//         strs.add("3");
+//         strs.add("7");
+//
+//         for (String str : strs) {
+//             List<String> lists = selDelReqIds(str,collectMap);
+//                 System.err.println("lists:" + JSON.toJSONString(lists));
+//         }
+//         return uploads;
+//     }
+//
+//     public List<String> selDelReqIds(String type,Map<String, List<Upload>> collectMap){
+//         List<String> lists = new ArrayList<>();
+//         if (collectMap.containsKey(type)){
+//             System.err.println("contains:" + type);
+//             List<Upload> datas = JSONArray.parseArray
+//                     (JSONArray.toJSONString(collectMap.get(type)),Upload.class);
+//             System.out.println(JSON.toJSONString(datas));
+//             lists = datas.stream().map(Upload::getReqId).collect(Collectors.toList());
+//             System.err.println("lists:" + JSON.toJSONString(lists));
+//             return lists;
+//         }
+//         return lists;
+//     }
+//
+//     public QueryWrapper query(List<String> reqIds){
+//         QueryWrapper queryWrapper = new QueryWrapper();
+//         queryWrapper.in(true,"req_id",reqIds);
+//         return queryWrapper;
+//     }
+//
+//     /**
+//      * 富士通清除upload、source、back数据。
+//      */
+//     @Test
+//     public void delSourceAndBack(){
+//         List<String> dates = DateUtils.getMonthBetweenDate();
+//         System.out.println(dates.get(0).toString());
+//         System.out.println(dates.get(1).toString());
+//         String lastDate = dates.get(0).toString();
+//         String currDate = dates.get(1).toString();
+//
+//         QueryWrapper<Upload> uploadQueryWrapper = new QueryWrapper<>();
+//         uploadQueryWrapper.lambda()
+//                 // .eq(Upload::getType,type)
+//                 .between(Upload::getOperateTime,lastDate,currDate);
+//         List<Upload> uploads = uploadMapper.selectList(uploadQueryWrapper);
+//         for (Upload upload : uploads) {
+//             selDelData(upload.getType(),uploads);
+//         }
+//        
+//     }
+//     public List selDelData(String type,List<Upload> uploads){
+//         Map<String, List<Upload>> collectMap = uploads.stream().collect(Collectors.groupingBy(Upload::getType));
+//         QueryWrapper queryWrapper = new QueryWrapper();
+//         List<String> delLists = new ArrayList<>();
+//         List<String> lists = new ArrayList<>();
+//         switch (type) {
+//             case TYPE_ONE:
+//                 lists = selDelReqIds(TYPE_ONE,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractOne> contractOnes = contractOneMapper.selectList(queryWrapper);
+//                     List<ContractOneBack> contractOneBacks = contractOneBackMapper.selectList(queryWrapper);
+//                     if (contractOnes.size() > 0){
+//                         delLists = contractOnes.stream().map(ContractOne::getReqId).collect(Collectors.toList());
+//                         System.out.println("1 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractOneBacks.size() > 0){
+//                         delLists = contractOneBacks.stream().map(ContractOneBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("1 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_TWO:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_TWO,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractTwo> contractTwos = contractTwoMapper.selectList(queryWrapper);
+//                     List<ContractTwoBack> contractTwoBacks = contractTwoBackMapper.selectList(queryWrapper);
+//                     if (contractTwos.size() > 0){
+//                         delLists = contractTwos.stream().map(ContractTwo::getReqId).collect(Collectors.toList());
+//                         System.out.println("2 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractTwoBacks.size() > 0){
+//                         delLists = contractTwoBacks.stream().map(ContractTwoBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("2 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_THREE:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_THREE,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractThree> contractThrees = contractThreeMapper.selectList(queryWrapper);
+//                     List<ContractThreeBack> contractThreeBacks = contractThreeBackMapper.selectList(queryWrapper);
+//                     if (contractThrees.size() > 0){
+//                         delLists = contractThrees.stream().map(ContractThree::getReqId).collect(Collectors.toList());
+//                         System.out.println("3 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractThreeBacks.size() > 0){
+//                         delLists = contractThreeBacks.stream().map(ContractThreeBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("3 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_FOUR:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_FOUR,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractFour> contractFours = contractFourMapper.selectList(queryWrapper);
+//                     List<ContractFourBack> contractFourBacks = contractFourBackMapper.selectList(queryWrapper);
+//                     if (contractFours.size() > 0){
+//                         delLists = contractFours.stream().map(ContractFour::getReqId).collect(Collectors.toList());
+//                         System.out.println("4 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractFourBacks.size() > 0){
+//                         delLists = contractFourBacks.stream().map(ContractFourBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("4 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_FIVE:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_FIVE,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractFive> contractFives = contractFiveMapper.selectList(queryWrapper);
+//                     List<ContractFiveBack> contractFiveBacks = contractFiveBackMapper.selectList(queryWrapper);
+//                     if (contractFives.size() > 0){
+//                         delLists = contractFives.stream().map(ContractFive::getReqId).collect(Collectors.toList());
+//                         System.out.println("5 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractFiveBacks.size() > 0){
+//                         delLists = contractFiveBacks.stream().map(ContractFiveBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("5 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_SIX:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_SIX,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractSix> contractSixs = contractSixMapper.selectList(queryWrapper);
+//                     List<ContractSixBack> contractSixBacks = contractSixBackMapper.selectList(queryWrapper);
+//                     if (contractSixs.size() > 0){
+//                         delLists = contractSixs.stream().map(ContractSix::getReqId).collect(Collectors.toList());
+//                         System.out.println("6 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractSixBacks.size() > 0){
+//                         delLists = contractSixBacks.stream().map(ContractSixBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("6 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_SEVEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_SEVEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractSeven> contractSevens = contractSevenMapper.selectList(queryWrapper);
+//                     List<ContractSevenBack> contractSevenBacks = contractSevenBackMapper.selectList(queryWrapper);
+//                     if (contractSevens.size() > 0){
+//                         delLists = contractSevens.stream().map(ContractSeven::getReqId).collect(Collectors.toList());
+//                         System.out.println("7 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractSevenBacks.size() > 0){
+//                         delLists = contractSevenBacks.stream().map(ContractSevenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("7 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_EIGHT:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_EIGHT,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractEight> contractEights = contractEightMapper.selectList(queryWrapper);
+//                     List<ContractEightBack> contractEightBacks = contractEightBackMapper.selectList(queryWrapper);
+//                     if (contractEights.size() > 0){
+//                         delLists = contractEights.stream().map(ContractEight::getReqId).collect(Collectors.toList());
+//                         System.out.println("8 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractEightBacks.size() > 0){
+//                         delLists = contractEightBacks.stream().map(ContractEightBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("8 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_NINE:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_NINE,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractNine> contractNines = contractNineMapper.selectList(queryWrapper);
+//                     List<ContractNineBack> contractNineBacks = contractNineBackMapper.selectList(queryWrapper);
+//                     if (contractNines.size() > 0){
+//                         delLists = contractNines.stream().map(ContractNine::getReqId).collect(Collectors.toList());
+//                         System.out.println("9 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractNineBacks.size() > 0){
+//                         delLists = contractNineBacks.stream().map(ContractNineBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("9 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_TEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_TEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<IdCodeFront> idCodeFronts = idCodeFrontMapper.selectList(queryWrapper);
+//                     List<IdCodeFrontBack> idCodeFrontBacks = idCodeFrontBackMapper.selectList(queryWrapper);
+//                     if (idCodeFronts.size() > 0){
+//                         delLists = idCodeFronts.stream().map(IdCodeFront::getReqId).collect(Collectors.toList());
+//                         System.out.println("10 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (idCodeFrontBacks.size() > 0){
+//                         delLists = idCodeFrontBacks.stream().map(IdCodeFrontBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("10 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_ELEVEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_ELEVEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<IdCodeReverse> idCodeReverses = idCodeReverseMapper.selectList(queryWrapper);
+//                     List<IdCodeReverseBack> idCodeReverseBacks = idCodeReverseBackMapper.selectList(queryWrapper);
+//                     if (idCodeReverses.size() > 0){
+//                         delLists = idCodeReverses.stream().map(IdCodeReverse::getReqId).collect(Collectors.toList());
+//                         System.out.println("11 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (idCodeReverseBacks.size() > 0){
+//                         delLists = idCodeReverseBacks.stream().map(IdCodeReverseBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("11 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_TWELVE:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_TWELVE,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractTwelve> contractTwelves = contractTwelveMapper.selectList(queryWrapper);
+//                     List<ContractTwelveBack> contractTwelveBacks = contractTwelveBackMapper.selectList(queryWrapper);
+//                     if (contractTwelves.size() > 0){
+//                         delLists = contractTwelves.stream().map(ContractTwelve::getReqId).collect(Collectors.toList());
+//                         System.out.println("12 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractTwelveBacks.size() > 0){
+//                         delLists = contractTwelveBacks.stream().map(ContractTwelveBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("12 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_THIRTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_THIRTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractThirteen> contractThirteens = contractThirteenMapper.selectList(queryWrapper);
+//                     List<ContractThirteenBack> contractThirteenBacks = contractThirteenBackMapper.selectList(queryWrapper);
+//                     if (contractThirteens.size() > 0){
+//                         delLists = contractThirteens.stream().map(ContractThirteen::getReqId).collect(Collectors.toList());
+//                         System.out.println("13 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractThirteenBacks.size() > 0){
+//                         delLists = contractThirteenBacks.stream().map(ContractThirteenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("13 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_FOURTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_FOURTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractFourteen> contractFourteens = contractFourteenMapper.selectList(queryWrapper);
+//                     List<ContractFourteenBack> contractFourteenBacks = contractFourteenBackMapper.selectList(queryWrapper);
+//                     if (contractFourteens.size() > 0){
+//                         delLists = contractFourteens.stream().map(ContractFourteen::getReqId).collect(Collectors.toList());
+//                         System.out.println("14 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractFourteenBacks.size() > 0){
+//                         delLists = contractFourteenBacks.stream().map(ContractFourteenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("14 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_FIFTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_FIFTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractFifteen> contractFifteens = contractFifteenMapper.selectList(queryWrapper);
+//                     List<ContractFifteenBack> contractFifteenBacks = contractFifteenBackMapper.selectList(queryWrapper);
+//                     if (contractFifteens.size() > 0){
+//                         delLists = contractFifteens.stream().map(ContractFifteen::getReqId).collect(Collectors.toList());
+//                         System.out.println("15 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractFifteenBacks.size() > 0){
+//                         delLists = contractFifteenBacks.stream().map(ContractFifteenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("15 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_SIXTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_SIXTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractSix> sixteens = contractSixteenMapper.selectList(queryWrapper);
+//                     List<ContractSixBack> sixteenBacks = contractSixteenBackMapper.selectList(queryWrapper);
+//                     if (sixteens.size() > 0){
+//                         delLists = sixteens.stream().map(ContractSix::getReqId).collect(Collectors.toList());
+//                         System.out.println("16 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (sixteenBacks.size() > 0){
+//                         delLists = sixteenBacks.stream().map(ContractSixBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("16 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_SEVENTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_SEVENTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractSeventeen> contractSeventeens = contractSeventeenMapper.selectList(queryWrapper);
+//                     List<ContractSeventeenBack> contractSeventeenBacks = contractSeventeenBackMapper.selectList(queryWrapper);
+//                     if (contractSeventeens.size() > 0){
+//                         delLists = contractSeventeens.stream().map(ContractSeventeen::getReqId).collect(Collectors.toList());
+//                         System.out.println("17 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractSeventeenBacks.size() > 0){
+//                         delLists = contractSeventeenBacks.stream().map(ContractSeventeenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("17 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_EIGHTEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_EIGHTEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractEighteen> contractEighteens = contractEighteenMapper.selectList(queryWrapper);
+//                     List<ContractEighteenBack> contractEighteenBacks = contractEighteenBackMapper.selectList(queryWrapper);
+//                     if (contractEighteens.size() > 0){
+//                         delLists = contractEighteens.stream().map(ContractEighteen::getReqId).collect(Collectors.toList());
+//                         System.out.println("18 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractEighteenBacks.size() > 0){
+//                         delLists = contractEighteenBacks.stream().map(ContractEighteenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("18 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             case TYPE_NINETEEN:
+//                 // 待开发
+//                 lists = selDelReqIds(TYPE_NINETEEN,collectMap);
+//                 if (lists.size() > 0){
+//                     // 删除期间的source和back数据。
+//                     queryWrapper = query(lists);
+//                     List<ContractNineteen> contractNineteens = contractNineTeenMapper.selectList(queryWrapper);
+//                     List<ContractNineteenBack> contractNineteenBacks = contractNineTeenBackMapper.selectList(queryWrapper);
+//                     if (contractNineteens.size() > 0){
+//                         delLists = contractNineteens.stream().map(ContractNineteen::getReqId).collect(Collectors.toList());
+//                         System.out.println("19 del source: " + JSON.toJSONString(delLists));
+//                     }
+//                     if (contractNineteenBacks.size() > 0){
+//                         delLists = contractNineteenBacks.stream().map(ContractNineteenBack::getReqId).collect(Collectors.toList());
+//                         System.out.println("19 del back: " + JSON.toJSONString(delLists));
+//                     }
+//                 }
+//                 break;
+//             default:
+//                 // 待开发
+//         }
+//         return null;
+//     }
+//
+//     /**
+//      * 富士通清除近一个月的图片数据。
+//      */
+//     @Test
+//     public void testFilees() {
+//         // todo 截止
+//         LocalDate today = LocalDate.now();
+//         LocalDate nextWeek = today.minus(1, ChronoUnit.MONTHS);
+//         System.out.println("Today is : " + today);
+//         System.out.println("Date before 1 months : " + nextWeek);
+//
+//         String delDate = StringUtils.remove(nextWeek.toString(), "-");
+//         System.err.println("delDate:" + delDate);
+//
+//         List<String> strs = new ArrayList<>();
+//         strs.add("1");
+//         strs.add("2");
+//         strs.add("3");
+//         strs.add("4");
+//         strs.add("5");
+//         strs.add("6");
+//         strs.add("7");
+//         strs.add("8");
+//         strs.add("9");
+//         strs.add("10");
+//
+//         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
+//         Date now = new Date();
+//         System.out.println("开始时间:" + sf.format(now));
+//         for (String str : strs) {
+//             File delFile = new File("F:\\Note\\test\\" + str + "\\");
+//             File[] dels = delFile.listFiles();
+//
+//             for (File del : dels) {
+//                 System.out.println("文件夹内文件个数:" + dels.length);
+//                 System.out.println("del name:" + del.getName());
+//                 if (del.getName().equals(delDate)) {
+//                     System.err.println("del..." + del.getName());
+//                     delteFile(del);
+//                 }
+//             }
+//             for (File del : dels) {
+//                 if (del.getName().equals(delDate)) {
+//                     // delteFile(del);
+//                     del.delete();
+//                     System.err.println("del end..." + del.getName());
+//                 }
+//             }
+//         }
+//         Date now2 = new Date();
+//         System.out.println("结束时间:" + sf.format(now2));
+//     }
+//
+//     public static void delteFile(File file) {
+//         File[] filearray = file.listFiles();
+//         if (filearray != null) {
+//             for (File f : filearray) {
+//                 if (f.isDirectory()) {
+//                     delteFile(f);
+//                 } else {
+//                     f.delete();
+//                 }
+//                 delteFile(f);
+//             }
+//         }
+//     }
+// }

+ 10 - 7
target/classes/application-dev.yml

@@ -4,7 +4,7 @@ spring:
 #    url: jdbc:mysql://192.168.1.73/fjs_ocr_12?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.37/fjs_ocr_13?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.27/fjs_ocr_16?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
-    url: jdbc:mysql://192.168.1.27/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
+    url: jdbc:mysql://192.168.0.27/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
 #    url: jdbc:mysql://192.168.1.73/fjs_ocr_14?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
@@ -14,7 +14,7 @@ spring:
 #    username: root
 #    password: Semi.1001
   rabbitmq:
-    host: 192.168.1.27
+    host: 192.168.0.27
 #    host: 47.104.109.52
     port: 5672
     username: fjs
@@ -29,7 +29,8 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+#    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465
@@ -41,7 +42,7 @@ ocr:
       upload: ${ocr.common.dir.base}\upload\rec\
     url:
       # ip
-      base: http://192.168.1.27:18000
+      base: http://192.168.0.27:18000
       path: ${ocr.common.url.base}/down/fjs/
 logging:
   level:
@@ -50,9 +51,11 @@ logging:
     com.pavis.ai.app.fjsocrasy.mapper: debug
 alg-client:
   # 测试时使用,与测试环境保持一致.
-#  internal: http://180.76.146.227:8099
+  internal: http://180.76.146.227:8099
 #  internal: http://180.76.146.227:8089
 #  internal: http://47.104.109.52:8099
   # 使用场景: 生产环境部署时,调试后再上线.
-  internal: http://47.104.109.52:8089
-  eternal: http://192.168.1.27:8000
+#  internal: http://47.104.109.52:8089
+  # 先上回调。
+  eternal: https://192.168.0.27:8000
+#  eternal: http://61.155.215.241:52090

+ 8 - 1
target/classes/application-prod.yml

@@ -1,6 +1,7 @@
 spring:
   datasource:
     url: jdbc:mysql://47.104.109.52:18006/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
+#    url: jdbc:mysql://47.104.109.52:18007/fjs_ocr?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
     password: Semi.1001
@@ -15,7 +16,7 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465
@@ -28,6 +29,12 @@ ocr:
       # ip
       base: http://47.104.109.52:18000
       path: ${ocr.common.url.base}/down/fjs/
+feign:
+  client:
+    config:
+      default:
+        connectTimeout: 5000
+        readTimeout: 600000
 logging:
   level:
     org.springframework.cloud: llinfo

+ 1 - 1
target/classes/application-test.yml

@@ -15,7 +15,7 @@ spring:
   mail:
     host: smtp.163.com
     username: guanhuijuan_ghj@163.com
-    password: SFSKSCHIUIXSGAOA
+    password: VHGQMYFJNNPJQYSA
     default-encoding: utf-8
     protocol: smtps
     port: 465

+ 13 - 2
target/classes/application.yml

@@ -1,8 +1,19 @@
 server:
 #  测试环境
   port: 8000
-#  生产环境
-#  port: 18000
+  ssl:
+    enabled: true
+    key-store-type: JKS
+    key-store: src/main/resources/sslFjsTestServer.p12
+#    key-store: classpath:sslFjsTestServer.p12
+    key-store-password: fjs210207
+    key-alias: sslFjsTestServer
+    trust-store-password: fjs210207
+    trust-store-type: JKS
+    trust-store-provider: SUN
+    client-auth: need
+    address: 192.168.0.27
+#   address: 180.76.146.227
 spring:
   application:
     name: fujisu-ocr-server

BIN
target/classes/com/pavis/ai/app/fjsocrasy/common/config/SslConfig$1.class


BIN
target/classes/com/pavis/ai/app/fjsocrasy/common/config/SslConfig.class


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


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


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


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


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


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


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


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


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


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


BIN
target/classes/sslFjsTestServer.p12


BIN
target/fjs-ocr-asy-1.0.0.jar


BIN
target/fjs-ocr-asy-1.0.0.jar.original


+ 3 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -78,6 +78,7 @@ com\pavis\ai\app\fjsocrasy\form\thirteen\Thirteen.class
 com\pavis\ai\app\fjsocrasy\form\three\RecommendationLetter.class
 com\pavis\ai\app\fjsocrasy\model\ContractTwelve.class
 com\pavis\ai\app\fjsocrasy\form\thirteen\PayAndEnjoyLoanApplicationForm$PayAndEnjoyLoanApplicationFormBuilder.class
+com\pavis\ai\app\fjsocrasy\common\config\SslConfig$1.class
 com\pavis\ai\app\fjsocrasy\form\eighteen\Eighteen$EighteenBuilder.class
 com\pavis\ai\app\fjsocrasy\model\ContractFourteen.class
 com\pavis\ai\app\fjsocrasy\model\ContractSix$ContractSixBuilder.class
@@ -215,6 +216,7 @@ com\pavis\ai\app\fjsocrasy\model\ContractNineteen$ContractNineteenBuilder.class
 com\pavis\ai\app\fjsocrasy\FjsOcrAsyApplication.class
 com\pavis\ai\app\fjsocrasy\form\nineteen\IncomeProof.class
 com\pavis\ai\app\fjsocrasy\model\ContractFifteenBack$ContractFifteenBackBuilder.class
+com\pavis\ai\app\fjsocrasy\common\config\SslConfig.class
 com\pavis\ai\app\fjsocrasy\form\eighteen\Eighteen.class
 com\pavis\ai\app\fjsocrasy\form\three\LinkThree.class
 com\pavis\ai\app\fjsocrasy\service\OtherService.class
@@ -298,6 +300,7 @@ com\pavis\ai\app\fjsocrasy\form\sixteen\MidSixteen.class
 com\pavis\ai\app\fjsocrasy\form\six\Six$SixBuilder.class
 com\pavis\ai\app\fjsocrasy\mapper\ContractTwoBackMapper.class
 com\pavis\ai\app\fjsocrasy\form\ProVersion.class
+com\pavis\ai\app\fjsocrasy\common\utils\MyX509TrustManager.class
 com\pavis\ai\app\fjsocrasy\common\config\properties\Dir.class
 com\pavis\ai\app\fjsocrasy\form\fourteen\Fourteen.class
 com\pavis\ai\app\fjsocrasy\mapper\ContractFiveMapper.class

+ 2 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -48,11 +48,13 @@ F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\common\excel\Rec
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\common\utils\DiskUtils.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\service\impl\RecommendInfoServiceImpl.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\mapper\IdCodeFrontMapper.java
+F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\common\utils\MyX509TrustManager.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\fifteen\LinkOcrFifteen.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\mapper\ContractFourteenMapper.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\eighteen\Eighteen.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\nine\LinkNine.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\sixteen\LeEnjoyLoanCommitmentLetter.java
+F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\common\config\SslConfig.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\seventeen\LinkSeventeen.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\form\three\LinkOcrThree.java
 F:\ghj\git\fjs-ocr-asy\src\main\java\com\pavis\ai\app\fjsocrasy\model\ContractFifteenBack.java