Commit dfc546dc by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents 9e19f051 bedd41e8
...@@ -119,22 +119,25 @@ public class ApiCommissionController { ...@@ -119,22 +119,25 @@ public class ApiCommissionController {
.map(CommissionExcelDTO::getPolicyNo2) .map(CommissionExcelDTO::getPolicyNo2)
.filter(StringUtils::isNotBlank) .filter(StringUtils::isNotBlank)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
List<Policy> policies = policyService.lambdaQuery()
.in(Policy::getPolicyNo, policyNos)
.list();
Set<String> existingPolicyNos = policies.stream().map(Policy::getPolicyNo).collect(Collectors.toSet());
StringBuilder errorMsg = new StringBuilder(); if (ObjectUtils.isNotEmpty(policyNos)) {
for (CommissionExcelDTO excelDTO : dataList) { List<Policy> policies = policyService.lambdaQuery()
if (StringUtils.isNotBlank(excelDTO.getPolicyNo())) { .in(Policy::getPolicyNo, policyNos)
if (!existingPolicyNos.contains(excelDTO.getPolicyNo())) { .list();
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行保单不存在"); Set<String> existingPolicyNos = policies.stream().map(Policy::getPolicyNo).collect(Collectors.toSet());
StringBuilder errorMsg = new StringBuilder();
for (CommissionExcelDTO excelDTO : dataList) {
if (StringUtils.isNotBlank(excelDTO.getPolicyNo())) {
if (!existingPolicyNos.contains(excelDTO.getPolicyNo())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行保单不存在");
}
} }
} }
} if (StringUtils.isNotBlank(errorMsg)) {
if (StringUtils.isNotBlank(errorMsg)) { errorMsg.append("\n请确认保单中心是否存在该保单,若不存在请先添加");
errorMsg.append("\n请确认保单中心是否存在该保单,若不存在请先添加"); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), errorMsg.toString());
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), errorMsg.toString()); }
} }
// 获取当前登录用户的ID // 获取当前登录用户的ID
...@@ -197,12 +200,16 @@ public class ApiCommissionController { ...@@ -197,12 +200,16 @@ public class ApiCommissionController {
} }
if ("关联保单应收单".equals(excelDTO.getCommissionBizType())) { if ("关联保单应收单".equals(excelDTO.getCommissionBizType())) {
if (StringUtils.isBlank(excelDTO.getPolicyNo())) { if (StringUtils.isBlank(excelDTO.getPolicyNo2())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 保单号不能为空"); errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 保单号不能为空");
} }
if (ObjectUtils.isEmpty(excelDTO.getExchangeRate2())) { if (ObjectUtils.isEmpty(excelDTO.getExchangeRate2())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 结算汇率不能为空"); errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行关联保单应收单, 结算汇率不能为空");
} }
} else {
if (StringUtils.isBlank(excelDTO.getReconciliationCompany2())) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行, 非关联保单应收单, 对账公司不能为空");
}
} }
} }
if (errorMsg.length() > 0) { if (errorMsg.length() > 0) {
......
...@@ -534,12 +534,6 @@ public class ApiPolicyFollowController { ...@@ -534,12 +534,6 @@ public class ApiPolicyFollowController {
if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) { if (changePolicyFollowStatusRequest == null || StringUtils.isBlank(changePolicyFollowStatusRequest.getPolicyBizId())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空"); return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "policyBizId不能为空");
} }
if (ObjectUtils.isEmpty(changePolicyFollowStatusRequest.getEffectiveDate())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "生效日期不能为空");
}
if (ObjectUtils.isEmpty(changePolicyFollowStatusRequest.getUnderwritingDate())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "核保日期不能为空");
}
String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId(); String policyBizId = changePolicyFollowStatusRequest.getPolicyBizId();
PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId); PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
...@@ -550,6 +544,12 @@ public class ApiPolicyFollowController { ...@@ -550,6 +544,12 @@ public class ApiPolicyFollowController {
PolicyFollowStatusEnum currentStatusEnum = PolicyFollowStatusEnum.getEnumByValue(changePolicyFollowStatusRequest.getStatus()); PolicyFollowStatusEnum currentStatusEnum = PolicyFollowStatusEnum.getEnumByValue(changePolicyFollowStatusRequest.getStatus());
// 修改为生效时需要校验、同步预计发佣 // 修改为生效时需要校验、同步预计发佣
if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) { if (PolicyFollowStatusEnum.EFFECTIVE.equals(currentStatusEnum)) {
if (ObjectUtils.isEmpty(changePolicyFollowStatusRequest.getEffectiveDate())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "修改为生效状态时,生效日期不能为空");
}
if (ObjectUtils.isEmpty(changePolicyFollowStatusRequest.getUnderwritingDate())) {
return Result.fail(ResultCode.PARAMS_ERROR.getCode(), "修改为生效状态时,核保日期不能为空");
}
String productLaunchBizId = policyFollow.getProductLaunchBizId(); String productLaunchBizId = policyFollow.getProductLaunchBizId();
// 校验产品是否维护预计来佣数据 // 校验产品是否维护预计来佣数据
if (ObjectUtils.isEmpty(productLaunchBizId)) { if (ObjectUtils.isEmpty(productLaunchBizId)) {
......
...@@ -25,9 +25,6 @@ public class CommissionExcelDTO { ...@@ -25,9 +25,6 @@ public class CommissionExcelDTO {
@ExcelProperty("保费") @ExcelProperty("保费")
private String premium; private String premium;
@ExcelProperty("对账公司")
private String reconciliationCompany;
@ExcelProperty("当前来佣期数") @ExcelProperty("当前来佣期数")
private Integer commissionPeriod; private Integer commissionPeriod;
...@@ -76,6 +73,9 @@ public class CommissionExcelDTO { ...@@ -76,6 +73,9 @@ public class CommissionExcelDTO {
@ExcelProperty("结算汇率(实)") @ExcelProperty("结算汇率(实)")
private BigDecimal exchangeRate2; private BigDecimal exchangeRate2;
@ExcelProperty("对账公司")
private String reconciliationCompany2;
/** /**
* 数据转换 * 数据转换
...@@ -94,6 +94,7 @@ public class CommissionExcelDTO { ...@@ -94,6 +94,7 @@ public class CommissionExcelDTO {
entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2())); entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2()));
entity.setExchangeRate(data.getExchangeRate2()); entity.setExchangeRate(data.getExchangeRate2());
entity.setCommissionDate(data.getCommissionDate2()); entity.setCommissionDate(data.getCommissionDate2());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setRemark(data.getRemark()); entity.setRemark(data.getRemark());
entity.setStatus(null); entity.setStatus(null);
entity.setCreatorId(loginUserId); entity.setCreatorId(loginUserId);
...@@ -113,7 +114,7 @@ public class CommissionExcelDTO { ...@@ -113,7 +114,7 @@ public class CommissionExcelDTO {
entity.setPolicyNo(data.getPolicyNo()); entity.setPolicyNo(data.getPolicyNo());
entity.setPremium(data.getPremium()); entity.setPremium(data.getPremium());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode())); entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany()); entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod()); entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod()); entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName()); entity.setCommissionName(data.getCommissionName());
...@@ -142,7 +143,7 @@ public class CommissionExcelDTO { ...@@ -142,7 +143,7 @@ public class CommissionExcelDTO {
// 字段映射 // 字段映射
entity.setPolicyNo(data.getPolicyNo()); entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected")); entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setReconciliationCompany(data.getReconciliationCompany()); entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod()); entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod()); entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName()); entity.setCommissionName(data.getCommissionName());
......
...@@ -54,6 +54,11 @@ public class Commission implements Serializable { ...@@ -54,6 +54,11 @@ public class Commission implements Serializable {
private String premium; private String premium;
/** /**
* 保单币种
*/
private String policyCurrency;
/**
* 保险公司 id * 保险公司 id
*/ */
private String insuranceCompanyBizId; private String insuranceCompanyBizId;
......
...@@ -54,6 +54,8 @@ public interface PolicyFollowService extends IService<PolicyFollow> { ...@@ -54,6 +54,8 @@ public interface PolicyFollowService extends IService<PolicyFollow> {
Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest); Boolean uploadAttachment(AttachmentUploadRequest attachmentUploadRequest);
String queryReconciliationCompanyByFeign(String reconciliationCompanyBizId);
String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum); String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum);
String getCurrencyValue(String currency); String getCurrencyValue(String currency);
......
...@@ -486,7 +486,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -486,7 +486,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (effectiveDate == null) { if (effectiveDate == null) {
throw new BusinessException("保单生效日期不能为空"); throw new BusinessException("保单生效日期不能为空");
} }
Object paymentTerm = policy.getPaymentTerm(); String paymentTerm = Convert.toStr(policy.getPaymentTerm());
if (paymentTerm == null) { if (paymentTerm == null) {
throw new BusinessException("保单供款年期不能为空"); throw new BusinessException("保单供款年期不能为空");
} }
...@@ -496,21 +496,23 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -496,21 +496,23 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (StringUtils.isNotBlank(productLaunchBizId)) { if (StringUtils.isNotBlank(productLaunchBizId)) {
List<ApiExpectedSpeciesListResponse> expectedSpeciesList = queryExpectedSpeciesByFeign(productLaunchBizId); List<ApiExpectedSpeciesListResponse> expectedSpeciesList = queryExpectedSpeciesByFeign(productLaunchBizId);
log.info("productLaunchBizId:{}, 查询到的佣金规格列表:{}", productLaunchBizId, expectedSpeciesList);
List<CommissionExpected> commissionExpectedList = new ArrayList<>(); List<CommissionExpected> commissionExpectedList = new ArrayList<>();
if (CollUtil.isNotEmpty(expectedSpeciesList)) { if (CollUtil.isNotEmpty(expectedSpeciesList)) {
// 计算佣金总期数 list 中 endPeriod最大值
Integer maxEndPeriod = expectedSpeciesList.stream()
.map(item -> Convert.toInt(item.getEndPeriod()))
.max(Integer::compareTo)
.orElse(0);
// 根据供款年期匹配规格 // 根据供款年期匹配规格
List<ApiExpectedSpeciesListResponse> collect = expectedSpeciesList.stream() List<ApiExpectedSpeciesListResponse> collect = expectedSpeciesList.stream()
.filter(i -> paymentTerm.equals(i.getPaymentTerm())) .filter(i -> paymentTerm.equals(i.getPaymentTerm()))
.collect(Collectors.toList()); .collect(Collectors.toList());
if (ObjectUtils.isEmpty(collect)) {
throw new BusinessException(ResultCode.FAIL.getCode(), "未查询到对应供款年期的佣金规格");
}
// 计算佣金总期数 list 中 endPeriod最大值
Integer maxEndPeriod = collect.stream()
.map(item -> Convert.toInt(item.getEndPeriod()))
.max(Integer::compareTo)
.orElse(0);
for (ApiExpectedSpeciesListResponse item : collect) { for (ApiExpectedSpeciesListResponse item : collect) {
CommissionExpected commissionExpected = new CommissionExpected(); CommissionExpected commissionExpected = new CommissionExpected();
commissionExpected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected")); commissionExpected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
...@@ -565,10 +567,12 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte ...@@ -565,10 +567,12 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId); apiExpectedSpeciesListRequest.setProductLaunchBizId(productLaunchBizId);
Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest); Result<List<ApiExpectedSpeciesListResponse>> result = apiExpectedSpeciesFeignClient.list(apiExpectedSpeciesListRequest);
if (ObjectUtils.isNotEmpty(result.getData())) { if (result != null && result.getCode() == 200) {
return result.getData(); return result.getData();
} else {
log.error("查询预计出佣规格失败: productLaunchBizId={}", productLaunchBizId);
throw new BusinessException(ResultCode.FAIL.getCode(), "查询预计出佣规格失败");
} }
return Collections.emptyList();
} }
@Override @Override
......
...@@ -25,6 +25,8 @@ import com.yd.csf.service.service.*; ...@@ -25,6 +25,8 @@ import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionMapper; import com.yd.csf.service.dao.CommissionMapper;
import com.yd.csf.service.vo.CommissionStatisticsVO; import com.yd.csf.service.vo.CommissionStatisticsVO;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import com.yd.insurance.base.feign.client.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyFeignClient;
import com.yd.insurance.base.feign.request.insurancereconciliationcompany.ApiInsuranceReconciliationCompanyPageRequest;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient; import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse; import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -81,6 +83,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -81,6 +83,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
private ReceivableService receivableService; private ReceivableService receivableService;
@Autowired @Autowired
private ApiSysDictFeignClient apiSysDictFeignClient; private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Override @Override
...@@ -240,6 +244,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -240,6 +244,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
.in(CommissionExpected::getPolicyNo, policyNoSet) .in(CommissionExpected::getPolicyNo, policyNoSet)
.select(CommissionExpected::getCommissionExpectedBizId, .select(CommissionExpected::getCommissionExpectedBizId,
CommissionExpected::getPolicyNo, CommissionExpected::getPolicyNo,
CommissionExpected::getCommissionBizType,
CommissionExpected::getReceivableNo, CommissionExpected::getReceivableNo,
CommissionExpected::getCommissionPeriod, CommissionExpected::getCommissionPeriod,
CommissionExpected::getTotalPeriod, CommissionExpected::getTotalPeriod,
...@@ -249,13 +254,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -249,13 +254,25 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected::getStatus) CommissionExpected::getStatus)
.list(); .list();
// 3.查询对账公司列表
Set<String> reconciliationCompanySet = commissionList.stream()
.map(Commission::getReconciliationCompany)
.filter(Objects::nonNull).collect(Collectors.toSet());
List<Map<String, Object>> reconciliationCompanyList = Collections.emptyList();
if (!reconciliationCompanySet.isEmpty()) {
reconciliationCompanyList = queryReconciliationCompanyListByFeign();
}
// 填充信息 // 填充信息
commissionList.forEach(commission -> { for (Commission commission : commissionList) {
Policy policy = policyMap.get(commission.getPolicyNo()); Policy policy = policyMap.get(commission.getPolicyNo());
if (policy != null) { if (policy != null) {
// 填充保费、产品名称、保险公司、对账公司 // 填充保费、产品名称、保险公司、对账公司
commission.setPremium(String.valueOf(policy.getPaymentPremium())); commission.setPremium(String.valueOf(policy.getPaymentPremium()));
commission.setCurrency(policy.getCurrency()); commission.setCurrency(policy.getCurrency());
commission.setPolicyCurrency(policy.getCurrency());
commission.setProductLaunchBizId(policy.getProductLaunchBizId()); commission.setProductLaunchBizId(policy.getProductLaunchBizId());
commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId()); commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId());
commission.setReconciliationCompany(policy.getReconciliationCompany()); commission.setReconciliationCompany(policy.getReconciliationCompany());
...@@ -275,9 +292,52 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -275,9 +292,52 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setRemark("未查询到预计来佣记录"); commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue()); commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
} }
// 设置对账公司信息
if (!reconciliationCompanyList.isEmpty()) {
setReconciliationCompanyInfo(commission, reconciliationCompanyList);
}
// 计算来佣金额(港币) // 计算来佣金额(港币)
commission.setHkdAmount(calculateHKDAmount(commission.getAmount(), commission.getExchangeRate(), commission.getCurrency())); commission.setHkdAmount(calculateHKDAmount(commission.getAmount(), commission.getExchangeRate(), commission.getCurrency()));
}); }
}
private void setReconciliationCompanyInfo(Commission commission, List<Map<String, Object>> reconciliationCompanyList) {
for (Map<String, Object> map : reconciliationCompanyList) {
String name = (String) map.get("name");
if (name.contains(commission.getReconciliationCompany())) {
commission.setReconciliationCompany(Convert.toStr(map.get("name")));
commission.setReconciliationCompanyBizId(Convert.toStr(map.get("reconciliationCompanyBizId")));
commission.setReconciliationCompanyCode(Convert.toStr(map.get("code")));
break;
}
}
}
public List<Map<String, Object>> queryReconciliationCompanyListByFeign() {
ApiInsuranceReconciliationCompanyPageRequest reconciliationCompanyPageRequest = new ApiInsuranceReconciliationCompanyPageRequest();
reconciliationCompanyPageRequest.setPageNo(1);
reconciliationCompanyPageRequest.setPageSize(999);
Result iPageResult = apiInsuranceReconciliationCompanyFeignClient.page(reconciliationCompanyPageRequest);
// 解析响应获取对账公司编码
if (iPageResult != null && iPageResult.getCode() == 200) {
try {
// Feign 返回的泛型会被反序列化为 LinkedHashMap,需要手动提取
Object data = iPageResult.getData();
if (data instanceof Map) {
Map<String, Object> dataMap = (Map<String, Object>) data;
Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) {
List<Map<String, Object>> records = (List<Map<String, Object>>) recordsObj;
return records;
}
}
} catch (Exception e) {
log.error("解析对账公司响应失败: {}", e.getMessage(), e);
}
}
return Collections.emptyList();
} }
private CommissionExpected findExpectedFromList(Commission commission, List<CommissionExpected> commissionExpectedList) { private CommissionExpected findExpectedFromList(Commission commission, List<CommissionExpected> commissionExpectedList) {
...@@ -653,7 +713,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -653,7 +713,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return BigDecimal.valueOf(1); return BigDecimal.valueOf(1);
} }
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd"); Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(result.getData())) { if (CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) { for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) { if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue()); return new BigDecimal(dictItem.getItemValue());
...@@ -777,6 +837,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -777,6 +837,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId()); commission.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId());
commission.setPremium(Convert.toStr(policy.getPaymentPremium())); commission.setPremium(Convert.toStr(policy.getPaymentPremium()));
commission.setCurrency(policy.getCurrency()); commission.setCurrency(policy.getCurrency());
commission.setPolicyCurrency(policy.getCurrency());
} else { } else {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo()); throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "保单不存在, policyNo: " + request.getPolicyNo());
} }
...@@ -910,6 +971,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -910,6 +971,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected expected = new CommissionExpected(); CommissionExpected expected = new CommissionExpected();
BeanUtils.copyProperties(commission, expected, "id", "remark"); BeanUtils.copyProperties(commission, expected, "id", "remark");
expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected")); expected.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
if (ObjectUtils.isEmpty(commission.getReconciliationCompanyCode())) {
if (ObjectUtils.isEmpty(commission.getReconciliationCompanyBizId())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "来佣记录未关联对账公司");
}
// 调用对账公司 feignclient,查询对账公司编码
String reconciliationCompanyCode = policyFollowService.queryReconciliationCompanyByFeign(commission.getReconciliationCompanyBizId());
expected.setReconciliationCompanyCode(reconciliationCompanyCode);
commission.setReconciliationCompanyCode(reconciliationCompanyCode);
}
// 生成应收单编号 // 生成应收单编号
expected.setReceivableNo(receivableService.generateReceivableNo( expected.setReceivableNo(receivableService.generateReceivableNo(
commission.getCommissionBizType(), commission.getCommissionBizType(),
...@@ -937,13 +1008,21 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -937,13 +1008,21 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
.set(Commission::getCommissionExpectedBizId, expected.getCommissionExpectedBizId()) .set(Commission::getCommissionExpectedBizId, expected.getCommissionExpectedBizId())
.set(Commission::getReceivableNo, expected.getReceivableNo()) .set(Commission::getReceivableNo, expected.getReceivableNo())
.set(Commission::getStatus, CommissionStatusEnum.COMPARE_SUCCESS.getItemValue()) .set(Commission::getStatus, CommissionStatusEnum.COMPARE_SUCCESS.getItemValue())
.set(Commission::getRemark, null) .set(Commission::getStatusDesc, expected.getStatusDesc())
.set(Commission::getRemark, expected.getStatusDesc())
.eq(Commission::getId, commission.getId()) .eq(Commission::getId, commission.getId())
.update(); .update();
return true; return true;
} }
private String queryReconciliationCompany(String insuranceCompanyBizId) {
if (ObjectUtils.isNotEmpty(insuranceCompanyBizId)) {
}
return null;
}
@Override @Override
public int updateStatusBatchById(List<Commission> existingCommissions) { public int updateStatusBatchById(List<Commission> existingCommissions) {
return this.baseMapper.updateStatusBatchById(existingCommissions); return this.baseMapper.updateStatusBatchById(existingCommissions);
......
...@@ -499,41 +499,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -499,41 +499,8 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
policy.setReconciliationCompany(productInfo.getReconciliationCompany()); policy.setReconciliationCompany(productInfo.getReconciliationCompany());
policy.setReconciliationCompanyBizId(productInfo.getReconciliationCompanyBizId()); policy.setReconciliationCompanyBizId(productInfo.getReconciliationCompanyBizId());
String reconciliationCompanyCode = null;
// 调用对账公司 feignclient,查询对账公司编码 // 调用对账公司 feignclient,查询对账公司编码
ApiInsuranceReconciliationCompanyPageRequest reconciliationCompanyPageRequest = new ApiInsuranceReconciliationCompanyPageRequest(); String reconciliationCompanyCode = queryReconciliationCompanyByFeign(policy.getReconciliationCompanyBizId());
reconciliationCompanyPageRequest.setPageNo(1);
reconciliationCompanyPageRequest.setPageSize(999);
Result iPageResult = apiInsuranceReconciliationCompanyFeignClient.page(reconciliationCompanyPageRequest);
// 解析响应获取对账公司编码
if (iPageResult != null && iPageResult.getCode() == 200) {
try {
// Feign 返回的泛型会被反序列化为 LinkedHashMap,需要手动提取
Object data = iPageResult.getData();
if (data instanceof Map) {
Map<String, Object> dataMap = (Map<String, Object>) data;
Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) {
List<Map<String, Object>> records = (List<Map<String, Object>>) recordsObj;
// 遍历分页结果,找到匹配的对账公司
String targetBizId = policy.getReconciliationCompanyBizId();
for (Map<String, Object> record : records) {
String recordBizId = (String) record.get("reconciliationCompanyBizId");
if (targetBizId.equals(recordBizId)) {
// 获取对账公司编码
reconciliationCompanyCode = (String) record.get("code");
log.info("从对账公司服务获取编码: reconciliationCompanyBizId={}, code={}",
targetBizId, reconciliationCompanyCode);
break; // 找到后跳出循环
}
}
}
}
} catch (Exception e) {
log.error("解析对账公司响应失败: {}", e.getMessage(), e);
}
}
// 如果仍然没有获取到编码,抛异常 // 如果仍然没有获取到编码,抛异常
if (StringUtils.isBlank(reconciliationCompanyCode)) { if (StringUtils.isBlank(reconciliationCompanyCode)) {
...@@ -570,6 +537,43 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol ...@@ -570,6 +537,43 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
return true; return true;
} }
/**
* 调用对账公司 feignclient,查询对账公司编码
*/
@Override
public String queryReconciliationCompanyByFeign(String reconciliationCompanyBizId) {
ApiInsuranceReconciliationCompanyPageRequest reconciliationCompanyPageRequest = new ApiInsuranceReconciliationCompanyPageRequest();
reconciliationCompanyPageRequest.setPageNo(1);
reconciliationCompanyPageRequest.setPageSize(999);
Result iPageResult = apiInsuranceReconciliationCompanyFeignClient.page(reconciliationCompanyPageRequest);
// 解析响应获取对账公司编码
if (iPageResult != null && iPageResult.getCode() == 200) {
try {
// Feign 返回的泛型会被反序列化为 LinkedHashMap,需要手动提取
Object data = iPageResult.getData();
if (data instanceof Map) {
Map<String, Object> dataMap = (Map<String, Object>) data;
Object recordsObj = dataMap.get("records");
if (recordsObj instanceof List) {
List<Map<String, Object>> records = (List<Map<String, Object>>) recordsObj;
// 遍历分页结果,找到匹配的对账公司
for (Map<String, Object> record : records) {
String recordBizId = (String) record.get("reconciliationCompanyBizId");
if (reconciliationCompanyBizId.equals(recordBizId)) {
// 获取对账公司编码
return (String) record.get("code");
}
}
}
}
} catch (Exception e) {
log.error("解析对账公司响应失败: {}", e.getMessage(), e);
}
}
return null;
}
@Override @Override
public String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum) { public String getNextStatus(PolicyFollowStatusEnum policyFollowStatusEnum) {
// 根据当前状态返回可能的下一步状态 // 根据当前状态返回可能的下一步状态
......
...@@ -50,6 +50,12 @@ public class CommissionVO implements Serializable { ...@@ -50,6 +50,12 @@ public class CommissionVO implements Serializable {
private String policyNo; private String policyNo;
/** /**
* 保单币种
*/
@Schema(description = "保单币种")
private String policyCurrency;
/**
* 期交保费 * 期交保费
*/ */
@Schema(description = "期交保费") @Schema(description = "期交保费")
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
<result property="commissionBizType" column="commission_biz_type" /> <result property="commissionBizType" column="commission_biz_type" />
<result property="policyNo" column="policy_no" /> <result property="policyNo" column="policy_no" />
<result property="premium" column="premium" /> <result property="premium" column="premium" />
<result property="policyCurrency" column="policy_currency" />
<result property="insuranceCompanyBizId" column="insurance_company_biz_id" /> <result property="insuranceCompanyBizId" column="insurance_company_biz_id" />
<result property="productLaunchBizId" column="product_launch_biz_id" /> <result property="productLaunchBizId" column="product_launch_biz_id" />
<result property="reconciliationCompany" column="reconciliation_company" /> <result property="reconciliationCompany" column="reconciliation_company" />
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id,receivable_no,commission_biz_id,reconciliation_year_month,commission_biz_type,policy_no,premium, id,receivable_no,commission_biz_id,reconciliation_year_month,commission_biz_type,policy_no,premium,policy_currency,
insurance_company_biz_id,product_launch_biz_id, insurance_company_biz_id,product_launch_biz_id,
reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period, reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,exchange_rate,amount,currency, total_period,commission_name,commission_type,exchange_rate,amount,currency,
......
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