Commit 8285d4f8 by jianan

前端对接问题修复59

parent cb305a48
......@@ -29,21 +29,16 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -75,6 +70,8 @@ public class ApiCommissionController {
private PolicyFollowService policyFollowService;
@Resource
private PolicyService policyService;
@Resource
private TransactionTemplate transactionTemplate;
@PostMapping("/upload/excel")
......@@ -151,25 +148,26 @@ public class ApiCommissionController {
// 数据处理
List<Commission> entities = processData(dataList, loginUserId, reconciliationYearMonth);
transactionTemplate.execute(status -> {
// 保存来佣数据
commissionService.saveBatch(entities);
return null;
});
// // 转换为 VO
// List<CommissionVO> commissionVOList = commissionService.getCommissionList(entities);
// 批量比对
TransactionSynchronizationManager.registerSynchronization(
new TransactionSynchronization() {
@Override
public void afterCommit() {
// 开启新事务,比对数据
transactionTemplate.execute(status -> {
try {
// 重新查询最新的数据,获取已提交的数据
commissionAsyncService.commissionCompareBatch(entities);
} catch (Exception e) {
// 比对失败不影响主事务,记录日志即可
e.printStackTrace();
log.error("批量导入, 比对操作执行失败, error: {}", e.getMessage());
}
}
}
);
return null;
});
return Result.success(true);
}
......@@ -227,9 +225,6 @@ public class ApiCommissionController {
// 补充完整字段
commissionService.fillCommissionList(entities);
// 保存来佣数据
commissionService.saveBatch(entities);
return entities;
}
......
......@@ -129,7 +129,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 2.关联查询预计入账信息
Set<String> commissionExpectedBizIdSet = commissionList.stream().map(Commission::getCommissionExpectedBizId).collect(Collectors.toSet());
List<CommissionExpected> commissionExpectedList = commissionExpectedService.lambdaQuery()
.select(CommissionExpected::getCommissionExpectedBizId, CommissionExpected::getReceivableNo)
.select(CommissionExpected::getCommissionExpectedBizId,
CommissionExpected::getPaidAmount,
CommissionExpected::getPaidRatio,
CommissionExpected::getStatus,
CommissionExpected::getReceivableNo)
.in(CommissionExpected::getCommissionExpectedBizId, commissionExpectedBizIdSet)
.list();
Map<String, CommissionExpected> commissionExpectedMap = commissionExpectedList.stream().collect(Collectors.toMap(CommissionExpected::getCommissionExpectedBizId, a -> a, (oldValue, newValue) -> newValue));
......@@ -756,7 +760,11 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
commissionList.add(commission);
}
boolean b = this.saveOrUpdateBatch(commissionList);
// 提交事务,保存数据
transactionTemplate.execute(status -> {
saveOrUpdateBatch(commissionList);
return null;
});
// 开启新事务,比对数据
transactionTemplate.execute(status -> {
......
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