Commit 677bae3e by jianan

新单跟进v2

parent c2c82dd6
......@@ -32,6 +32,8 @@ public interface CommissionService extends IService<Commission> {
Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest);
String buildPolicyPeriodKey(String policyNo, Object period);
Commission getByCommissionBizId(String commissionBizId);
List<Commission> queryList(CommissionDto dto);
......
......@@ -726,7 +726,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
/**
* 构建保单号+期次的唯一键
*/
private String buildPolicyPeriodKey(String policyNo, Object period) {
@Override
public String buildPolicyPeriodKey(String policyNo, Object period) {
return (policyNo == null ? "" : policyNo) + "|" + (period == null ? "" : period.toString());
}
......
......@@ -26,12 +26,10 @@ import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.vo.FortuneVO;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -43,7 +41,6 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -674,6 +671,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
(oldValue, newValue) -> newValue)
);
}
// 查询入账记录
List<Commission> commissionList = commissionService.lambdaQuery().eq(Commission::getPolicyNo, policyNoSet)
.list();
Map<String, Commission> commissionByPolicyPeriod = new HashMap<>();
if (CollectionUtils.isNotEmpty(commissionList)) {
commissionByPolicyPeriod = commissionList.stream()
.collect(Collectors.toMap(
commission -> commissionService.buildPolicyPeriodKey(commission.getPolicyNo(), commission.getCommissionPeriod()),
Function.identity(),
(oldValue, newValue) -> newValue // 遇到重复时使用新值
));
}
List<Fortune> fortuneList = new ArrayList<>();
for (FortuneAddRequest fortuneAddRequest : fortuneAddRequestList) {
......@@ -689,12 +699,22 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), fortuneAddRequest.getFortuneName() + " 预计出账不存在");
}
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setCommissionExpectedBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency());
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(expectedFortune.getDefaultExchangeRate()));
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setPayoutDate(expectedFortune.getPayoutDate());
// 关联来佣业务ID
String key = commissionService.buildPolicyPeriodKey(expectedFortune.getPolicyNo(), expectedFortune.getFortunePeriod());
Commission matchedCommission = commissionByPolicyPeriod.get(key);
if (matchedCommission != null) {
fortune.setCommissionBizId(matchedCommission.getCommissionBizId());
fortune.setCommissionExpectedBizId(matchedCommission.getCommissionExpectedBizId());
} else {
fortune.setStatus(FortuneStatusEnum.MATCH_FAIL.getItemValue());
fortune.setRemark("未找到当前预计发佣对应的来佣");
}
} else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency()));
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate()));
......
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