控制台清单问题处理

beta-enc
dongxiaoke 2 years ago
parent 2de0c15754
commit 7c89a45249
  1. 225
      jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java
  2. 9
      jianshui-income/src/main/java/com/jianshui/income/domain/vo/render/ResponseCheckVO.java
  3. 15
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java

@ -4,10 +4,7 @@ import cn.hutool.core.util.XmlUtil;
import org.w3c.dom.*;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
@ -35,25 +32,94 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
SOAPBody body = message.getSOAPBody();
Node returnNode = body.getFirstChild().getFirstChild();
Node dataNode = returnNode.getFirstChild();
// 修改CDATA标签位置
// body.getFirstChild().getOwnerDocument().setTextContent(XmlUtil.toStr(dataNode));
// body.removeChild(dataNode);
// addCDataToLeafNodes(dataNode);
CDATASection cdata = dataNode.getOwnerDocument().createCDATASection(XmlUtil.toStr(dataNode,"GBK",false,false));
returnNode.removeChild(dataNode);
returnNode.appendChild(cdata);
// String aa = XmlUtil.toStr(dataNode,"GBK",false,false);
// returnNode.replaceChild(XmlUtil.parseXml(aa),dataNode);
// String cdatameg = "<![CDATA["+ XmlUtil.toStr(returnNode.getFirstChild(),"GBK",false,false) +"]]>";
/* String cdatameg = XmlUtil.toStr(returnNode.getFirstChild(), "GBK", false, false);
// CDATASection cdata = childNode.getOwnerDocument().createCDATASection(cdatameg);
cdatameg = cdatameg.replaceAll("&amp;gt;", ">").replaceAll("&lt;", "<").replaceAll("&gt;", ">");
String modifiedContent = cdatameg.replace("]]>", "]] >>");
Element element = body.getOwnerDocument().createElement("return");
CDATASection cdata = body.getFirstChild().getFirstChild().getOwnerDocument().createCDATASection(modifiedContent);
element.appendChild(cdata);
body.removeContents();
body.appendChild(element);
body.getOwnerDocument().getOwnerDocument().getTextContent().replaceAll("]] >>", "]]>");*/
// returnNode.removeChild(dataNode);
// returnNode.getParentNode().appendChild(element);
/* System.out.println(cdatameg);
returnNode.setTextContent(cdatameg);
String modifiedContent = cdatameg.replace("]]>", "]] >");
Element element = body.getFirstChild().getFirstChild().getOwnerDocument().createElement("AAD");
CDATASection cdata = body.getFirstChild().getFirstChild().getOwnerDocument().createCDATASection(modifiedContent);
element.appendChild(cdata);
body.appendChild(element);*/
//
//
// String returnNodeStr = XmlUtil.toStr(returnNode).replaceAll("]]>","]]]]><![CDATA[");
// System.out.println(returnNodeStr);
//
// body.getFirstChild().replaceChild(XmlUtil.parseXml(returnNodeStr),returnNode);
/* System.out.println("1=>" + returnNode.getNodeName() + returnNode.getNodeValue());
System.out.println("1=>" + body.getFirstChild());
CDATASection cdataSection = returnNode.getOwnerDocument().createCDATASection( returnNode.getTextContent() );
returnNode.replaceChild(cdataSection, dataNode);
System.out.println("2=>" + returnNode);*/
message.saveChanges();
// 修改CDATA标签位置
// addCDataToLeafNodes(dataNode);
// CDATASection cdata = dataNode.getOwnerDocument().createCDATASection(XmlUtil.toStr(dataNode,"GBK",false,false));
// returnNode.removeChild(dataNode);
// returnNode.appendChild(cdata);
// addCDataToLeafNodes(cdata);
// CDATASection cdata = dataNode.getOwnerDocument().createCDATASection(XmlUtil.toStr(dataNode,"GBK",false,false));
// returnNode.removeChild(dataNode);
// returnNode.appendChild(cdata);
// TODO: 2023/7/12
// addCDataToLeafNodes(dataNode);
// String nodeStr = XmlUtil.toStr(returnNode.getFirstChild(), "GBK", false, false)
// .replaceAll("&lt;","<").replaceAll("&gt;",">");
// nodeStr = "<![CDATA[" + nodeStr + "]]>";
// dataNode.setTextContent(nodeStr);
// returnNode.replaceChild(dataNode,XmlUtil.parseXml(nodeStr));
// System.out.println(nodeStr);
// 将处理后的XML重新设到SOAP消息中
// System.out.println(nodeStr);
// body.getFirstChild().removeChild(body.getFirstChild().getFirstChild());
// CDATASection cdata = Data.getOwnerDocument().createCDATASection(XmlUtil.toStr(fp, "GBK", false, true));
// body.setTextContent(XmlUtil.toStr(body.getFirstChild()));
message.saveChanges();
} catch (SOAPException e) {
}catch (Exception e) {
throw new RuntimeException(e);
}
} else {
@ -62,6 +128,19 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
return true;
}
/* public String convertDocumentToString(Document document) throws Exception {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); // 忽略 XML 声明
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // 格式化输出
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "*"); // 适用于所有元素的 CDATA
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
return result.getWriter().toString();
}*/
/**
* @Author: kk
* @Description: CDATA类
@ -69,47 +148,97 @@ public class WebserviceResponseHandler implements SOAPHandler<SOAPMessageContext
* @Params:
* @Return
*/
public static void addCDataToLeafNodes(Node returnNode) {
// public static void addCDataToLeafNodes(Node returnNode) {
// NodeList childNodes = returnNode.getChildNodes();
// for (int i = 0; i < childNodes.getLength(); i++) {
// Node childNode = childNodes.item(i);
// if (childNode.getNodeType() == Node.ELEMENT_NODE) {
// addCDataToLeafNodes(childNode);
// } else if (childNode.getNodeType() == Node.TEXT_NODE) {
// CDATASection cdata = childNode.getOwnerDocument().createCDATASection(childNode.getNodeValue() + "]]");
// cdata.setData(cdata.getTextContent() + " ><![CDATA[");
// returnNode.removeChild(childNode);
// returnNode.appendChild(cdata);
// }
// }
//
// }
/*NodeList childNodes = returnNode.getChildNodes();
/**
* cdate处理
*/
// public static void addCDataToLeafNodes(Node node){
// NodeList childNodes = node.getChildNodes();
// for (int i = 0; i < childNodes.getLength(); i++){
// Node childNode = childNodes.item(i);
// Node xiaochildNode = childNode.getFirstChild();
// if (xiaochildNode!=null&&xiaochildNode.getNodeType() == Node.ELEMENT_NODE) {
// addCDataToLeafNodes(childNode);
// }
// else if (xiaochildNode!=null&&xiaochildNode.getNodeType() == Node.TEXT_NODE) {
// // 内容为空
// String cdatameg = "<"+childNode.getNodeName()+">"+"<![CDATA["+xiaochildNode.getNodeValue()+"]]]] >><![CDATA["+"</"+childNode.getNodeName()+">";
// CDATASection cdata = childNode.getOwnerDocument().createCDATASection(cdatameg);
// node.replaceChild(cdata,childNode);
// }else {
// // 内容不为空
// String cdatameg = "<"+childNode.getNodeName()+">"+"]]]] >><![CDATA["+"</"+childNode.getNodeName()+">";
// CDATASection cdata = childNode.getOwnerDocument().createCDATASection(cdatameg);
// node.replaceChild(cdata,childNode);
// }
// }
// }
for (int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
Node firstChild = childNode.getFirstChild();
if (firstChild != null && childNode.getNodeType() == Node.ELEMENT_NODE) {
addCDataToLeafNodes(childNode);
} else if (childNode.getNodeType() == Node.TEXT_NODE) {
String cdatameg = "<" + childNode.getNodeName() + "><![CDATA[" + childNode.getNodeValue() + "]]]]>><![CDATA[</" + childNode.getNodeName() + ">";
String cdatamegRes = cdatameg.replaceAll("<#text>", "").replaceAll("</#text>", "");
childNode.setTextContent(cdatamegRes);
} else {
String cdatameg = "<![CDATA[]]]]>><![CDATA[";
childNode.setTextContent(cdatameg);
}
}*/
String nodeStr = XmlUtil.toStr(returnNode);
String[] nodeStrList = nodeStr.split("<");
String a = "";
for (String s : nodeStrList) {
a = a + "<![CDATA[<" + s + "]]]]>>";
}
System.out.println(a);
}
public static void main(String[] args) {
String aaaa = "<DATA>\n" +
" <fp>\n" +
" <Gfyhzh/>\n" +
" <Kprq>2019-05-23</Kprq>\n" +
" <Jshj>54.00</Jshj>\n" +
" <Xfsh>92370100MA3EKX4426</Xfsh>\n" +
" <Xfyhzh/>\n" +
" <Gfdzdh/>\n" +
" <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] + "]]]]>>";
}
/*String[] aRs = a.split("]]]]");
String b = "";
for (String aR : aRs) {
b = b + "<![CDATA[" + aR + "]]]]";
}*/
System.out.println(a);
}
@Override

