package com.boying.controller.phone;
|
|
import cn.hutool.core.date.DateUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import com.boying.common.ReturnData;
|
import com.boying.common.SystemConfigProperties;
|
import com.boying.entity.*;
|
import com.boying.util.FileUtil;
|
import com.boying.util.HTTPEntityUtil;
|
import com.boying.util.ObjectToMapUtil;
|
import com.google.gson.Gson;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@RequiredArgsConstructor
|
public class EticketController {
|
private final SystemConfigProperties systemConfigProperties;
|
|
/**
|
* 电子票据制作流程一 : 开具电子缴款书->发开具电子票据申请->获取电子票据文件
|
*/
|
|
|
public static void main(String[] args) {
|
//直接开票
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss");
|
String format = sdf.format(new Date());
|
String format2 = sdf2.format(new Date());
|
String idStr = 111111+"";
|
String dateStr = DateUtil.currentSeconds()+"";
|
String l = idStr + dateStr;
|
|
List< DirectTicket.info> infos = new ArrayList<>();
|
//开票申请
|
DirectTicket.info info = new DirectTicket.info();
|
info.setOrdernum(1);
|
info.setAmt(3.0);
|
info.setAmount(1);
|
info.setIncitemcode("072101");
|
info.setIncitemname("停车泊位及公共停车场等有偿使用收入");
|
infos.add(info);
|
//list转json
|
Gson gson = new Gson();
|
String json = gson.toJson(infos);
|
|
DirectTicket directTicket = new DirectTicket();
|
directTicket.setBizcode(l);
|
directTicket.setIssuedate(format);
|
directTicket.setIssuetime(format2);
|
directTicket.setPayerpartytype("1");
|
directTicket.setPayer("冀A0C5MA");
|
directTicket.setAmt(3.0);
|
directTicket.setUsername("张娇");
|
directTicket.setChecker("乔宁");
|
directTicket.setPayinfo(json);
|
directTicket.setState(1);
|
|
String jsonStr = JSON.toJSONString(directTicket, SerializerFeature.WriteDateUseDateFormat);
|
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/directmkoteinvoice", HTTPEntityUtil.setEntity(map), ReturnData.class);
|
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
|
String txt = sdf3.format(new Date())+"申请开票实体为:"+directTicket+",\n";
|
txt += map+",\n";
|
if(entity.getBody().getCode() ==1 ){
|
//申请成功,去获取开票文件
|
//System.out.println(entity.getBody());
|
Object o = entity.getBody().getData().get(0);
|
String s = JSON.toJSONString(o);
|
Map<String,Object> mapTypes = (Map)JSON.parse(s);
|
System.out.println("bizcode:"+l);
|
System.out.println("einvoicecode:"+(String) mapTypes.get("einvoicecode"));
|
System.out.println("einvoicenumber:"+(String) mapTypes.get("einvoicenumber"));
|
System.out.println("randomnumber:"+(String) mapTypes.get("randomnumber"));
|
System.out.println("einvoiceid:"+(String) mapTypes.get("einvoiceid"));
|
System.out.println("einvoicefilename:"+(String) mapTypes.get("einvoicefilename"));
|
}else {
|
|
}
|
}
|
|
public static void main9(String[] args) {
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("einvoicecode", "");
|
map1.put("einvoicenumber","");
|
map1.put("bizcode", "");
|
map1.put("randomnumber","");
|
map1.put("billfiletype",1);
|
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss");
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/geteinvoicebybizcode", HTTPEntityUtil.setEntity(map1), ReturnData.class);
|
if(entity.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
Object o1 = entity.getBody().getData().get(0);
|
String s1 = JSON.toJSONString(o1);
|
EticketFile eticketFile = JSONObject.parseObject(s1, EticketFile.class);
|
System.out.println(eticketFile);
|
FileInfo fileInfo = FileUtil.generateBase64StringToFile(eticketFile.getEinvoicefile(), 1,1);
|
if(fileInfo != null){
|
System.out.println(fileInfo);
|
}
|
}else {
|
}
|
}
|
|
|
public static void main4(String[] args) {
|
long l = DateUtil.currentSeconds();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
String format = sdf.format(new Date());
|
List< ApplyTicket.detail> details = new ArrayList<>();
|
ApplyTicket.detail detail = new ApplyTicket.detail();
|
detail.setItemstandardtype("");
|
detail.setAmount(1);
|
detail.setAmt(0.1);
|
detail.setIncitemcode("072101");
|
detail.setMeasureunit("");
|
details.add(detail);
|
|
ApplyTicket applyTicket = new ApplyTicket();
|
applyTicket.setBusinum(l+"");
|
applyTicket.setFilldate(format);
|
applyTicket.setPayer("峰峰智慧停车");
|
applyTicket.setPayeraccount("");
|
applyTicket.setPayerbank("");
|
applyTicket.setPayerphonenumber("15533337095");
|
applyTicket.setPayee("河北省财政厅");
|
applyTicket.setAmt(0.1);
|
applyTicket.setMemo("");
|
applyTicket.setOverdate("");
|
applyTicket.setState(1);
|
applyTicket.setDetails(details);
|
String jsonStr = JSON.toJSONString(applyTicket, SerializerFeature.WriteDateUseDateFormat);
|
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/applyeticketnum", HTTPEntityUtil.setEntity(map), ReturnData.class);
|
|
if(entity.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
Object o = entity.getBody().getData().get(0);
|
String s = JSON.toJSONString(o);
|
Map<String,Object> map1 = (Map)JSON.parse(s);
|
String payurl = (String)map1.get("payurl");
|
System.out.println(payurl);
|
}
|
//ReturnData(code=1, msg=申请成功, total=0, data=[{filldate=2022-12-20, eticketnum=13040622000000000049, amt=0.1, payurl=, payinfo=[{"incitemname":"停车泊位及公共停车场等有偿使用收入","amount":1,"incitemcode":"072101","amt":0.1,"ordernum":1}], payer=峰峰智慧停车, payee=河北省财政厅, businum=1671548968, payerbank=, payeraccount=, writedate=2022-12-20 23:10:24, paybankname=农业银行、中国银行、建设银行、河北省农村信用社联合社、邮政储蓄银行, id=6de66ef8-8078-11ed-b059-52540035b66d, sn=e0a682dc-a95e-46ab-810f-850fc7fc9c41}], singleData=null)
|
}
|
|
public static void main8(String[] args) throws IllegalAccessException {
|
long l = DateUtil.currentSeconds();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss");
|
String format = sdf.format(new Date());
|
String format2 = sdf2.format(new Date());
|
|
//项目信息
|
List< Mkoteinvoice.info> infos = new ArrayList<>();
|
Mkoteinvoice.info info = new Mkoteinvoice.info();
|
info.setOrdernum(1);
|
info.setAmt(1);
|
info.setAmount(1);
|
info.setIncitemcode("072101");
|
info.setIncitemname("停车泊位及公共停车场等有偿使用收入");
|
infos.add(info);
|
//list转json
|
Gson gson = new Gson();
|
String json = gson.toJson(infos);
|
|
Mkoteinvoice mkoteinvoice = new Mkoteinvoice();
|
mkoteinvoice.setEticketnum("13040622000000640505");
|
mkoteinvoice.setIssuedate(format);
|
mkoteinvoice.setIssuetime(format2);
|
mkoteinvoice.setPayerpartytype("1");
|
mkoteinvoice.setPayer("峰峰智慧停车");
|
mkoteinvoice.setAmt(1);
|
mkoteinvoice.setUsername("张娇");
|
mkoteinvoice.setChecker("乔宁");
|
mkoteinvoice.setPayinfo(json);
|
mkoteinvoice.setState(1);
|
System.out.println(mkoteinvoice);
|
String jsonStr = JSON.toJSONString(mkoteinvoice, SerializerFeature.WriteDateUseDateFormat);
|
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/mkoteinvoice", HTTPEntityUtil.setEntity(map), ReturnData.class);
|
System.out.println(entity.getBody());
|
if(entity.getBody().getCode() ==1 ){
|
//申请成功,去获取开票文件
|
Object o = entity.getBody().getData().get(0);
|
String s = JSON.toJSONString(o);
|
Map<String,Object> mapTypes = (Map)JSON.parse(s);
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("einvoicecode", mapTypes.get("einvoicecode"));
|
map1.put("einvoicenumber",mapTypes.get("einvoicenumber"));
|
map1.put("eticketnumber", mapTypes.get("eticketnum"));
|
map1.put("randomnumber", mapTypes.get("randomnumber"));
|
map1.put("billfiletype",1);
|
RestTemplate restTemplate2 = new RestTemplate();
|
ResponseEntity<ReturnData> entity2 = restTemplate2.postForEntity("http://10.255.200.204:7991/geteinvoice", HTTPEntityUtil.setEntity(map1), ReturnData.class);
|
if(entity2.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
Object o1 = entity.getBody().getData().get(0);
|
String s1 = JSON.toJSONString(o1);
|
EticketFile eticketFile = JSONObject.parseObject(s1, EticketFile.class);
|
System.out.println(eticketFile);
|
FileInfo fileInfo = FileUtil.generateBase64StringToFile(eticketFile.getEinvoicefile(), 1,1);
|
System.out.println(fileInfo);
|
// fileInfoService.saveOrUpdate(fileInfo);
|
// orderRecord.setFileId(fileInfo.getId());
|
// orderRecordService.saveOrUpdate(orderRecord);
|
// payController.ticketIsOk(orderRecord);
|
}
|
//ReturnData(code=1, msg=获取成功, total=0, data=[{randomnumber=819342, einvoicefilename=130112220011112122, einvoiceid=2212111100-22211031, einvoicenumber=0011112122, eticketnum=1304062200000065750X, state=1, einvoicecode=13011222}], singleData=null)
|
}
|
}
|
|
public static void main6(String[] args) throws IllegalAccessException {
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("einvoicecode","13011222");
|
map1.put("einvoicenumber","0011112122");
|
map1.put("eticketnumber","1304062200000065750X");
|
map1.put("randomnumber","819342");
|
map1.put("billfiletype",1);
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/geteinvoice", HTTPEntityUtil.setEntity(map1), ReturnData.class);
|
System.out.println(entity.getBody());
|
if(entity.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
Object o = entity.getBody().getData().get(0);
|
String s = JSON.toJSONString(o);
|
EticketFile eticketFile = JSONObject.parseObject(s, EticketFile.class);
|
System.out.println(eticketFile);
|
FileInfo fileInfo = FileUtil.generateBase64StringToFile(eticketFile.getEinvoicefile(), 1,1);
|
System.out.println(fileInfo);
|
}
|
|
}
|
|
public static void main7(String[] args) {
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("eticketnum","1304062200000065750X");
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/search/einvoicestatus", HTTPEntityUtil.setEntity(map1), ReturnData.class);
|
System.out.println(entity.getBody());
|
//ReturnData(code=1, msg=查询成功, total=0, data=[{randomnumber=264640, einvoicefilename=130112220011112124, einvoiceid=4212111100-22211031, einvoicenumber=0011112124, eticketnum=13040622000000640564, state=1, einvoicecode=13011222, info=开票成功}], singleData=null)
|
}
|
|
public static void main5(String[] args) {
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("eticketnum","13040622000000640564");
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity("http://10.255.200.204:7991/search/eticket", HTTPEntityUtil.setEntity(map1), ReturnData.class);
|
System.out.println(entity.getBody());
|
//ReturnData(code=1, msg=查询成功, total=0, data=[{filldate=2022-12-22, payeeaccount=13001645408050002448, bankaffirm=13061890816FPJZDGVS, eticketnum=13040622000000640564, amt=1.0, bankstation=130618908, payway=2, admdivcode=130406, payinfo=[{"incitemname":"停车泊位及公共停车场等有偿使用收入","amount":1,"incitemcode":"072101","amt":1,"ordernum":1}], payer=峰峰智慧停车, paybankdt=2022-12-22 15:14:59, payeebank=建行邯郸市峰峰支行, payee=峰峰矿区非税收入服务中心, payerbank=, payeraccount=, invoicingpartyname=邯郸市峰峰矿区综合行政执法局, invoicingpartycode=506002}], singleData=null)
|
// payinfo=[{"incitemname":"停车泊位及公共停车场等有偿使用收入","amount":1,"incitemcode":"072101","amt":1,"ordernum":1}]
|
}
|
|
//获取缴款书
|
public void getAPPLYETCKETNUM(ApplyTicket applyTicket) throws IllegalAccessException {
|
long l = DateUtil.currentSeconds();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss");
|
String format = sdf.format(new Date());
|
String format2 = sdf2.format(new Date());
|
|
String jsonStr = JSON.toJSONString(applyTicket, SerializerFeature.WriteDateUseDateFormat);
|
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
|
String urlRoad = systemConfigProperties.getAPPLYETCKETNUM();
|
String urlIp = systemConfigProperties.getIp4();
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class);
|
if(entity.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
//判断开票项
|
Object o = entity.getBody().getData().get(0);
|
Map<String, Object> objectMap = ObjectToMapUtil.objectToMap(o);
|
Object payinfo = objectMap.get("payinfo");
|
List<Mkoteinvoice.info> infos = new ArrayList<>();
|
if(payinfo instanceof ArrayList<?>){
|
for (Object b : (List<?>) payinfo) {
|
infos.add((Mkoteinvoice.info)o);
|
}
|
}
|
//申请成功,开具电子票据申请
|
//list转json
|
Gson gson = new Gson();
|
String json = gson.toJson(infos);
|
|
Mkoteinvoice mkoteinvoice = new Mkoteinvoice();
|
mkoteinvoice.setEticketnum( (String) objectMap.get("eticketnum"));
|
mkoteinvoice.setIssuedate(format);
|
mkoteinvoice.setIssuetime(format2);
|
mkoteinvoice.setPayerpartytype("1");
|
mkoteinvoice.setPayer( (String) objectMap.get("payer"));
|
mkoteinvoice.setAmt((double) objectMap.get("amt"));
|
mkoteinvoice.setUsername("峰峰执法局");
|
mkoteinvoice.setChecker("峰峰执法局");
|
mkoteinvoice.setPayinfo(json);
|
getMKOTEINVOICE(mkoteinvoice);
|
}
|
}
|
|
//发开具电子票据申请
|
public void getMKOTEINVOICE(Mkoteinvoice mkoteinvoice) throws IllegalAccessException {
|
String jsonStr = JSON.toJSONString(mkoteinvoice, SerializerFeature.WriteDateUseDateFormat);
|
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
|
String urlRoad = systemConfigProperties.getMKOTEINVOICE();
|
String urlIp = systemConfigProperties.getIp4();
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class);
|
if(entity.getBody().getCode() == 1){
|
System.out.println(entity.getBody());
|
Object o = entity.getBody().getData().get(0);
|
Map<String, Object> objectMap = ObjectToMapUtil.objectToMap(o);
|
Map<String,Object> map1 = new HashMap<>();
|
map1.put("einvoicecode",(String) objectMap.get("einvoicecode"));
|
map1.put("einvoicenumber",(String) objectMap.get("einvoicenumber"));
|
map1.put("eticketnumber",(String) objectMap.get("eticketnum"));
|
map1.put("randomnumber",(String) objectMap.get("randomnumber"));
|
map1.put("billfiletype","1");
|
getGETEINVOICE(map1);
|
}
|
}
|
|
//获取电子票据文件(根据缴款码)
|
public void getGETEINVOICE(Map<String,Object> map){
|
String urlRoad = systemConfigProperties.getGETEINVOICE();
|
String urlIp = systemConfigProperties.getIp4();
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class);
|
|
}
|
|
//获取缴款码
|
public void getETICKETNUM(String businum){
|
String urlIp = systemConfigProperties.getIp4();
|
String urlRoad = systemConfigProperties.getETICKETNUM();
|
Map<String,Object> map = new HashMap<>();
|
map.put("businum",businum);
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class);
|
System.out.println(entity.getBody());
|
if(entity.getBody().getCode()==1){
|
// return entity.getBody().getData();
|
}
|
}
|
|
|
//查询开票状态
|
public void getMEINVOICESTATUS(String bizcode){
|
String urlIp = systemConfigProperties.getIp4();
|
String urlRoad = systemConfigProperties.getMEINVOICESTATUS();
|
Map<String,Object> map = new HashMap<>();
|
map.put("bizcode",bizcode);
|
RestTemplate restTemplate = new RestTemplate();
|
ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class);
|
System.out.println(entity.getBody());
|
}
|
|
|
}
|