风控中台对接-评分结果处理保存
This commit is contained in:
parent
1e82d0596b
commit
2c1d168224
@ -809,13 +809,10 @@
|
||||
<attribute name="score_result_id" label="唯一标识" type="STRING" length="32" />
|
||||
<attribute name="project_no" label="业务申请编号" type="STRING" length="32" />
|
||||
<attribute name="flow_no" label="流程编号" type="STRING" length="32"/>
|
||||
<attribute name="result_type" label="推送结果类型:评分结果:1,反欺诈:2" type="STRING" length="32"/>
|
||||
<attribute name="result_data" label="评分结果" type="STRING" length="2000"/>
|
||||
<attribute name="result_type" label="推送结果类型:评分结果 score, 反欺诈 fraud" type="STRING" length="32"/>
|
||||
<attribute name="result_data" label="结果" type="STRING" length="2000"/>
|
||||
<attribute name="result_status" label="结果状态" type="STRING" length="32"/>
|
||||
<attribute name="result_status_value" label="结果状态描述" type="STRING" length="32"/>
|
||||
<attribute name="fraud_alert_code" label="反欺诈预警结果:H、S、C" type="STRING" length="32"/>
|
||||
<attribute name="fraud_taken_code" label="反欺诈判定结果:F、K、S、空" type="STRING" length="32"/>
|
||||
<attribute name="score_result_code" label="评分结果 AA RR RD DD" type="STRING" length="32"/>
|
||||
<attribute name="input_time" label="登记时间" type="STRING" length="32"/>
|
||||
</attributes>
|
||||
<manager>
|
||||
|
||||
@ -129,7 +129,14 @@
|
||||
<param-value>als</param-value>
|
||||
</init-param>
|
||||
</servlet>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>ScoreResultServlet</servlet-name>
|
||||
<servlet-class>com.ample.esb.server.ScoreResultServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>DataSource</param-name>
|
||||
<param-value>als</param-value>
|
||||
</init-param>
|
||||
</servlet>
|
||||
<servlet>
|
||||
<servlet-name>RewriteRunJavaMethodServlet</servlet-name>
|
||||
<servlet-class>com.tenwa.workflow.RewriteRunJavaMethodServlet</servlet-class>
|
||||
@ -311,7 +318,10 @@
|
||||
<servlet-name>SmsRptServlet</servlet-name>
|
||||
<url-pattern>/smsRpt</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>ScoreResultServlet</servlet-name>
|
||||
<url-pattern>/scoreResult</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet-mapping>
|
||||
<servlet-name>DocDownloadZipServlet</servlet-name>
|
||||
<url-pattern>/servlet/view/docDownloadZipServlet</url-pattern>
|
||||
|
||||
44
src/com/ample/esb/server/ScoreResultServlet.java
Normal file
44
src/com/ample/esb/server/ScoreResultServlet.java
Normal file
@ -0,0 +1,44 @@
|
||||
package com.ample.esb.server;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.ARE;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* 评分结果推送接收接口
|
||||
*/
|
||||
public class ScoreResultServlet extends HttpServlet {
|
||||
public ScoreResultServlet() {
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||
response.setContentType("application/xml;charset:utf-8");
|
||||
response.setHeader("Cache-Control", "no-store");
|
||||
response.setHeader("Pragma", "no-cache");
|
||||
response.setDateHeader("Expires", 0L);
|
||||
response.setCharacterEncoding("utf-8");
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream()));
|
||||
StringBuilder stb = new StringBuilder();
|
||||
String xmlHead = "";
|
||||
String xmlContent = "";
|
||||
String line = null;
|
||||
while ((line = in.readLine()) != null) {
|
||||
stb.append(line);
|
||||
}
|
||||
ARE.getLog().info("接收到Rpt记录:" + stb.toString());
|
||||
String userid = request.getParameter("userid");
|
||||
JSONObject resultJson = new JSONObject();
|
||||
resultJson.put("cmd","RPT_RESP");
|
||||
PrintWriter out = response.getWriter();
|
||||
ARE.getLog().info("接收到Rpt记录:" + 1 + "条");
|
||||
resultJson.put("status","200");
|
||||
resultJson.put("result","success");
|
||||
out.print(resultJson.toJSONString());
|
||||
out.close();
|
||||
}
|
||||
|
||||
}
|
||||
157
src/com/ample/esb/server/WriteScoreResultThread.java
Normal file
157
src/com/ample/esb/server/WriteScoreResultThread.java
Normal file
@ -0,0 +1,157 @@
|
||||
package com.ample.esb.server;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.amarsoft.are.jbo.BizObject;
|
||||
import com.amarsoft.are.jbo.BizObjectManager;
|
||||
import com.amarsoft.are.jbo.JBOException;
|
||||
import com.amarsoft.are.jbo.JBOFactory;
|
||||
import com.ample.sms.FileUtil;
|
||||
import com.tenwa.httpclient.pboc.PbocXmlUtils;
|
||||
import com.tenwa.reckon.util.UUIDUtil;
|
||||
import jbo.app.tenwa.customer.CUSTOMER_FAMILY_TEMP;
|
||||
import jbo.app.tenwa.customer.CUSTOMER_PERSON;
|
||||
import jbo.app.tenwa.customer.CUSTOMER_PERSON_TEMP;
|
||||
import jbo.com.tenwa.lease.comm.LB_GUARANTEE_UNIT_TEMP;
|
||||
import jbo.com.tenwa.lease.comm.LB_PROJECT_INFO_TEMP;
|
||||
import jbo.com.tenwa.lease.comm.LB_SMS_NOTICE_TASKS;
|
||||
import jbo.oti.RC_SCORE_RESULT;
|
||||
import jbo.oti.RC_SCORE_RESULT_DETAIL;
|
||||
import jbo.oti.RC_SCORE_RESULT_LOG;
|
||||
import jbo.oti.SMS_RPT;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.dom4j.DocumentException;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
|
||||
public class WriteScoreResultThread extends Thread{
|
||||
public static LinkedBlockingQueue<String> scoreResultQueue = new LinkedBlockingQueue<>();
|
||||
private static boolean STOP = false;
|
||||
private static Thread rptThread = new WriteScoreResultThread();
|
||||
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
private WriteScoreResultThread() {
|
||||
}
|
||||
|
||||
public void run() {
|
||||
STOP = false;
|
||||
try {
|
||||
while(!STOP) {
|
||||
String rptXmlStr = scoreResultQueue.take();
|
||||
saveSmsRpt(rptXmlStr);
|
||||
}
|
||||
} catch (Exception var5) {
|
||||
var5.printStackTrace();
|
||||
STOP = true;
|
||||
rptThread = null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static boolean rptIsAlive() {
|
||||
return rptThread.isAlive();
|
||||
}
|
||||
|
||||
public static Thread getRptthread() {
|
||||
if (rptThread == null) {
|
||||
rptThread = new WriteScoreResultThread();
|
||||
}
|
||||
|
||||
return rptThread;
|
||||
}
|
||||
public void saveSmsRpt(String rptXmlStr) throws JBOException, DocumentException {
|
||||
JSONObject resJson = PbocXmlUtils.toJson(rptXmlStr);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存数据到实体
|
||||
* @param type 处理类型:评分结果 score, 反欺诈 fraud
|
||||
* @param resJson 结果
|
||||
*/
|
||||
private void saveUpdateScoreResult(String type, JSONObject resJson) throws JBOException {
|
||||
String projectNo = resJson.getString("APPLICATION_NUMBER");//申请号
|
||||
// TODO: 2023-8-24 解析结果
|
||||
BizObjectManager rcScoreResult = JBOFactory.getBizObjectManager(RC_SCORE_RESULT.CLASS_NAME);
|
||||
BizObject rcScoreResultBizObject = rcScoreResult.createQuery("project_no=:project_no").setParameter("project_no", projectNo).getSingleResult(true);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //日期格式
|
||||
String date = sdf.format(new Date()); //将系统时间转换成上方指定类型
|
||||
String resultId = UUIDUtil.getUUID();
|
||||
if(null == rcScoreResultBizObject){
|
||||
rcScoreResultBizObject = rcScoreResult.newObject();
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_id", resultId);
|
||||
rcScoreResultBizObject.setAttributeValue("project_no", projectNo);
|
||||
rcScoreResultBizObject.setAttributeValue("input_time", date);
|
||||
}else {
|
||||
resultId = rcScoreResultBizObject.getAttribute("score_result_id").toString();
|
||||
}
|
||||
JSONObject blazeResultJson = resJson.getJSONObject("BLAZERESULT");//评分结果项
|
||||
String resultCode = blazeResultJson.getString("RESULT_CODE");// 评分结果状态 1000为成功,其他失败
|
||||
String result = blazeResultJson.getString("RESULT");//评分结果 AA RR RD DD
|
||||
|
||||
JSONObject fraudResultJson = resJson.getJSONObject("FRAUD_RESULT");// 反欺诈结果
|
||||
String fraudAlert = fraudResultJson.getString("FRAUD_ALERT");// 反欺诈预警结果:H、S、C
|
||||
String actionTaken = fraudResultJson.getString("ACTION_TAKEN");// 反欺诈判定结果:F、K、S、空
|
||||
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_code", result);// 评分结果 AA RR RD DD
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_alert_code", fraudAlert);// 反欺诈预警结果:H、S、C
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_taken_code", actionTaken);// 反欺诈判定结果:F、K、S、空
|
||||
rcScoreResultBizObject.setAttributeValue("update_time", date);
|
||||
|
||||
if("score".equals(type)){
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_data", resJson.toJSONString());
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_status", resultCode);
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_status_value", "失败");
|
||||
if("1000".equals(resultCode)){
|
||||
rcScoreResultBizObject.setAttributeValue("score_result_status_value", "成功");
|
||||
}
|
||||
}else {
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_result_data", resJson.toJSONString());
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_result_status", resultCode);
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_result_status_value", "失败");
|
||||
if("1000".equals(resultCode)){
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_result_status_value", "成功");
|
||||
}
|
||||
rcScoreResultBizObject.setAttributeValue("fraud_result_status", resultCode);
|
||||
}
|
||||
rcScoreResult.saveObject(rcScoreResultBizObject);
|
||||
if("score".equals(type)){
|
||||
BizObjectManager rcScoreResultDetail = JBOFactory.getBizObjectManager(RC_SCORE_RESULT_DETAIL.CLASS_NAME);
|
||||
|
||||
BizObjectManager lbProjectInfo = JBOFactory.getBizObjectManager(LB_PROJECT_INFO_TEMP.CLASS_NAME);// 项目信息
|
||||
BizObjectManager customerPerson = JBOFactory.getBizObjectManager(CUSTOMER_PERSON_TEMP.CLASS_NAME);// 承租人
|
||||
BizObjectManager customerFamily = JBOFactory.getBizObjectManager(CUSTOMER_FAMILY_TEMP.CLASS_NAME);// 共同申请人
|
||||
BizObjectManager lbGuaranteeUnit = JBOFactory.getBizObjectManager(LB_GUARANTEE_UNIT_TEMP.CLASS_NAME);// 担保人
|
||||
|
||||
List<BizObject> rcScoreResultDetailBizObjectList = rcScoreResultDetail.createQuery("project_no=:project_no").setParameter("project_no", projectNo).getResultList(true);
|
||||
if(CollectionUtils.isEmpty(rcScoreResultDetailBizObjectList)){
|
||||
rcScoreResultDetailBizObjectList = new ArrayList<>();
|
||||
JSONArray personList = resJson.getJSONArray("NCIICS");//实名认证列表
|
||||
JSONArray scoreResults = resJson.getJSONArray("SCORERESULTS");//评分列表
|
||||
if(personList.size() >= scoreResults.size()){
|
||||
|
||||
}
|
||||
BizObject bizObject = rcScoreResultDetail.newObject();
|
||||
}
|
||||
|
||||
}
|
||||
BizObjectManager rcScoreResultLog = JBOFactory.getBizObjectManager(RC_SCORE_RESULT_LOG.CLASS_NAME);
|
||||
BizObject rcScoreResultLogBizObject = rcScoreResultLog.newObject();
|
||||
rcScoreResultLogBizObject.setAttributeValue("score_result_id", resultId);
|
||||
rcScoreResultLogBizObject.setAttributeValue("project_no", projectNo);
|
||||
rcScoreResultLogBizObject.setAttributeValue("score_result_data", resJson.toJSONString());
|
||||
rcScoreResultLogBizObject.setAttributeValue("result_status", resultCode);
|
||||
rcScoreResultLogBizObject.setAttributeValue("result_status_value", "失败");
|
||||
if("1000".equals(resultCode)){
|
||||
rcScoreResultLogBizObject.setAttributeValue("result_status_value", "成功");
|
||||
}
|
||||
rcScoreResultLogBizObject.setAttributeValue("input_time", date);
|
||||
rcScoreResultLog.saveObject(rcScoreResultLogBizObject);
|
||||
|
||||
|
||||
// bo.setAttributeValue(key,rptJsn.getString(key));
|
||||
}
|
||||
}
|
||||
@ -51,24 +51,6 @@ public interface RC_SCORE_RESULT_LOG {
|
||||
public static final String result_status_value = "result_status_value";
|
||||
|
||||
|
||||
/**
|
||||
* 反欺诈预警结果:H、S、C
|
||||
*/
|
||||
public static final String fraud_alert_code = "fraud_alert_code";
|
||||
|
||||
|
||||
/**
|
||||
* 反欺诈判定结果:F、K、S、空
|
||||
*/
|
||||
public static final String fraud_taken_code = "fraud_taken_code";
|
||||
|
||||
|
||||
/**
|
||||
* 评分结果 AA RR RD DD
|
||||
*/
|
||||
public static final String score_result_code = "score_result_code";
|
||||
|
||||
|
||||
/**
|
||||
* 登记时间
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user