Commit cff716bb by jianan

前端对接问题修复10

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