增加对账功能异常捕获和处理

This commit is contained in:
panshuling321 2022-04-22 11:34:49 +08:00
parent 5f5a4c377e
commit e0aaee803e
6 changed files with 294 additions and 251 deletions

View File

@ -1,6 +1,8 @@
package com.xhpc.activity.controller;
import com.xhpc.activity.domain.XhpcTradebillUploadRecordDomain;
import com.xhpc.activity.service.CommonService;
import com.xhpc.common.core.utils.SecurityUtils;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
@ -8,8 +10,6 @@ import com.xhpc.common.log.annotation.Log;
import com.xhpc.common.log.enums.BusinessType;
import com.xhpc.common.util.LogUserUtils;
import com.xhpc.system.api.model.LoginUser;
import com.xhpc.activity.domain.XhpcTradebillUploadRecordDomain;
import com.xhpc.activity.service.CommonService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -21,7 +21,7 @@ import java.util.Map;
@RestController
@RequestMapping("/common")
public class CommonController extends BaseController {
public class XhpcTradebillCommonController extends BaseController {
@Resource
CommonService commonService;

View File

@ -1,13 +1,13 @@
package com.xhpc.activity.controller;
import com.xhpc.activity.domain.XhpcTradebillInternetCheckRecordDomain;
import com.xhpc.activity.service.InternetBillService;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.common.log.annotation.Log;
import com.xhpc.common.log.enums.BusinessType;
import com.xhpc.activity.domain.XhpcTradebillInternetCheckRecordDomain;
import com.xhpc.activity.service.InternetBillService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -17,7 +17,7 @@ import java.util.Map;
@RestController
@RequestMapping("/internet")
public class InternetBillController extends BaseController {
public class XhpcTradebillInternetBillController extends BaseController {
@Resource

View File

@ -1,13 +1,13 @@
package com.xhpc.activity.controller;
import com.xhpc.activity.domain.XhpcTradebillPaymentCheckRecordDomain;
import com.xhpc.activity.service.PaymentBillService;
import com.xhpc.common.core.web.controller.BaseController;
import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.common.core.web.page.TableDataInfo;
import com.xhpc.common.log.annotation.Log;
import com.xhpc.common.log.enums.BusinessType;
import com.xhpc.activity.domain.XhpcTradebillPaymentCheckRecordDomain;
import com.xhpc.activity.service.PaymentBillService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -17,7 +17,7 @@ import java.util.Map;
@RestController
@RequestMapping("/payment")
public class PaymentBillController extends BaseController {
public class XhpcTradebillPaymentBillController extends BaseController {
@Resource
PaymentBillService paymentBillService;

View File

@ -1,6 +1,7 @@
package com.xhpc.activity.service.impl;
import com.aliyun.oss.OSSClient;
import com.xhpc.common.core.exception.CustomException;
import com.xhpc.common.core.utils.SecurityUtils;
import com.xhpc.activity.config.AliOSSProperties;
import com.xhpc.activity.domain.XhpcTradebillInternetCheckRecordDomain;
@ -19,6 +20,7 @@ import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
@ -59,60 +61,66 @@ public class CommonServiceImpl implements CommonService {
Map<String, Integer> totalMap = new HashMap<>();
int insertCount = 0;
resDomain.setStatus(2);
switch (domain.getType()) {
case 1:
case 2:
// 微信支付
paymentCheckRecordDomainList = paymentBillService.getWechatDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = paymentBillService.insertPaymentCheckList(resDomain.getId(), paymentCheckRecordDomainList);
totalMap = computePaymentRecord(paymentCheckRecordDomainList);
break;
case 3:
case 4:
// 支付宝支付
paymentCheckRecordDomainList = paymentBillService.getAliPayDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = paymentBillService.insertPaymentCheckList(resDomain.getId(), paymentCheckRecordDomainList);
totalMap = computePaymentRecord(paymentCheckRecordDomainList);
break;
case 5:
// 恒大
recordDomainList = internetBillService.getHdInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 6:
// 小桔
recordDomainList = internetBillService.getXjInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 7:
// 新电途
recordDomainList = internetBillService.getXDTInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 8:
// 快电
recordDomainList = internetBillService.getKDInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
default:
resDomain.setStatus(1);
totalMap.put("successCount", 0);
totalMap.put("failCount", 0);
totalMap.put("checkCount", 0);
totalMap.put("uncheckCount", 0);
break;
try {
switch (domain.getType()) {
case 1:
case 2:
// 微信支付
paymentCheckRecordDomainList = paymentBillService.getWechatDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = paymentBillService.insertPaymentCheckList(resDomain.getId(), paymentCheckRecordDomainList);
totalMap = computePaymentRecord(paymentCheckRecordDomainList);
break;
case 3:
case 4:
// 支付宝支付
paymentCheckRecordDomainList = paymentBillService.getAliPayDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = paymentBillService.insertPaymentCheckList(resDomain.getId(), paymentCheckRecordDomainList);
totalMap = computePaymentRecord(paymentCheckRecordDomainList);
break;
case 5:
// 恒大
recordDomainList = internetBillService.getHdInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 6:
// 小桔
recordDomainList = internetBillService.getXjInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 7:
// 新电途
recordDomainList = internetBillService.getXDTInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
case 8:
// 快电
recordDomainList = internetBillService.getKDInternetDataList(domain.getUrl(), domain.getStartTime(), domain.getEndTime(), domain.getTenantId());
insertCount = internetBillService.insertInternetCheckList(resDomain.getId(), recordDomainList);
totalMap = computeInternetRecord(recordDomainList);
break;
default:
resDomain.setStatus(1);
totalMap.put("successCount", 0);
totalMap.put("failCount", 0);
totalMap.put("checkCount", 0);
totalMap.put("uncheckCount", 0);
break;
}
resDomain.setStatus(1);
resDomain.setSuccessCount(totalMap.get("successCount"));
resDomain.setFailCount(totalMap.get("failCount"));
resDomain.setCheckedCount(totalMap.get("checkCount"));
resDomain.setUncheckCount(totalMap.get("uncheckCount"));
uploadRecordMapper.updateByPrimaryKey(resDomain);
return resDomain;
} catch (Exception exception){
exception.printStackTrace();
throw new CustomException("内部错误");
}
resDomain.setStatus(1);
resDomain.setSuccessCount(totalMap.get("successCount"));
resDomain.setFailCount(totalMap.get("failCount"));
resDomain.setCheckedCount(totalMap.get("checkCount"));
resDomain.setUncheckCount(totalMap.get("uncheckCount"));
uploadRecordMapper.updateByPrimaryKey(resDomain);
return resDomain;
}
@ -121,25 +129,28 @@ public class CommonServiceImpl implements CommonService {
XhpcTradebillUploadRecordDomain domain = new XhpcTradebillUploadRecordDomain();
// 创建OSSClient实例
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
String suffix = Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf(".") + 1);
File dataFile = File.createTempFile("temp_", suffix);
file.transferTo(dataFile);
try{
file.transferTo(dataFile);
String ossPath = "bill/" + file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) + "_" + System.currentTimeMillis() + "." + suffix;
OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), ossProperties.getAccessKey(), ossProperties.getSecretKey());
// 上传文件流
ossClient.putObject(ossProperties.getBucketName(), ossPath, dataFile);
ossClient.shutdown();
String ossPath = "bill/" + file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) + "_" + System.currentTimeMillis() + "." + suffix;
OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), ossProperties.getAccessKey(), ossProperties.getSecretKey());
// 上传文件流
ossClient.putObject(ossProperties.getBucketName(), ossPath, dataFile);
ossClient.shutdown();
domain.setFileName(file.getOriginalFilename());
domain.setUrl(ossProperties.getDomain() + ossPath);
domain.setStartTime(startTime);
domain.setEndTime(endTime);
domain.setType(type);
domain.setTenantId(tenantId);
return ossUpload(domain);
domain.setFileName(file.getOriginalFilename());
domain.setUrl(ossProperties.getDomain() + ossPath);
domain.setStartTime(startTime);
domain.setEndTime(endTime);
domain.setType(type);
domain.setTenantId(tenantId);
return ossUpload(domain);
} catch (Exception exception){
throw new CustomException("服务错误");
}
}
@Override