@ -2,9 +2,7 @@ package com.jianshui.income.domain.vo.render;
import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.*;
/**
* @Description
@ -14,11 +12,16 @@ import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class ResponseCheckVO {
// @XmlValue
private ResponseCheckDataVO DATA;
@XmlElement(name = "Data")
public ResponseCheckDataVO getDATA() {
return DATA;
}
public void setDATA(ResponseCheckDataVO DATA) {
this.DATA = DATA;
}

@ -814,6 +814,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
if(BeanUtil.isEmpty(printDTO) ||CollectionUtils.isEmpty(printDTO.getDetails())){
throw new JianshuiParamErrorException(ErrorCode.EMPTY_PARAMS, companyservice, "invoice");
}
if(StrUtil.isEmpty(printDTO.getFpbs())){
throw new JianshuiParamErrorException(ErrorCode.EMPTY_PARAMS,companyservice,"发票标识不存在!");
}
List<PrintDetailDTO> details = printDTO.getDetails();
@ -838,7 +841,17 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
//必填参数校验
ValidateUtils.validate(printInvoiceDTO,companyservice,null);
printInvoiceDTO.setPrintKind(0);
// 处理打印标识
String fpbs = printDTO.getFpbs();
if("0".equals(fpbs)){
fpbs = "1";
}else if("1".equals(fpbs)){
fpbs = "0";
}else {
fpbs = "0";
}
printInvoiceDTO.setPrintKind(Integer.valueOf(fpbs));
printInvoiceDTO.setShowPrintDlg(0);
//发起请求

Loading…
Cancel
Save