Browse Source

兴业银行-信用卡新模板

master
583641232@qq.com 1 year ago
parent
commit
05897ff203
  1. 4
      cas-system/src/main/java/com/inscloudtech/bankStatementAnalysis/domain/ImportCommonStatement.java
  2. 81
      cas-system/src/main/java/com/inscloudtech/bankStatementAnalysis/helper/CIBDataAnalysisHelper.java

4
cas-system/src/main/java/com/inscloudtech/bankStatementAnalysis/domain/ImportCommonStatement.java

@ -22,7 +22,7 @@ public class ImportCommonStatement {
@ExcelProperty("客户名称") @ExcelProperty("客户名称")
private String cardHolderName; private String cardHolderName;
@ExcelProperty({"客户账号"})
@ExcelProperty({"客户账号","卡号"})
private String cardNumber; private String cardNumber;
@ExcelProperty({"交易日期"}) @ExcelProperty({"交易日期"})
@ -56,7 +56,7 @@ public class ImportCommonStatement {
@ExcelProperty({"交易渠道","渠道名称"}) @ExcelProperty({"交易渠道","渠道名称"})
private String transChannel; private String transChannel;
@ExcelProperty("交易摘要")
@ExcelProperty({"交易摘要","交易描述1"})
private String summary; private String summary;
@ExcelIgnore @ExcelIgnore

81
cas-system/src/main/java/com/inscloudtech/bankStatementAnalysis/helper/CIBDataAnalysisHelper.java

@ -1,6 +1,8 @@
package com.inscloudtech.bankStatementAnalysis.helper; package com.inscloudtech.bankStatementAnalysis.helper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
@ -17,6 +19,8 @@ import com.alibaba.excel.util.ListUtils;
import com.aspose.cells.*; import com.aspose.cells.*;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.inscloudtech.bankStatementAnalysis.domain.ImportCommonStatement;
import com.inscloudtech.bankStatementAnalysis.domain.entity.PSBCStatementEntity;
import com.inscloudtech.bankStatementAnalysis.helper.HelperUtil; import com.inscloudtech.bankStatementAnalysis.helper.HelperUtil;
import com.inscloudtech.bankStatementAnalysis.service.ImportService; import com.inscloudtech.bankStatementAnalysis.service.ImportService;
import com.inscloudtech.common.constant.BankStatementConstants; import com.inscloudtech.common.constant.BankStatementConstants;
@ -104,7 +108,8 @@ public class CIBDataAnalysisHelper {
throw new TemplateNotFindException(sourceFileWithSheetName); throw new TemplateNotFindException(sourceFileWithSheetName);
}else { }else {
Cell c = AsposeUtil.getCell(cells, "信用卡历史账单"); Cell c = AsposeUtil.getCell(cells, "信用卡历史账单");
if (tradeCell != null && c == null) {
Cell creditCardFlag = AsposeUtil.getCell(cells, "名下的交易明细");
if (tradeCell != null && c == null && creditCardFlag == null) {
ExcelReader reader = EasyExcel.read(excelFile).build(); ExcelReader reader = EasyExcel.read(excelFile).build();
Class<CIBStatementEntity> clazz = CIBStatementEntity.class; Class<CIBStatementEntity> clazz = CIBStatementEntity.class;
ReadSheet sheet = EasyExcel.readSheet(sheetNo) ReadSheet sheet = EasyExcel.readSheet(sheetNo)
@ -115,6 +120,8 @@ public class CIBDataAnalysisHelper {
reader.read(sheet); reader.read(sheet);
}else if(c != null){ }else if(c != null){
readCreditCardBS(cells,sourceFileWithSheetName,caseId,sheetNo,excelFile); readCreditCardBS(cells,sourceFileWithSheetName,caseId,sheetNo,excelFile);
}else if(creditCardFlag != null){
readCreditCardBS20240913(cells,sourceFileWithSheetName,caseId,sheetNo,excelFile,creditCardFlag);
}else { }else {
throw new TemplateNotFindException(sourceFileWithSheetName); throw new TemplateNotFindException(sourceFileWithSheetName);
} }
@ -129,6 +136,74 @@ public class CIBDataAnalysisHelper {
} }
} }
private void readCreditCardBS20240913(Cells cells, String sourceFileWithSheetName, String caseId, int sheetNo, File excelFile, Cell creditCardFlag) {
String value = creditCardFlag.getStringValue(); // 尊敬的xxx先生/女士
String[] split = value.split("名下的交易明细");
// 客户名称
String cardHolderName = split[0];
if (StringUtils.isEmpty(cardHolderName)) {
throw new ImportDataFailedException("无法获取客户名称.",sourceFileWithSheetName);
}
Cell tr = AsposeUtil.getCell(cells, "交易日期");
try (ExcelReader r = EasyExcel.read(excelFile).build()) {
String finalCardHolderName = cardHolderName;
ReadSheet readSheet = EasyExcel.readSheet(sheetNo)
.headRowNumber(tr.getRow() + 1)
.head(ImportCommonStatement.class)
.registerReadListener(new ReadListener<ImportCommonStatement>() {
private static final int BATCH_SIZE = Constants.BATCH_SIZE;
private List<CIBCreditCardBSEntity> cacheList =
ListUtils.newArrayListWithExpectedSize(BATCH_SIZE);
@Override
public void invoke(ImportCommonStatement importData, AnalysisContext context) {
CIBCreditCardBSEntity entry = new CIBCreditCardBSEntity();
BeanUtil.copyProperties(importData,entry);
String id = IdUtil.objectId();
entry.setId(id);
entry.setCardHolderName(finalCardHolderName);
entry.setSourceFile(sourceFileWithSheetName);
String transactionTime1 = importData.getTransactionTime();
if(transactionTime1.length() == 8){
transactionTime1 = transactionTime1.substring(0,6);
}
String transactionTime = importData.getTransactionDate() + transactionTime1;
entry.setTransactionTime(DateUtil.parse(transactionTime, DatePattern.PURE_DATETIME_FORMAT));
cacheList.add(entry);
if (cacheList.size() >= BATCH_SIZE) {
saveData();
cacheList = ListUtils.newArrayListWithExpectedSize(BATCH_SIZE);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 保存不够一百条数据的批次
if (!cacheList.isEmpty()) {
saveData();
}
}
private void saveData() {
esCIBCreditCardBankStatementMapper.insertBatch(cacheList);
cacheList = ListUtils.newArrayListWithExpectedSize(BATCH_SIZE);
}
})
.build();
r.read(readSheet);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new ImportDataFailedException(e.getMessage(), sourceFileWithSheetName);
}
}
private void readBSWithLikeCSV(Cells cells, String caseId,String sourceFile,int headRow) { private void readBSWithLikeCSV(Cells cells, String caseId,String sourceFile,int headRow) {
try { try {
Cell cardHolderNameCell = cells.get(0, 0); Cell cardHolderNameCell = cells.get(0, 0);
@ -277,7 +352,9 @@ public class CIBDataAnalysisHelper {
String cardHolderName = entity.getCardHolderName(); String cardHolderName = entity.getCardHolderName();
bs.setCardHolderName(cardHolderName); bs.setCardHolderName(cardHolderName);
importService.setIdCardAndCardNumberByCardHolderName(oaiMap,cardHolderName,bs); importService.setIdCardAndCardNumberByCardHolderName(oaiMap,cardHolderName,bs);
if (StrUtil.isEmpty(bs.getCardNumber())){
bs.setCardNumber(entity.getCardNumber());
}
bs.setSummary(entity.getSummary()); bs.setSummary(entity.getSummary());
bs.setTransCurrencyType(Constants.CURRENCY_TYPE_CHINA); bs.setTransCurrencyType(Constants.CURRENCY_TYPE_CHINA);
bs.setTransactionAmount(BigDecimal.valueOf(Double.parseDouble(entity.getTransactionAmount()))); bs.setTransactionAmount(BigDecimal.valueOf(Double.parseDouble(entity.getTransactionAmount())));

Loading…
Cancel
Save