控制台清单问题处理

beta-enc
dongxiaoke 2 years ago
parent f13ed7ecdd
commit 4b403bf229
  1. 2
      jianshui-admin/src/main/java/com/jianshui/api/config/WebServiceConfig.java
  2. 151
      jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java
  3. 12
      jianshui-admin/src/main/java/com/jianshui/api/controller/webservice/income/v1/impl/InvoiceCheckWebServiceImpl.java

@ -37,7 +37,7 @@ public class WebServiceConfig {
// EndpointImpl endpoint = new EndpointImpl(springBus(), invoiceCheckWebService); // EndpointImpl endpoint = new EndpointImpl(springBus(), invoiceCheckWebService);
EndpointImpl endpoint = new EndpointImpl(springBus(), invoiceCheckWebService); EndpointImpl endpoint = new EndpointImpl(springBus(), invoiceCheckWebService);
WebserviceResponseHandler webserviceResponseHandler = webserviceResponseHandler(); WebserviceResponseHandler webserviceResponseHandler = webserviceResponseHandler();
endpoint.getHandlers().add(webserviceResponseHandler); // endpoint.getHandlers().add(webserviceResponseHandler);
endpoint.publish("/income/v1/check"); endpoint.publish("/income/v1/check");
return endpoint; return endpoint;
} }

