2018-09-25 11:09:46 +08:00

184 lines
7.7 KiB
Java

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<BizObject> 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<InvoiceRequestGroup> groupList = new ArrayList<InvoiceRequestGroup>();
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<String, Object> param = new LinkedMultiValueMap<>();
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
param.add("bw",xml) ;
RestTemplate restTemplate = new RestTemplate();
HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(param, httpHeaders);
ResponseEntity<String> 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);
}
}