package com.tenwa.app.invoice.action; import java.util.ArrayList; import java.util.List; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import com.alibaba.fastjson.JSONObject; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.JBOException; import com.amarsoft.awe.Configure; import com.tenwa.app.invoice.data.ResponseEnum; import com.tenwa.app.invoice.pojo.ResultPojo; import com.tenwa.app.invoice.request.InvoiceRequestBase; import com.tenwa.app.invoice.request.InvoiceRequestBody; import com.tenwa.app.invoice.request.InvoiceRequestFyxm; import com.tenwa.app.invoice.request.InvoiceRequestGroup; import com.tenwa.app.invoice.request.InvoiceRequestHead; import com.tenwa.app.invoice.request.InvoiceRequestInput; import com.tenwa.app.invoice.utils.JaxbUtil; import com.tenwa.app.invoice.utils.PasswordGenerateUtil; import com.tenwa.app.invoice.utils.ResultUtil; public class InvoiceRequest { private String url ="" ; private String appId="" ; private String fplxdm=""; public InvoiceRequest(String fplxdm) { this.fplxdm = fplxdm; } public InvoiceRequest() { } public ResultPojo send(BizObject confirmBizObject,List confirmDetailList) throws JBOException{ Configure config = Configure.getInstance(); try { url = config.getConfigure("INVOICE_URL") ; appId = config.getConfigure("INVOICE_APPID") ; } catch (Exception e) { e.printStackTrace(); return ResultUtil.error("读取a3web的开票接口配置文件失败"); } InvoiceRequestBase base = new InvoiceRequestBase(); base.setComment("发票开具"); base.setId("FPKJ"); base.setVersion("2.0"); InvoiceRequestHead head = new InvoiceRequestHead(); head.setAppid(this.appId); head.setSid(confirmBizObject.getAttribute("sid").toString()); base.setHead(head); InvoiceRequestBody body = new InvoiceRequestBody(); InvoiceRequestInput input = new InvoiceRequestInput(); input.setFplxdm(confirmBizObject.getAttribute("fplxdm").toString()); input.setKplx("0"); input.setTspz("00"); input.setXhdwdzdh(confirmBizObject.getAttribute("xhdwdzdh").toString()); input.setXhdwyhzh(confirmBizObject.getAttribute("Xhdwyhzh").toString()); input.setGhdwsbh(confirmBizObject.getAttribute("ghdwsbh").toString()); input.setGhdwmc(confirmBizObject.getAttribute("ghdwmc").toString()); input.setGhdwdzdh(confirmBizObject.getAttribute("ghdwdzdh").toString()); input.setGhdwyhzh(confirmBizObject.getAttribute("ghdwyhzh").toString()); input.setHsslbs("0"); input.setZhsl(confirmBizObject.getAttribute("zhsl").toString()); input.setHjje(confirmBizObject.getAttribute("hjje").toString()); input.setHjse(confirmBizObject.getAttribute("hjse").toString()); input.setJshj(confirmBizObject.getAttribute("jshj").toString()); input.setBz(""); input.setSkr(""); input.setFhr(""); input.setKpr(confirmBizObject.getAttribute("kpr").toString()); input.setZyspmc(confirmBizObject.getAttribute("zyspmc").toString()); input.setSpsm(""); input.setSsyf(""); input.setTzdbh(""); input.setYfpdm(""); input.setYfphm(""); input.setGMF_DZYX(""); input.setGMF_SJHM(confirmBizObject.getAttribute("GMF_SJHM").toString()); input.setGMF_OPENID(""); InvoiceRequestFyxm fyxm = new InvoiceRequestFyxm(); List groupList = new ArrayList(); int index=1; for(BizObject confirmDetailBizObject :confirmDetailList){ InvoiceRequestGroup group = new InvoiceRequestGroup(); group.setXh(String.valueOf(index)); group.setFphxz(confirmDetailBizObject.getAttribute("fphxz").toString()); group.setSpmc(confirmDetailBizObject.getAttribute("spmc").toString()); group.setSpsm(confirmDetailBizObject.getAttribute("spsm").toString()); group.setGgxh(confirmDetailBizObject.getAttribute("ggxh").toString()); group.setDw(confirmDetailBizObject.getAttribute("dw").toString()); group.setSpsl(confirmDetailBizObject.getAttribute("spsl").toString()); group.setDj(confirmDetailBizObject.getAttribute("dj").toString()); group.setJe(confirmDetailBizObject.getAttribute("je").toString()); group.setSl(confirmDetailBizObject.getAttribute("sl").toString()); group.setSe(confirmDetailBizObject.getAttribute("Se").toString()); group.setHsbz(confirmDetailBizObject.getAttribute("hsbz").toString()); group.setSpbm(confirmDetailBizObject.getAttribute("spbm").toString()); group.setZxbm(confirmDetailBizObject.getAttribute("zxbm").toString()); group.setYhzcbs(confirmDetailBizObject.getAttribute("yhzcbs").toString()); group.setSlbs(confirmDetailBizObject.getAttribute("slbs").toString()); group.setZzstsgl(confirmDetailBizObject.getAttribute("zzstsgl").toString()); groupList.add(group); ++index; } fyxm.setGroupList(groupList); fyxm.setCount(String.valueOf( groupList.size() )); input.setFyxm(fyxm); body.setYylxdm("1"); body.setInput(input); base.setBody(body); String xml = JaxbUtil.convertToXml(base); System.out.println(xml); ResultPojo result= doPost(xml); return result; //return ResultUtil.error("ERROR[01]"); } public ResultPojo findResult(String sid) throws JBOException{ Configure config = Configure.getInstance(); try { url = config.getConfigure("INVOICE_URL") ; appId = config.getConfigure("INVOICE_APPID") ; } catch (Exception e) { e.printStackTrace(); return ResultUtil.error("读取a3web的开票接口配置文件失败"); } InvoiceRequestBase invoiceRequestBase = new InvoiceRequestBase(); InvoiceRequestHead invoiceRequestHead = new InvoiceRequestHead(); invoiceRequestHead.setAppid(this.appId); invoiceRequestHead.setSid(sid); invoiceRequestBase.setHead(invoiceRequestHead); invoiceRequestBase.setComment("查询开票结果"); invoiceRequestBase.setId("CXKPJG"); invoiceRequestBase.setVersion("1.0"); String xml = JaxbUtil.convertToXml(invoiceRequestBase); ResultPojo result = doPost(xml); return result; } public ResultPojo doPost(String xml){ HttpHeaders httpHeaders = new HttpHeaders(); MultiValueMap param = new LinkedMultiValueMap<>(); httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); param.add("bw",xml) ; RestTemplate restTemplate = new RestTemplate(); HttpEntity> entity = new HttpEntity<>(param, httpHeaders); ResponseEntity response = null ; try { response = restTemplate.exchange(this.url, HttpMethod.POST, entity, String.class); }catch (Exception e){ return ResultUtil.error(ResponseEnum.NETWORK.getMsg()); } System.out.println(response.getBody()); InvoiceRequestBase r = JaxbUtil.converyToJavaBean(response.getBody(), InvoiceRequestBase.class); return ResultUtil.success(r); } }