From 9126d079db6b9a8169dbce5fbc67165dfc4b1be8 Mon Sep 17 00:00:00 2001 From: rengp Date: Wed, 6 Sep 2023 18:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=AD=E6=96=87=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- com/Client.java | 59 ++++------- com/engine/util/XMLUtils.java | 6 +- com/engine/web/tjbk/TJBKWorkFlow.java | 4 +- com/engine/web/tjbk/TjbkServerSocket.java | 53 ++++++---- .../action/javacode/Action20230906023509.java | 99 +++++++++++++++++++ 5 files changed, 160 insertions(+), 61 deletions(-) create mode 100644 weaver/interfaces/workflow/action/javacode/Action20230906023509.java diff --git a/com/Client.java b/com/Client.java index 9d89a4f..64abd4a 100644 --- a/com/Client.java +++ b/com/Client.java @@ -1,58 +1,37 @@ package com; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintStream; +import com.engine.util.XMLUtils; + +import java.io.*; import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.util.Map; public class Client { + // public static final int port = 8090; public static final int port = 8090; - public static final String host = "14.1.209.146"; -// public static final String host = "127.0.0.1"; + // public static final String host = "14.1.209.146"; + public static final String host = "127.0.0.1"; public static void main(String[] args) { System.out.println("Client Start..."); + String str = "000006041010157060000081243025801570102311000120230905104426true500130004130157202309050600000812430todogetCountuserNum10913026任广鹏是个大刷币"; + // String str = "1010157060000081243025801570102311000120230905104426true500130004130157202309050600000812430todogetCountuserNum10913026任广鹏是个大刷币"; + // Map stringStringMap = XMLUtils.parseXMLToMap(str); + // System.out.println(stringStringMap); + System.out.println(str.length()); + // while (true) { Socket socket = null; try { //创建一个流套接字并将其连接到指定主机上的指定端口号 socket = new Socket(host,port); - + // String str = "000006121010157060000081243025801570102311000120230905104426true500130004130157202309050600000812430todogetCountuserNum10913026任广鹏是个大刷币"; + // System.out.println(str); //读取服务器端数据 - BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); + BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); //向服务器端发送数据 - PrintStream out = new PrintStream(socket.getOutputStream()); -// System.out.print("请输入: \t"); -// String str = new BufferedReader(new InputStreamReader(System.in)).readLine(); - String str = "00000656\n" + - "\n" + - " \n" + - " 1010157010000001812\n" + - " 0258\n" + - " 0157\n" + - " 010231100\n" + - " 01\n" + - " 20230621170408\n" + - " true\n" + - " 500130004\n" + - " 13\n" + - " 015720230621010000001812\n" + - " 0\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " getCount\n" + - " todo"+ - " \n" + - " \n" + - " userNum\n" + - " 10110039\n" + - " \n" + - " \n" + - " \n" + - " \n" + - ""; + // PrintStream out = new PrintStream(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8)); + PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8),true); out.println(str); String ret = input.readLine(); diff --git a/com/engine/util/XMLUtils.java b/com/engine/util/XMLUtils.java index 5d8789e..868e95e 100644 --- a/com/engine/util/XMLUtils.java +++ b/com/engine/util/XMLUtils.java @@ -4,6 +4,7 @@ import com.alibaba.druid.util.StringUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; +import weaver.general.BaseBean; import javax.xml.parsers.DocumentBuilder; @@ -15,6 +16,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -167,11 +169,13 @@ public class XMLUtils { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new ByteArrayInputStream(xmlString.getBytes())); + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xmlString.getBytes(StandardCharsets.UTF_8)); + Document document = builder.parse(byteArrayInputStream); Element rootElement = document.getDocumentElement(); extractValues(rootElement, resultMap); } catch (Exception e) { + new BaseBean().writeLog(e.getMessage()); e.printStackTrace(); } return resultMap; diff --git a/com/engine/web/tjbk/TJBKWorkFlow.java b/com/engine/web/tjbk/TJBKWorkFlow.java index 2331617..d436211 100644 --- a/com/engine/web/tjbk/TJBKWorkFlow.java +++ b/com/engine/web/tjbk/TJBKWorkFlow.java @@ -82,9 +82,9 @@ public class TJBKWorkFlow { Map paramMap = null; String result = ""; try { - String substring = param.substring(8, param.length()); + // String substring = param.substring(8, param.length()); // new BaseBean().writeLog("xml报文"+substring); - paramMap = XMLUtils.parseXMLToMap(substring); + paramMap = XMLUtils.parseXMLToMap(param); String path = paramMap.get("path"); String method = paramMap.get("method"); diff --git a/com/engine/web/tjbk/TjbkServerSocket.java b/com/engine/web/tjbk/TjbkServerSocket.java index 52fad62..eb39795 100644 --- a/com/engine/web/tjbk/TjbkServerSocket.java +++ b/com/engine/web/tjbk/TjbkServerSocket.java @@ -3,6 +3,7 @@ package com.engine.web.tjbk; import com.engine.tjbankSocket.SocketExecute; import com.engine.tjbankSocket.impl.GetToCountSocketExecute; import com.engine.util.XMLUtils; +import org.apache.commons.lang.StringEscapeUtils; import weaver.general.BaseBean; import weaver.general.StringUtil; @@ -30,7 +31,7 @@ public class TjbkServerSocket implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub - + new BaseBean().writeLog("contextInitialized启动"); ServletContext servletContext = arg0.getServletContext(); if (socketThread == null) { socketThread = new SocketThread(null, servletContext); @@ -64,6 +65,7 @@ class SocketThread extends Thread { while (!this.isInterrupted()) { // 线程未中断执行循环 try { + new BaseBean().writeLog("SocketThread线程启动"); Socket socket = serverSocket.accept(); if (socket != null) { new ProcessSocketData(socket, this.servletContext).start(); @@ -109,23 +111,36 @@ class ProcessSocketData extends Thread { PrintWriter pw = new PrintWriter(outputStreamWriter); InputStream inputStream = socket.getInputStream(); - // byte[] arr = new byte[1024]; - // int length = inputStream.read(arr);//返回有效数据长度 - byte[] arr = new byte[1024]; - int bytesRead; - StringBuilder stringBuilder = new StringBuilder(); - - while ((bytesRead = inputStream.read(arr)) != -1) { - // bytesRead contains the number of bytes read from the input stream - stringBuilder.append(new String(arr, 0, bytesRead, StandardCharsets.UTF_8)); - } - - // String data = new String(arr, 0, length); - String requestData = stringBuilder.toString(); - new BaseBean().writeLog("ServerSocket线程启动"); + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + // StringBuilder requestData = new StringBuilder(); + String inputLine; + char[] datalen=new char[8];//报文前八位为报文体总长度 + in.read(datalen,0,8); + String lendata=new String (datalen); + int length=Integer.parseInt(lendata); + // byte[] data=new byte[length]; + char[] data=new char[length]; + int datalength = in.read(data,0,length); + String requestData = new String(data); + // inputLine = in.readLine(); + // requestData.append(inputLine); + // System.out.println("Received from client: " + inputLine); + + + + + // byte[] datalen=new byte[8];//报文前八位为报文体总长度 + // inputStream.read(datalen); + // String lendata=new String (datalen); + // int length=Integer.parseInt(lendata); + // // byte[] data=new byte[length]; + // byte[] data=new byte[length]; + // int datalength = inputStream.read(data); + // String requestData = new String(data, 0, datalength); String s = ""; - if (!StringUtil.isEmpty(requestData)) { - s = new TJBKWorkFlow().getToDoCount(requestData); + if (!StringUtil.isEmpty(requestData.toString())) { + new BaseBean().writeLog("requestData",requestData); + s = execute(requestData.toString()); } // 执行自定义的请求解析方法,生成响应response pw.println(s); @@ -141,7 +156,9 @@ class ProcessSocketData extends Thread { private String execute(String XMLparam){ + Map paramMap = XMLUtils.parseXMLToMap(XMLparam); + StringEscapeUtils.unescapeXml(XMLparam); //目标系统代码 String system_id = paramMap.get("system_id"); // 请求方系统代码 @@ -149,7 +166,7 @@ class ProcessSocketData extends Thread { // 请求方机构代号 String branch_id = paramMap.get("branch_id"); SocketExecute socketExecute = null; - if ("1".equals(requester_id)){ + if ("0157".equals(requester_id)){ socketExecute = new GetToCountSocketExecute(); } String execute = socketExecute.execute(XMLparam); diff --git a/weaver/interfaces/workflow/action/javacode/Action20230906023509.java b/weaver/interfaces/workflow/action/javacode/Action20230906023509.java new file mode 100644 index 0000000..27966b3 --- /dev/null +++ b/weaver/interfaces/workflow/action/javacode/Action20230906023509.java @@ -0,0 +1,99 @@ +package weaver.interfaces.workflow.action.javacode; + +import weaver.conn.RecordSet; +import weaver.conn.RecordSetTrans; +import weaver.interfaces.workflow.action.Action; +import weaver.general.BaseBean; +import weaver.soa.workflow.request.RequestInfo; + + public class Action20230906023509 extends BaseBean implements Action { + + public static final String sql = "insert into workflow_requestlog (requestid,workflowid,nodeid,logtype,operatedate,operatetime,operator,remark1,clientip,operatortype,destnodeid,receivedpersons_1,showorder,agentorbyagentid,agenttype,logid,annexdocids,requestlogid,operatordept,signdocids,signworkflowids,receivedpersons,ismobile,handwrittensign,speechattachment,receivedpersonids,\n" + + "remarklocation,issubmitdirect,remarkquote,fulltextannotation,speechattachmente9,remark,operatorsub,operatorjob,isrobotnode,seclevel) \n" + + " select \n" + + "'{?lc}',\n" + + "'331',\n" + + "'2181',\n" + + "'2',\n" + + "r.operatedate,\n" + + "r.operatetime,\n" + + "r.operator,\n" + + "r.remark1,\n" + + "r.clientip,\n" + + "r.operatortype, \n" + + "'', \n" + + "'{?xbbmzh}',\n" + + "r.showorder,\n" + + "r.agentorbyagentid,\n" + + "r.agenttype,\n" + + "r.logid,\n" + + "r.annexdocids,\n" + + "r.requestlogid,\n" + + "r.operatordept,\n" + + "r.signdocids,\n" + + "r.signworkflowids, \n" + + "'',r.ismobile,\n" + + "r.handwrittensign,\n" + + "r.speechattachment,\n" + + "'',\n" + + "r.remarklocation,\n" + + "r.issubmitdirect,\n" + + "r.remarkquote,\n" + + "r.fulltextannotation,\n" + + "r.speechattachmente9,\n" + + "r.remark, \n" + + "r.operatorsub, \n" + + "r.operatorjob, \n" + + "r.isrobotnode, \n" + + "r.seclevel \n" + + "from workflow_requestlog r where \n" + + "r.requestid={?requestid}\n" + + "and r.nodeid=2169\n" + + "order by r.operatedate desc,r.operatetime desc limit 1"; + + @Override + public String execute(RequestInfo request) { + // 1:Log + writeLog("Action20230906023509 action start..."); + + // 2:Exception + // boolean error = true; + // if (error) { + // request.getRequestManager().setMessageid("90001"); + // request.getRequestManager().setMessagecontent("System Abnormal Termination Process Submission!"); + // } + + // 3:Get requestid + String requestId = request.getRequestid(); + + // 4:Get form tableName + String tablename = request.getRequestManager().getBillTableName(); + + // 5:Find form content + RecordSet rs = new RecordSet(); + rs.execute("select * from " + tablename + " where requestid = " + requestId); + rs.next(); + String lc = rs.getString("lc"); //id:Form primary key + String xbbmzh = rs.getString("xbbmzh"); //formData:Field name for form design + RecordSetTrans rsTrans = new RecordSetTrans(); + String excutesql = sql.replaceAll("\\{\\?xbbmzh}",xbbmzh).replaceAll("\\{\\?lc}",lc).replaceAll("\\{\\?requestid}",requestId); + try { + writeLog("Action20230906023509 action rsTrans" + rsTrans); + writeLog("Action20230906023509 action excutesql" + excutesql); + rsTrans.executeSql(excutesql); + } catch (Exception e) { + e.printStackTrace(); + + return Action.FAILURE_AND_CONTINUE; + } + + return Action.SUCCESS; + } + + + public static void main(String[] args) { + // System.out.println(sql); + String excutesql = sql.replaceAll("\\{\\?xbbmzh}","11111").replaceAll("\\{\\?lc}","22222").replaceAll("\\{\\?requestid}","3333"); + System.out.println(excutesql); + } +}