diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/CommonController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillCommonController.java similarity index 97% rename from xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/CommonController.java rename to xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillCommonController.java index 816a5689..23fa2506 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/CommonController.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillCommonController.java @@ -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; diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/InternetBillController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillInternetBillController.java similarity index 98% rename from xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/InternetBillController.java rename to xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillInternetBillController.java index 787bd4e2..2273bb4d 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/InternetBillController.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillInternetBillController.java @@ -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 diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/PaymentBillController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillPaymentBillController.java similarity index 98% rename from xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/PaymentBillController.java rename to xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillPaymentBillController.java index 91482898..ace4c0a7 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/PaymentBillController.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcTradebillPaymentBillController.java @@ -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; diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/CommonServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/CommonServiceImpl.java index dbb7fa05..f6bcb394 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/CommonServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/CommonServiceImpl.java @@ -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 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 diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/InternetBillServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/InternetBillServiceImpl.java index c30ac33a..45d37eba 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/InternetBillServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/InternetBillServiceImpl.java @@ -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 hdTradebillVoList = new ArrayList<>(); List serialNumberList = new ArrayList<>(); - switch (suffix.toUpperCase()) { - case "XLS": - case "XLSX": - ExcelUtil util = new ExcelUtil(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 util = new ExcelUtil(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 xjTradeBillVoList = new ArrayList<>(); List serialNumberList = new ArrayList<>(); - switch (suffix.toUpperCase()) { - case "XLS": - case "XLSX": - ExcelUtil util = new ExcelUtil(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 util = new ExcelUtil(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 xdtTradebillVoList = new ArrayList<>(); List serialNumberList = new ArrayList<>(); - switch (suffix.toUpperCase()) { - case "XLS": - case "XLSX": - ExcelUtil util = new ExcelUtil(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 util = new ExcelUtil(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> dataList = new ArrayList<>(); List serialNumberList = new ArrayList<>(); - switch (suffix.toUpperCase()) { - case "XLS": - case "XLSX": - ExcelUtil util = new ExcelUtil(KDTradebillVo.class); - kdTradebillVoList = util.importExcel(new FileInputStream(dataFile), 1); + try { + switch (suffix.toUpperCase()) { + case "XLS": + case "XLSX": + ExcelUtil util = new ExcelUtil(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; diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/PaymentBillServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/PaymentBillServiceImpl.java index e74bbb7a..3db72e81 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/PaymentBillServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/PaymentBillServiceImpl.java @@ -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 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 rows = data.getRows(); + try { + switch (suffix.toUpperCase()) { + case "CSV": + CsvReader csvReader = CsvUtil.getReader(); + CsvData data = csvReader.read(dataFile, CharsetUtil.CHARSET_GBK); + List rows = data.getRows(); - List serialNumberList = new ArrayList<>(); - int orderType = 0; + List 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 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 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 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 rows = data.getRows(); + try { + if ("CSV".equalsIgnoreCase(suffix)) {// 微信充值订单格式 + CsvReader csvReader = CsvUtil.getReader(); + CsvData data = csvReader.read(dataFile); + List rows = data.getRows(); - List 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 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; }