Commit 57dab836 by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents bd3af9fe 50ca4449
......@@ -349,12 +349,8 @@ public class ApiCommissionController {
// if (!oldCommission.getUserId().equals(loginUserId) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// }
// 操作数据库
boolean result = commissionService.removeById(oldCommission.getId());
if (!result) {
return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
}
return Result.success(result);
return Result.success(commissionService.deleteCommission(oldCommission));
}
/**
......
......@@ -1244,18 +1244,22 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (expectedFortune.getPaidAmount().compareTo(BigDecimal.ZERO) > 0) {
throw new BusinessException(ResultCode.FAIL.getCode(), "当前应付款已有出账金额,不能修改");
}
CurrencyEnum currencyEnum;
try {
currencyEnum = CurrencyEnum.valueOf(request.getCurrency());
} catch (IllegalArgumentException e) {
throw new BusinessException(ResultCode.FAIL.getCode(), "币种错误:" + request.getCurrency());
}
ExpectedFortune updateExpectedFortune = new ExpectedFortune();
BeanUtils.copyProperties(request, updateExpectedFortune);
updateExpectedFortune.setId(expectedFortune.getId());
// 默认结算汇率
if (updateExpectedFortune.getDefaultExchangeRate() == null) {
updateExpectedFortune.setDefaultExchangeRate(
queryExchangeRateByFeign(
updateExpectedFortune.getPolicyCurrency(),
updateExpectedFortune.getCurrency()
));
}
updateExpectedFortune.setDefaultExchangeRate(
queryExchangeRateByFeign(
expectedFortune.getPolicyCurrency(),
updateExpectedFortune.getCurrency()
));
// 计算港币金额
updateExpectedFortune.setHkdAmount(updateExpectedFortune.getAmount().multiply(updateExpectedFortune.getDefaultExchangeRate()));
......
......@@ -2,6 +2,7 @@ package com.yd.csf.service.dao;
import com.yd.csf.service.model.CommissionCompareRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* @author Zhang Jianan
......@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface CommissionCompareRecordMapper extends BaseMapper<CommissionCompareRecord> {
void removeByCommissionId(@Param("commissionId") String commissionId);
}
......
......@@ -22,6 +22,8 @@ public interface CommissionMapper extends BaseMapper<Commission> {
CommissionStatisticsVO getCommissionStatistics(@Param("commissionIdList") List<Long> commissionIdList);
int updateStatusBatchById(@Param("list") List<Commission> list);
int deleteByIdPhysical(Long id);
}
......
......@@ -13,4 +13,5 @@ import java.util.List;
*/
public interface CommissionCompareRecordService extends IService<CommissionCompareRecord> {
void removeByCommissionId(String commissionId);
}
......@@ -55,4 +55,8 @@ public interface CommissionService extends IService<Commission> {
Boolean addToExpected(AddToExpectedCommissionRequest addToExpectedCommissionRequest);
int updateStatusBatchById(List<Commission> existingCommissions);
boolean deleteByIdPhysical(Long id);
Boolean deleteCommission(Commission oldCommission);
}
......@@ -15,6 +15,10 @@ import org.springframework.stereotype.Service;
public class CommissionCompareRecordServiceImpl extends ServiceImpl<CommissionCompareRecordMapper, CommissionCompareRecord>
implements CommissionCompareRecordService{
@Override
public void removeByCommissionId(String commissionId) {
this.baseMapper.removeByCommissionId(commissionId);
}
}
......
......@@ -15,6 +15,7 @@ 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.common.ErrorCode;
import com.yd.csf.service.component.CommissionAsyncService;
import com.yd.csf.service.component.ReceivableService;
import com.yd.csf.service.dto.*;
......@@ -1046,6 +1047,70 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.baseMapper.updateStatusBatchById(existingCommissions);
}
@Override
public boolean deleteByIdPhysical(Long id) {
return baseMapper.deleteByIdPhysical(id) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteCommission(Commission oldCommission) {
// 操作数据库
boolean result = this.deleteByIdPhysical(oldCommission.getId());
if (!result) {
throw new BusinessException(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
}
String commissionBizId = oldCommission.getCommissionBizId();
// 删除关联来佣比对记录
commissionCompareRecordService.removeByCommissionId(commissionBizId);
// 更新预计来佣记录
String commissionExpectedBizId = oldCommission.getCommissionExpectedBizId();
if (StringUtils.isNotBlank(commissionExpectedBizId)) {
// 查询该预计来佣下的所有剩余来佣记录
List<Commission> remainingCommissions = this.lambdaQuery()
.eq(Commission::getCommissionExpectedBizId, commissionExpectedBizId)
.list();
// 计算新的 paidAmount 和 paidRatio
BigDecimal paidRatio = BigDecimal.ZERO;
BigDecimal paidAmount = BigDecimal.ZERO;
for (Commission item : remainingCommissions) {
paidRatio = paidRatio.add(item.getCurrentCommissionRatio());
paidAmount = paidAmount.add(item.getHkdAmount());
}
// 获取预计来佣记录
CommissionExpected commissionExpected = commissionExpectedService.lambdaQuery()
.eq(CommissionExpected::getCommissionExpectedBizId, commissionExpectedBizId)
.one();
if (commissionExpected != null) {
// 根据 paidRatio 与 commissionRatio 比较确定状态
String newStatus;
if (CollectionUtils.isEmpty(remainingCommissions)) {
// 没有剩余来佣时,恢复到初始状态
newStatus = CommissionExpectedStatusEnum.PENDING.getItemValue();
} else if (paidRatio.compareTo(commissionExpected.getCommissionRatio()) == 0) {
newStatus = CommissionExpectedStatusEnum.COMPARED.getItemValue();
} else {
newStatus = CommissionExpectedStatusEnum.PARTIAL.getItemValue();
}
// 更新预计来佣记录
commissionExpectedService.lambdaUpdate()
.set(CommissionExpected::getPaidAmount, paidAmount.setScale(4, RoundingMode.HALF_UP))
.set(CommissionExpected::getPaidRatio, paidRatio)
.set(CommissionExpected::getStatus, newStatus)
.eq(CommissionExpected::getCommissionExpectedBizId, commissionExpectedBizId)
.update();
}
}
return true;
}
/**
* 查询列表
*
......
......@@ -358,8 +358,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 校验发佣记录状态
StringBuilder validateMsg = new StringBuilder();
for (Fortune fortune : fortuneList) {
if (!StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.CHECKED.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("当前状态不是'可出账, 已检核',不能生成出账记录; ");
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.WAIT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("待出账状态不能直接改为'可出账, 检核完成',不能生成出账记录; ");
}
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.SENT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("已完成出账,不能生成出账记录; ");
......@@ -723,6 +723,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
Fortune fortune = new Fortune();
BeanUtil.copyProperties(fortuneAddRequest, fortune);
// 计算港币金额
fortune.setExchangeRate(queryExchangeRateByFeign(fortuneAddRequest.getCurrency(), "HKD"));
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(fortune.getExchangeRate()));
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
if ("R".equals(fortuneAddRequest.getFortuneBizType())) {
ExpectedFortune expectedFortune = expectedFortuneMap.get(fortuneAddRequest.getPolicyNo() + "_" + fortuneAddRequest.getFortunePeriod() + "_" + fortuneAddRequest.getFortuneType());
......@@ -731,9 +735,6 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
}
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency());
fortune.setExchangeRate(expectedFortune.getDefaultExchangeRate());
fortune.setHkdAmount(fortuneAddRequest.getAmount().multiply(expectedFortune.getDefaultExchangeRate()));
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
fortune.setPayoutDate(expectedFortune.getPayoutDate());
......@@ -747,10 +748,6 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
fortune.setStatus(FortuneStatusEnum.MATCH_FAIL.getItemValue());
fortune.setRemark("未找到当前预计发佣对应的来佣");
}
} else {
fortune.setExchangeRate(BigDecimal.ONE);
fortune.setHkdAmount(fortuneAddRequest.getAmount());
fortune.setCurrentPaymentHkdAmount(fortune.getHkdAmount());
}
// 生成发佣业务ID
......
......@@ -26,4 +26,8 @@
currency,create_time,exchange_rate,amount,current_commission_ratio,operator_name,remark,
is_deleted
</sql>
<delete id="removeByCommissionId">
delete from commission_compare_record where commission_biz_id = #{commissionId}
</delete>
</mapper>
......@@ -65,6 +65,10 @@
</foreach>
</update>
<delete id="deleteByIdPhysical">
DELETE FROM commission WHERE id = #{id}
</delete>
<select id="queryCommissionBindPolicyBrokerList"
resultType="com.yd.csf.service.dto.CommissionBindPolicyBrokerDto">
select c.*,p.*,pb.*
......
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