From f990f7e352782c74a5af3b54651cf1a21fc0d099 Mon Sep 17 00:00:00 2001 From: kongdeqiang <123456> Date: 星期日, 23 四月 2023 11:51:54 +0800 Subject: [PATCH] 修改开票 --- src/main/java/com/boying/controller/phone/EticketController.java | 94 +++++++++++ src/main/java/com/boying/entity/OrderRecord.java | 23 +- src/main/java/com/boying/job/YCGetEticketScheduled.java | 156 +++++++++++++++++++ src/main/java/com/boying/entity/DirectTicket.java | 38 ++++ src/main/java/com/boying/job/YCEticketScheduled.java | 127 +++++++++++++++ 5 files changed, 425 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/boying/controller/phone/EticketController.java b/src/main/java/com/boying/controller/phone/EticketController.java index ccb7b2f..07451d6 100644 --- a/src/main/java/com/boying/controller/phone/EticketController.java +++ b/src/main/java/com/boying/controller/phone/EticketController.java @@ -7,10 +7,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature; import com.boying.common.ReturnData; import com.boying.common.SystemConfigProperties; -import com.boying.entity.ApplyTicket; -import com.boying.entity.EticketFile; -import com.boying.entity.FileInfo; -import com.boying.entity.Mkoteinvoice; +import com.boying.entity.*; import com.boying.util.FileUtil; import com.boying.util.HTTPEntityUtil; import com.boying.util.ObjectToMapUtil; @@ -30,6 +27,93 @@ /** * 鐢靛瓙绁ㄦ嵁鍒朵綔娴佺▼涓� 锛� 寮�鍏风數瀛愮即娆句功->鍙戝紑鍏风數瀛愮エ鎹敵璇�->鑾峰彇鐢靛瓙绁ㄦ嵁鏂囦欢 */ + + + 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杞琷son + 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"); + String txt = sdf3.format(new Date())+"鐢宠绁ㄦ嵁鏂囦欢锛�"+map1+",\n"; + 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()); + txt += entity.getBody()+",\n"; + 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(); @@ -73,7 +157,7 @@ //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 main(String[] args) throws IllegalAccessException { + 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"); diff --git a/src/main/java/com/boying/entity/DirectTicket.java b/src/main/java/com/boying/entity/DirectTicket.java new file mode 100644 index 0000000..0dd4a9e --- /dev/null +++ b/src/main/java/com/boying/entity/DirectTicket.java @@ -0,0 +1,38 @@ +package com.boying.entity; + +import lombok.Data; + +/** + * @author kdq + * @version 1.0.0 + * @ClassName DirectTicket.java + * @Description TODO + * @createTime 2023骞�04鏈�23鏃� 08:46:00 + */ +@Data +public class DirectTicket { + private String bizcode; + private String issuedate; + private String issuetime; + private String payerpartytype; + private String payerpartycode; + private String payer; + private String payeraccount; + private String payerbank; + private double amt; + private String payinfo; + private String username; + private String checker; + private String remark; + private int state =1; + private String billtypeid; + + @Data + public static class info{ + private int ordernum; + private String incitemcode; + private String incitemname; + private int amount; + private double amt; + } +} diff --git a/src/main/java/com/boying/entity/OrderRecord.java b/src/main/java/com/boying/entity/OrderRecord.java index 5fffa38..4a5be03 100644 --- a/src/main/java/com/boying/entity/OrderRecord.java +++ b/src/main/java/com/boying/entity/OrderRecord.java @@ -71,8 +71,15 @@ @Column(columnDefinition = "varchar(100) comment 'code2'") private String code2; - @ApiModelProperty(value = "randomnumber") - @Column(columnDefinition = "varchar(100) comment 'randomnumber'") + /** + * 娴佹按鍙� + */ + @ApiModelProperty(value = "涓氬姟娴佹按鍙�") + @Column(columnDefinition = "varchar(100) comment '涓氬姟娴佹按鍙�'") + private String bizCode; + + @ApiModelProperty(value = "鏍¢獙鐮�") + @Column(columnDefinition = "varchar(100) comment '鏍¢獙鐮�'") private String randomnumber; @ApiModelProperty(value = "einvoicefilename") @@ -83,16 +90,16 @@ @Column(columnDefinition = "varchar(100) comment 'einvoiceid'") private String einvoiceid; - @ApiModelProperty(value = "einvoicenumber") - @Column(columnDefinition = "varchar(100) comment 'einvoicenumber'") + @ApiModelProperty(value = "鐢靛瓙绁ㄦ嵁鍙风爜") + @Column(columnDefinition = "varchar(100) comment '鐢靛瓙绁ㄦ嵁鍙风爜'") private String einvoicenumber; - @ApiModelProperty(value = "einvoicecode") - @Column(columnDefinition = "varchar(100) comment 'einvoicecode'") + @ApiModelProperty(value = "鐢靛瓙绁ㄦ嵁浠g爜") + @Column(columnDefinition = "varchar(100) comment '鐢靛瓙绁ㄦ嵁浠g爜'") private String einvoicecode; - @ApiModelProperty(value = "billfiletype") - @Column(columnDefinition = "int comment 'billfiletype'") + @ApiModelProperty(value = "png") + @Column(columnDefinition = "int comment 'png'") private Integer billfiletype; diff --git a/src/main/java/com/boying/job/YCEticketScheduled.java b/src/main/java/com/boying/job/YCEticketScheduled.java new file mode 100644 index 0000000..0c390fd --- /dev/null +++ b/src/main/java/com/boying/job/YCEticketScheduled.java @@ -0,0 +1,127 @@ +package com.boying.job; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.boying.common.ReturnData; +import com.boying.common.SystemConfigProperties; +import com.boying.entity.EticketFile; +import com.boying.entity.FileInfo; +import com.boying.entity.OrderRecord; +import com.boying.service.FileInfoService; +import com.boying.service.OrderRecordService; +import com.boying.util.FileUtil; +import com.boying.util.HTTPEntityUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author kdq + * @version 1.0.0 + * @ClassName YCEticketScheduled.java + * @Description TODO + * @createTime 2023骞�04鏈�23鏃� 10:46:00 + */ +@Slf4j +@Component +public class YCEticketScheduled { + @Autowired + private OrderRecordService orderRecordService; + @Autowired + private FileInfoService fileInfoService; + @Autowired + private SystemConfigProperties systemConfigProperties; + private Boolean taskFlag = false; + + //@Scheduled(cron = "0 0/1 * * * ?") + public void execute() throws Exception { + if (taskFlag == true) { + System.out.println("姝e湪杩愯锛屽己鍒堕��鍑�-------銆�"); + return; + } + QueryWrapper<OrderRecord> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(OrderRecord::getTicketStatus, 2) + .isNotNull(OrderRecord::getEinvoicecode) + .orderByDesc(OrderRecord::getCreateTime); + List<OrderRecord> list = orderRecordService.list(wrapper); + if (list.size() > 0) { + if (list.size() > 50) { + list = list.subList(0, 49); + } + //寮�鍙栧彂绁� + for (OrderRecord orderRecord : list) { + System.out.println("姝e湪鐢宠寮�绁ㄦ枃浠讹細" + orderRecord); + doTicket(orderRecord); + } + } + taskFlag = false; + } + + public void doTicket(OrderRecord orderRecord){ + String urlIp = systemConfigProperties.getIp4(); + String urlRoad = systemConfigProperties.getGETEINVOICEBYBIZCODE(); + Map<String,Object> map1 = new HashMap<>(); + map1.put("einvoicecode", orderRecord.getEinvoicecode()); + map1.put("einvoicenumber",orderRecord.getEinvoicenumber()); + map1.put("bizcode", orderRecord.getBizCode()); + map1.put("randomnumber", orderRecord.getRandomnumber()); + map1.put("billfiletype",1); + SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd_HH_mm_ss"); + String txt = sdf3.format(new Date())+"鐢宠绁ㄦ嵁鏂囦欢锛�"+map1+",\n"; + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity<ReturnData> entity = restTemplate.postForEntity(urlIp+urlRoad, HTTPEntityUtil.setEntity(map1), ReturnData.class); + if(entity.getBody().getCode() == 1){ + System.out.println(entity.getBody()); + txt += entity.getBody()+",\n"; + Object o1 = entity.getBody().getData().get(0); + String s1 = JSON.toJSONString(o1); + EticketFile eticketFile = JSONObject.parseObject(s1, EticketFile.class); + System.out.println(eticketFile); + txt += eticketFile+"\n"; + FileInfo fileInfo = FileUtil.generateBase64StringToFile(eticketFile.getEinvoicefile(), 1,1); + if(fileInfo != null){ + System.out.println(fileInfo); + fileInfoService.saveOrUpdate(fileInfo); + orderRecord.setFileId(fileInfo.getId()); + orderRecord.setTicketStatus(1); + orderRecordService.saveOrUpdate(orderRecord); + txt += fileInfo+"\n"; + writeTxt(txt); + } + }else { + System.out.println(entity.getBody()); + txt += "鏌ヨ鏈夎锛�"+entity.getBody()+",\n"; + writeTxt(txt); + + } + } + + private void writeTxt( String txt) + { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try + { + FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+"鑾峰彇寮�绁ㄦ枃浠舵棩蹇�"+sdf.format(new Date())+".txt",true); + BufferedWriter bw=new BufferedWriter(f); + bw.write(txt); + bw.newLine(); + bw.close(); + } + catch(Exception e) + { + System.out.println("鎵撳嵃閿欒"); + } + } +} diff --git a/src/main/java/com/boying/job/YCGetEticketScheduled.java b/src/main/java/com/boying/job/YCGetEticketScheduled.java new file mode 100644 index 0000000..8c35dcd --- /dev/null +++ b/src/main/java/com/boying/job/YCGetEticketScheduled.java @@ -0,0 +1,156 @@ +package com.boying.job; + +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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.boying.common.ReturnData; +import com.boying.common.SystemConfigProperties; +import com.boying.entity.*; +import com.boying.service.FileInfoService; +import com.boying.service.OrderRecordService; +import com.boying.util.FileUtil; +import com.boying.util.HTTPEntityUtil; +import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.text.SimpleDateFormat; +import java.util.*; + +@Slf4j +@Component +public class YCGetEticketScheduled { + + @Autowired + private OrderRecordService orderRecordService; + @Autowired + private FileInfoService fileInfoService; + @Autowired + private SystemConfigProperties systemConfigProperties; + private Boolean taskFlag = false; + + //@Scheduled(cron = "0 0/1 * * * ?") + public void execute() throws Exception { + if (taskFlag == true) { + System.out.println("姝e湪杩愯锛屽己鍒堕��鍑�-------銆�"); + return; + } + QueryWrapper<OrderRecord> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(OrderRecord::getTicketStatus, 2) + .orderByDesc(OrderRecord::getCreateTime); + List<OrderRecord> list = orderRecordService.list(wrapper); + if (list.size() > 0) { + if (list.size() > 50) { + list = list.subList(0, 49); + } + //寮�鍙栧彂绁� + for (OrderRecord orderRecord : list) { + System.out.println("姝e湪鐢宠寮�绁細" + orderRecord); + doTicket(orderRecord); + } + } + taskFlag = false; + + } + + public void doTicket(OrderRecord orderRecord){ + String urlIp = systemConfigProperties.getIp4(); + String urlRoad = systemConfigProperties.getDIRECTMKOTEINVOICE(); + try { + 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 = orderRecord.getId()+""; + 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(orderRecord.getMoney()); + info.setAmount(1); + info.setIncitemcode("072101"); + info.setIncitemname("鍋滆溅娉婁綅鍙婂叕鍏卞仠杞﹀満绛夋湁鍋夸娇鐢ㄦ敹鍏�"); + infos.add(info); + //list杞琷son + 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(orderRecord.getCarNo()); + directTicket.setAmt(orderRecord.getMoney()); + 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(urlIp+urlRoad, 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()); + txt += entity.getBody()+",\n"; + Object o = entity.getBody().getData().get(0); + String s = JSON.toJSONString(o); + Map<String,Object> mapTypes = (Map)JSON.parse(s); + orderRecord.setEinvoicecode((String) mapTypes.get("einvoicecode")); + orderRecord.setEinvoicenumber((String) mapTypes.get("einvoicenumber")); + orderRecord.setRandomnumber((String) mapTypes.get("randomnumber")); + orderRecord.setEinvoiceid((String) mapTypes.get("einvoiceid")); + orderRecord.setEinvoicefilename((String) mapTypes.get("einvoicefilename")); + orderRecord.setBillfiletype(1); + + txt += orderRecord+",\n"; + writeTxt(txt); + orderRecordService.saveOrUpdate(orderRecord); + }else { + // System.out.println(entity.getBody()); + txt += entity.getBody()+",\n"; + writeTxt(txt); + } + }catch (Exception e){ + System.out.println(orderRecord.getPayCode()+"鐢宠寮�绁ㄥ紓甯�"); + e.printStackTrace(); + } + } + + private void writeTxt( String txt) + { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try + { + FileWriter f = new FileWriter(systemConfigProperties.getLogPath()+"鐢宠寮�绁ㄦ枃浠舵棩蹇�"+sdf.format(new Date())+".txt",true); + BufferedWriter bw=new BufferedWriter(f); + bw.write(txt); + bw.newLine(); + bw.close(); + } + catch(Exception e) + { + System.out.println("鎵撳嵃閿欒"); + } + } + +} + + -- Gitblit v1.9.1