Commit cff716bb by jianan

前端对接问题修复10

parent 03d5c175
......@@ -180,6 +180,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
}
}
//批量设置应付款编号
updatePayableNoBatch(policyNo);
//执行成功完毕,也要销毁redis缓存
redisUtil.deleteObject(RedisConstants.EXPECTED_FORTUNE + policyNo);
......@@ -207,6 +210,22 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
});
}
private void updatePayableNoBatch(String policyNo) {
// 查询最新一条有 payableNo 记录
ExpectedFortune latest = iExpectedFortuneService.getOne(
new QueryWrapper<ExpectedFortune>().isNotNull("payable_no").orderByDesc("id").last("LIMIT 1"),
true
);
//查询当前保单号的所有预计发佣记录
List<ExpectedFortune> expectedFortuneList = iExpectedFortuneService.queryList(policyNo);
//批量更新应付款编号
for (ExpectedFortune expectedFortune : expectedFortuneList) {
expectedFortune.setPayableNo(this.createPayableNo("R", latest));
}
iExpectedFortuneService.updateBatchById(expectedFortuneList);
}
/**
* 执行 - 奖励(非销售佣金基本法)
* @param dto
......@@ -438,10 +457,10 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return true;
}
// 查询最新一条有 payableNo 记录
ExpectedFortune latest = iExpectedFortuneService.getOne(new QueryWrapper<ExpectedFortune>()
.isNotNull("payable_no")
.orderByDesc("id")
.last("limit 1"));
ExpectedFortune latest = iExpectedFortuneService.getOne(
new QueryWrapper<ExpectedFortune>().isNotNull("payable_no").orderByDesc("id").last("LIMIT 1"),
true
);
ArrayList<ExpectedFortune> fortuneList = new ArrayList<>();
for (ExpectedFortuneAddRequest expectedFortuneDto : fortuneAddRequestList) {
......@@ -451,7 +470,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
// 预计发佣业务id
expectedFortune.setExpectedFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EXPECTED_FORTUNE.getCode()));
// 应付款编号
expectedFortune.setPayableNo(this.createPayableNo(expectedFortuneDto, latest));
expectedFortune.setPayableNo(this.createPayableNo(expectedFortune.getFortuneBizType(), latest));
fortuneList.add(expectedFortune);
}
iExpectedFortuneService.saveOrUpdateBatch(fortuneList);
......@@ -461,17 +480,18 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 创建应付款编号 应付款类型-CSF-年份后两位-6位数字(不重复)
*
* @param expectedFortuneDto
* @param fortuneBizType 预计发佣业务类型
* @param latest 最新一条有 payableNo 记录
* @return
*/
private String createPayableNo(ExpectedFortuneAddRequest expectedFortuneDto, ExpectedFortune latest) {
private String createPayableNo(String fortuneBizType, ExpectedFortune latest) {
String seq = "000001";
// 有最新记录,根据最新记录的序号生成下一个序号
if (!Objects.isNull(latest)) {
seq = String.format("%06d", Integer.parseInt(latest.getPayableNo().substring(12)) + 1);
}
return String.format("%s%s%s",
expectedFortuneDto.getFortuneBizType() + "-CSF",
fortuneBizType + "-CSF",
LocalDate.now().getYear() % 100,
seq);
}
......
......@@ -210,6 +210,7 @@ public class CommissionAsyncService {
// 等于预计比例时,所有来佣设置为比对成功
for (Commission existingCommission : existingCommissions) {
existingCommission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
existingCommission.setTotalPeriod(commissionExpected.getTotalPeriod());
// 创建比对记录
compareRecords.add(commissionService.getNewCompareRecord(existingCommission, commissionExpected, currentLoginUser));
}
......@@ -372,6 +373,7 @@ public class CommissionAsyncService {
// 等于预计比例时,所有来佣设置为比对成功
for (Commission existingCommission : existingCommissions) {
existingCommission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
existingCommission.setTotalPeriod(commissionExpected.getTotalPeriod());
}
// 对应预计来佣设置为已来佣
commissionExpected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
......
......@@ -25,6 +25,12 @@ public class CommissionExpectedUpdateRequest implements Serializable {
private String status;
/**
* 设置入账状态-修改理由
*/
@Schema(description = "设置入账状态-修改理由")
private String statusDesc;
/**
* 新单跟进业务id
*/
@Schema(description = "新单跟进业务id", requiredMode = Schema.RequiredMode.REQUIRED)
......@@ -91,6 +97,12 @@ public class CommissionExpectedUpdateRequest implements Serializable {
private String currency;
/**
* 默认结算汇率
*/
@Schema(description = "默认结算汇率(外币对港币)")
private BigDecimal defaultExchangeRate;
/**
* 入账日期
*/
@Schema(description = "入账日期 format:yyyy-MM-dd")
......
......@@ -28,7 +28,7 @@ public class FortuneAddRequest implements Serializable {
private String policyNo;
/**
* 出账状态 0=待出账 1=可出账 2=已出账
* 出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出帐,检核完成 7=未找到当前预计发佣对应的来佣
*/
@Schema(description = "出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出帐,检核完成 7=未找到当前预计发佣对应的来佣, 字典值: csf_expected_fortune_status", requiredMode = Schema.RequiredMode.REQUIRED)
private String status;
......
......@@ -123,6 +123,11 @@ public class CommissionExpected implements Serializable {
private String status;
/**
* 设置入账状态-修改理由
*/
private String statusDesc;
/**
* 默认结算汇率
*/
private BigDecimal defaultExchangeRate;
......
......@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.common.constant.CommonConstant;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.component.ReceivableService;
import com.yd.csf.service.dto.CommissionExpectedAddDto;
......@@ -22,10 +23,14 @@ import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedStatisticsVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.service.model.SysDictItem;
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;
......@@ -55,6 +60,8 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
@Resource
private ReceivableService receivableService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
@Override
......@@ -129,6 +136,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
if (ObjectUtils.isEmpty(commissionExpected.getAmount())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账金额不能为空");
}
if (StringUtils.isBlank(commissionExpected.getCurrency())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "入账币种不能为空");
}
}
// 创建数据时,参数不能为空
if (add) {
......@@ -231,9 +241,9 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
BeanUtils.copyProperties(addDto, commissionExpected);
// 初始值
commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(1));
// 如果币种是美元,默认结算汇率 7.8 美元对港币
if (StringUtils.equalsIgnoreCase(addDto.getCurrency(), "USD")) {
commissionExpected.setDefaultExchangeRate(BigDecimal.valueOf(7.8));
// 如果币种不是港币,查询默认结算汇率
if (!StringUtils.equalsIgnoreCase(addDto.getCurrency(), "HKD")) {
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(addDto.getCurrency()));
}
// 预计总金额
if (policy != null) {
......@@ -280,6 +290,18 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
return true;
}
private BigDecimal queryDefaultExchangeRate(String currency) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
if (CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue());
}
}
}
return BigDecimal.ZERO;
}
@Override
public Boolean deleteCommissionExpected(String commissionExpectedBizId) {
if (StringUtils.isBlank(commissionExpectedBizId)) {
......@@ -307,6 +329,19 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
validCommissionExpected(commissionExpected, false);
// 转换为实体类
BeanUtils.copyProperties(commissionExpectedUpdateRequest, commissionExpected);
// 如果修改了币种,需要更新默认结算汇率、预计入账金额
if (StringUtils.isNotBlank(commissionExpectedUpdateRequest.getCurrency()) && !StringUtils.equalsIgnoreCase(commissionExpectedUpdateRequest.getCurrency(), commissionExpected.getCurrency())) {
commissionExpected.setDefaultExchangeRate(queryDefaultExchangeRate(commissionExpectedUpdateRequest.getCurrency()));
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
}
// 如果修改了金额,需要更新预计入账金额
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getAmount()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getAmount(), commissionExpected.getAmount())) {
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
}
// 如果修改了默认结算汇率,需要更新预计入账金额
if (ObjectUtils.isNotEmpty(commissionExpectedUpdateRequest.getDefaultExchangeRate()) && ObjectUtils.notEqual(commissionExpectedUpdateRequest.getDefaultExchangeRate(), commissionExpected.getDefaultExchangeRate())) {
commissionExpected.setExpectedAmount(commissionExpectedUpdateRequest.getAmount().multiply(commissionExpected.getDefaultExchangeRate()));
}
commissionExpected.setUpdateTime(new Date());
// 更新预计入账
return this.updateById(commissionExpected);
......
......@@ -25,6 +25,7 @@
<result property="commissionDate" column="commission_date" />
<result property="actualCommissionDate" column="actual_commission_date" />
<result property="status" column="status" />
<result property="statusDesc" column="status_desc" />
<result property="defaultExchangeRate" column="default_exchange_rate" />
<result property="expectedAmount" column="expected_amount" />
<result property="paidAmount" column="paid_amount" />
......@@ -42,7 +43,7 @@
policy_no,insurance_company_biz_id,product_launch_biz_id,
reconciliation_company,reconciliation_company_code,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,commission_ratio,amount,currency,default_exchange_rate,expected_amount,
commission_date,status,paid_amount,paid_ratio,remark,is_deleted,creator_id,
commission_date,status,status_desc,paid_amount,paid_ratio,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
......
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