package com.engine.tjbankSocket.impl; import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONObject; import com.engine.tjbankSocket.SocketExecute; import com.engine.tjyh.xc.util.WorkflowCreateHandler; import com.engine.util.XMLUtils; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.w3c.dom.Document; import org.w3c.dom.Element; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.User; import weaver.workflow.workflow.WorkflowVersion; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class CreateArchicesReqSocketExecute extends BaseBean implements SocketExecute { @Override public String execute(Map param) { //创建档案借阅流程测试JSP WorkflowCreateHandler handler = new WorkflowCreateHandler(); Map requestMap = new HashMap<>(); //获取当前的活动版本 // String activeVersionId = WorkflowVersion.getActiveVersionId(workflowId); //这里使用map做传递 String xmlString = param.get("xmlString"); // HashMap requestMap = new HashMap<>(); //将xml转为json串 // String s = converXML2JSON(xmlString); JSONObject jsonObject = converXML2JSON(xmlString); JSONObject serviceBody = jsonObject.getJSONObject("Service_Body"); JSONObject request = serviceBody.getJSONObject("request"); String workflowId = request.getString("workflowId"); String sqjybm = request.getString("sqjybm"); String sqjyr = request.getString("sqjyr"); String lxdh = request.getString("lxdh"); String jydaml = request.getString("jydaml"); String lymd = request.getString("lymd"); String jynr = request.getString("jynr"); String jyfs = request.getString("jyfs"); String yjghsj = request.getString("yjghsj"); String sqr = request.getString("sqr"); String sqbm = request.getString("sqbm"); pushMapNoNull("sqjybm",sqjybm,requestMap); User sqjyrUser = getUserByLoginid(sqjyr); User sqrUser = getUserByLoginid(sqr); pushMapNoNull("sqjyr", (sqjyrUser != null ? sqjyrUser.getUID() : 0) +"",requestMap); pushMapNoNull("lxdh",lxdh,requestMap); pushMapNoNull("jydaml",jydaml,requestMap); pushMapNoNull("lymd",lymd,requestMap); pushMapNoNull("jynr",jynr,requestMap); pushMapNoNull("jyfs",jyfs,requestMap); pushMapNoNull("yjghsj",yjghsj,requestMap); pushMapNoNull("sqr",sqr,requestMap); pushMapNoNull("sqbm",(sqrUser != null ? sqrUser.getUID() : 0) +"",requestMap); String requestTitle = handler.bulidWorkflowTitle(workflowId, sqjyr); String requestId = handler.WorkflowCreateByRequestMap(sqjyr, workflowId,requestTitle,"1",requestMap); writeLog("requestid:"+requestId); if (Util.getIntValue(requestId) > -1){ param.put("status","COMPLETE"); param.put("code","1"); param.put("desc","成功"); return XMLUtils.CW2XML(param, "1", ""); } param.put("status","FAIL"); param.put("code","1"); param.put("desc","流程提交失败"); return XMLUtils.CW2XML(param, "1", "流程提交失败"); } // public static void main(String[] args) throws IOException, JsonProcessingException { // XmlMapper xmlMapper = new XmlMapper(); // // Map map = xmlMapper.readValue("", Map.class); // // // 使用 ObjectMapper 将 Map 转换为 JSON // ObjectMapper jsonMapper = new ObjectMapper(); // String json = null; // try { // json = jsonMapper.writeValueAsString(map); // } catch (JsonProcessingException e) { // e.printStackTrace(); // } // // System.out.println(json); // } public static void main(String[] args) { // String xml = "02582024101614585710110537COMPLETE000000FYBX2019112800032019-11-28 17:12:01审批中孙*总行-信息技术部天津银行总行本部1天津银行股份有限公司总行基本户(正确付款户)合同付款测试(王晓光合同测试001)总行-信息技术部总行-信息技术部费用预算合同报销王晓光合同测试00112500.05000.00.05000.00.00.00.00.00.05000.00.0财务系统二期测试付款用供应商28405600财务系统二期测试付款用供应商线上支付-本行1000.01000.00.00.00.00.00.00.0待付款天津市生某某(UAT4)1111111天津市生某某(UAT4)1线上支付-本行4000.04000.00.00.00.00.00.00.0待付款FYBX201911280001FYBX201911280001预制记账暂无暂无合同付款测试(王晓光合同测试001)5270101抵押登记费手续费支出-抵押登记费5000.0天津银行总行本部总行-信息技术部合同付款测试(王晓光合同测试001)1020101行政经费存款5000.0天津银行总行本部手续费支出-抵押登记费非预算项目合同付款测试(王晓光合同测试001)总行-信息技术部总行-信息技术部党建工作经费5000.00.05000.00.00.0fixed28500.028500.016500.016000.012500.01第一阶段预付款付款条件1000.02022-10-0100未收票未记账未记账0第二阶段应付款付款条件2000.02022-10-0122已收票已记账已记账FYBX202211010007FYBX2022110100070第三阶段应付款付款条件3000.02022-10-0122已收票已记账已记账FYBX202211010003FYBX2022110100030第四阶段应付款付款条件4000.02022-10-0122已收票已记账已记账FYBX202111150006FYBX2021111500060第五阶段应付款付款条件5000.02022-10-0110已收票未记账未记账FYBX201911280003FYBX2019112800031第六阶段应付款付款条件6000.02022-10-0100未收票未记账未记账0第七阶段应付款付款条件7000.02022-10-0121已收票已记账已记账FYBX202211010009FYBX2022110100090第八阶段质保金付款条件500.02022-10-0120已收票已记账未记账FYBX2022110100090242aef68c02c4f1c8e2cb723e564a868FYBX201911280003ea66bc7e612a4dd0a34077f503de612d1-说明_1642319979382.bmp/949E5690F6A02B20E053DC4F010EA6F4/1-说明_1642319979382_1574932569429.bmp949E5690F6A02B20E053DC4F010EA6F411510045孙*2019-11-28 17:16:121574932569429"; // String xml = "1010157010000003984025801570102311000120241021150459true500130004130157202410210100000039840todogetCountuserNum10110001\n"; String xml = "1010157010000003984025812020102311000120241021150459true500130004130157202410210100000039840502349710110610111112024-10-22"; try { JSONObject jsonObject = converXML2JSON(xml); JSONObject serviceBody = jsonObject.getJSONObject("Service_Body"); JSONObject request = serviceBody.getJSONObject("request"); System.out.println(request.getString("qwqw") == null ); } catch (Exception e) { e.printStackTrace(); } } public static JSONObject converXML2JSON(String xml) { try { // 创建 XmlMapper 实例 XmlMapper xmlMapper = new XmlMapper(); // 将 XML 直接解析回原始 XML 格式的字符串(格式化或序列化) JSONObject userObject = xmlMapper.readValue(xml, JSONObject.class); // System.out.println(userObject); // System.out.println("--------------------------------------------"); // System.out.println(JSONObject.toJSONString(userObject)); // String xmlString = xmlMapper.writeValueAsString(userObject); // System.out.println("XML 字符串:"); // System.out.println(xmlString); return userObject; } catch (IOException e) { e.printStackTrace(); return null ; } } public static User getUserByLoginid(String loginid){ RecordSet recordSet = new RecordSet(); recordSet.executeQuery("select id from hrmresource where loginid = ?",loginid); if (recordSet.next()){ int id = Util.getIntValue(recordSet.getString("id")); return new User(id); }else { return null; } } public static String CW2XML(Map headerParam, String retCd, String errorMessage) { try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("Service"); doc.appendChild(rootElement); addServiceHeader(doc, rootElement, headerParam); Element serviceBodyElement = doc.createElement("Service_Body"); rootElement.appendChild(serviceBodyElement); Element responseElement = doc.createElement("response"); serviceBodyElement.appendChild(responseElement); Element countOneElement; if (retCd != null) { countOneElement = doc.createElement("retCd"); countOneElement.setTextContent(retCd + ""); responseElement.appendChild(countOneElement); } if (errorMessage != null) { countOneElement = doc.createElement("errorMessage"); countOneElement.setTextContent(errorMessage + ""); responseElement.appendChild(countOneElement); } TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty("omit-xml-declaration", "no"); DOMSource source = new DOMSource(doc); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); StreamResult result = new StreamResult(outputStream); transformer.transform(source, result); String xmlString = outputStream.toString("UTF-8"); String length = String.format("%08d", xmlString.length()); return length + xmlString; } catch (Exception var16) { var16.printStackTrace(); return ""; } } public static void addServiceHeader(Document doc, Element rootElement, Map headerParam) { // 创建Service_Body节点 Element serviceHeaderElement = doc.createElement("Service_Header"); rootElement.appendChild(serviceHeaderElement); //service_sn ESB服务流水号 if (!StringUtils.isEmpty(headerParam.get("service_sn"))){ Element serviceSnElement = doc.createElement("service_sn"); serviceSnElement.setTextContent(headerParam.get("service_sn")); serviceHeaderElement.appendChild(serviceSnElement); } if (!StringUtils.isEmpty(headerParam.get("service_id"))){ Element serviceIdElement = doc.createElement("service_id"); serviceIdElement.setTextContent(headerParam.get("service_id")); serviceHeaderElement.appendChild(serviceIdElement); } if (!StringUtils.isEmpty(headerParam.get("system_id"))){ Element systemIdElement = doc.createElement("system_id"); systemIdElement.setTextContent(headerParam.get("system_id")); serviceHeaderElement.appendChild(systemIdElement); } if (!StringUtils.isEmpty(headerParam.get("requester_id"))){ Element requesterIdElement = doc.createElement("requester_id"); requesterIdElement.setTextContent(headerParam.get("requester_id")); serviceHeaderElement.appendChild(requesterIdElement); } if (!StringUtils.isEmpty(headerParam.get("branch_id"))){ Element branchIdElement = doc.createElement("branch_id"); branchIdElement.setTextContent(headerParam.get("branch_id")); serviceHeaderElement.appendChild(branchIdElement); } if (!StringUtils.isEmpty(headerParam.get("channel_id"))){ Element channelIdElement = doc.createElement("channel_id"); channelIdElement.setTextContent(headerParam.get("channel_id")); serviceHeaderElement.appendChild(channelIdElement); } if (!StringUtils.isEmpty(headerParam.get("service_time"))){ Element serviceTimeElement = doc.createElement("requester_id"); serviceTimeElement.setTextContent(headerParam.get("service_time")); serviceHeaderElement.appendChild(serviceTimeElement); } if (!StringUtils.isEmpty(headerParam.get("BnkSrlNo"))){ Element BnkSrlNoElement = doc.createElement("BnkSrlNo"); BnkSrlNoElement.setTextContent(headerParam.get("BnkSrlNo")); serviceHeaderElement.appendChild(BnkSrlNoElement); } // if (!StringUtils.isEmpty(headerParam.get("FileFlg"))){ Element FileFlgElement = doc.createElement("FileFlg"); FileFlgElement.setTextContent("0"); serviceHeaderElement.appendChild(FileFlgElement); // } if (!StringUtils.isEmpty(headerParam.get("SvcCd"))){ Element SvcCdElement = doc.createElement("SvcCd"); SvcCdElement.setTextContent(headerParam.get("SvcCd")); serviceHeaderElement.appendChild(SvcCdElement); } if (!StringUtils.isEmpty(headerParam.get("SvcScn"))){ Element SvcScnElement = doc.createElement("SvcScn"); SvcScnElement.setTextContent(headerParam.get("SvcScn")); serviceHeaderElement.appendChild(SvcScnElement); } // 响应码 Element service_responseElement = doc.createElement("service_response"); serviceHeaderElement.appendChild(service_responseElement); if (!StringUtils.isEmpty(headerParam.get("status"))){ Element statusElement = doc.createElement("status"); statusElement.setTextContent(headerParam.get("status")); service_responseElement.appendChild(statusElement); } if (!StringUtils.isEmpty(headerParam.get("code"))){ Element codeElement = doc.createElement("code"); codeElement.setTextContent(headerParam.get("code")); service_responseElement.appendChild(codeElement); } if (!StringUtils.isEmpty(headerParam.get("desc"))){ Element descElement = doc.createElement("desc"); descElement.setTextContent(headerParam.get("desc")); service_responseElement.appendChild(descElement); } } public static void pushMapNoNull(String key , String value , Map map){ if (!StringUtil.isEmpty(value)) { map.put(key, value); } } }