Commit ce44d038 authored by 吴琼's avatar 吴琼

交易凭证

parent fabd338e
......@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
......@@ -145,9 +146,9 @@ public class TransactionReceiptRecordRest {
//导出压缩包
@RequestMapping("/orderQuery/exportTransactionZipFile")
@ResponseBody
public JsonResult exportTransactionZipFile(HttpServletRequest request) {
public JsonResult exportTransactionZipFile(HttpServletRequest request, HttpServletResponse response) {
try{
return transactionReceiptRecordService.exportZipFile(request);
return transactionReceiptRecordService.exportZipFile(request,response);
}catch(Exception e){
e.printStackTrace();
return JsonResult.buildErrorStateResult("导出文件出现错误");
......
......@@ -6,6 +6,7 @@ import cn.quantgroup.customer.rest.vo.transaction.TransactionReceiptVO;
import org.springframework.data.domain.Page;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
......@@ -15,7 +16,7 @@ public interface ITransactionReceiptRecordService {
JsonResult importTransactionReceiptRecord(MultipartFile file) throws IOException;
JsonResult exportZipFile(HttpServletRequest request) throws Exception;
JsonResult exportZipFile(HttpServletRequest request, HttpServletResponse response) throws Exception;
JsonResult checkCanExport();
......
package cn.quantgroup.customer.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import cn.quantgroup.customer.entity.TransactionReceiptRecord;
import cn.quantgroup.customer.exception.BusinessException;
import cn.quantgroup.customer.rest.vo.transaction.TransactionReceiptRecordVO;
......@@ -7,6 +9,7 @@ import cn.quantgroup.customer.repo.TransactionReceiptRecordRepo;
import cn.quantgroup.customer.rest.param.transactionreceipt.TransactionReceiptRecordQuery;
import cn.quantgroup.customer.rest.vo.JsonResult;
import cn.quantgroup.customer.rest.vo.transaction.*;
import cn.quantgroup.customer.service.IFileService;
import cn.quantgroup.customer.service.ITransactionReceiptRecordService;
import cn.quantgroup.customer.service.http.IHttpService;
import cn.quantgroup.customer.util.ExcelUtil;
......@@ -24,6 +27,7 @@ import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
......@@ -39,9 +43,13 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.IOUtils;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
import java.util.List;
......@@ -59,9 +67,15 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
@Autowired
private UserSdkImpl userSdk;
@Autowired
private IFileService fileService;
@Value("${kdsp-operation}")
private String kdspOperationUrl;
//@Value("${customer.contract.http}")
private String contractUrl;
@Value("${passportapi2.tjzimu.http}")
private String userSysUrl;
......@@ -239,7 +253,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
}
//导出zip压缩包文件
public JsonResult exportZipFile(HttpServletRequest request) throws Exception {
public JsonResult exportZipFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
//调用电商接口获取对应数据
log.info("[TransactionReceiptRecordServiceImpl.exportZipFile begin]");
//查询需要导出的数据-导入成功的数据
......@@ -247,15 +261,13 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
if(CollectionUtils.isEmpty(transactionReceiptRecordList)){
return JsonResult.buildErrorStateResult("没有可以导出得数据");
}
String realPath = request.getSession().getServletContext().getRealPath("/");
//String basicPath ="/transaction";
//String basicPath="D:\\交易凭证0225";
List <Map<String,Object>> filePathList =new ArrayList<>();
log.info("[TransactionReceiptRecordServiceImpl.kdspOperationUrl 调用kdsp-op 接口begin]");
for(TransactionReceiptRecord record : transactionReceiptRecordList){
Integer userId = record.getUserId();
String orderNo = record.getOrderNo();
//调用kdsp接口获取交易凭证订单信息
String url = kdspOperationUrl + "/api/kdsp/op/fa-cui/transaction-proof/query";
//String url = "http://kdsp-operation-qa2.liangkebang.net/api/kdsp/op/fa-cui/transaction-proof/query";
try {
Map<String, String> header = Maps.newHashMap();
header.put("Content-type", "application/json");
......@@ -299,32 +311,102 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
continue;
}
//生成pdf
String filePath =basePath +"/"+record.getBatchNo()+record.getUserName();
FileToZip.mkdir(filePath);
filePath = filePath+"/"+record.getOrderNo()+".pdf";
generatePDF(transactionReceiptVOList.get(0),filePath);
basePath= "D:/交易凭证";
//String basicPath="D:\\交易凭证0225";
String directory ="/"+record.getBatchNo()+record.getUserName()+"/";
FileToZip.mkdir(basePath+directory);
String pdfFileName = record.getOrderNo()+".pdf";
generatePDF(transactionReceiptVOList.get(0),basePath+directory+pdfFileName);
//保存到文件服务器上
SFTPUtil sftpUtil = new SFTPUtil(username,password,host,port);
/*SFTPUtil sftpUtil = new SFTPUtil(username,password,host,port);
sftpUtil.login();
log.info("uploadFile | 成功连接ftp");
//sftpUtil.upload(basePath,directory,okFileName,new ByteArrayInputStream(okFileData));
sftpUtil.logout();
//调用电子签章接口,电子签章回调更新签章状态
//todo
//导出成功
record.setExportStatus(1);
transactionReceiptRecordRepo.save(record);
File file = new File(pdfFileName);
InputStream is = new FileInputStream(file);
sftpUtil.upload(basePath,directory,pdfFileName,is);
sftpUtil.logout();*/
//将文件路径和useId放入list,进行签章
Map<String,Object> map =Maps.newHashMap();
map.put("userId",record.getUserId());
map.put("fileAddress",basePath+directory+pdfFileName);
filePathList.add(map);
}
} catch (Exception e) {
log.error("[TransactionReceiptRecordServiceImpl][exportZipFile] 网络通讯异常,userId:{},ex:{}", ExceptionUtils.getStackTrace(e));
return JsonResult.buildErrorStateResult(e.getMessage());
}
}
log.info("[TransactionReceiptRecordServiceImpl.kdspOperationUrl 调用kdsp-op 接口end]");
//调用签章接口
FileOutputStream fos1 = new FileOutputStream(new File("D:/交易凭证.zip"));
/*String url = contractUrl + "/contract/batch/sign";
Map<String, String> header = Maps.newHashMap();
header.put("Content-type", "application/json");
Map param = Maps.newHashMap();
if (CollectionUtils.isNotEmpty(filePathList)) {
param.put("fileList", filePathList);
}
String contractResult = httpService.post(url, header, param);
JSONObject json = JSONObject.parseObject(contractResult);
String jsonResult = json.getString("data");
String businessCode = json.getString("businessCode");*/
//下载签章文件
/* SFTPUtil sftpUtil = new SFTPUtil(username,password,host,port);
sftpUtil.login();
log.info("downloadFile | 成功连接ftp");
sftpUtil.download("","");*/
//转换成zip包
File file = ZipUtil.zip(basePath, basePath+"/交易凭证.zip");//zip 包保存路径
//sftpUtil.logout();
FileInputStream is = new FileInputStream(file);
byte[] fileData = IOUtils.readNBytes(is, is.available());
//FileOutputStream fos1 = new FileOutputStream(new File("D:/交易凭证.zip"));
//FileToZip.toZip(basicPath, fos1,true);
return JsonResult.buildSuccessResult(null,null);
//返回给前端
return this.outputFile(response,"交易凭证.zip",fileData ,100,20);
}
public JsonResult outputFile(HttpServletResponse response, String fileName,
byte[] file,Integer successCount,Integer failCount){
if (ArrayUtils.isEmpty(file)) {
log.info("get file download url failed.");
return JsonResult.buildErrorStateResult("file is null");
}
// 设置相关头信息
response.setContentType("multipart/form-data");
try {
fileName = URLEncoder.encode(fileName, "UTF8");
} catch (UnsupportedEncodingException e) {
log.error("fileName encode failed. errorMessage[{}]", e.getMessage());
return JsonResult.buildErrorStateResult("fileName encode failed");
}
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addDateHeader("Expries", 0);
// 返回文件
OutputStream out = null;
try {
out = response.getOutputStream();
out.write(file);
out.flush();
} catch (IOException e) {
log.error("download file failed. errorMessage[{}]", e.getMessage());
return JsonResult.buildErrorStateResult("download file failed");
} finally {
if (null != out) {
try {
out.close();
} catch (IOException e) {
log.error("OutputStream close failed. errorMessage[{}]", e.getMessage());
}
}
}
Map map =Maps.newHashMap();
map.put("successCount",successCount);
map.put("failCount",failCount);
return JsonResult.buildSuccessResult("ok",map);
}
/**
......@@ -567,8 +649,6 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
ReceiverVO receiverVO =transactionReceiptVO.getReceiver();
//物流信息
List<LogisticsVO> logisticsVOList = transactionReceiptVO.getLogisticsList();
//物流详情
//List<logisticsDetailVO> logisticsDetails = logisticsVO.getDetailList();
Document document = new Document(PageSize.A4);
try {
PdfWriter.getInstance(document, new FileOutputStream(filePath));
......@@ -611,7 +691,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
table.addCell(new PdfPCell(new Phrase(ITextPDFUtil.getUTF8String("支付方式"), font))).setMinimumHeight(18);
//查询手机号
UserSysResult<XUser> user = userSdk.getService().findUserByUserId(orderVO.getUserId());
//第5行数据iTextITextPDFUtil.
//第5行数据
if(user !=null && user.getData() !=null){
table.addCell(new Phrase(ITextPDFUtil.getUTF8String(user.getData().getPhoneNo()), font));
}else{
......
......@@ -7,11 +7,8 @@ import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.Properties;
import java.util.Vector;
import org.slf4j.Logger;
......@@ -109,8 +106,7 @@ public class SFTPUtil {
}
}
this.sftp.put(input, sftpFileName + ".tmp");
this.sftp.rename(sftpFileName + ".tmp", sftpFileName);
this.sftp.put(input, sftpFileName);
}
public void download(String directory, String downloadFile, String saveDirectory, String saveFile) throws SftpException, FileNotFoundException {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment