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

交易凭证

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