Commit c4934057 authored by 吴琼's avatar 吴琼

修改

parent b5da1bac
......@@ -290,10 +290,6 @@
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!--<dependency>
<groupId>com.querydsl</groupId>
......
......@@ -36,7 +36,7 @@ public class TransactionReceiptRecord {
private String orderNo;
@Column(name = "batch_no")
private Long batchNo;
private Integer batchNo;
@Column(name = "sign_status")
private Long signStatus;
......
......@@ -11,15 +11,18 @@ import java.util.List;
public interface TransactionReceiptRecordRepo extends JpaRepository<TransactionReceiptRecord, Long>, JpaSpecificationExecutor<TransactionReceiptRecord> {
@Query(value = "select max(batch_no) from transaction_receipt_record where export_status =?1 ", nativeQuery = true)
Long findMaxbatchNo(Integer status);
Integer findMaxbatchNo(Integer status);
@Query(value = "select count(1) from transaction_receipt_record where user_id =?1 and user_name =?2 and order_no =?3 ", nativeQuery = true)
Long selectCountByUserIdAndOrderNo(Integer userId,String userName,String orderNo);
Integer selectCountByUserIdAndOrderNo(Integer userId,String userName,String orderNo);
@Query(value = "select * from transaction_receipt_record where import_status = ?1", nativeQuery = true)
List<TransactionReceiptRecord> selectRecordsByImportStatus(Integer status);
@Query(value = "select * from transaction_receipt_record where import_status = ?1 and export_status !=2 ", nativeQuery = true)
@Query(value = "select * from transaction_receipt_record where order_no = ?1 and user_id =?2 and user_name =?3 and import_status != 2 and export_status = 0 ", nativeQuery = true)
List<TransactionReceiptRecord> selectRecordsByOrderNo(String orderNo,Integer userId,String userName);
@Query(value = "select * from transaction_receipt_record where import_status = ?1 and export_status != 1", nativeQuery = true)
List<TransactionReceiptRecord> selectRecordsByImportStatusAndExportStatus(Integer status);
@Query(value = "select count(1) from transaction_receipt_record where import_status =?1 ", nativeQuery = true)
......
......@@ -60,9 +60,8 @@ public class TransactionReceiptRecordRest {
public JsonResult importTransactionReceiptRecord(@RequestParam("file") MultipartFile file) {
try{
return transactionReceiptRecordService.importTransactionReceiptRecord(file);
}catch(IOException e){
e.printStackTrace();
return JsonResult.buildErrorStateResult("上传文件出现错误");
}catch(Exception e){
return JsonResult.buildErrorStateResult(e.getMessage());
}
}
/**
......@@ -147,12 +146,11 @@ public class TransactionReceiptRecordRest {
@ResponseBody
@Synchronized
public JsonResult exportTransactionZipFile(HttpServletRequest request, HttpServletResponse response) throws Exception{
//try{
try{
return transactionReceiptRecordService.exportZipFile(request,response);
/* }catch(Exception e){
e.printStackTrace();
}catch(Exception e){
return JsonResult.buildErrorStateResult("导出文件出现错误");
}*/
}
}
......
......@@ -49,6 +49,7 @@ import sun.misc.IOUtils;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
......@@ -68,9 +69,6 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
@Autowired
private UserSdkImpl userSdk;
@Autowired
private IFileService fileService;
@Value("${kdsp-operation}")
private String kdspOperationUrl;
......@@ -142,32 +140,43 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
}
@Override
public JsonResult importTransactionReceiptRecord(MultipartFile file) throws IOException {
@Transactional
public JsonResult importTransactionReceiptRecord(MultipartFile file) throws RuntimeException {
log.info("[TransactionReceiptRecordServiceImpl importTransactionReceiptRecord] end,query={} ", file);
//查询未导出数据最大批次号
Long maxBatchNo = transactionReceiptRecordRepo.findMaxbatchNo(0);
if(maxBatchNo == null || maxBatchNo.longValue() ==0l){
maxBatchNo = 1l;
Integer maxBatchNo = transactionReceiptRecordRepo.findMaxbatchNo(0);
if(maxBatchNo == null || maxBatchNo ==0 ){
maxBatchNo = 1;
}
//读取所有数据
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord read begin");
long begin = System.currentTimeMillis();
List<TransactionReceiptRecord> readList = read(file.getOriginalFilename(), file.getInputStream());
List<TransactionReceiptRecord> readList = null;
try {
readList = read(file.getOriginalFilename(), file.getInputStream());
} catch (IOException e) {
throw new RuntimeException("读取数据异常");
}
long end = System.currentTimeMillis();
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord read end,总耗时:",end-begin);
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){
//保存时如果有其中一项为空则默认为导入失败,其他则默认初始状态
//如果三项同时为空的话则不落库
if((record.getUserId() == null || record.getUserId() == 0)
&& StringUtils.isEmpty(record.getUserName()) && StringUtils.isEmpty(record.getOrderNo())
&& StringUtils.isEmpty(record.getSerialNo())
){
continue;
}
//查询是否存在相同单号的数据,如果存在则不能导入
List<TransactionReceiptRecord> records =
transactionReceiptRecordRepo.selectRecordsByOrderNo(record.getOrderNo(),record.getUserId(),record.getUserName());
if(CollectionUtils.isNotEmpty(records)){
throw new RuntimeException("存在userid为"+record.getUserId()+",姓名为"+record.getUserName()+",交易单号为"+record.getOrderNo()+"数据还未导出,不能再次导入");
}
//保存时如果有其中一项为空则默认为导入失败,其他则默认初始状态
if(record.getUserId() ==null || record.getUserId() ==0
|| StringUtils.isEmpty(record.getUserName())
|| StringUtils.isEmpty(record.getOrderNo())){
......@@ -180,7 +189,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
record.setExportStatus(0);
}
//存储批次号
record.setBatchNo(maxBatchNo);
record.setBatchNo(maxBatchNo.intValue()+1);
transactionReceiptRecordRepo.save(record);
}
log.info("TransactionReceiptRecordServiceImpl importTransactionReceiptRecord save end");
......@@ -497,7 +506,9 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
* @return
*/
@Override
public JsonResult updateTransactionRecordsStatus() {
@Transactional
public JsonResult updateTransactionRecordsStatus() throws RuntimeException{
log.error("TransactionReceiptRecordServiceImpl updateTransactionRecordsStatus 校验更新数据 begin");
//查询所有初始化的数据
List<TransactionReceiptRecord> transactionReceiptRecordList
= transactionReceiptRecordRepo.selectRecordsByImportStatus(0);
......@@ -587,15 +598,13 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
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);
record.setExportStatus(2);
failList.add(record);
continue;
}
......@@ -605,28 +614,36 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
JSONArray userArray = JSONArray.parseArray(dataStr);
if(userArray.size()<=0){
record.setImportStatus(2);
record.setExportStatus(2);
failList.add(record);
continue;
}
JSONObject object= (JSONObject) userArray.get(0);
String userName = object.getString("name");
if(StringUtils.isNotBlank(userName) && userName.equals(record.getUserName())){
Map<String, String> header = Maps.newHashMap();
header.put("Content-type", "application/json");
header.put("qg-tenant-id", "560761");
//调用电商接口
String kUrl = kdspOperationUrl + "/api/kdsp/op/fa-cui/transaction-proof/check";
//得到json字符串
String kResult = httpService.post(kUrl, header, param);
Map param1 = Maps.newHashMap();
param1.put("userId",record.getUserId());
param1.put("orderNo",record.getOrderNo());
List<Map> paramList =new ArrayList<>();
paramList.add(param1);
String kResult = httpService.post(kUrl, header, paramList);
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;
throw new RuntimeException("调用电商接口报错");
}
JSONObject kJsonObject = JSONObject.parseObject(kJsonResult);
List<TransactionReceiptRecord> errorList = (List<TransactionReceiptRecord>) kJsonObject.get("verifyErrorList");
if(errorList.size()>0){
record.setImportStatus(2);
record.setExportStatus(2);
failList.add(record);
continue;
}
......@@ -634,10 +651,11 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
successList.add(record);
}else{
record.setImportStatus(2);
record.setExportStatus(2);
failList.add(record);
}
}catch(Exception e){
failList.add(record);
throw new RuntimeException("调用接口报错");
}
}
//校验全部通过则更新状态
......@@ -647,6 +665,7 @@ public class TransactionReceiptRecordServiceImpl implements ITransactionReceiptR
for(TransactionReceiptRecord record :successList){
transactionReceiptRecordRepo.updateTransactionStatusByImportStatus(1,record.getOrderNo());
}
log.error("TransactionReceiptRecordServiceImpl updateTransactionRecordsStatus 校验更新数据 end");
}
return JsonResult.buildSuccessResult("数据导入成功",null);
}
......
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