Commit 677bae3e by jianan

新单跟进v2

parent c2c82dd6
...@@ -32,6 +32,8 @@ public interface CommissionService extends IService<Commission> { ...@@ -32,6 +32,8 @@ public interface CommissionService extends IService<Commission> {
Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest); Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest);
String buildPolicyPeriodKey(String policyNo, Object period);
Commission getByCommissionBizId(String commissionBizId); Commission getByCommissionBizId(String commissionBizId);
List<Commission> queryList(CommissionDto dto); List<Commission> queryList(CommissionDto dto);
......
...@@ -726,7 +726,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -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()); return (policyNo == null ? "" : policyNo) + "|" + (period == null ? "" : period.toString());
} }
......
...@@ -26,12 +26,10 @@ import com.yd.csf.service.dao.FortuneMapper; ...@@ -26,12 +26,10 @@ import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.vo.FortuneVO; import com.yd.csf.service.vo.FortuneVO;
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 io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -43,7 +41,6 @@ import java.math.BigDecimal; ...@@ -43,7 +41,6 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -674,6 +671,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -674,6 +671,19 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
(oldValue, newValue) -> newValue) (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<>(); List<Fortune> fortuneList = new ArrayList<>();
for (FortuneAddRequest fortuneAddRequest : fortuneAddRequestList) { for (FortuneAddRequest fortuneAddRequest : fortuneAddRequestList) {
...@@ -689,12 +699,22 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -689,12 +699,22 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), fortuneAddRequest.getFortuneName() + " 预计出账不存在"); throw new BusinessException(ResultCode.NULL_ERROR.getCode(), fortuneAddRequest.getFortuneName() + " 预计出账不存在");
} }
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId()); fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setCommissionExpectedBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency()); fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency());
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate()); fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(expectedFortune.getDefaultExchangeRate())); fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(expectedFortune.getDefaultExchangeRate()));
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount()); fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setPayoutDate(expectedFortune.getPayoutDate()); 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 { } else {
fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency())); fortune.setExchangeRate(queryDefaultExchangeRate(fortuneAddRequest.getCurrency()));
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate())); 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