Przeglądaj źródła

新增保后列表,图片识别完成,需要更多借据来调整参数

Administrator 10 miesięcy temu
rodzic
commit
9fad5c4fb6

+ 2 - 10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -7,6 +7,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.utils.IdCardUtil;
 import com.ruoyi.common.utils.ThumbnailUtil;
 import com.ruoyi.system.domain.vo.UploadVo;
@@ -139,17 +140,8 @@ public class CommonController {
             //服务器路径
             String urlOnline = filePath + fileName.replace("/profile/upload", "");
             //百度图片识别
-            String result = IdCardUtil.accurateBasic(urlOnline);
+            JSONObject result = IdCardUtil.accurateBasic(urlOnline);
             System.out.println(result);
-/*            //获取本地图片
-            File fileOcr = new File(urlOnline);
-            // 使用 Tesseract 识别文本
-            ITesseract tesseract = new Tesseract();
-            // 设置训练数据文件夹路径
-            tesseract.setDatapath("ruoyi-admin/src/main/resources/traineddata");
-            // 设置为中文简体
-            tesseract.setLanguage("chi_sim");
-            String result = tesseract.doOCR(fileOcr);*/
             ajax.put("url", url);
             ajax.put("urlOnline", urlOnline);
             ajax.put("fileName", fileName);

+ 134 - 15
ruoyi-common/src/main/java/com/ruoyi/common/utils/IdCardUtil.java

@@ -27,6 +27,7 @@ import com.ruoyi.common.core.domain.SysUserIdcardVo;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.domain.AjaxResult;
+import okhttp3.*;
 
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
@@ -793,24 +794,142 @@ public class IdCardUtil {
      * @param filePath     本地文件路径
      * @return
      */
-    public static String accurateBasic(String filePath) {
-        // 请求url
-        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
+    public static JSONObject accurateBasic(String filePath) {
+        String imgParam = getFileContentAsBase64(filePath, true);
+        String param = "image=" + imgParam+"&detect_direction=true";
+        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
+        // image 可以通过 getFileContentAsBase64("C:\fakepath\zhizhao.jpg") 方法获取,如果Content-Type是application/x-www-form-urlencoded时,第二个参数传true
+        RequestBody body = RequestBody.create(mediaType, param);
+        Request request = new Request.Builder()
+                .url("https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=" + getAccessToken("TvvuZOOh7MgnlDFnw11ln67n", "CY47OI0eKAzYBD2LO55SM3OITzsyq6DK"))
+                .method("POST", body)
+                .addHeader("Content-Type", "application/x-www-form-urlencoded")
+                .addHeader("Accept", "application/json")
+                .build();
         try {
-            byte[] imgData = FileUtil.readFileByBytes(filePath);
-            String imgStr = Base64Util.encodeBase64(imgData);
-            String imgParam = URLEncoder.encode(imgStr, "UTF-8");
-
-            String param = "image=" + imgParam;
-
-            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
-            String accessToken = getAccessToken("TvvuZOOh7MgnlDFnw11ln67n", "CY47OI0eKAzYBD2LO55SM3OITzsyq6DK");
-            String result =  com.ruoyi.common.utils.HttpUtil.post(url, accessToken, param);
-            System.out.println(result);
-            return result;
-        } catch (Exception e) {
+            //{
+            //    "words_result": [
+            //        {
+            //            "words": "http:/10.0.175.74/ahlm/loan/Sv-2024.07.04/jbview.afx.html.print.printer.html?window页码,2024(w9"
+            //        },
+            //        {
+            //            "words": "安徽农金"
+            //        },
+            //        {
+            //            "words": "借据"
+            //        },
+            //        {
+            //            "words": "ARCU"
+            //        },
+            //        {
+            //            "words": "贷款单位:安徽潜山农村商业银行股份有限公司塔畈支行"
+            //        },
+            //        {
+            //            "words": "借款人:潜山和沐物流有限公司"
+            //        },
+            //        {
+            //            "words": "客户编号:200101281091"
+            //        },
+            //        {
+            //            "words": "证件号码:913408243487083682"
+            //        },
+            //        {
+            //            "words": "借据编号:860066291011"
+            //        },
+            //        {
+            //            "words": "借款合同编号:2397591220240003"
+            //        },
+            //        {
+            //            "words": "借款日期:2024年08月09日"
+            //        },
+            //        {
+            //            "words": "借款到期日:2025年08月09日"
+            //        },
+            //        {
+            //            "words": "借款金额(大写):人民币贰佰万元整"
+            //        },
+            //        {
+            //            "words": "(小写):¥2,000,000.00"
+            //        },
+            //        {
+            //            "words": "担保方式:保证"
+            //        },
+            //        {
+            //            "words": "借款用途说明:进货"
+            //        },
+            //        {
+            //            "words": "利率种类:年利率"
+            //        },
+            //        {
+            //            "words": "贷款利率:6.09000000%"
+            //        },
+            //        {
+            //            "words": "第一联银行贷款债权凭证"
+            //        },
+            //        {
+            //            "words": "还款方式:按月结息、到期一次性还本法"
+            //        },
+            //        {
+            //            "words": "还款账号:20010128109166600000032"
+            //        },
+            //        {
+            //            "words": "以上款项已转入借款人指定账户"
+            //        },
+            //        {
+            //            "words": "贷款单位(签章"
+            //        },
+            //        {
+            //            "words": "分书·00010X022"
+            //        },
+            //        {
+            //            "words": "借款人(签章或按指印):"
+            //        },
+            //        {
+            //            "words": "负责人:"
+            //        },
+            //        {
+            //            "words": "法定代表人(负责人)"
+            //        },
+            //        {
+            //            "words": "孙慧"
+            //        },
+            //        {
+            //            "words": "客户经理"
+            //        },
+            //        {
+            //            "words": "或授权代理人(签章)"
+            //        },
+            //        {
+            //            "words": ".证件号码:"
+            //        },
+            //        {
+            //            "words": "经办人:"
+            //        },
+            //        {
+            //            "words": "网址:www.ahrcu.com"
+            //        },
+            //        {
+            //            "words": "客服电话:96669"
+            //        }
+            //    ],
+            //    "words_result_num": 34,
+            //    "direction": 0,
+            //    "log_id": 1824253359437875000
+            //}
+            Response response = HTTP_CLIENT.newCall(request).execute();
+            String result = response.body().string();
+            if (StringUtils.isNotBlank(result)){
+                JSONObject jsonObject = JSONObject.parseObject(result);
+                return jsonObject;
+            }
+            System.out.println(response.body().string());
+            return null;
+        } catch (IOException e) {
             e.printStackTrace();
         }
         return null;
     }
+
+
+    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/WaitRemindMapper.java

@@ -20,6 +20,8 @@ public interface WaitRemindMapper
      * @return 待办提醒
      */
     public WaitRemind selectWaitRemindByRemindId(Integer remindId);
+    //查询所有保后的待办信息
+    public List<WaitRemind> selectWaitRemindByLoanApplicationId(Long LoanApplicationId);
 
     /**
      * 查询待办提醒列表

+ 58 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/Task.java

@@ -1,12 +1,28 @@
 package com.ruoyi.system.service;
 
 
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.loan.LoanApplication;
+import com.ruoyi.system.domain.remind.WaitRemind;
+import com.ruoyi.system.mapper.LoanApplicationMapper;
+import com.ruoyi.system.mapper.WaitRemindMapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
 @Component
 public class Task {
+    @Resource
+    private WaitRemindMapper waitRemindMapper;
 
+    @Resource
+    private LoanApplicationMapper loanApplicationMapper;
 
     /***
      *
@@ -16,9 +32,48 @@ public class Task {
     //@Scheduled(cron = "0 0/2 * * * ? ")
     //@Scheduled(cron = "0 20 0 * * ? ")
     public void popover() throws Exception {
+        //所有需要保后的项目,给风险发送待办
+        List<LoanApplication> loanApplications = loanApplicationMapper.selectLoanApplicationList(new LoanApplication());
+        //找到所有需要保后的项目
+        if (loanApplications != null && loanApplications.size() > 0) {
+            for (LoanApplication loanApplication : loanApplications) {
+                Long loanApplicationId = loanApplication.getLoanApplicationId();
+                //先去查询是否已经有待办提醒
+                List<WaitRemind> waitReminds = waitRemindMapper.selectWaitRemindByLoanApplicationId(loanApplicationId);
+                if (waitReminds != null && waitReminds.size() > 0) {
+                    //判断项目是否是大于500W 且放贷时间超过半年
+                    Double actuallyAmount = loanApplication.getActuallyAmount();
+                    Date actuallyTime = loanApplication.getActuallyTime();
+                    if (actuallyAmount != null && ObjectUtils.isNotEmpty(actuallyTime)) {
+                        if (actuallyAmount > 500 && (DateUtils.toLocalDate(actuallyTime).plusDays(180).isAfter(LocalDate.now()) || DateUtils.toLocalDate(actuallyTime).plusDays(180).isEqual(LocalDate.now()))) {
 
-
+                            if (waitReminds.size() == 1){
+                                //说明只有首保则新增待办提醒
+                                WaitRemind waitRemind = new WaitRemind();
+                                waitRemind.setLoanApplicationId(loanApplicationId);
+                                waitRemind.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
+                                waitRemind.setRemindTitle("您有一条【" + loanApplication.getEnterpriseName() + "】的信息需要进行保后");
+                                waitRemind.setRemindTime(DateUtils.getNowDate());
+                                waitRemind.setRemindType("12");
+                                waitRemind.setReadUserId(loanApplication.getfUserId().toString());
+                                waitRemind.setRemindContent(loanApplication.getEnterpriseName() + "有一条贷款申请进入保后阶段需及时处理");
+                                waitRemindMapper.insertWaitRemind(waitRemind);
+                            }
+                        }
+                    }
+                }else {
+                    //新增首保待办提醒
+                    WaitRemind waitRemind = new WaitRemind();
+                    waitRemind.setLoanApplicationId(loanApplicationId);
+                    waitRemind.setLoanApplicationNumber(loanApplication.getLoanApplicationNumber());
+                    waitRemind.setRemindTitle("您有一条【" + loanApplication.getEnterpriseName() + "】的信息需要进行保后");
+                    waitRemind.setRemindTime(DateUtils.getNowDate());
+                    waitRemind.setRemindType("12");
+                    waitRemind.setReadUserId(loanApplication.getfUserId().toString());
+                    waitRemind.setRemindContent(loanApplication.getEnterpriseName() + "有一条贷款申请进入保后阶段需及时处理");
+                    waitRemindMapper.insertWaitRemind(waitRemind);
+                }
+            }
+        }
     }
-
-
 }

+ 5 - 1
ruoyi-system/src/main/resources/mapper/system/WaitRemindMapper.xml

@@ -46,7 +46,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectWaitRemindVo"/>
         where remind_id = #{remindId}
     </select>
-        
+    <select id="selectWaitRemindByLoanApplicationId" parameterType = "Long" resultMap="WaitRemindResult">
+        <include refid="selectWaitRemindVo"/>
+        where loan_application_id = #{loanApplicationId} and remind_type = '12'
+    </select>
+
     <insert id="insertWaitRemind" parameterType="WaitRemind" useGeneratedKeys="true" keyProperty="remindId">
         insert into wait_remind
         <trim prefix="(" suffix=")" suffixOverrides=",">