diff --git a/WebContent/Tenwa/Lease/Flow/Comm/LBTelOnline/LbTelOnlinList.jsp b/WebContent/Tenwa/Lease/Flow/Comm/LBTelOnline/LbTelOnlinList.jsp index c278bb213..a2f4f011c 100644 --- a/WebContent/Tenwa/Lease/Flow/Comm/LBTelOnline/LbTelOnlinList.jsp +++ b/WebContent/Tenwa/Lease/Flow/Comm/LBTelOnline/LbTelOnlinList.jsp @@ -8,6 +8,7 @@ //初始话手机在线时长查询 String ProjectId = CurPage.getParameter("ProjectId"); + String flowunid = CurPage.getParameter("ObjectNo"); ASObjectModel doTemp = new ASObjectModel("LbTelOnlinList"); ASObjectWindow dwTemp = new ASObjectWindow(CurPage,doTemp,request); dwTemp.Style="1"; //--设置为Grid风格-- @@ -17,24 +18,29 @@ //0、是否展示 1、 权限控制 2、 展示类型 3、按钮显示名称 4、按钮解释文字 5、按钮触发事件代码 6、 7、 8、 9、图标,CSS层叠样式 10、风格 String sButtons[][] = { -// {"true","All","Button","新增","新增","newRecord()","","","","btn_icon_add",""}, -// {"true","","Button","详情","详情","viewAndEdit()","","","","btn_icon_detail",""}, -// {"true","","Button","删除","删除","if(confirm('确实要删除吗?'))as_delete(0,'alert(getRowCount(0))')","","","","btn_icon_delete",""}, + {"true","","Button","校验手机号在线时长","调用查询接口","checkPhoneNumberOnLine()","","","","btn_icon_detail",""}, + {"true","All","Button","重发","选择需要重新查询的某条数据","retry()","","","","btn_icon_detail",""}, }; %><%@include file="/Frame/resources/include/ui/include_list.jspf"%> <%@ include file="/Frame/resources/include/include_end.jspf"%> \ No newline at end of file diff --git a/WebContent/WEB-INF/etc/jbo/jbo_lease.xml b/WebContent/WEB-INF/etc/jbo/jbo_lease.xml index 978e92126..897a370f8 100644 --- a/WebContent/WEB-INF/etc/jbo/jbo_lease.xml +++ b/WebContent/WEB-INF/etc/jbo/jbo_lease.xml @@ -4227,6 +4227,7 @@ + diff --git a/config/telonline.properties b/config/telonline.properties new file mode 100644 index 000000000..022918c88 --- /dev/null +++ b/config/telonline.properties @@ -0,0 +1,11 @@ +#娴嬭瘯璇锋眰鍦板潃 +com.tenwa.jianghd.url1=https +com.tenwa.jianghd.url2=apitest.tongdun.cn +com.tenwa.jianghd.url3=/bodyguard/apply/v4.3 + +com.tenwa.jianghd.partner_code=apgj +com.tenwa.jianghd.partner_key=3a7be6a6d73c48b18f083ddf8d399538 +com.tenwa.jianghd.app_name=apgj_web + +com.tenwa.jianghd.biz_code=OnLine +com.tenwa.jianghd.encode=UTF-8 \ No newline at end of file diff --git a/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/controller/PayDocListController.java b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/controller/PayDocListController.java new file mode 100644 index 000000000..4124868ec --- /dev/null +++ b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/controller/PayDocListController.java @@ -0,0 +1,39 @@ +package apx.com.amarsoft.als.apzl.apply.business.doc.detail.controller; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; + +import apx.com.amarsoft.als.apzl.apply.business.doc.detail.service.PayDocListService; +import apx.com.amarsoft.als.apzl.apply.business.doc.detail.service.impl.PayDocListServiceImpl; + +import com.amarsoft.are.ARE; +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.awe.util.Transaction; +import com.base.util.ReturnMapUtil; + +@Path("/file") +public class PayDocListController { + @Path("/comm/doc/list") + @POST + public Map docList(@Context HttpServletRequest request, + @Context HttpServletResponse response, @Context JBOTransaction tx, + @Context Transaction sqlca) throws Exception { + ReturnMapUtil ReturnMapUtil = new ReturnMapUtil(tx, sqlca); + ARE.getLog() + .info("[CONTROLLER] PayDocListController run ................."); + ARE.getLog().info( + "[Path] /file/comm/doc/list" + " run ................."); + + PayDocListService service = new PayDocListServiceImpl(); + try { + return service.docList(request, response, tx, sqlca, ReturnMapUtil); + } catch (Exception e) { + return ReturnMapUtil.rollback(e); + } + } +} diff --git a/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/PayDocListService.java b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/PayDocListService.java new file mode 100644 index 000000000..0d05094c7 --- /dev/null +++ b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/PayDocListService.java @@ -0,0 +1,18 @@ +package apx.com.amarsoft.als.apzl.apply.business.doc.detail.service; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.Context; + +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.awe.util.Transaction; +import com.base.util.ReturnMapUtil; + +public interface PayDocListService { + Map docList(@Context HttpServletRequest request, + @Context HttpServletResponse response, @Context JBOTransaction tx, + @Context Transaction sqlca, ReturnMapUtil ReturnMapUtil) + throws Exception; +} diff --git a/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/impl/PayDocListServiceImpl.java b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/impl/PayDocListServiceImpl.java new file mode 100644 index 000000000..10269cb61 --- /dev/null +++ b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/doc/detail/service/impl/PayDocListServiceImpl.java @@ -0,0 +1,74 @@ +package apx.com.amarsoft.als.apzl.apply.business.doc.detail.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.amarsoft.app.lc.workflow.action.GetFlowAction; +import com.amarsoft.app.util.ProductParamUtil; +import com.amarsoft.are.ARE; +import com.amarsoft.are.jbo.BizObject; +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.are.lang.StringX; +import com.amarsoft.awe.util.Transaction; +import com.base.util.MultipartDataUtil; +import com.base.util.ReturnMapUtil; +import com.tenwa.doc.action.DocListInitAction; + +import apx.com.amarsoft.als.apzl.apply.business.doc.detail.service.PayDocListService; +import apx.com.amarsoft.als.apzl.apply.business.start.init.InitDocListTools; +import apx.com.amarsoft.als.doc.manage.PayDocListDoManage; + +public class PayDocListServiceImpl implements PayDocListService { + private Map fieldMap; + @SuppressWarnings("unchecked") + @Override + public Map docList(HttpServletRequest request, + HttpServletResponse response, JBOTransaction tx, Transaction sqlca, + ReturnMapUtil ReturnMapUtil) throws Exception { + + Map testMap = (Map) MultipartDataUtil + .readRequestParam(request, "UTF-8"); + fieldMap = (Map) testMap.get("fieldMap"); + String objectNo = fieldMap.get("OBJECTNO") == null ? "" : fieldMap + .get("OBJECTNO").toString(); + fieldMap.put("OBJECTNO", objectNo); + fieldMap.put("OBJECTNO".toLowerCase(), objectNo); + fieldMap.put("FLOWUNID", objectNo); + fieldMap.put("FLOWUNID".toLowerCase(), objectNo); + fieldMap.put("FLOW_UNID", objectNo); + fieldMap.put("FLOW_UNID".toLowerCase(), objectNo); + + String otherWhere = ""; + BizObject flow=GetFlowAction.getFlowBussinessObject(objectNo);//流程对象 + String productId = flow.getAttribute("productId").getString(); + + List list = new ArrayList(); + try { + list = ProductParamUtil.getProductDocInfo(productId, "PRD0412"); + } catch (Exception e) { + ARE.getLog().error(e); + } + String s = ""; + try { + s = InitDocListTools.getdocClassItemno(list); + if (!StringX.isSpace(s)) { + s = s.split("@")[0]; + } + } catch (Exception e) { + ARE.getLog().error(e); + } + + otherWhere = DocListInitAction.getFlowWhere(flow,"","rela"); + otherWhere += " and O.doc_Class_Itemno in (" + s + ")"; + PayDocListDoManage manage = new PayDocListDoManage(); + manage.setDono("FlowPayDocList"); + manage.setFieldMap(fieldMap); + manage.setsAddWhere(otherWhere); + return manage.queryDefaultDo(request, sqlca, tx, ReturnMapUtil); + } + +} diff --git a/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/start/init/InitDocListTools.java b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/start/init/InitDocListTools.java index 381bb75bb..3db45afd8 100644 --- a/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/start/init/InitDocListTools.java +++ b/src_app_fresh/apx/com/amarsoft/als/apzl/apply/business/start/init/InitDocListTools.java @@ -19,7 +19,41 @@ import com.amarsoft.context.ASUser; import com.tenwa.doc.action.DocListInitAction; public class InitDocListTools { - @SuppressWarnings({ "rawtypes", "unchecked" }) + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static String getdocClassItemno (List list) { + String s=""; + String type = ""; + String docList = ""; + try { + for (int i = 0; i < list.size(); i++) { + Map map = (Map) list.get(i); + if ("BusinessApplyFlow".equals(map.get("FLOW_INFO").toString())) { + type = map.get("TYPE").toString(); + if ("SingleRow".equals(type)) { + docList = map.get("DOCLIST").toString(); + } else { + List l = (List) map.get("DOCCONFIG"); + docList = l.toString(); + } + } + } + String docClassItemno = docList;// CurPage.getParameter("docList"); + String[] itemnos=docClassItemno.split(","); + + for(int i=0;i0){ + s=s.substring(0, s.length()-1); + } + return s+"@"+docClassItemno; + } catch (Exception e) { + ARE.getLog().error(e); + } + return ""; + } + public static boolean initDocList(String flowUnid, String userId, String carAttributes) throws Exception { try { BizObjectManager objectManage = JBOFactory @@ -51,30 +85,35 @@ public class InitDocListTools { ARE.getLog().error(e); return false; } - String type = ""; - String docList = ""; - for (int i = 0; i < list.size(); i++) { - Map map = (Map) list.get(i); - if ("BusinessApplyFlow".equals(map.get("FLOW_INFO").toString())) { - type = map.get("TYPE").toString(); - if ("SingleRow".equals(type)) { - docList = map.get("DOCLIST").toString(); - } else { - List l = (List) map.get("DOCCONFIG"); - docList = l.toString(); - } - } +// String type = ""; +// String docList = ""; +// for (int i = 0; i < list.size(); i++) { +// Map map = (Map) list.get(i); +// if ("BusinessApplyFlow".equals(map.get("FLOW_INFO").toString())) { +// type = map.get("TYPE").toString(); +// if ("SingleRow".equals(type)) { +// docList = map.get("DOCLIST").toString(); +// } else { +// List l = (List) map.get("DOCCONFIG"); +// docList = l.toString(); +// } +// } +// } +// String docClassItemno = docList;// CurPage.getParameter("docList"); +// String[] itemnos=docClassItemno.split(","); +// String s=""; +// for(int i=0;i0){ +// s=s.substring(0, s.length()-1); +// } + String s = getdocClassItemno(list); + String docClassItemno = ""; + if (s.length() > 0) { + s = s.split("@")[0]; + docClassItemno = s.split("@")[1]; } - String docClassItemno = docList;// CurPage.getParameter("docList"); - String[] itemnos=docClassItemno.split(","); - String s=""; - for(int i=0;i0){ - s=s.substring(0, s.length()-1); - } - try { ASUser CurUser = new ASUser(userId); Map docParam=new HashMap(); diff --git a/src_app_fresh/apx/com/amarsoft/als/base/awe/execute/method/BusinessCustomerMethod.java b/src_app_fresh/apx/com/amarsoft/als/base/awe/execute/method/BusinessCustomerMethod.java index 3a6987f8c..649b1dbc1 100644 --- a/src_app_fresh/apx/com/amarsoft/als/base/awe/execute/method/BusinessCustomerMethod.java +++ b/src_app_fresh/apx/com/amarsoft/als/base/awe/execute/method/BusinessCustomerMethod.java @@ -1,11 +1,15 @@ package apx.com.amarsoft.als.base.awe.execute.method; +import net.sf.json.JSONObject; import jbo.app.tenwa.customer.CUSTOMER_PERSON_TEMP; +import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; +import com.amarsoft.are.ARE; 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.base.util.JsonUtil; public class BusinessCustomerMethod { @@ -28,6 +32,28 @@ public class BusinessCustomerMethod { } return bo.getAttribute("customerid").toString(); } + + public String getCustomerIdByFlowUnid(String flowUnid) throws JBOException { + String certId = ""; + + BizObjectManager fboM = JBOFactory + .getBizObjectManager(FLOW_BUSSINESS_OBJECT.CLASS_NAME); + BizObject fbo = fboM.createQuery("flow_unid=:flow_unid") + .setParameter("flow_unid", flowUnid).getSingleResult(false); + + if (null == fbo) return ""; + String jsonStr = fbo.getAttribute("FixedFlowParam") == null ? "" : fbo.getAttribute("FixedFlowParam").toString(); + if ("".equals(jsonStr)) return ""; + try { + JSONObject jo = JsonUtil.str2JSONObject(jsonStr); + certId = jo.get("certid") == null ? "" : jo.getString("certid"); + } catch (Exception e) { + ARE.getLog().error(e); + return ""; + } + if ("".equals(certId)) return ""; + return getCustomerIdByCertId(certId); + } /** * 根据流程编号,获取客户ID(CUSTOMER_PERSON_TEMP表中,ID,流程编号均不唯一) diff --git a/src_app_fresh/apx/com/amarsoft/als/doc/manage/PayDocListDoManage.java b/src_app_fresh/apx/com/amarsoft/als/doc/manage/PayDocListDoManage.java new file mode 100644 index 000000000..cb5be20f5 --- /dev/null +++ b/src_app_fresh/apx/com/amarsoft/als/doc/manage/PayDocListDoManage.java @@ -0,0 +1,46 @@ +package apx.com.amarsoft.als.doc.manage; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import apx.com.amarsoft.als.base.awe.AbstractAweDoQueryManage; + +import com.amarsoft.are.jbo.JBOTransaction; +import com.amarsoft.are.lang.StringX; +import com.amarsoft.awe.util.Transaction; +import com.base.util.ReturnMapUtil; + +public class PayDocListDoManage extends AbstractAweDoQueryManage { + private String sAddWhere; + private String dono; + private Map fieldMap; + + public void setFieldMap(Map fieldMap) { + this.fieldMap = fieldMap; + } + + public void setDono(String dono) { + this.dono = dono; + } + + public void getGroupId() { + sGroupId = this.dono; + } + + public void getOtherWhere() { + super.sOtherWhere = StringX.isSpace(sAddWhere) ? "" + : this.sAddWhere; + } + + public void setsAddWhere(String sAddWhere) { + this.sAddWhere = sAddWhere; + } + + public Map queryDefaultDo(HttpServletRequest request, + Transaction sqlca, JBOTransaction tx, ReturnMapUtil ReturnMapUtil) + throws Exception { + setParamMap(fieldMap); + return getData(request, sqlca, tx, ReturnMapUtil); + } +} \ No newline at end of file diff --git a/src_core/com/tenwa/util/SecurityUtil.java b/src_core/com/tenwa/util/SecurityUtil.java index 93fdfd091..f3ab2f945 100644 --- a/src_core/com/tenwa/util/SecurityUtil.java +++ b/src_core/com/tenwa/util/SecurityUtil.java @@ -105,6 +105,7 @@ public class SecurityUtil { } public static void main(String[] args) throws Exception { +// String message = "apzl@2018", key = ""; String message = "apzl", key = ""; String entryptedMsg = encrypt(message, key); System.out.println("encrypted message is below :"); diff --git a/src_core/com/tenwa/util/test.java b/src_core/com/tenwa/util/test.java index f3e37e9ca..5fcb85b12 100644 --- a/src_core/com/tenwa/util/test.java +++ b/src_core/com/tenwa/util/test.java @@ -5,25 +5,12 @@ import com.tenwa.flow.treeview.action.BaseInitTreeView; public class test { public static void main(String[] args) { - // TODO Auto-generated method stub - BaseInitTreeView TreeView=new BaseInitTreeView(); + String sql = "select se.seriesid,se.seriesname from (" + + "SELECT seriesid,max(seriesname) seriesname,max(brandid) brandid FROM vi_car_data where 1=1 group by seriesid" + + ") se WHERE se.seriesname IS NOT NULL AND se.brandid='#brandid' ORDER BY se.seriesname DESC"; - //注:itemName为前台左树图中节点中文名,codeno为产品节点配置中节点名 - /*MapfixedParam;//固定参数用来取前台参数 - TreeView.addBeforeNodeByCode(itemName, codeno);//在节点之胶增加节点 - TreeView.addChildrenNodeByCode(itemName, codeno);//在节点下面增加子节点 - TreeView.addFirstNodeByCode(codeno);//在开始位置增加子节点 - TreeView.addLastNodeByCode(codeno);//在结束位置增加子节点 - TreeView.moveTreeItem(itemName, afterItem);//将节点A移到节点B之前 - TreeView.moveTreeItemToFirst(itemName);//将节点移到最开始 - TreeView.moveTreeItemToLast(itemName);//将节点移到最后 - TreeView.AddNodeUrlParam(itemName, param);//更新节点参数,param为Map - TreeView.updateNodeUrl(itemName, URL);//更新节点的URL - TreeView.updateNodeTemplateNo(itemName, templateNo);//更新节点的模板编号 - TreeView.updateNodeSetReadOnly(itemName, readType);//设置节只读 -*/ - - + System.out.println(sql.substring(sql.toUpperCase().lastIndexOf("WHERE"), sql.length())); + System.out.println(sql.substring(0, sql.toLowerCase().lastIndexOf("where"))); } diff --git a/src_tenwa/com/tenwa/lease/flow/project/validate/OnlineClient.java b/src_tenwa/com/tenwa/lease/flow/project/validate/OnlineClient.java index 8ed698f28..81555ea45 100644 --- a/src_tenwa/com/tenwa/lease/flow/project/validate/OnlineClient.java +++ b/src_tenwa/com/tenwa/lease/flow/project/validate/OnlineClient.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import jbo.com.tenwa.lease.comm.LB_TELONLINE; + import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; @@ -20,6 +22,10 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; +import com.alibaba.fastjson.JSON; +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.amarsoft.are.jbo.JBOTransaction; import com.tenwa.comm.util.jboutil.DataOperatorUtil; @@ -27,49 +33,70 @@ import com.tenwa.comm.util.jboutil.DataOperatorUtil; public class OnlineClient { - private static String partner_code = "apgj"; - private static String URI_SEND_SMS = "https://apitest.tongdun.cn/bodyguard/apply/v4.3"; - private static String ENCODING = "UTF-8"; - private static String partner_key = "3a7be6a6d73c48b18f083ddf8d399538"; - private static String app_name = "apgj_web"; - private static String biz_code = "OnLine"; + private static String partner_code = TelOnLineConfigure.get("com.tenwa.jianghd.partner_code"); + private static String url1 = TelOnLineConfigure.get("com.tenwa.jianghd.url1"); + private static String url2 = TelOnLineConfigure.get("com.tenwa.jianghd.url2"); + private static String url3 = TelOnLineConfigure.get("com.tenwa.jianghd.url3"); +// private static String URI_SEND_SMS = "https://apitest.tongdun.cn/bodyguard/apply/v4.3"; + private static String ENCODING =TelOnLineConfigure.get("com.tenwa.jianghd.encode"); + private static String partner_key = TelOnLineConfigure.get("com.tenwa.jianghd.partner_key"); + private static String app_name =TelOnLineConfigure.get("com.tenwa.jianghd.app_name"); + private static String biz_code = TelOnLineConfigure.get("com.tenwa.jianghd.biz_code"); private String flowunid; + private String projectId; + + private String onLineId; public static void main(String[] org0) throws ClientProtocolException, IOException, URISyntaxException{ - CloseableHttpClient httpclient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost(getUri()); - List nvps = new ArrayList (); - - nvps.add(new BasicNameValuePair("account_mobile", "18721658364")); - nvps.add(new BasicNameValuePair("biz_code", biz_code)); - httpPost.setEntity(new UrlEncodedFormEntity(nvps)); - - CloseableHttpResponse response2 = httpclient.execute(httpPost); - - try { - System.out.println(response2.getStatusLine().getStatusCode()); - HttpEntity entity2 = response2.getEntity(); - String ss = EntityUtils.toString(entity2); - System.out.println(ss); - EntityUtils.consume(entity2); - } finally { - response2.close(); - } + + System.out.println(partner_code+","+url1); +// +// CloseableHttpClient httpclient = HttpClients.createDefault(); +// +// HttpPost httpPost = new HttpPost(getUri()); +// List nvps = new ArrayList (); +// //WF2018081112414717786099 +// nvps.add(new BasicNameValuePair("account_mobile", "13000000000")); +// nvps.add(new BasicNameValuePair("biz_code", biz_code)); +//// nvps.add(new BasicNameValuePair("id", "WF2018081112414717786099")); +//// nvps.add(new BasicNameValuePair("invoke_type", "RETRY")); +// httpPost.setEntity(new UrlEncodedFormEntity(nvps)); +// +// CloseableHttpResponse response2 = httpclient.execute(httpPost); +// +// try { +// System.out.println(response2.getStatusLine().getStatusCode()); +// HttpEntity entity2 = response2.getEntity(); +// String ss = EntityUtils.toString(entity2); +// Map mapTypes = JSON.parseObject(ss); +// System.out.println(mapTypes); +// EntityUtils.consume(entity2); +// } finally { +// response2.close(); +// } } public static URI getUri() throws URISyntaxException{ - URI uri = URIUtils.createURI("https", "apitest.tongdun.cn", -1, "/bodyguard/apply/v4.3", - "partner_code=apgj&partner_key=3a7be6a6d73c48b18f083ddf8d399538&app_name=apgj_web", null); + URI uri = URIUtils.createURI(url1, url2, -1, url3, + "partner_code="+partner_code+"&partner_key="+partner_key+"&app_name="+app_name, null); return uri; } - public String postOnLine(String phone) throws URISyntaxException, ClientProtocolException, IOException{ + + public String postOnLine(String phone,String nextService,String onLineId) throws Exception{ CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(getUri()); List nvps = new ArrayList (); - nvps.add(new BasicNameValuePair("account_mobile", phone)); nvps.add(new BasicNameValuePair("biz_code", biz_code)); - httpPost.setEntity(new UrlEncodedFormEntity(nvps)); + //重试 + if("RETRY".equals(nextService)){ + nvps.add(new BasicNameValuePair("invoke_type", nextService)); + nvps.add(new BasicNameValuePair("id", onLineId));//进件id + }else{ + //首发 + nvps.add(new BasicNameValuePair("account_mobile", phone)); + } + httpPost.setEntity(new UrlEncodedFormEntity(nvps,ENCODING)); CloseableHttpResponse response2 = httpclient.execute(httpPost); try { @@ -77,17 +104,63 @@ public class OnlineClient { System.out.println(statusCode); if(statusCode==200){ HttpEntity entity2 = response2.getEntity(); - String ss = EntityUtils.toString(entity2); - System.out.println(ss); - return ss; + String str = EntityUtils.toString(entity2); + System.out.println(str); + return str; }else{ - return "请求数据失败。"; + throw new Exception("请求数据失败"); } // EntityUtils.consume(entity2); } finally { response2.close(); } } + //单条重发 + public String getTelOnLineReTry(JBOTransaction tx){ + try { + String jsonStr = postOnLine("","RETRY",onLineId); + Map mapTypes = JSON.parseObject(jsonStr); + boolean success = (boolean)(mapTypes.get("success")); + if(success){ + String onLineId = mapTypes.get("id").toString(); + String result_desc = mapTypes.get("result_desc").toString(); + Map MobileDuration = JSON.parseObject(JSON.parseObject(JSON.parseObject(result_desc).get("AUTHENTICATION_INFOQUERY").toString()).get("MobileDuration").toString()); + Object mobile_online_time_info = ""; + Object mobile_online_time_consistence = ""; + if(MobileDuration.get("error_info")==null){ + mobile_online_time_info = MobileDuration.get("mobile_online_time_info"); + mobile_online_time_consistence = MobileDuration.get("mobile_online_time_consistence"); + } + //失败特有的参数 + Object nextService = mapTypes.get("nextService"); + Object reason_code = mapTypes.get("reason_code"); + Object reason_desc = mapTypes.get("reason_desc"); + //更新需要重发的数据 + JBOFactory.getBizObjectManager(LB_TELONLINE.CLASS_NAME, tx).createQuery("update O set success='"+success+"',result_desc='"+result_desc+"'," + + "mobile_online_time_info='"+mobile_online_time_info+"',mobile_online_time_consistence='"+mobile_online_time_consistence+"'," + + "nextService='"+nextService+"',reason_code='"+reason_code+"',reason_desc='"+reason_desc+"' where online_id=:id") + .setParameter("id", onLineId).executeUpdate(); + }else{ + Object reason_code = mapTypes.get("reason_code"); + Object reason_desc = mapTypes.get("reason_desc"); + //更新需要重发的数据 + JBOFactory.getBizObjectManager(LB_TELONLINE.CLASS_NAME, tx).createQuery("update O set success='"+success+"'" + + ",reason_code='"+reason_code+"',reason_desc='"+reason_desc+"' where online_id=:id") + .setParameter("id", onLineId).executeUpdate(); + } + tx.commit(); + } catch (Exception e) { + e.printStackTrace(); + try { + tx.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } + return "调用数据失败"; + } + return "true"; + } + //业务申请流程中获取包括 承租人,共同申请人,担保人的手机号 public String getTelOnLine(JBOTransaction tx){ String sql = "select certid,FULLNAME as name,MOBILE as phone,'assuror' as custtype,'担保人' as typename from LB_GUARANTEE_UNIT_TEMP where flowunid='"+flowunid+"' and CERTTYPE='Ind01' " @@ -97,15 +170,54 @@ public class OnlineClient { List> ds = DataOperatorUtil.getDataBySql(tx, sql, null); if(ds.size()>0){ for (int i = 0; i < ds.size(); i++) { - String name = ds.get(i).get("NAME"); - String phone = ds.get(i).get("PHONE"); - String jsonStr = postOnLine(phone); - + String certid = ds.get(i).get("certid"); + String name = ds.get(i).get("name"); + String phone = ds.get(i).get("phone"); + BizObjectManager ltbom = JBOFactory.getBizObjectManager(LB_TELONLINE.CLASS_NAME, tx); + BizObject lton = ltbom.createQuery("PERSON_ID=:PERSON_ID").setParameter(LB_TELONLINE.PERSON_ID, certid).getSingleResult(true); + Map mapTypes =null; + //1.不存在则新增 + if(lton==null){ + String jsonStr = postOnLine(phone,"",""); + mapTypes = JSON.parseObject(jsonStr); + lton = ltbom.newObject(); + lton.setAttributeValue(LB_TELONLINE.PROJECT_ID, projectId); + lton.setAttributeValue(LB_TELONLINE.PERSON_ID, certid); + lton.setAttributeValue(LB_TELONLINE.USER_NAME, name); + lton.setAttributeValue(LB_TELONLINE.TELEPHONE, phone); + }else{ + //2.存在则重发 + String jsonStr = postOnLine(phone,lton.getAttribute(LB_TELONLINE.nextService).getString(),lton.getAttribute(LB_TELONLINE.online_id).getString()); + mapTypes = JSON.parseObject(jsonStr); + } + //2.1并根据响应回来的结果更新数据 + lton.setAttributeValue(LB_TELONLINE.success, mapTypes.get("success")); + if("true".equals(mapTypes.get("success").toString())){ + lton.setAttributeValue(LB_TELONLINE.online_id, mapTypes.get("id")); + lton.setAttributeValue(LB_TELONLINE.result_desc, mapTypes.get("result_desc")); + String result_desc = mapTypes.get("result_desc").toString(); + Map MobileDuration = JSON.parseObject(JSON.parseObject(JSON.parseObject(result_desc).get("AUTHENTICATION_INFOQUERY").toString()).get("MobileDuration").toString()); + if(MobileDuration.get("error_info")==null){ + lton.setAttributeValue(LB_TELONLINE.mobile_online_time_info, MobileDuration.get("mobile_online_time_info")); + lton.setAttributeValue(LB_TELONLINE.mobile_online_time_consistence, MobileDuration.get("mobile_online_time_consistence")); + } + //失败特有的参数 + lton.setAttributeValue(LB_TELONLINE.nextService, mapTypes.get("nextService")); + } + lton.setAttributeValue(LB_TELONLINE.reason_code, mapTypes.get("reason_code")); + lton.setAttributeValue(LB_TELONLINE.reason_desc, mapTypes.get("reason_desc")); + ltbom.saveObject(lton); } + tx.commit(); } - } catch (Exception e) { + try { + tx.rollback(); + } catch (JBOException e1) { + e1.printStackTrace(); + } e.printStackTrace(); + return e.getMessage(); } return "true"; } @@ -118,6 +230,18 @@ public class OnlineClient { public void setFlowunid(String flowunid) { this.flowunid = flowunid; } + public String getProjectId() { + return projectId; + } + public void setProjectId(String projectId) { + this.projectId = projectId; + } + public String getOnLineId() { + return onLineId; + } + public void setOnLineId(String onLineId) { + this.onLineId = onLineId; + } diff --git a/src_tenwa/com/tenwa/lease/flow/project/validate/TelOnLineConfigure.java b/src_tenwa/com/tenwa/lease/flow/project/validate/TelOnLineConfigure.java new file mode 100644 index 000000000..24ccda912 --- /dev/null +++ b/src_tenwa/com/tenwa/lease/flow/project/validate/TelOnLineConfigure.java @@ -0,0 +1,40 @@ +package com.tenwa.lease.flow.project.validate; + +import java.io.IOException; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.concurrent.ConcurrentHashMap; + +import com.amarsoft.are.ARE; + +public class TelOnLineConfigure { + private static Map attributes; + + public static void load() { + attributes = new ConcurrentHashMap(); + Properties prop = new Properties(); + try { + prop.load(TelOnLineConfigure.class.getResourceAsStream("/telonline.properties")); + for(Entry entry : prop.entrySet()) { + if(entry.getKey() == null || entry.getValue() == null) { + continue; + } + attributes.put(entry.getKey().toString(), entry.getValue().toString()); + } + } catch (IOException e) { + e.printStackTrace(); + ARE.getLog().error("init GPSConfigure info failed"); + } + ARE.getLog().info("init GPSConfigure info success"); + } + + public static void destroy() { + if(attributes != null) attributes.clear(); + } + + public static String get(String propName) { + if(attributes == null) load(); + return attributes.get(propName); + } +}