Commit 7c718f58 authored by 吴琼's avatar 吴琼

交易凭证

parent 8ec64449
......@@ -8,11 +8,14 @@ import cn.quantgroup.customer.util.FileToZip;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
......@@ -53,6 +56,7 @@ public class TransactionReceiptRecordRest {
*/
@RequestMapping("/orderQuery/importTransactionReceiptRecord")
@ResponseBody
@Synchronized
public JsonResult importTransactionReceiptRecord(@RequestParam("file")MultipartFile file) {
try{
return transactionReceiptRecordService.importTransactionReceiptRecord(file);
......@@ -141,9 +145,9 @@ public class TransactionReceiptRecordRest {
//导出压缩包
@RequestMapping("/orderQuery/exportTransactionZipFile")
@ResponseBody
public JsonResult exportTransactionZipFile() {
public JsonResult exportTransactionZipFile(HttpServletRequest request) {
try{
return transactionReceiptRecordService.exportZipFile();
return transactionReceiptRecordService.exportZipFile(request);
}catch(Exception e){
e.printStackTrace();
return JsonResult.buildErrorStateResult("导出文件出现错误");
......
......@@ -37,6 +37,10 @@ public class TransactionReceiptRecordQuery {
//更新成功list
private List<String> successList;
//签章成功数量
private Integer successCount;
//更新失败list
private List<String> failList;
//签章失败数量
private Integer failCount;
}
......@@ -5,7 +5,7 @@ import cn.quantgroup.customer.rest.vo.JsonResult;
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 java.io.IOException;
import java.util.List;
......@@ -15,7 +15,7 @@ public interface ITransactionReceiptRecordService {
JsonResult importTransactionReceiptRecord(MultipartFile file) throws IOException;
JsonResult exportZipFile() throws Exception;
JsonResult exportZipFile(HttpServletRequest request) throws Exception;
JsonResult checkCanExport();
......
......@@ -40,10 +40,8 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.criteria.Predicate;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.*;
import java.util.List;
......@@ -64,22 +62,23 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
@Value("${kdsp-operation}")
private String kdspOperationUrl;
@Value("${passportapi2.http}")
@Value("${passportapi2.tjzimu.http}")
private String userSysUrl;
//@Value("${customer.host}")
@Value("${customer.transaction.host}")
private String host;
//@Value("${customer.port}")
@Value("${customer.transaction.port}")
private int port;
//@Value("${customer.username}")
@Value("${customer.transaction.username}")
private String username;
//@Value("${customer.privateKey}")
@Value("${customer.transaction.password}")
private String password;
//@Value("${customer.basePath}")
@Value("${customer.transaction.basePath}")
private String basePath;
@Override
public JsonResult<Page<TransactionReceiptRecordVO>> findRecordsByQuery(TransactionReceiptRecordQuery query) {
log.info("[TransactionReceiptRecordServiceImpl findRecordsByQuery begin],query={}", query);
Page<TransactionReceiptRecord> page = transactionReceiptRecordRepo.findAll((root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
//交易单号
......@@ -101,7 +100,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
return criteriaQuery.getRestriction();
}, new PageRequest(query.getPageNo(), query.getPageSize()));
log.info("[TransactionReceiptRecordServiceImpl findRecordsByQuery] end,query={} ", query);
Page<TransactionReceiptRecordVO> map = page.map(it -> {
TransactionReceiptRecordVO workOrderVO = new TransactionReceiptRecordVO();
workOrderVO.setTradeNo(it.getOrderNo());
......@@ -122,6 +121,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
@Override
public JsonResult importTransactionReceiptRecord(MultipartFile file) throws IOException {
log.info("[TransactionReceiptRecordServiceImpl importTransactionReceiptRecord] end,query={} ", file);
//查询未导出数据最大批次号
Long maxBatchNo = transactionReceiptRecordRepo.findMaxbatchNo(0);
if(maxBatchNo == null || maxBatchNo.longValue() ==0l){
......@@ -129,10 +129,13 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
}
//读取所有数据
log.info("importTransactionReceiptRecord read begin"+file);
//log.info("importTransactionReceiptRecord read begin"+file.getOriginalFilename());
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord read begin");
long begin = System.currentTimeMillis();
List<TransactionReceiptRecord> readList = read(file.getOriginalFilename(), file.getInputStream());
log.info("importTransactionReceiptRecord read end");
long end = System.currentTimeMillis();
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord read end,总耗时:",end-begin);
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord save begin");
if(readList.size()>0){
//0代表初始状态,1代表导入成功,2代表导入失败
for(TransactionReceiptRecord record : readList){
......@@ -158,7 +161,9 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
record.setBatchNo(maxBatchNo);
transactionReceiptRecordRepo.save(record);
}
return JsonResult.buildSuccessResult("success",null);
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord save end");
return updateTransactionRecordsStatus();
//return JsonResult.buildSuccessResult("success",null);
}
return JsonResult.buildErrorStateResult("未读取到数据或读取失败");
}
......@@ -234,15 +239,17 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
}
//导出zip压缩包文件
public JsonResult exportZipFile() throws Exception {
public JsonResult exportZipFile(HttpServletRequest request) throws Exception {
//调用电商接口获取对应数据
final String logPre = "TransactionReceiptRecordServiceImpl.exportZipFile";
log.info("[TransactionReceiptRecordServiceImpl.exportZipFile begin]");
//查询需要导出的数据-导入成功的数据
List<TransactionReceiptRecord> transactionReceiptRecordList= transactionReceiptRecordRepo.selectRecordsByImportStatus(1);
if(CollectionUtils.isEmpty(transactionReceiptRecordList)){
return JsonResult.buildErrorStateResult("没有可以导出得数据");
}
String basicPath="D:\\交易凭证0225";
String realPath = request.getSession().getServletContext().getRealPath("/");
//String basicPath ="/transaction";
//String basicPath="D:\\交易凭证0225";
for(TransactionReceiptRecord record : transactionReceiptRecordList){
Integer userId = record.getUserId();
String orderNo = record.getOrderNo();
......@@ -292,17 +299,17 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
continue;
}
//生成pdf
String filePath =basicPath +"\\"+record.getBatchNo()+record.getUserName();
String filePath =basePath +"/"+record.getBatchNo()+record.getUserName();
FileToZip.mkdir(filePath);
filePath = filePath+"\\"+record.getOrderNo()+".pdf";
filePath = filePath+"/"+record.getOrderNo()+".pdf";
generatePDF(transactionReceiptVOList.get(0),filePath);
//保存到文件服务器上
/* 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();*/
sftpUtil.logout();
//调用电子签章接口,电子签章回调更新签章状态
//todo
//导出成功
......@@ -314,8 +321,9 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
return JsonResult.buildErrorStateResult(e.getMessage());
}
}
//调用签章接口
FileOutputStream fos1 = new FileOutputStream(new File("D:/交易凭证.zip"));
FileToZip.toZip(basicPath, fos1,true);
//FileToZip.toZip(basicPath, fos1,true);
return JsonResult.buildSuccessResult(null,null);
}
......@@ -346,6 +354,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
= transactionReceiptRecordRepo.selectRecordsByImportStatus(0);
//没有校验成功的放入一个list
List<TransactionReceiptRecord> failList = new ArrayList<>();
List<TransactionReceiptRecord> successList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(transactionReceiptRecordList)){
//创建线程池
//ThreadPoolExecutor threadPool = new ThreadPoolExecutor(20, 50,
......@@ -375,9 +384,9 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
throw new BusinessException("");
}*/
//为了性能每次最多传50个
List<List<TransactionReceiptRecord>> splitNList= splitList(transactionReceiptRecordList,50);
//List<List<TransactionReceiptRecord>> splitNList= splitList(transactionReceiptRecordList,50);
//分组校验
for(List<TransactionReceiptRecord> recordList : splitNList){
/* for(List<TransactionReceiptRecord> recordList : splitNList){
//调用金融用户中心校验userId是否一致
String userIds ="";
HashMap<String,TransactionReceiptRecord> map =new HashMap();
......@@ -425,19 +434,76 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
}
JSONObject kJsonObject = JSONObject.parseObject(kJsonResult);
failList = (List<TransactionReceiptRecord>) kJsonObject.get("verifyErrorList");
}*/
for(TransactionReceiptRecord record :transactionReceiptRecordList){
try{
//调用天津自牧用户中心接口
Map<String, String> header = Maps.newHashMap();
header.put("Content-type", "application/x-www-form-urlencoded");
Map param = Maps.newHashMap();
param.put("userIds",record.getUserId());
String userUrl = userSysUrl + "/api/sync/listByUserIds";
//String userUrl = "http://passportapi-qa2.liangkebang.net/api/sync/listByUserIds";
String userResult = httpService.get(userUrl, param);
if (StringUtils.isEmpty(userResult)) {
record.setImportStatus(2);
failList.add(record);
continue;
}
//对比拿到的
JSONObject userJsonObject = JSONObject.parseObject(userResult);
String dataStr = userJsonObject.getString("data");
JSONArray userArray = JSONArray.parseArray(dataStr);
if(userArray.size()<=0){
record.setImportStatus(2);
failList.add(record);
continue;
}
JSONObject object= (JSONObject) userArray.get(0);
String userName = object.getString("name");
if(StringUtils.isNotBlank(userName) && userName.equals(record.getUserName())){
//调用电商接口
String kUrl = kdspOperationUrl + "/api/kdsp/op/fa-cui/transaction-proof/check";
//得到json字符串
String kResult = httpService.post(kUrl, header, param);
JSONObject kJson =JSONObject.parseObject(kResult);
String kJsonResult = kJson.getString("data");
String businessCode = kJson.getString("businessCode");
if(!"0000".equals(businessCode)){
record.setImportStatus(2);
failList.add(record);
continue;
}
JSONObject kJsonObject = JSONObject.parseObject(kJsonResult);
List<TransactionReceiptRecord> errorList = (List<TransactionReceiptRecord>) kJsonObject.get("verifyErrorList");
if(errorList.size()>0){
record.setImportStatus(2);
failList.add(record);
continue;
}
record.setImportStatus(1);
successList.add(record);
}else{
record.setImportStatus(2);
failList.add(record);
}
}catch(Exception e){
failList.add(record);
}
}
//校验全部通过则更新状态
List<TransactionReceiptRecord> sucessList = listrem(transactionReceiptRecordList,failList);
for(TransactionReceiptRecord record :failList){
transactionReceiptRecordRepo.updateTransactionStatusByImportStatus(2,record.getOrderNo());
}
for(TransactionReceiptRecord record :sucessList){
for(TransactionReceiptRecord record :successList){
transactionReceiptRecordRepo.updateTransactionStatusByImportStatus(1,record.getOrderNo());
}
}
return JsonResult.buildSuccessResult("数据状态更新成功",null);
return JsonResult.buildSuccessResult("数据导入成功",null);
}
@Override
public JsonResult updatePDFSignStatus(List<String> sucessList,List<String>failList) {
//pdf签章成功
......
......@@ -573,15 +573,15 @@ public class ITextPDFUtil {
public static void main(String[] args) {
List<String>list =new ArrayList();
list.add("D:\\交易凭证0222\\1王五");
list.add("D:\\交易凭证0222\\1王二");
list.add("D:\\交易凭证0222\\2里三");
list.add("D:\\交易凭证0222\\2里斯");
list.add("D:\\交易凭证0222\\3吴就");
list.add("D:\\交易凭证0222\\3吴还");
list.add("D:/交易凭证0226/1王五");
list.add("D:/交易凭证0226/1王二");
list.add("D:/交易凭证0226/2里三");
list.add("D:/交易凭证0226/2里斯");
list.add("D:/交易凭证0226/3吴就");
list.add("D:/交易凭证0226/3吴还");
for(String str : list){
FileToZip.mkdir(str);
generatePDF(str+"\\"+20220222+".pdf");
generatePDF(str+"/"+20220226+".pdf");
};
//String str = "D:\\交易凭证0219\\1王五\\11.pdf";
//generatePDF(str);
......
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