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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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>28500.0</contractExpctAmt><pyPlnTotAmt>28500.0</pyPlnTotAmt><expnsdAmt>16500.0</expnsdAmt><paidAmt>16000.0</paidAmt><unPayAmt>12500.0</unPayAmt><cnfrmCmplncRqstFlg>1</cnfrmCmplncRqstFlg><pyStgArray><bsnsTp>第一阶段</bsnsTp><pyCndtn>预付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>1000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>0</pySt><cllctBillName>0</cllctBillName><pyStName>未收票未记账</pyStName><expnsRpctsNo>未记账</expnsRpctsNo><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第二阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>2000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>2</pySt><cllctBillName>2</cllctBillName><pyStName>已收票已记账</pyStName><expnsRpctsNo>已记账</expnsRpctsNo><pyRpctsNo>FYBX202211010007</pyRpctsNo><pyRpctsAcctDate>FYBX202211010007</pyRpctsAcctDate><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第三阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>3000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>2</pySt><cllctBillName>2</cllctBillName><pyStName>已收票已记账</pyStName><expnsRpctsNo>已记账</expnsRpctsNo><pyRpctsNo>FYBX202211010003</pyRpctsNo><pyRpctsAcctDate>FYBX202211010003</pyRpctsAcctDate><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第四阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>4000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>2</pySt><cllctBillName>2</cllctBillName><pyStName>已收票已记账</pyStName><expnsRpctsNo>已记账</expnsRpctsNo><pyRpctsNo>FYBX202111150006</pyRpctsNo><pyRpctsAcctDate>FYBX202111150006</pyRpctsAcctDate><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第五阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>5000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>1</pySt><cllctBillName>0</cllctBillName><pyStName>已收票未记账</pyStName><expnsRpctsNo>未记账</expnsRpctsNo><pyRpctsNo>FYBX201911280003</pyRpctsNo><pyRpctsAcctDate>FYBX201911280003</pyRpctsAcctDate><checkStatus>1</checkStatus></pyStgArray><pyStgArray><bsnsTp>第六阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>6000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>0</pySt><cllctBillName>0</cllctBillName><pyStName>未收票未记账</pyStName><expnsRpctsNo>未记账</expnsRpctsNo><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第七阶段</bsnsTp><pyCndtn>应付款</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>7000.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>2</pySt><cllctBillName>1</cllctBillName><pyStName>已收票已记账</pyStName><expnsRpctsNo>已记账</expnsRpctsNo><pyRpctsNo>FYBX202211010009</pyRpctsNo><pyRpctsAcctDate>FYBX202211010009</pyRpctsAcctDate><checkStatus>0</checkStatus></pyStgArray><pyStgArray><bsnsTp>第八阶段</bsnsTp><pyCndtn>质保金</pyCndtn><payerAmt>付款条件</payerAmt><expctPymntTm>500.0</expctPymntTm><cllctBillType>2022-10-01</cllctBillType><pySt>2</pySt><cllctBillName>0</cllctBillName><pyStName>已收票已记账</pyStName><expnsRpctsNo>未记账</expnsRpctsNo><pyRpctsNo>FYBX202211010009</pyRpctsNo><checkStatus>0</checkStatus></pyStgArray></contractInfoArray><pyInfoArray></pyInfoArray><acsryArray><rcptsId>242aef68c02c4f1c8e2cb723e564a868</rcptsId><rcptsNo>FYBX201911280003</rcptsNo><acsryId>ea66bc7e612a4dd0a34077f503de612d</acsryId><acsryNm>1-说明_1642319979382.bmp</acsryNm><path>/949E5690F6A02B20E053DC4F010EA6F4/1-说明_1642319979382_1574932569429.bmp</path><updtPsnId>949E5690F6A02B20E053DC4F010EA6F4</updtPsnId><updtPsnNo>11510045</updtPsnNo><updtPsnName>孙*</updtPsnName><updtTime>2019-11-28 17:16:12</updtTime><tmStmp>1574932569429</tmStmp></acsryArray></response></Service_Body></Service>";
// 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);
}
}
}