@ -4,11 +4,21 @@ import cn.hutool.core.util.XmlUtil;
import org.w3c.dom.*; import org.w3c.dom.*;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPMessage;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler; import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext; import javax.xml.ws.handler.soap.SOAPMessageContext;
import java.io.StringWriter;
import java.util.Set; import java.util.Set;
/** /**
@ -22,6 +32,18 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
return null; return null;
} }
public String nodeToString(Node node) throws TransformerException {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "element-name");
StringWriter sw = new StringWriter();
transformer.transform(new DOMSource(node), new StreamResult(sw));
return sw.toString();
}
@Override @Override
public boolean handleMessage(SOAPMessageContext context) { public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage message = context.getMessage(); SOAPMessage message = context.getMessage();
@ -33,6 +55,20 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
Node returnNode = body.getFirstChild().getFirstChild(); Node returnNode = body.getFirstChild().getFirstChild();
Node dataNode = returnNode.getFirstChild(); Node dataNode = returnNode.getFirstChild();
addCDataToLeafNodes(dataNode);
String xmlStr = XmlUtil.toStr(dataNode,"GBK",false,false).replaceAll("&lt;","<").replaceAll("&gt;",">");
System.out.println(xmlStr);
CDATASection cdata = dataNode.getOwnerDocument().createCDATASection( xmlStr );
// CDATASection cdata = dataNode.getOwnerDocument().createCDATASection( "<" + dataNode.getNodeName() +"><?xml version=\"1.0\" encoding=\"GBK\"><![CDATA[037001700107]]]]>><![CDATA["+ XmlUtil.toStr(dataNode) + "</" + dataNode.getNodeName() + ">");
returnNode.removeChild(dataNode);
returnNode.appendChild(cdata);
// dataNode.getOwnerDocument().getDocumentElement().setAttribute("","<?xml version=\"1.0\" encoding=\"GBK\"?>");
// dataNode.getOwnerDocument().setXmlVersion("<?xml version=\"1.0\" encoding=\"GBK\"?>");
// 设置 SOAP 版本为 1.1\
// body.getFirstChild().getOwnerDocument().setTextContent(XmlUtil.toStr(dataNode)); // body.getFirstChild().getOwnerDocument().setTextContent(XmlUtil.toStr(dataNode));
// body.removeChild(dataNode); // body.removeChild(dataNode);
@ -150,7 +186,7 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
*/ */
public static void addCDataToLeafNodes(Node returnNode) { public static void addCDataToLeafNodes(Node returnNode) {
/*NodeList childNodes = returnNode.getChildNodes(); NodeList childNodes = returnNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) { for (int i = 0; i < childNodes.getLength(); i++) {
@ -159,85 +195,84 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
if (firstChild != null && childNode.getNodeType() == Node.ELEMENT_NODE) { if (firstChild != null && childNode.getNodeType() == Node.ELEMENT_NODE) {
addCDataToLeafNodes(childNode); addCDataToLeafNodes(childNode);
} else if (childNode.getNodeType() == Node.TEXT_NODE) { } else if (childNode.getNodeType() == Node.TEXT_NODE) {
String cdatameg = "<" + childNode.getNodeName() + "><![CDATA[" + childNode.getNodeValue() + "]]]]>><![CDATA[</" + childNode.getNodeName() + ">"; String cdatameg = "<" + childNode.getNodeName() + "><![CDATA[" + childNode.getNodeValue() + "]]]] >><![CDATA[</" + childNode.getNodeName() + ">";
String cdatamegRes = cdatameg.replaceAll("<#text>", "").replaceAll("</#text>", ""); String cdatamegRes = cdatameg.replaceAll("<#text>", "").replaceAll("</#text>", "");
childNode.setTextContent(cdatamegRes); childNode.setTextContent(cdatamegRes);
} else { } else {
String cdatameg = "<![CDATA[]]]]>><![CDATA["; String cdatameg = "<![CDATA[]]]] >><![CDATA[";
childNode.setTextContent(cdatameg); childNode.setTextContent(cdatameg);
} }
}*/ }
String nodeStr = XmlUtil.toStr(returnNode); /*String nodeStr = XmlUtil.toStr(returnNode);
String[] nodeStrList = nodeStr.split("<"); String[] nodeStrList = nodeStr.split("<");
String a = ""; String a = "";
for (String s : nodeStrList) { for (String s : nodeStrList) {
a = a + "<![CDATA[<" + s + "]]]]>>"; a = a + "<![CDATA[<" + s + "]]]]>>";
} }
System.out.println(a); System.out.println(a);*/
} }
public static void main(String[] args) { public static void main(String[] args) {
String aaaa = "<DATA>\n" + try {
" <fp>\n" + // 创建 Document 对象
" <Gfyhzh/>\n" + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
" <Kprq>2019-05-23</Kprq>\n" + DocumentBuilder builder = factory.newDocumentBuilder();
" <Jshj>54.00</Jshj>\n" + Document document = builder.newDocument();
" <Xfsh>92370100MA3EKX4426</Xfsh>\n" +
" <Xfyhzh/>\n" + // 创建根元素节点
" <Gfdzdh/>\n" + Element rootElement = document.createElement("root");
" <Xfmc>高新开发区舜华惠嘉餐厅</Xfmc>\n" +
" <Zfbz>N</Zfbz>\n" +
" <Fphm>99424340</Fphm>\n" +
" <Jqbm>661720186729</Jqbm>\n" +
" <Fpdm>037001700107</Fpdm>\n" +
" <Hcbz>N</Hcbz>\n" +
" <Se>1.57</Se>\n" +
" <Gfmc>个人</Gfmc>\n" +
" <Gfsh/>\n" +
" <Fplx>11</Fplx>\n" +
" <Bz/>\n" +
" <Je>52.43</Je>\n" +
" <Jym>781948</Jym>\n" +
" <Xfdzdh/>\n" +
" <Sph>\n" +
" <Xh>1</Xh>\n" +
" <Ggxh/>\n" +
" <Se>1.57</Se>\n" +
" <Taxcode>3070401000000000000</Taxcode>\n" +
" <Spmc>*餐饮服务*餐费</Spmc>\n" +
" <Dj/>\n" +
" <Jldw/>\n" +
" <Sl/>\n" +
" <Je>52.43</Je>\n" +
" <Slv>3%</Slv>\n" +
" </Sph>\n" +
" </fp>\n" +
" <result>\n" +
" <code>1</code>\n" +
" <message>查验成功</message>\n" +
" </result>\n" +
" </DATA>";
String nodeStr = aaaa;
String[] nodeStrList = nodeStr.split("</");
String a = "";
for (int i = 0; i < nodeStrList.length; i++) {
a = a + "<![CDATA[</" + nodeStrList[i] + "]]]]>>"; // 创建父元素节点 myData
Element myDataElement = document.createElement("myData");
// 创建字符数据块节点
CDATASection cdata = document.createCDATASection("]]>This is some data");
myDataElement.appendChild(cdata);
// 将 myData 父元素节点添加到根元素中
rootElement.appendChild(myDataElement);
// 创建父元素节点 Fp
Element FpElement = document.createElement("Fp");
// 创建字符数据块节点
CDATASection cdata1 = document.createCDATASection("]]>This is some data");
FpElement.appendChild(cdata1);
// 将 Fp 父元素节点添加到根元素中
rootElement.appendChild(FpElement);
// 将根元素节点添加到文档中
document.appendChild(rootElement);
// 移除standalone属性
document.setXmlStandalone(true);
// 将 Document 对象转换为字符串输出
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// 设置输出属性,包括编码方式
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
// 美化输出格式
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
// 将 XML 声明节点插入到文档开头
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
} }
/*String[] aRs = a.split("]]]]");
String b = "";
for (String aR : aRs) {
b = b + "<![CDATA[" + aR + "]]]]";
}*/
System.out.println(a);
} }

