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.beans.factory.annotation.Autowired; 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 { @Autowired private final SystemConfigProperties systemConfigProperties; /** * 电子票据制作流程一 : 开具电子缴款书->发开具电子票据申请->获取电子票据文件 */ public static void main9(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 = 25238+""; 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); 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("冀DM118N"); directTicket.setAmt(3); directTicket.setUsername("张娇"); directTicket.setChecker("乔宁"); directTicket.setPayinfo(json); directTicket.setState(1); directTicket.setBilltypeid("1252"); String jsonStr = JSON.toJSONString(directTicket, SerializerFeature.WriteDateUseDateFormat); Map map = JSON.parseObject(jsonStr, new TypeReference>() {}); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 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 { System.out.println(entity.getBody()); } /** * ReturnData(code=1, msg=获取成功, total=0, data=[{randomnumber=859719, einvoicefilename=130113230001813560, einvoiceid=0653181000-32311031, einvoicenumber=0001813560, eticketnum=252381686303715, state=1, einvoicecode=13011323}], singleData=null) * bizcode:252381686303715 * einvoicecode:13011323 * einvoicenumber:0001813560 * randomnumber:859719 * einvoiceid:0653181000-32311031 * einvoicefilename:130113230001813560 */ } public static void main(String[] args) { Map map1 = new HashMap<>(); map1.put("bizcode","252381686303715"); RestTemplate restTemplate = new RestTemplate(); ResponseEntity entity = restTemplate.postForEntity("http://10.255.200.204:7991/search/meinvoicestatus", 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 static void main91(String[] args) { Map map1 = new HashMap<>(); map1.put("einvoicecode", "13011323"); map1.put("einvoicenumber","0001813560"); map1.put("bizcode", "252381686303715"); map1.put("randomnumber","859719"); map1.put("billfiletype",1); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss"); RestTemplate restTemplate = new RestTemplate(); ResponseEntity entity = restTemplate.postForEntity("http://10.255.200.204:7991/geteinvoicebybizcode", HTTPEntityUtil.setEntity(map1), ReturnData.class); System.out.println(entity.getBody()); if(entity.getBody().getCode() == 1){ 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 map = JSON.parseObject(jsonStr, new TypeReference>() {}); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 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 map = JSON.parseObject(jsonStr, new TypeReference>() {}); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 mapTypes = (Map)JSON.parse(s); Map 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 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 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 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 map1 = new HashMap<>(); map1.put("eticketnum","1304062200000065750X"); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 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 map = JSON.parseObject(jsonStr, new TypeReference>() {}); String urlRoad = systemConfigProperties.getAPPLYETCKETNUM(); String urlIp = systemConfigProperties.getIp4(); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 objectMap = ObjectToMapUtil.objectToMap(o); Object payinfo = objectMap.get("payinfo"); List 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 map = JSON.parseObject(jsonStr, new TypeReference>() {}); String urlRoad = systemConfigProperties.getMKOTEINVOICE(); String urlIp = systemConfigProperties.getIp4(); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 objectMap = ObjectToMapUtil.objectToMap(o); Map 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 map){ String urlRoad = systemConfigProperties.getGETEINVOICE(); String urlIp = systemConfigProperties.getIp4(); RestTemplate restTemplate = new RestTemplate(); ResponseEntity entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class); } //获取缴款码 public void getETICKETNUM(String businum){ String urlIp = systemConfigProperties.getIp4(); String urlRoad = systemConfigProperties.getETICKETNUM(); Map map = new HashMap<>(); map.put("businum",businum); RestTemplate restTemplate = new RestTemplate(); ResponseEntity 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 map = new HashMap<>(); map.put("bizcode",bizcode); RestTemplate restTemplate = new RestTemplate(); ResponseEntity entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map), ReturnData.class); System.out.println(entity.getBody()); } }