View File

@ -7,6 +7,7 @@ import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.xhpc.common.core.exception.CustomException;
import com.xhpc.common.core.utils.SecurityUtils;
import com.xhpc.common.core.utils.poi.ExcelUtil;
import com.xhpc.activity.domain.XhpcHistoryOrderDomain;
@ -182,19 +183,24 @@ public class InternetBillServiceImpl implements InternetBillService {
List<HDTradebillVo> hdTradebillVoList = new ArrayList<>();
List<String> serialNumberList = new ArrayList<>();
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<HDTradebillVo> util = new ExcelUtil<HDTradebillVo>(HDTradebillVo.class);
hdTradebillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
hdTradebillVoList = reader.read(fileReader.readString(), HDTradebillVo.class);
break;
default:
break;
try {
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<HDTradebillVo> util = new ExcelUtil<HDTradebillVo>(HDTradebillVo.class);
hdTradebillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
hdTradebillVoList = reader.read(fileReader.readString(), HDTradebillVo.class);
break;
default:
break;
}
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
for (HDTradebillVo vo : hdTradebillVoList) {
@ -245,19 +251,24 @@ public class InternetBillServiceImpl implements InternetBillService {
List<XJTradeBillVo> xjTradeBillVoList = new ArrayList<>();
List<String> serialNumberList = new ArrayList<>();
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<XJTradeBillVo> util = new ExcelUtil<XJTradeBillVo>(XJTradeBillVo.class);
xjTradeBillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
xjTradeBillVoList = reader.read(fileReader.readString(), XJTradeBillVo.class);
break;
default:
break;
try {
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<XJTradeBillVo> util = new ExcelUtil<XJTradeBillVo>(XJTradeBillVo.class);
xjTradeBillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
xjTradeBillVoList = reader.read(fileReader.readString(), XJTradeBillVo.class);
break;
default:
break;
}
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
for (XJTradeBillVo vo : xjTradeBillVoList) {
@ -312,19 +323,24 @@ public class InternetBillServiceImpl implements InternetBillService {
List<XDTTradebillVo> xdtTradebillVoList = new ArrayList<>();
List<String> serialNumberList = new ArrayList<>();
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<XDTTradebillVo> util = new ExcelUtil<XDTTradebillVo>(XDTTradebillVo.class);
xdtTradebillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
xdtTradebillVoList = reader.read(fileReader.readString(), XDTTradebillVo.class);
break;
default:
break;
try {
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<XDTTradebillVo> util = new ExcelUtil<XDTTradebillVo>(XDTTradebillVo.class);
xdtTradebillVoList = util.importExcel(new FileInputStream(dataFile));
break;
case "CSV":
CsvReader reader = CsvUtil.getReader();
FileReader fileReader = new FileReader(dataFile.getAbsolutePath(), Charset.forName("GBK"));
xdtTradebillVoList = reader.read(fileReader.readString(), XDTTradebillVo.class);
break;
default:
break;
}
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
for (XDTTradebillVo vo : xdtTradebillVoList) {
@ -374,18 +390,22 @@ public class InternetBillServiceImpl implements InternetBillService {
List<Map<String, Object>> dataList = new ArrayList<>();
List<String> serialNumberList = new ArrayList<>();
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<KDTradebillVo> util = new ExcelUtil<KDTradebillVo>(KDTradebillVo.class);
kdTradebillVoList = util.importExcel(new FileInputStream(dataFile), 1);
try {
switch (suffix.toUpperCase()) {
case "XLS":
case "XLSX":
ExcelUtil<KDTradebillVo> util = new ExcelUtil<KDTradebillVo>(KDTradebillVo.class);
kdTradebillVoList = util.importExcel(new FileInputStream(dataFile), 1);
break;
default:
break;
break;
default:
break;
}
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
for (KDTradebillVo vo : kdTradebillVoList) {
if (vo.getOrderNo().equals("交易订单号") || StrUtil.hasBlank(vo.getOrderNo())) {
continue;

View File

@ -9,6 +9,7 @@ import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.xhpc.common.core.exception.CustomException;
import com.xhpc.common.core.utils.SecurityUtils;
import com.xhpc.activity.domain.XhpcTradebillPaymentCheckRecordDomain;
import com.xhpc.activity.mapper.XhpcRechargeOrderMapper;
@ -139,88 +140,93 @@ public class PaymentBillServiceImpl implements PaymentBillService {
List<XhpcTradebillPaymentCheckRecordDomain> paymentCheckRecordDomainList = new ArrayList<>();
String suffix = dataFile.getName().substring(dataFile.getName().lastIndexOf(".") + 1);
System.out.println(dataFile.getAbsolutePath());
switch (suffix.toUpperCase()) {
case "CSV":
CsvReader csvReader = CsvUtil.getReader();
CsvData data = csvReader.read(dataFile, CharsetUtil.CHARSET_GBK);
List<CsvRow> rows = data.getRows();
try {
switch (suffix.toUpperCase()) {
case "CSV":
CsvReader csvReader = CsvUtil.getReader();
CsvData data = csvReader.read(dataFile, CharsetUtil.CHARSET_GBK);
List<CsvRow> rows = data.getRows();
List<String> serialNumberList = new ArrayList<>();
int orderType = 0;
List<String> serialNumberList = new ArrayList<>();
int orderType = 0;
for (CsvRow row : rows) {
// 列数是22则是正文内容
if (row.getRawList().size() != 22) {
continue;
for (CsvRow row : rows) {
// 列数是22则是正文内容
if (row.getRawList().size() != 22) {
continue;
}
// 判断内容是否是中文如果是中文就认为是标题则跳过
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
continue;
}
XhpcTradebillPaymentCheckRecordDomain domain = new XhpcTradebillPaymentCheckRecordDomain();
domain.setCreateBy(userId);
domain.setUpdateBy(userId);
domain.setPaymentChannel(2);
domain.setPaymentUserId(row.get(12));
domain.setPaymentPayTime(DateUtil.parse(row.get(1)));
BigDecimal paymentAmount = BigDecimal.ZERO;
String serialNumber = "";
if (row.get(5).equals("在线支付")) {
// 充值订单
serialNumber = row.get(4).trim().replaceAll("`", "").replaceAll("'", "");
orderType = 1;
domain.setPaymentPayNumber(serialNumber);
domain.setOrderType(orderType);
System.out.println(row);
paymentAmount = row.get(6) != null && !"".equals(row.get(6).trim()) ? new BigDecimal(row.get(6)) : BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
serialNumberList.add(serialNumber);
} else if (row.get(5).equals("转账")) {
// 退款订单
serialNumber = row.get(16).trim().replaceAll("`", "").replaceAll("'", "").replaceAll("单笔转账--", "");
domain.setPaymentPayNumber(serialNumber);
orderType = 2;
domain.setOrderType(orderType);
paymentAmount = row.get(7) != null && !"".equals(row.get(7).trim()) ? new BigDecimal(row.get(7)) : BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
serialNumberList.add(serialNumber);
}
paymentCheckRecordDomainList.add(domain);
}
// 判断内容是否是中文如果是中文就认为是标题则跳过
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
continue;
getPlatOrderData(paymentCheckRecordDomainList, orderType, serialNumberList, startTime, endTime, tenantId);
break;
case "ZIP":
ZipFile zip = new ZipFile(dataFile);
File file = null;
for (Enumeration<ZipEntry> enumeration = zip.getEntries(); enumeration.hasMoreElements(); ) {
ZipEntry entry = enumeration.nextElement();
InputStream in = zip.getInputStream(entry);
if (entry.isDirectory()) {
continue;
}
file = File.createTempFile("alipay_", entry.getName().substring(entry.getName().lastIndexOf(".")));
OutputStream outputStream = new FileOutputStream(file);
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) > 0) {
outputStream.write(buff, 0, len);
}
in.close();
outputStream.close();
}
XhpcTradebillPaymentCheckRecordDomain domain = new XhpcTradebillPaymentCheckRecordDomain();
domain.setCreateBy(userId);
domain.setUpdateBy(userId);
domain.setPaymentChannel(2);
domain.setPaymentUserId(row.get(12));
domain.setPaymentPayTime(DateUtil.parse(row.get(1)));
BigDecimal paymentAmount = BigDecimal.ZERO;
String serialNumber = "";
if (row.get(5).equals("在线支付")) {
// 充值订单
serialNumber = row.get(4).trim().replaceAll("`", "").replaceAll("'", "");
orderType = 1;
domain.setPaymentPayNumber(serialNumber);
domain.setOrderType(orderType);
System.out.println(row);
paymentAmount = row.get(6) != null && !"".equals(row.get(6).trim()) ? new BigDecimal(row.get(6)) : BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
serialNumberList.add(serialNumber);
} else if (row.get(5).equals("转账")) {
// 退款订单
serialNumber = row.get(16).trim().replaceAll("`", "").replaceAll("'", "").replaceAll("单笔转账--", "");
domain.setPaymentPayNumber(serialNumber);
orderType = 2;
domain.setOrderType(orderType);
paymentAmount = row.get(7) != null && !"".equals(row.get(7).trim()) ? new BigDecimal(row.get(7)) : BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
serialNumberList.add(serialNumber);
if (file != null) {
paymentCheckRecordDomainList = getAliPayDataList(file, startTime, endTime, tenantId);
}
paymentCheckRecordDomainList.add(domain);
}
getPlatOrderData(paymentCheckRecordDomainList, orderType, serialNumberList, startTime, endTime, tenantId);
break;
case "ZIP":
ZipFile zip = new ZipFile(dataFile);
File file = null;
for (Enumeration<ZipEntry> enumeration = zip.getEntries(); enumeration.hasMoreElements(); ) {
ZipEntry entry = enumeration.nextElement();
InputStream in = zip.getInputStream(entry);
if (entry.isDirectory()) {
continue;
}
file = File.createTempFile("alipay_", entry.getName().substring(entry.getName().lastIndexOf(".")));
OutputStream outputStream = new FileOutputStream(file);
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) > 0) {
outputStream.write(buff, 0, len);
}
in.close();
outputStream.close();
}
if (file != null) {
paymentCheckRecordDomainList = getAliPayDataList(file, startTime, endTime, tenantId);
}
break;
default:
throw new Exception("暂不支持的文件格式");
break;
default:
throw new Exception("暂不支持的文件格式");
}
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
paymentCheckRecordDomainList.sort(Comparator.comparing(XhpcTradebillPaymentCheckRecordDomain::getStatus));
@ -252,68 +258,74 @@ public class PaymentBillServiceImpl implements PaymentBillService {
List<XhpcTradebillPaymentCheckRecordDomain> paymentCheckRecordDomainList = new ArrayList<>();
String suffix = dataFile.getName().substring(dataFile.getName().lastIndexOf(".") + 1);
if ("CSV".equalsIgnoreCase(suffix)) {// 微信充值订单格式
CsvReader csvReader = CsvUtil.getReader();
CsvData data = csvReader.read(dataFile);
List<CsvRow> rows = data.getRows();
try {
if ("CSV".equalsIgnoreCase(suffix)) {// 微信充值订单格式
CsvReader csvReader = CsvUtil.getReader();
CsvData data = csvReader.read(dataFile);
List<CsvRow> rows = data.getRows();
List<String> serialNumberList = new ArrayList<>();
int orderType = 0;
for (CsvRow row : rows) {
// 列数是6则是充值订单
// 列数是13则是退款订单
if (row.getRawList().size() != 6 && row.getRawList().size() != 13) {
continue;
}
XhpcTradebillPaymentCheckRecordDomain domain = new XhpcTradebillPaymentCheckRecordDomain();
domain.setPaymentChannel(1);
domain.setCreateBy(userId);
domain.setUpdateBy(userId);
String serialNumber = "";
if (row.getRawList().size() == 6) {
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
List<String> serialNumberList = new ArrayList<>();
int orderType = 0;
for (CsvRow row : rows) {
// 列数是6则是充值订单
// 列数是13则是退款订单
if (row.getRawList().size() != 6 && row.getRawList().size() != 13) {
continue;
}
orderType = 1;
serialNumber = StringFormat(row.get(2));
domain.setOrderType(orderType);
domain.setPaymentPayNumber(serialNumber);
XhpcTradebillPaymentCheckRecordDomain domain = new XhpcTradebillPaymentCheckRecordDomain();
domain.setPaymentChannel(1);
domain.setCreateBy(userId);
domain.setUpdateBy(userId);
BigDecimal paymentAmount = row.get(5) != null && !"".equals(row.get(5).trim()) ? new BigDecimal(StringFormat(row.get(5))) : BigDecimal.ZERO;
String serialNumber = "";
if (row.getRawList().size() == 6) {
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
continue;
}
orderType = 1;
serialNumber = StringFormat(row.get(2));
domain.setOrderType(orderType);
domain.setPaymentPayNumber(serialNumber);
domain.setPaymentAmount(paymentAmount);
domain.setPaymentPayTime(DateUtil.parse(row.get(0)));
BigDecimal paymentAmount = row.get(5) != null && !"".equals(row.get(5).trim()) ? new BigDecimal(StringFormat(row.get(5))) : BigDecimal.ZERO;
serialNumberList.add(serialNumber);
} else if (row.getRawList().size() == 13) {
// 微信退款订单
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
continue;
domain.setPaymentAmount(paymentAmount);
domain.setPaymentPayTime(DateUtil.parse(row.get(0)));
serialNumberList.add(serialNumber);
} else if (row.getRawList().size() == 13) {
// 微信退款订单
if (row.get(0).getBytes(StandardCharsets.UTF_8).length != row.get(0).length()) {
continue;
}
orderType = 2;
serialNumber = StringFormat(row.get(2));
domain.setOrderType(orderType);
domain.setPaymentPayNumber(serialNumber);
BigDecimal paymentAmount = row.get(10) != null && !"".equals(row.get(10).trim()) ?
new BigDecimal(StringFormat(row.get(10)))
: BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
domain.setPaymentUserId(StringFormat(row.get(4)));
domain.setPaymentPayTime(DateUtil.parse(row.get(6)));
serialNumberList.add(serialNumber);
}
orderType = 2;
serialNumber = StringFormat(row.get(2));
domain.setOrderType(orderType);
domain.setPaymentPayNumber(serialNumber);
BigDecimal paymentAmount = row.get(10) != null && !"".equals(row.get(10).trim()) ?
new BigDecimal(StringFormat(row.get(10)))
: BigDecimal.ZERO;
domain.setPaymentAmount(paymentAmount);
domain.setPaymentUserId(StringFormat(row.get(4)));
domain.setPaymentPayTime(DateUtil.parse(row.get(6)));
serialNumberList.add(serialNumber);
paymentCheckRecordDomainList.add(computeTradebillData(domain));
}
getPlatOrderData(paymentCheckRecordDomainList, orderType, serialNumberList, startTime, endTime, tenantId);
paymentCheckRecordDomainList.add(computeTradebillData(domain));
} else {
throw new Exception("暂不支持的文件格式");
}
getPlatOrderData(paymentCheckRecordDomainList, orderType, serialNumberList, startTime, endTime, tenantId);
} else {
throw new Exception("暂不支持的文件格式");
} catch (Exception e){
e.printStackTrace();
throw new CustomException("文件数据不合规,请检查");
}
paymentCheckRecordDomainList.sort(Comparator.comparing(XhpcTradebillPaymentCheckRecordDomain::getStatus));
return paymentCheckRecordDomainList;
}