Commit 92d7f787 by jianan

出账检核-增加币种53

parent 72070e82
package com.yd.csf.api.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -33,7 +33,6 @@ import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.dto.UserGradeDto;
import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.enums.FortuneTypeEnum;
import com.yd.csf.service.helper.FeignResultHelper;
import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*;
......@@ -71,8 +70,8 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.ibm.icu.impl.ValidIdentifiers.Datatype.currency;
@Slf4j
......@@ -1017,8 +1016,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (CollectionUtils.isEmpty(fortuneAddRequestList)) {
return true;
}
// 校验参数
validateAdd(fortuneAddRequestList);
// 根据保单号、期数、项目类型查询已存在的记录
validIsExist(fortuneAddRequestList);
// 查询保单信息
Set<String> policyNoSet = fortuneAddRequestList.stream()
.map(ExpectedFortuneAddRequest::getPolicyNo)
......@@ -1100,6 +1103,39 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return true;
}
private void validIsExist(List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
Set<String> policyNoSet = new HashSet<>();
Set<Integer> fortunePeriodSet = new HashSet<>();
Set<String> fortuneBizTypeSet = new HashSet<>();
for (ExpectedFortuneAddRequest request : fortuneAddRequestList) {
policyNoSet.add(request.getPolicyNo());
fortunePeriodSet.add(request.getFortunePeriod());
fortuneBizTypeSet.add(request.getFortuneBizType());
}
List<ExpectedFortune> existingRecords = iExpectedFortuneService.lambdaQuery()
.in(ExpectedFortune::getPolicyNo, policyNoSet)
.in(ExpectedFortune::getFortunePeriod, fortunePeriodSet)
.in(ExpectedFortune::getFortuneBizType, fortuneBizTypeSet)
.list();
// 转换为 Map
Map<String, ExpectedFortune> existingRecordsMap = new HashMap<>();
for (ExpectedFortune item : existingRecords) {
String key = String.format("%s_%s_%s", item.getPolicyNo(), item.getFortunePeriod(), item.getFortuneBizType());
existingRecordsMap.put(key, item);
}
// 校验是否存在
for (ExpectedFortuneAddRequest request : fortuneAddRequestList) {
String key = String.format("%s_%s_%s", request.getPolicyNo(), request.getFortunePeriod(), request.getFortuneBizType());
if (existingRecordsMap.containsKey(key)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "当前期数已存在: " + request.getFortuneName());
}
}
}
private String queryByDict(String fortuneType) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_fortune_type");
if (ObjectUtils.isNotEmpty(result.getData())) {
......@@ -1383,12 +1419,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
throw new BusinessException(ResultCode.FAIL.getCode(), "当前应付款已有出账金额,不能修改");
}
// 查询保单数据
Policy policy = null;
if (StringUtils.isNotBlank(request.getPolicyNo())) {
policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", request.getPolicyNo()));
}
// 根据保单号、期数查询关联 fortune 数据,重新计算:已出帐金额、待出帐金额、已出帐比例、待出帐比例
List<Fortune> fortuneList = fortuneService.lambdaQuery()
.eq(Fortune::getPolicyNo, request.getPolicyNo())
......@@ -1420,12 +1450,19 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
updateExpectedFortune.setId(expectedFortune.getId());
// 设置 policy 关联字段
if (!expectedFortune.getPolicyNo().equals(updateExpectedFortune.getPolicyNo())) {
// 查询保单数据
Policy policy = null;
if (StringUtils.isNotBlank(request.getPolicyNo())) {
policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", request.getPolicyNo()));
}
if (policy != null) {
updateExpectedFortune.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId());
updateExpectedFortune.setProductLaunchBizId(policy.getProductLaunchBizId());
updateExpectedFortune.setPremium(policy.getPaymentPremium());
updateExpectedFortune.setPolicyCurrency(policy.getCurrency());
}
}
// 处理出账年月字段
if (StringUtils.isNotBlank(request.getPayoutDate())) {
......
......@@ -44,7 +44,7 @@ spring:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: b3b01715-eb85-4242-992a-5aff03d864d4
namespace: 9486683f-2bc3-41b0-a60f-7d49b85d1ff0
# nacos的ip地址和端口
server-addr: 139.224.145.34:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
......
......@@ -807,6 +807,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.FAIL.getCode(), fortuneAddRequest.getFortuneName() + " 已存在应付记录,请在应付款管理页面修改金额");
}
fortune.setPayableNo(expectedFortune.getPayableNo());
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
......
......@@ -79,24 +79,11 @@
then round(100 - (ifnull(sum(ef.paid_amount), 0) / ifnull(sum(ef.hkd_amount), 0) * 100), 2)
else 100
end as unpaidRatio,
MAX(first_broker.broker_name) as broker,
MAX(first_broker.broker_biz_id) as brokerBizId,
MAX(ef.broker) as broker,
MAX(ef.broker_biz_id) as brokerBizId,
DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ef.fortune_period - 1) YEAR) as payoutDate
from expected_fortune ef
left join policy p on ef.policy_no = p.policy_no
left join (
SELECT pb1.policy_no, pb1.broker_name,pb1.broker_biz_id
FROM policy_broker pb1
WHERE pb1.id = (
SELECT pb2.id
FROM policy_broker pb2
WHERE pb2.policy_no = pb1.policy_no
AND pb2.is_deleted = 0
ORDER BY pb2.id ASC
LIMIT 1
)
AND pb1.is_deleted = 0
) first_broker on ef.policy_no = first_broker.policy_no
<where>
ef.fortune_biz_type = 'R'
<if test="expectedFortuneIds != null and expectedFortuneIds.size > 0">
......
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