Commit 5c35c16b by zhangxingmin

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

# Conflicts:
#	yd-csf-service/src/main/java/com/yd/csf/service/service/impl/FortuneAccountServiceImpl.java
parents 4efcf911 9c9a984c
...@@ -197,9 +197,6 @@ public class ApiFortuneController { ...@@ -197,9 +197,6 @@ public class ApiFortuneController {
if (CollectionUtils.isEmpty(fortuneDownloadRequest.getFortuneBizIdList())) { if (CollectionUtils.isEmpty(fortuneDownloadRequest.getFortuneBizIdList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "请选择要出账的发佣数据"); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "请选择要出账的发佣数据");
} }
if (StringUtils.isBlank(fortuneDownloadRequest.getActualPayoutDate())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "请输入出账年月(实)");
}
fortuneService.downloadAccount(fortuneDownloadRequest, response); fortuneService.downloadAccount(fortuneDownloadRequest, response);
...@@ -449,6 +446,25 @@ public class ApiFortuneController { ...@@ -449,6 +446,25 @@ public class ApiFortuneController {
return Result.success(fortuneService.editActualPayoutDate(editActualPayoutDateRequest)); return Result.success(fortuneService.editActualPayoutDate(editActualPayoutDateRequest));
} }
/**
* 批量设置出账年月(实)),已设置的跳过
*
* @param editBatchActualPayoutDateRequest
* @return
*/
@PostMapping("/edit/actual_payout_date/batch")
@Operation(summary = "批量设置出账年月(实),已设置的跳过")
public Result<String> batchEditActualPayoutDate(@RequestBody BatchEditActualPayoutDateRequest editBatchActualPayoutDateRequest) {
if (editBatchActualPayoutDateRequest == null || CollectionUtils.isEmpty(editBatchActualPayoutDateRequest.getFortuneBizIdList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "fortuneBizIdList 不能为空");
}
if (StringUtils.isBlank(editBatchActualPayoutDateRequest.getActualPayoutDate())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), "actualPayoutDate 不能为空");
}
return Result.success(fortuneService.batchEditActualPayoutDate(editBatchActualPayoutDateRequest));
}
/** /**
* 修改结算汇率,设置完成后,更新到应付款管理明细中 * 修改结算汇率,设置完成后,更新到应付款管理明细中
* *
......
package com.yd.csf.api.service.impl; package com.yd.csf.api.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -33,7 +33,6 @@ import com.yd.csf.service.dto.QueryPolicyBrokerDto; ...@@ -33,7 +33,6 @@ import com.yd.csf.service.dto.QueryPolicyBrokerDto;
import com.yd.csf.service.dto.UserGradeDto; import com.yd.csf.service.dto.UserGradeDto;
import com.yd.csf.service.enums.CurrencyEnum; import com.yd.csf.service.enums.CurrencyEnum;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.enums.FortuneTypeEnum;
import com.yd.csf.service.helper.FeignResultHelper; import com.yd.csf.service.helper.FeignResultHelper;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
...@@ -71,8 +70,8 @@ import java.time.LocalDate; ...@@ -71,8 +70,8 @@ import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.ibm.icu.impl.ValidIdentifiers.Datatype.currency; import static com.ibm.icu.impl.ValidIdentifiers.Datatype.currency;
@Slf4j @Slf4j
...@@ -1017,8 +1016,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1017,8 +1016,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (CollectionUtils.isEmpty(fortuneAddRequestList)) { if (CollectionUtils.isEmpty(fortuneAddRequestList)) {
return true; return true;
} }
// 校验参数
validateAdd(fortuneAddRequestList); validateAdd(fortuneAddRequestList);
// 根据保单号、期数、项目类型查询已存在的记录
validIsExist(fortuneAddRequestList);
// 查询保单信息 // 查询保单信息
Set<String> policyNoSet = fortuneAddRequestList.stream() Set<String> policyNoSet = fortuneAddRequestList.stream()
.map(ExpectedFortuneAddRequest::getPolicyNo) .map(ExpectedFortuneAddRequest::getPolicyNo)
...@@ -1100,6 +1103,39 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1100,6 +1103,39 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return true; return true;
} }
private void validIsExist(List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
Set<String> policyNoSet = new HashSet<>();
Set<Integer> fortunePeriodSet = new HashSet<>();
Set<String> fortuneBizTypeSet = new HashSet<>();
for (ExpectedFortuneAddRequest request : fortuneAddRequestList) {
policyNoSet.add(request.getPolicyNo());
fortunePeriodSet.add(request.getFortunePeriod());
fortuneBizTypeSet.add(request.getFortuneBizType());
}
List<ExpectedFortune> existingRecords = iExpectedFortuneService.lambdaQuery()
.in(ExpectedFortune::getPolicyNo, policyNoSet)
.in(ExpectedFortune::getFortunePeriod, fortunePeriodSet)
.in(ExpectedFortune::getFortuneBizType, fortuneBizTypeSet)
.list();
// 转换为 Map
Map<String, ExpectedFortune> existingRecordsMap = new HashMap<>();
for (ExpectedFortune item : existingRecords) {
String key = String.format("%s_%s_%s", item.getPolicyNo(), item.getFortunePeriod(), item.getFortuneBizType());
existingRecordsMap.put(key, item);
}
// 校验是否存在
for (ExpectedFortuneAddRequest request : fortuneAddRequestList) {
String key = String.format("%s_%s_%s", request.getPolicyNo(), request.getFortunePeriod(), request.getFortuneBizType());
if (existingRecordsMap.containsKey(key)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "当前期数已存在: " + request.getFortuneName());
}
}
}
private String queryByDict(String fortuneType) { private String queryByDict(String fortuneType) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_fortune_type"); Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_fortune_type");
if (ObjectUtils.isNotEmpty(result.getData())) { if (ObjectUtils.isNotEmpty(result.getData())) {
...@@ -1383,12 +1419,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1383,12 +1419,6 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
throw new BusinessException(ResultCode.FAIL.getCode(), "当前应付款已有出账金额,不能修改"); throw new BusinessException(ResultCode.FAIL.getCode(), "当前应付款已有出账金额,不能修改");
} }
// 查询保单数据
Policy policy = null;
if (StringUtils.isNotBlank(request.getPolicyNo())) {
policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", request.getPolicyNo()));
}
// 根据保单号、期数查询关联 fortune 数据,重新计算:已出帐金额、待出帐金额、已出帐比例、待出帐比例 // 根据保单号、期数查询关联 fortune 数据,重新计算:已出帐金额、待出帐金额、已出帐比例、待出帐比例
List<Fortune> fortuneList = fortuneService.lambdaQuery() List<Fortune> fortuneList = fortuneService.lambdaQuery()
.eq(Fortune::getPolicyNo, request.getPolicyNo()) .eq(Fortune::getPolicyNo, request.getPolicyNo())
...@@ -1420,12 +1450,19 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1420,12 +1450,19 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
updateExpectedFortune.setId(expectedFortune.getId()); updateExpectedFortune.setId(expectedFortune.getId());
// 设置 policy 关联字段 // 设置 policy 关联字段
if (!expectedFortune.getPolicyNo().equals(updateExpectedFortune.getPolicyNo())) {
// 查询保单数据
Policy policy = null;
if (StringUtils.isNotBlank(request.getPolicyNo())) {
policy = policyService.getOne(new QueryWrapper<Policy>().eq("policy_no", request.getPolicyNo()));
}
if (policy != null) { if (policy != null) {
updateExpectedFortune.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId()); updateExpectedFortune.setInsuranceCompanyBizId(policy.getInsuranceCompanyBizId());
updateExpectedFortune.setProductLaunchBizId(policy.getProductLaunchBizId()); updateExpectedFortune.setProductLaunchBizId(policy.getProductLaunchBizId());
updateExpectedFortune.setPremium(policy.getPaymentPremium()); updateExpectedFortune.setPremium(policy.getPaymentPremium());
updateExpectedFortune.setPolicyCurrency(policy.getCurrency()); updateExpectedFortune.setPolicyCurrency(policy.getCurrency());
} }
}
// 处理出账年月字段 // 处理出账年月字段
if (StringUtils.isNotBlank(request.getPayoutDate())) { if (StringUtils.isNotBlank(request.getPayoutDate())) {
......
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class BatchEditActualPayoutDateRequest {
@Schema(description = "出账业务ID列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<String> fortuneBizIdList;
@Schema(description = "实际出账年月(实)", requiredMode = Schema.RequiredMode.REQUIRED)
private String actualPayoutDate;
}
...@@ -11,6 +11,4 @@ public class FortuneDownloadRequest { ...@@ -11,6 +11,4 @@ public class FortuneDownloadRequest {
@Schema(description = "发佣数据业务Id列表", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "发佣数据业务Id列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<String> fortuneBizIdList; private List<String> fortuneBizIdList;
@Schema(description = "出账年月(实),格式:yyyy-MM,例如:2026-04", requiredMode = Schema.RequiredMode.REQUIRED)
private String actualPayoutDate;
} }
...@@ -22,7 +22,7 @@ public interface FortuneAccountService extends IService<FortuneAccount> { ...@@ -22,7 +22,7 @@ public interface FortuneAccountService extends IService<FortuneAccount> {
Page<FortuneAccountVO> getFortuneAccountVOPage(Page<FortuneAccount> fortunePage); Page<FortuneAccountVO> getFortuneAccountVOPage(Page<FortuneAccount> fortunePage);
void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList, LocalDate actualPayoutDate); void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList);
FortuneAccount getByFortuneAccountBizId(String fortuneAccountBizId); FortuneAccount getByFortuneAccountBizId(String fortuneAccountBizId);
......
...@@ -47,4 +47,5 @@ public interface FortuneService extends IService<Fortune> { ...@@ -47,4 +47,5 @@ public interface FortuneService extends IService<Fortune> {
Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest); Boolean editExchangeRate(EditExchangeRateRequest editExchangeRateRequest);
String batchEditActualPayoutDate(BatchEditActualPayoutDateRequest editBatchActualPayoutDateRequest);
} }
...@@ -109,7 +109,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -109,7 +109,7 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
@Override @Override
@Transactional(rollbackFor = BusinessException.class) @Transactional(rollbackFor = BusinessException.class)
public void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList, LocalDate actualPayoutDate) { public void saveFortuneAccount(List<FortuneAccountExportDTO> accountExportDTOList) {
if (CollectionUtils.isEmpty(accountExportDTOList)) { if (CollectionUtils.isEmpty(accountExportDTOList)) {
return; return;
} }
...@@ -145,7 +145,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -145,7 +145,8 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
fortuneAccount.setTeamBizId(accountExportDTO.getTeamBizId()); fortuneAccount.setTeamBizId(accountExportDTO.getTeamBizId());
fortuneAccount.setCurrency(accountExportDTO.getCurrency()); fortuneAccount.setCurrency(accountExportDTO.getCurrency());
fortuneAccount.setHkdAmount(accountExportDTO.getAmount()); fortuneAccount.setHkdAmount(accountExportDTO.getAmount());
fortuneAccount.setFortuneAccountDate(this.getActualPayoutDate(actualPayoutDate)); fortuneAccount.setFortuneAccountDate(this.getActualPayoutDate(accountExportDTO.getActualPayoutDate()));
// 出账状态默认待出账
fortuneAccount.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); fortuneAccount.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
// 转换为List<Map<String, Object>> // 转换为List<Map<String, Object>>
...@@ -189,7 +190,6 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -189,7 +190,6 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
.divide(item.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))); .divide(item.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
} }
updateFortune.setReconciliationOperator(currentLoginUser.getUsername()); updateFortune.setReconciliationOperator(currentLoginUser.getUsername());
updateFortune.setActualPayoutDate(actualPayoutDate);
updateFortuneList.add(updateFortune); updateFortuneList.add(updateFortune);
// 处理关联预计发佣记录 // 处理关联预计发佣记录
expectedFortuneBizIdList.add(item.getExpectedFortuneBizId()); expectedFortuneBizIdList.add(item.getExpectedFortuneBizId());
...@@ -213,7 +213,6 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper, ...@@ -213,7 +213,6 @@ public class FortuneAccountServiceImpl extends ServiceImpl<FortuneAccountMapper,
ExpectedFortune updateExpectedFortune = new ExpectedFortune(); ExpectedFortune updateExpectedFortune = new ExpectedFortune();
updateExpectedFortune.setId(expectedFortune.getId()); updateExpectedFortune.setId(expectedFortune.getId());
updateExpectedFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue()); updateExpectedFortune.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
updateExpectedFortune.setActualPayoutDate(actualPayoutDate);
updateExpectedFortuneList.add(updateExpectedFortune); updateExpectedFortuneList.add(updateExpectedFortune);
} }
expectedFortuneService.updateBatchById(updateExpectedFortuneList); expectedFortuneService.updateBatchById(updateExpectedFortuneList);
......
...@@ -393,26 +393,33 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -393,26 +393,33 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.SENT.getItemValue())) { if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.SENT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("已完成出账,不能生成出账记录; "); validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("已完成出账,不能生成出账记录; ");
} }
if (fortune.getActualPayoutDate() == null) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("未设置出账年月(实),不能生成出账记录; ");
}
if (ObjectUtils.isEmpty(fortune.getPayoutCurrency())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("未设置发放币种,不能生成出账记录; ");
}
if (ObjectUtils.isEmpty(fortune.getPayoutAmount())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("未设置发放币种金额,不能生成出账记录; ");
}
} }
if (StringUtils.isNotBlank(validateMsg.toString())) { if (StringUtils.isNotBlank(validateMsg.toString())) {
throw new BusinessException(ResultCode.FAIL.getCode(), validateMsg.toString()); throw new BusinessException(ResultCode.FAIL.getCode(), validateMsg.toString());
} }
if (CollUtil.isNotEmpty(fortuneList)) { if (CollUtil.isNotEmpty(fortuneList)) {
// 按人和发放币种分组 // 按人和实际出账年月(实)和发放币种分组
Map<String, List<Fortune>> fortuneMap = fortuneList.stream().collect(Collectors.groupingBy(fortune -> fortune.getBroker() + "_" + fortune.getPayoutCurrency())); Map<String, List<Fortune>> fortuneMap = fortuneList.stream()
.collect(Collectors.groupingBy(fortune -> fortune.getBroker() + "_" + fortune.getActualPayoutDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "_" + fortune.getPayoutCurrency()));
// 创建按人分组的导出DTO列表 // 创建按人分组的导出DTO列表
List<FortuneAccountExportDTO> accountExportDTOList = new ArrayList<>(); List<FortuneAccountExportDTO> accountExportDTOList = new ArrayList<>();
// 设置出账年月(实)
LocalDate actualPayoutDate = LocalDate.parse(fortuneDownloadRequest.getActualPayoutDate() + "-01");
fortuneList.forEach(fortune -> fortune.setActualPayoutDate(actualPayoutDate));
// 处理每个分组的数据 // 处理每个分组的数据
for (Map.Entry<String, List<Fortune>> entry : fortuneMap.entrySet()) { for (Map.Entry<String, List<Fortune>> entry : fortuneMap.entrySet()) {
String broker = entry.getKey().split("_")[0]; String broker = entry.getKey().split("_")[0];
String currency = entry.getKey().split("_")[1]; String actualPayoutDate = entry.getKey().split("_")[1];
String currency = entry.getKey().split("_")[2];
List<Fortune> brokerFortunes = entry.getValue(); List<Fortune> brokerFortunes = entry.getValue();
FortuneAccountExportDTO accountDTO = new FortuneAccountExportDTO(); FortuneAccountExportDTO accountDTO = new FortuneAccountExportDTO();
...@@ -425,7 +432,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -425,7 +432,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
accountDTO.setTeam(brokerFortunes.get(0).getTeam()); accountDTO.setTeam(brokerFortunes.get(0).getTeam());
accountDTO.setTeamBizId(brokerFortunes.get(0).getTeamBizId()); accountDTO.setTeamBizId(brokerFortunes.get(0).getTeamBizId());
accountDTO.setCurrency(currency); accountDTO.setCurrency(currency);
accountDTO.setActualPayoutDate(brokerFortunes.get(0).getActualPayoutDate()); accountDTO.setActualPayoutDate(LocalDate.parse(actualPayoutDate));
} }
// 计算出账总额 // 计算出账总额
...@@ -480,7 +487,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -480,7 +487,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// } // }
// 写入数据库 // 写入数据库
fortuneAccountService.saveFortuneAccount(accountExportDTOList, actualPayoutDate); fortuneAccountService.saveFortuneAccount(accountExportDTOList);
// // 使用try-with-resources确保流正确关闭 // // 使用try-with-resources确保流正确关闭
// try (ServletOutputStream outputStream = response.getOutputStream()) { // try (ServletOutputStream outputStream = response.getOutputStream()) {
...@@ -807,6 +814,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -807,6 +814,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.FAIL.getCode(), fortuneAddRequest.getFortuneName() + " 已存在应付记录,请在应付款管理页面修改金额"); throw new BusinessException(ResultCode.FAIL.getCode(), fortuneAddRequest.getFortuneName() + " 已存在应付记录,请在应付款管理页面修改金额");
} }
fortune.setPayableNo(expectedFortune.getPayableNo());
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId()); fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency()); fortune.setPolicyCurrency(expectedFortune.getPolicyCurrency());
fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100)); fortune.setCurrentPaymentRatio(BigDecimal.valueOf(100));
...@@ -1161,6 +1169,38 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -1161,6 +1169,38 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return true; return true;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public String batchEditActualPayoutDate(BatchEditActualPayoutDateRequest editBatchActualPayoutDateRequest) {
List<Fortune> fortuneList = this.lambdaQuery()
.in(Fortune::getFortuneBizId, editBatchActualPayoutDateRequest.getFortuneBizIdList())
.list();
if (CollectionUtils.isEmpty(fortuneList)) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "出账记录不存在");
}
// 处理实际出账年月(实)
LocalDate actualPayoutDate = LocalDate.parse(editBatchActualPayoutDateRequest.getActualPayoutDate() + "-01");
// 更新 fortune 的字段, 已设置的不更新,记录更新成功及跳过的条数
int updateCount = 0;
int skipCount = 0;
for (Fortune fortune : fortuneList) {
if (ObjectUtils.isEmpty(fortune.getActualPayoutDate())) {
updateCount++;
} else {
skipCount++;
continue;
}
this.lambdaUpdate()
.set(Fortune::getActualPayoutDate, actualPayoutDate)
.eq(Fortune::getId, fortune.getId())
.update();
}
return String.format("设置成功。已更新 %d 条数据,跳过 %d 条(已有实际出账年月)", updateCount, skipCount);
}
private void validEditExchangeRate(EditExchangeRateRequest editExchangeRateRequest) { private void validEditExchangeRate(EditExchangeRateRequest editExchangeRateRequest) {
if (ObjectUtils.isEmpty(editExchangeRateRequest.getOriginalCurrency())) { if (ObjectUtils.isEmpty(editExchangeRateRequest.getOriginalCurrency())) {
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "原币种不能为空"); throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "原币种不能为空");
......
...@@ -79,24 +79,11 @@ ...@@ -79,24 +79,11 @@
then round(100 - (ifnull(sum(ef.paid_amount), 0) / ifnull(sum(ef.hkd_amount), 0) * 100), 2) then round(100 - (ifnull(sum(ef.paid_amount), 0) / ifnull(sum(ef.hkd_amount), 0) * 100), 2)
else 100 else 100
end as unpaidRatio, end as unpaidRatio,
MAX(first_broker.broker_name) as broker, MAX(ef.broker) as broker,
MAX(first_broker.broker_biz_id) as brokerBizId, MAX(ef.broker_biz_id) as brokerBizId,
DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ef.fortune_period - 1) YEAR) as payoutDate DATE_ADD(DATE_ADD(MAX(p.effective_date), INTERVAL 2 MONTH), INTERVAL (ef.fortune_period - 1) YEAR) as payoutDate
from expected_fortune ef from expected_fortune ef
left join policy p on ef.policy_no = p.policy_no left join policy p on ef.policy_no = p.policy_no
left join (
SELECT pb1.policy_no, pb1.broker_name,pb1.broker_biz_id
FROM policy_broker pb1
WHERE pb1.id = (
SELECT pb2.id
FROM policy_broker pb2
WHERE pb2.policy_no = pb1.policy_no
AND pb2.is_deleted = 0
ORDER BY pb2.id ASC
LIMIT 1
)
AND pb1.is_deleted = 0
) first_broker on ef.policy_no = first_broker.policy_no
<where> <where>
ef.fortune_biz_type = 'R' ef.fortune_biz_type = 'R'
<if test="expectedFortuneIds != null and expectedFortuneIds.size > 0"> <if test="expectedFortuneIds != null and expectedFortuneIds.size > 0">
......
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