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("正在运行,强制退出-------》"); return; } QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OrderRecord::getTicketStatus, 2) .isNotNull(OrderRecord::getEinvoicecode) .orderByDesc(OrderRecord::getCreateTime); List list = orderRecordService.list(wrapper); if (list.size() > 0) { if (list.size() > 50) { list = list.subList(0, 49); } //开取发票 for (OrderRecord orderRecord : list) { System.out.println("正在申请开票文件:" + orderRecord); doTicket(orderRecord); } } taskFlag = false; } public void doTicket(OrderRecord orderRecord){ String urlIp = systemConfigProperties.getIp4(); String urlRoad = systemConfigProperties.getGETEINVOICEBYBIZCODE(); Map 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 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("打印错误"); } } }