From 2c1d16822425a5ba6a83dc25b7621be9187bdf43 Mon Sep 17 00:00:00 2001 From: zhanglei Date: Thu, 24 Aug 2023 19:31:11 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=8E=E6=8E=A7=E4=B8=AD=E5=8F=B0=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5-=E8=AF=84=E5=88=86=E7=BB=93=E6=9E=9C=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/etc/jbo/jbo_oti.xml | 7 +- WebContent/WEB-INF/web.xml | 14 +- .../ample/esb/server/ScoreResultServlet.java | 44 +++++ .../esb/server/WriteScoreResultThread.java | 157 ++++++++++++++++++ src_jbo/jbo/oti/RC_SCORE_RESULT_LOG.java | 18 -- 5 files changed, 215 insertions(+), 25 deletions(-) create mode 100644 src/com/ample/esb/server/ScoreResultServlet.java create mode 100644 src/com/ample/esb/server/WriteScoreResultThread.java diff --git a/WebContent/WEB-INF/etc/jbo/jbo_oti.xml b/WebContent/WEB-INF/etc/jbo/jbo_oti.xml index 8e1af2fdf..c74333f8c 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_oti.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_oti.xml @@ -809,13 +809,10 @@ - - + + - - - diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index be278a31c..f08996531 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -129,7 +129,14 @@ als - + + ScoreResultServlet + com.ample.esb.server.ScoreResultServlet + + DataSource + als + + RewriteRunJavaMethodServlet com.tenwa.workflow.RewriteRunJavaMethodServlet @@ -311,7 +318,10 @@ SmsRptServlet /smsRpt - + + ScoreResultServlet + /scoreResult + DocDownloadZipServlet /servlet/view/docDownloadZipServlet diff --git a/src/com/ample/esb/server/ScoreResultServlet.java b/src/com/ample/esb/server/ScoreResultServlet.java new file mode 100644 index 000000000..7d3c4cd64 --- /dev/null +++ b/src/com/ample/esb/server/ScoreResultServlet.java @@ -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(); + } + +} diff --git a/src/com/ample/esb/server/WriteScoreResultThread.java b/src/com/ample/esb/server/WriteScoreResultThread.java new file mode 100644 index 000000000..8921f7c81 --- /dev/null +++ b/src/com/ample/esb/server/WriteScoreResultThread.java @@ -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 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 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)); + } +} diff --git a/src_jbo/jbo/oti/RC_SCORE_RESULT_LOG.java b/src_jbo/jbo/oti/RC_SCORE_RESULT_LOG.java index b41685c76..d36e2f669 100644 --- a/src_jbo/jbo/oti/RC_SCORE_RESULT_LOG.java +++ b/src_jbo/jbo/oti/RC_SCORE_RESULT_LOG.java @@ -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"; - - /** * 登记时间 */