Commit bedd41e8 by jianan

新单跟进v2

parent 08ef6c9e
......@@ -206,6 +206,10 @@ public class ApiCommissionController {
if (ObjectUtils.isEmpty(excelDTO.getExchangeRate2())) {
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) {
......
......@@ -25,9 +25,6 @@ public class CommissionExcelDTO {
@ExcelProperty("保费")
private String premium;
@ExcelProperty("对账公司")
private String reconciliationCompany;
@ExcelProperty("当前来佣期数")
private Integer commissionPeriod;
......@@ -76,6 +73,9 @@ public class CommissionExcelDTO {
@ExcelProperty("结算汇率(实)")
private BigDecimal exchangeRate2;
@ExcelProperty("对账公司")
private String reconciliationCompany2;
/**
* 数据转换
......@@ -94,6 +94,7 @@ public class CommissionExcelDTO {
entity.setCurrency(CurrencyEnum.getEnumByItemLabel(data.getCurrency2()));
entity.setExchangeRate(data.getExchangeRate2());
entity.setCommissionDate(data.getCommissionDate2());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setRemark(data.getRemark());
entity.setStatus(null);
entity.setCreatorId(loginUserId);
......@@ -113,7 +114,7 @@ public class CommissionExcelDTO {
entity.setPolicyNo(data.getPolicyNo());
entity.setPremium(data.getPremium());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
......@@ -142,7 +143,7 @@ public class CommissionExcelDTO {
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setReconciliationCompany(data.getReconciliationCompany2());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
......
......@@ -25,6 +25,8 @@ import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionMapper;
import com.yd.csf.service.vo.CommissionStatisticsVO;
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.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.extern.slf4j.Slf4j;
......@@ -81,6 +83,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
private ReceivableService receivableService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
@Resource
private ApiInsuranceReconciliationCompanyFeignClient apiInsuranceReconciliationCompanyFeignClient;
@Override
......@@ -250,8 +254,19 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
CommissionExpected::getStatus)
.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());
if (policy != null) {
// 填充保费、产品名称、保险公司、对账公司
......@@ -277,9 +292,52 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
commission.setRemark("未查询到预计来佣记录");
commission.setStatus(CommissionStatusEnum.MATCH_FAILED.getItemValue());
}
// 设置对账公司信息
if (!reconciliationCompanyList.isEmpty()) {
setReconciliationCompanyInfo(commission, reconciliationCompanyList);
}
// 计算来佣金额(港币)
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) {
......@@ -655,7 +713,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return BigDecimal.valueOf(1);
}
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()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue());
......
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