@ -27,9 +27,11 @@ import com.jianshui.system.service.ICompanyservicePropService;
import com.jianshui.system.service.ICompanyserviceService; import com.jianshui.system.service.ICompanyserviceService;
import com.jianshui.system.service.IServiceManageService; import com.jianshui.system.service.IServiceManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringEscapeUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -70,6 +72,8 @@ public class InvoiceCheckWebServiceImpl {
DocumentBuilder resultBuilder = XmlUtil.createDocumentBuilder(); DocumentBuilder resultBuilder = XmlUtil.createDocumentBuilder();
Document result = resultBuilder.newDocument(); Document result = resultBuilder.newDocument();
result.setXmlStandalone(true);
log.info("【webservice接到请求】order:{}", order); log.info("【webservice接到请求】order:{}", order);
Document xml = XmlUtil.parseXml(order); Document xml = XmlUtil.parseXml(order);
Element element = xml.getDocumentElement(); Element element = xml.getDocumentElement();
@ -343,8 +347,8 @@ public class InvoiceCheckWebServiceImpl {
LinkedHashMap<String,String> getInvoiceMap = new LinkedHashMap(); LinkedHashMap<String,String> getInvoiceMap = new LinkedHashMap();
if (InvoiceType.ER_SHOU_CHE_PIAO.getCode().equals(invoiceCheck.getFpzl())) { if (InvoiceType.ER_SHOU_CHE_PIAO.getCode().equals(invoiceCheck.getFpzl())) {
//二手车相关结果 //二手车相关结果
getInvoiceMap.put("fpdm",invoiceCheck.getFpdm()); getInvoiceMap.put("fpdm", invoiceCheck.getFpdm() );
getInvoiceMap.put("fphm",invoiceCheck.getFphm()); getInvoiceMap.put("fphm", invoiceCheck.getFphm() );
getInvoiceMap.put("kprq",newKprq); getInvoiceMap.put("kprq",newKprq);
getInvoiceMap.put("gfmc",invoiceCheck.getInvoiceCheckUsedCar().getMfdwgr()); getInvoiceMap.put("gfmc",invoiceCheck.getInvoiceCheckUsedCar().getMfdwgr());
getInvoiceMap.put("gfsh",invoiceCheck.getInvoiceCheckUsedCar().getMfdwdmsfzh()); getInvoiceMap.put("gfsh",invoiceCheck.getInvoiceCheckUsedCar().getMfdwdmsfzh());
@ -414,7 +418,7 @@ public class InvoiceCheckWebServiceImpl {
} else if (InvoiceType.JUAN_PIAO.getCode().equals(invoiceCheck.getFpzl())) { } else if (InvoiceType.JUAN_PIAO.getCode().equals(invoiceCheck.getFpzl())) {
//卷票 //卷票
getInvoiceMap.put("fpdm",invoiceCheck.getFpdm()); getInvoiceMap.put("fpdm",invoiceCheck.getFpdm());
getInvoiceMap.put("fphm",invoiceCheck.getFphm()); getInvoiceMap.put("fphm", invoiceCheck.getFphm());
getInvoiceMap.put("kprq",newKprq); getInvoiceMap.put("kprq",newKprq);
getInvoiceMap.put("gfmc",invoiceCheck.getGmfmc()); getInvoiceMap.put("gfmc",invoiceCheck.getGmfmc());
getInvoiceMap.put("gfsh",invoiceCheck.getGmfsbh()); getInvoiceMap.put("gfsh",invoiceCheck.getGmfsbh());
@ -693,6 +697,7 @@ public class InvoiceCheckWebServiceImpl {
Element jshj = jsonElement(result, "jshj", jshjLinkedHashMap); Element jshj = jsonElement(result, "jshj", jshjLinkedHashMap);
getInvoiceDoc.appendChild(jshj); getInvoiceDoc.appendChild(jshj);
} }
return buildResult(result, "1", "查验成功", getInvoiceDoc); return buildResult(result, "1", "查验成功", getInvoiceDoc);
} }
@ -708,6 +713,7 @@ public class InvoiceCheckWebServiceImpl {
Element element = result.createElement(key); Element element = result.createElement(key);
element.setTextContent(value); element.setTextContent(value);
parent.appendChild(element); parent.appendChild(element);
}); });
return parent; return parent;
} }

Loading…
Cancel
Save