You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tjBANK/com/engine/tjbankSocket/impl/CreateArchicesReqSocketExec...

288 lines
21 KiB
Java

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<String, String> param) {
//创建档案借阅流程测试JSP
WorkflowCreateHandler handler = new WorkflowCreateHandler();
Map<String,String> requestMap = new HashMap<>();
//获取当前的活动版本
// String activeVersionId = WorkflowVersion.getActiveVersionId(workflowId);
//这里使用map做传递
String xmlString = param.get("xmlString");
// HashMap<String, String> 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 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><BnkSrlNo>02582024101614585710110537</BnkSrlNo><service_response><status>COMPLETE</status></service_response></Service_Header><Service_Body><response><retCd>000000</retCd><rcptsNo>FYBX201911280003</rcptsNo><applyDate>2019-11-28 17:12:01</applyDate><rcptsType>审批中</rcptsType><poerator>孙*</poerator><agentDepartment>总行-信息技术部</agentDepartment><blngBrch>天津银行总行本部</blngBrch><acsryNums>1</acsryNums><payeePayerAccount>天津银行股份有限公司总行基本户(正确付款户)</payeePayerAccount><dsc>合同付款测试王晓光合同测试001</dsc><rlvntDprmnt>总行-信息技术部</rlvntDprmnt><srtpLnDprmnt>总行-信息技术部</srtpLnDprmnt><budgtType>费用预算</budgtType><expnsType>合同报销</expnsType><contractNo>王晓光合同测试001</contractNo><unPayAmt>12500.0</unPayAmt><payTotAmt>5000.0</payTotAmt><valAddTotAmt>0.0</valAddTotAmt><feeTotAmt>5000.0</feeTotAmt><cnclVrfctnTotAmt>0.0</cnclVrfctnTotAmt><qultyGrntTotAmt>0.0</qultyGrntTotAmt><othrTaxTotAmt>0.0</othrTaxTotAmt><wthIndvdTaxTotAmt>0.0</wthIndvdTaxTotAmt><wthValAddTaxTotAmt>0.0</wthValAddTaxTotAmt><actlPayTotAmt>5000.0</actlPayTotAmt><treatSaleTotAmt>0.0</treatSaleTotAmt><prchsInfoArray></prchsInfoArray><pyDtlInfoArray><rcptObjct>财务系统二期测试付款用供应商</rcptObjct><adviceBase>28405600</adviceBase><acctName>财务系统二期测试付款用供应商</acctName><pymntWy>线上支付-本行</pymntWy><toPayAmt>1000.0</toPayAmt><thsTmAcltyPayAmt>1000.0</thsTmAcltyPayAmt><qltyGrntAmt>0.0</qltyGrntAmt><otherPayableAmt>0.0</otherPayableAmt><othrTaxAmt>0.0</othrTaxAmt><wthIndvdTaxAmt>0.0</wthIndvdTaxAmt><wthValAddTaxAmt>0.0</wthValAddTaxAmt><rpyLnFlg>否</rpyLnFlg><prpyBrwAmt>0.0</prpyBrwAmt><pySt>待付款</pySt><clsFlg>否</clsFlg></pyDtlInfoArray><pyDtlInfoArray><rcptObjct>天津市生某某UAT4</rcptObjct><adviceBase>1111111</adviceBase><acctName>天津市生某某UAT41</acctName><pymntWy>线上支付-本行</pymntWy><toPayAmt>4000.0</toPayAmt><thsTmAcltyPayAmt>4000.0</thsTmAcltyPayAmt><qltyGrntAmt>0.0</qltyGrntAmt><otherPayableAmt>0.0</otherPayableAmt><othrTaxAmt>0.0</othrTaxAmt><wthIndvdTaxAmt>0.0</wthIndvdTaxAmt><wthValAddTaxAmt>0.0</wthValAddTaxAmt><rpyLnFlg>否</rpyLnFlg><prpyBrwAmt>0.0</prpyBrwAmt><pySt>待付款</pySt><clsFlg>否</clsFlg></pyDtlInfoArray><vouchrHeadArray><fmpVoucherNo>FYBX201911280001</fmpVoucherNo><ebsVouchrNo>FYBX201911280001</ebsVouchrNo><voucherStatus>预制记账</voucherStatus><valueDate>暂无</valueDate><acctResult>暂无</acctResult><vouchrArray><drCrFlag>借</drCrFlag><acctingAbstct>合同付款测试王晓光合同测试001</acctingAbstct><acctngSbjct>5270101</acctngSbjct><acctngSbjctName>抵押登记费</acctngSbjctName><expnsPrjct>手续费支出-抵押登记费</expnsPrjct><acgAmt>5000.0</acgAmt><accountBrnch>天津银行总行本部</accountBrnch><acctngDprtmnt>总行-信息技术部</acctngDprtmnt></vouchrArray><vouchrArray><drCrFlag>贷</drCrFlag><acctingAbstct>合同付款测试王晓光合同测试001</acctingAbstct><acctngSbjct>1020101</acctngSbjct><acctngSbjctName>行政经费存款</acctngSbjctName><acgAmt>5000.0</acgAmt><accountBrnch>天津银行总行本部</accountBrnch><acctngDprtmnt>无</acctngDprtmnt></vouchrArray></vouchrHeadArray><expnsDtlArray><expnsPrjct>手续费支出-抵押登记费</expnsPrjct><feeBudgt>非预算项目</feeBudgt><acctingAbstct>合同付款测试王晓光合同测试001</acctingAbstct><budgtDprtmnt>总行-信息技术部</budgtDprtmnt><assmDprtmnt>总行-信息技术部</assmDprtmnt><expndType>党建工作经费</expndType><exclsvTaxAmt>5000.0</exclsvTaxAmt><taxAmt>0.0</taxAmt><prcTotAmt>5000.0</prcTotAmt><addValTaxSpclInvc>否</addValTaxSpclInvc><treatSale>否</treatSale><headBnkLdrShpGrpMbr>否</headBnkLdrShpGrpMbr><budgetAmt>0.0</budgetAmt><prCptEXpndtr>0.0</prCptEXpndtr><cnfrmStndrdFlg>是</cnfrmStndrdFlg></expnsDtlArray><contractInfoArray><contractModel>fixed</contractModel><contractExpctAmt>2
// String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157010000003984</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20241021150459</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>13</SvcScn><BnkSrlNo>015720241021010000003984</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount</method><args><entry><key>userNum</key><value>10110001</value></entry></args></request></Service_Body></Service>\n";
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157010000003984</service_sn><system_id>0258</system_id><requester_id>1202</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20241021150459</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>13</SvcScn><BnkSrlNo>015720241021010000003984</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><workflowId>502</workflowId><sqjybm>3497</sqjybm><sqjyr>10110610</sqjyr><lxdh>1</lxdh><jydaml>1</jydaml><lymd>1</lymd><jynr>1</jynr><jyfs>1</jyfs><yjghsj>2024-10-22</yjghsj><sqr></sqr><sqbm></sqbm></request></Service_Body></Service>";
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<String, String> 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<String, String> 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<String, String> map){
if (!StringUtil.isEmpty(value)) {
map.put(key, value);
}
}
}