Commit 83159fe7 by jianan

前端对接问题修复83

parent a85ad6ee
...@@ -283,7 +283,7 @@ public class ApiCommissionController { ...@@ -283,7 +283,7 @@ public class ApiCommissionController {
* @param request * @param request
* @return * @return
*/ */
@Operation(summary = "同步到预计来佣") @Operation(summary = "同步到预计来佣(比对状态自动为已比对成功)")
@PostMapping("/addToExpected") @PostMapping("/addToExpected")
public Result<Boolean> addToExpected(@RequestBody AddToExpectedCommissionRequest addToExpectedCommissionRequest, HttpServletRequest request) { public Result<Boolean> addToExpected(@RequestBody AddToExpectedCommissionRequest addToExpectedCommissionRequest, HttpServletRequest request) {
if (StringUtils.isBlank(addToExpectedCommissionRequest.getCommissionBizId())) { if (StringUtils.isBlank(addToExpectedCommissionRequest.getCommissionBizId())) {
......
...@@ -255,6 +255,11 @@ public class CommissionAsyncService { ...@@ -255,6 +255,11 @@ public class CommissionAsyncService {
public void commissionCompare(Commission commission) { public void commissionCompare(Commission commission) {
log.info("开始执行比对事务,来佣ID: {}", commission.getCommissionBizId()); log.info("开始执行比对事务,来佣ID: {}", commission.getCommissionBizId());
// 未查询到预计来佣,需要先同步到预计来佣表
if (CommissionStatusEnum.MATCH_FAILED.getItemValue().equals(commission.getStatus())) {
return;
}
if ("R".equals(commission.getCommissionBizType())) { if ("R".equals(commission.getCommissionBizType())) {
normalCommission(commission.getCommissionBizId(), commission.getPolicyNo(), commission.getCommissionName(), commission.getCommissionPeriod(), commission.getCurrency(), commission.getPremium()); normalCommission(commission.getCommissionBizId(), commission.getPolicyNo(), commission.getCommissionName(), commission.getCommissionPeriod(), commission.getCurrency(), commission.getPremium());
} else { } else {
......
...@@ -129,7 +129,7 @@ public class Commission implements Serializable { ...@@ -129,7 +129,7 @@ public class Commission implements Serializable {
private Date commissionDate; private Date commissionDate;
/** /**
* 来佣状态 0=未比对 1=比对成功 2=比对失败 * 来佣状态 0=未比对 1=比对成功 2=比对失败 3=未查询到预计来佣,需要先同步到预计来佣表
*/ */
private String status; private String status;
......
...@@ -15,6 +15,7 @@ import com.yd.common.exception.BusinessException; ...@@ -15,6 +15,7 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.component.CommissionAsyncService; import com.yd.csf.service.component.CommissionAsyncService;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.CommissionExpectedStatusEnum;
import com.yd.csf.service.enums.CommissionStatusEnum; import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
...@@ -234,6 +235,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -234,6 +235,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected::getTotalPeriod, CommissionExpected::getTotalPeriod,
CommissionExpected::getCommissionName, CommissionExpected::getCommissionName,
CommissionExpected::getCurrency, CommissionExpected::getCurrency,
CommissionExpected::getReconciliationCompanyBizId,
CommissionExpected::getStatus) CommissionExpected::getStatus)
.list(); .list();
...@@ -250,14 +252,13 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -250,14 +252,13 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setReconciliationCompanyBizId(policy.getReconciliationCompanyBizId()); commission.setReconciliationCompanyBizId(policy.getReconciliationCompanyBizId());
commission.setCurrentCommissionRatio(commission.calculateCurrentPaidRatio()); commission.setCurrentCommissionRatio(commission.calculateCurrentPaidRatio());
} }
// 根据保单号、期数、入账名称、币种查询预计来佣记录 // 匹配预计来佣记录
CommissionExpected expected = findExpectedFromList(commission, commissionExpectedList); CommissionExpected expected = findExpectedFromList(commission, commissionExpectedList);
if (expected != null) { if (expected != null) {
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId()); commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setReceivableNo(expected.getReceivableNo());
commission.setTotalPeriod(expected.getTotalPeriod()); commission.setTotalPeriod(expected.getTotalPeriod());
} else { } else {
log.warn("导入入账:未查询到预计来佣记录, policyNo: {}, commissionPeriod: {}, commissionName: {}, currency: {}",
commission.getPolicyNo(), commission.getCommissionPeriod(), commission.getCommissionName(), commission.getCurrency());
commission.setRemark("未查询到预计来佣记录"); commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue()); commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
} }
...@@ -271,13 +272,23 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -271,13 +272,23 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
for (CommissionExpected i : commissionExpectedList) { for (CommissionExpected i : commissionExpectedList) {
log.info(" expected: policyNo={}, commissionPeriod={}, commissionName={}, currency={}", log.info(" expected: policyNo={}, commissionPeriod={}, commissionName={}, currency={}",
i.getPolicyNo(), i.getCommissionPeriod(), i.getCommissionName(), i.getCurrency()); i.getPolicyNo(), i.getCommissionPeriod(), i.getCommissionName(), i.getCurrency());
if ("R".equals(i.getCommissionBizType())) {
if (Objects.equals(i.getPolicyNo(), commission.getPolicyNo()) if (Objects.equals(i.getPolicyNo(), commission.getPolicyNo())
&& Objects.equals(i.getCommissionBizType(), commission.getCommissionBizType())
&& Objects.equals(i.getCommissionPeriod(), commission.getCommissionPeriod()) && Objects.equals(i.getCommissionPeriod(), commission.getCommissionPeriod())
&& Objects.equals(i.getCommissionName(), commission.getCommissionName()) && Objects.equals(i.getCommissionName(), commission.getCommissionName())
&& Objects.equals(i.getCurrency(), commission.getCurrency())) { ) {
return i;
}
} else {
if (Objects.equals(i.getReconciliationCompanyBizId(), commission.getReconciliationCompanyBizId())
&& Objects.equals(i.getCommissionName(), commission.getCommissionName())
&& Objects.equals(i.getCommissionBizType(), commission.getCommissionBizType())
) {
return i; return i;
} }
} }
}
return null; return null;
} }
...@@ -310,14 +321,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -310,14 +321,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setPolicyNo(null); commission.setPolicyNo(null);
} }
// 重新关联预计来佣记录 // 重新关联预计来佣记录
CommissionExpected commissionExpected = commissionExpectedService.lambdaQuery() getCommissionExpectedBizId(commission);
.eq(CommissionExpected::getPolicyNo, commission.getPolicyNo())
.eq(CommissionExpected::getCommissionPeriod, commission.getCommissionPeriod())
.eq(CommissionExpected::getCommissionName, commission.getCommissionName())
.one();
if (commissionExpected != null) {
commission.setCommissionExpectedBizId(commissionExpected.getCommissionExpectedBizId());
}
// 计算来佣金额(港币) // 计算来佣金额(港币)
BigDecimal hkdAmount = requestAmount BigDecimal hkdAmount = requestAmount
.multiply(commissionUpdateRequest.getExchangeRate()); .multiply(commissionUpdateRequest.getExchangeRate());
...@@ -356,6 +360,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -356,6 +360,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return true; return true;
} }
private void getCommissionExpectedBizId(Commission commission) {
CommissionExpected commissionExpected = null;
if ("R".equals(commission.getCommissionBizType())) {
commissionExpected = commissionExpectedService.lambdaQuery()
.eq(CommissionExpected::getPolicyNo, commission.getPolicyNo())
.eq(CommissionExpected::getCommissionBizType, commission.getCommissionBizType())
.eq(CommissionExpected::getCommissionPeriod, commission.getCommissionPeriod())
.eq(CommissionExpected::getCommissionName, commission.getCommissionName())
.one();
} else {
// 从应收款管理查询到应收编号,如果没有应收编号,就需要同步到应收款管理
commissionExpected = commissionExpectedService.lambdaQuery()
.eq(CommissionExpected::getCommissionBizType, commission.getCommissionBizType())
.eq(CommissionExpected::getReconciliationCompanyBizId, commission.getReconciliationCompanyBizId())
.eq(CommissionExpected::getCommissionName, commission.getCommissionName())
.one();
}
if (commissionExpected != null) {
commission.setCommissionExpectedBizId(commissionExpected.getCommissionExpectedBizId());
commission.setReceivableNo(commissionExpected.getReceivableNo());
} else {
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
}
}
@Override @Override
public void validateCommissionUpdateRequest(CommissionUpdateRequest commissionUpdateRequest) { public void validateCommissionUpdateRequest(CommissionUpdateRequest commissionUpdateRequest) {
// 校验入参 // 校验入参
...@@ -747,24 +777,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -747,24 +777,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setPolicyNo(null); commission.setPolicyNo(null);
} }
// 关联预计来佣信息 // 关联预计来佣信息
if (CollectionUtils.isNotEmpty(commissionExpectedList)) { getCommissionExpectedBizIdBatch(request, commissionExpectedList, commission);
// 根据保单号、期数、入账名称、币种查询预计来佣记录
CommissionExpected expected = commissionExpectedList.stream()
.filter(item -> item.getPolicyNo().equals(request.getPolicyNo())
&& item.getCommissionPeriod().equals(request.getCommissionPeriod())
&& item.getCommissionName().equals(request.getCommissionName()))
.findFirst()
.orElse(null);
if (expected != null) {
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setTotalPeriod(expected.getTotalPeriod());
} else {
log.warn("新增入账:未查询到预计来佣记录, policyNo: {}, commissionPeriod: {}, commissionName: {}, currency: {}",
request.getPolicyNo(), request.getCommissionPeriod(), request.getCommissionName(), request.getCurrency());
commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
}
}
commissionList.add(commission); commissionList.add(commission);
} }
// 提交事务,保存数据 // 提交事务,保存数据
...@@ -788,6 +802,37 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -788,6 +802,37 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return commissionList; return commissionList;
} }
private static void getCommissionExpectedBizIdBatch(CommissionAddRequest request, List<CommissionExpected> commissionExpectedList, Commission commission) {
if (CollectionUtils.isNotEmpty(commissionExpectedList)) {
CommissionExpected expected;
if ("R".equals(request.getCommissionBizType())) {
// 根据保单号、期数、入账名称,查询预计来佣记录
expected = commissionExpectedList.stream()
.filter(item -> item.getPolicyNo().equals(request.getPolicyNo())
&& item.getCommissionBizType().equals(request.getCommissionBizType())
&& item.getCommissionPeriod().equals(request.getCommissionPeriod())
&& item.getCommissionName().equals(request.getCommissionName()))
.findFirst()
.orElse(null);
} else {
expected = commissionExpectedList.stream()
.filter(item -> item.getReconciliationCompanyBizId().equals(request.getReconciliationCompanyBizId())
&& item.getCommissionName().equals(request.getCommissionName())
&& item.getCommissionBizType().equals(request.getCommissionBizType()))
.findFirst()
.orElse(null);
}
if (expected != null) {
commission.setCommissionExpectedBizId(expected.getCommissionExpectedBizId());
commission.setReceivableNo(expected.getReceivableNo());
commission.setTotalPeriod(expected.getTotalPeriod());
} else {
commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
}
}
}
private void validateAddCommissionBatch(List<CommissionAddRequest> customerAddRequestList) { private void validateAddCommissionBatch(List<CommissionAddRequest> customerAddRequestList) {
for (CommissionAddRequest request : customerAddRequestList) { for (CommissionAddRequest request : customerAddRequestList) {
// 校验数据 // 校验数据
...@@ -815,6 +860,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -815,6 +860,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest) { public Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest) {
if (StringUtils.isBlank(addToExpectedCommissionRequest.getCommissionBizId())) { if (StringUtils.isBlank(addToExpectedCommissionRequest.getCommissionBizId())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣业务id不能为空"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣业务id不能为空");
...@@ -824,7 +870,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -824,7 +870,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣记录不存在"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "来佣记录不存在");
} }
if (commission.getCommissionExpectedBizId() != null) { CommissionExpected commissionExpected = commissionExpectedService.getByBizId(commission.getCommissionExpectedBizId());
if (commissionExpected != null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计来佣已存在"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "预计来佣已存在");
} }
...@@ -833,21 +880,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -833,21 +880,32 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
String loginUserId = currentLoginUser.getId().toString(); String loginUserId = currentLoginUser.getId().toString();
CommissionExpected expected = new CommissionExpected(); CommissionExpected expected = new CommissionExpected();
BeanUtils.copyProperties(commission, expected); BeanUtils.copyProperties(commission, expected, "id");
expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected")); expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
// 设置预计入账金额、已来佣金额、待入账金额 // 设置预计入账金额、已来佣金额、待入账金额
expected.setExpectedAmount(commission.getAmount()); expected.setExpectedAmount(commission.getHkdAmount());
expected.setPaidAmount(BigDecimal.ZERO); expected.setPaidAmount(commission.getHkdAmount());
expected.setPaidRatio(BigDecimal.valueOf(100)); expected.setPaidRatio(null);
expected.setDefaultExchangeRate(commission.getExchangeRate()); expected.setDefaultExchangeRate(commission.getExchangeRate());
expected.setCommissionDate(new Date()); expected.setCommissionDate(commission.getCommissionDate());
expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
expected.setStatusDesc("比对成功,通过手动同步预计来佣"); // 设置状态描述为比对成功
expected.setCreatorId(loginUserId); expected.setCreatorId(loginUserId);
expected.setCreateTime(new Date()); expected.setCreateTime(new Date());
expected.setUpdaterId(loginUserId); expected.setUpdaterId(loginUserId);
expected.setUpdateTime(new Date()); expected.setUpdateTime(new Date());
// 保存预计来佣记录
commissionExpectedService.save(expected);
return commissionExpectedService.save(expected); // 更新来佣记录
this.lambdaUpdate()
.set(Commission::getCommissionExpectedBizId, expected.getCommissionExpectedBizId())
.set(Commission::getStatus, CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())
.eq(Commission::getId, commission.getId())
.update();
return true;
} }
@Override @Override
......
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