Commit 4145799a by zhangxingmin

Merge remote-tracking branch 'origin/dev' into prod

parents 211b316e 2a37793b
...@@ -5,6 +5,7 @@ import com.yd.common.result.Result; ...@@ -5,6 +5,7 @@ import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiSalaryService; import com.yd.csf.api.service.ApiSalaryService;
import com.yd.csf.feign.client.salary.ApiSalaryFeignClient; import com.yd.csf.feign.client.salary.ApiSalaryFeignClient;
import com.yd.csf.feign.request.salary.*; import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
...@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 薪资单信息 * 薪资单信息
...@@ -180,5 +182,14 @@ public class ApiSalaryController implements ApiSalaryFeignClient { ...@@ -180,5 +182,14 @@ public class ApiSalaryController implements ApiSalaryFeignClient {
return apiSalaryService.calculateTotalAmount(request); return apiSalaryService.calculateTotalAmount(request);
} }
/**
* 查询薪资单转介人列表信息
* @return
*/
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList(String name) {
return apiSalaryService.brokerList(name);
}
} }
...@@ -16,6 +16,11 @@ import java.util.List; ...@@ -16,6 +16,11 @@ import java.util.List;
public class AlgorithmDto { public class AlgorithmDto {
/** /**
* 期数(数字代表第几年)
*/
private Integer issueNumber;
/**
* 保单发佣批次ID * 保单发佣批次ID
*/ */
private String batchBizId; private String batchBizId;
......
...@@ -3,11 +3,13 @@ package com.yd.csf.api.service; ...@@ -3,11 +3,13 @@ package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.feign.request.salary.*; import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
public interface ApiSalaryService { public interface ApiSalaryService {
Result<IPage<ApiSalaryPageResponse>> page(ApiSalaryPageRequest request); Result<IPage<ApiSalaryPageResponse>> page(ApiSalaryPageRequest request);
...@@ -39,4 +41,6 @@ public interface ApiSalaryService { ...@@ -39,4 +41,6 @@ public interface ApiSalaryService {
Result<BigDecimal> calculatePaidAmount(ApiSalaryCalculatePaidAmountRequest request); Result<BigDecimal> calculatePaidAmount(ApiSalaryCalculatePaidAmountRequest request);
Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request); Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request);
Result<List<ApiSalaryBrokerListResponse>> brokerList(String name);
} }
...@@ -17,6 +17,7 @@ import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest; ...@@ -17,6 +17,7 @@ import com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest;
import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse; import com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FortuneStatusEnum; import com.yd.csf.service.enums.FortuneStatusEnum;
import com.yd.csf.service.enums.RuleItemConfigEnum;
import com.yd.csf.service.model.*; import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*; import com.yd.csf.service.service.*;
import com.yd.insurance.base.feign.client.ApiRelProductAnnouncementFeignClient; import com.yd.insurance.base.feign.client.ApiRelProductAnnouncementFeignClient;
...@@ -407,6 +408,16 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ ...@@ -407,6 +408,16 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ
if (CollectionUtils.isEmpty(ruleItemConfigList)) { if (CollectionUtils.isEmpty(ruleItemConfigList)) {
throw new BusinessException("基本法项目列表不存在"); throw new BusinessException("基本法项目列表不存在");
} }
//根据期数字段,判断是否是续期(续年)来过滤对应的销售佣金项目,续期期数保留续期销售项目剔除首期的销售佣金项目,首期期数保留首期的销售佣金项目剔除续期销售佣金项目
if (algorithmDto.getIssueNumber() != null) {
if (algorithmDto.getIssueNumber() == 1) {
//首期->剔除非首期(续期)的销售佣金项目
ruleItemConfigList.removeIf(item -> RuleItemConfigEnum.XQ_XS_YJ.getItemCode().equals(item.getItemCode()));
}else {
//续期->剔除首期销售佣金项目
ruleItemConfigList.removeIf(item -> RuleItemConfigEnum.XS_YJ.getItemCode().equals(item.getItemCode()));
}
}
log.info("查询基本法类型绑定的基本法项目列表 - 执行顺序,数值越小越先执行,用于控制佣金项目的计算顺序->出参:{}", JSON.toJSONString(algorithmDto)); log.info("查询基本法类型绑定的基本法项目列表 - 执行顺序,数值越小越先执行,用于控制佣金项目的计算顺序->出参:{}", JSON.toJSONString(algorithmDto));
List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>(); List<AlgorithmResDto> algorithmResDtoList = new ArrayList<>();
//遍历基本法项目 - 计算对应值 //遍历基本法项目 - 计算对应值
......
...@@ -546,7 +546,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -546,7 +546,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
resDto.setAlgorithmResDtoList(result.getData()); resDto.setAlgorithmResDtoList(result.getData());
collectResDtos.add(resDto); collectResDtos.add(resDto);
if (!CollectionUtils.isEmpty(commissionRuleBindingList)) { //续年度只发销售佣金,其他奖项均不发放
if (!CollectionUtils.isEmpty(commissionRuleBindingList) && i == 1) {
for (CommissionRuleBinding binding : commissionRuleBindingList) { for (CommissionRuleBinding binding : commissionRuleBindingList) {
Result<List<AlgorithmResDto>> result1 = executeReward(ExecuteBillingDto.builder() Result<List<AlgorithmResDto>> result1 = executeReward(ExecuteBillingDto.builder()
.clientUserBizId(binding.getTargetId()) .clientUserBizId(binding.getTargetId())
...@@ -793,6 +794,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -793,6 +794,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//保单出账先执行销售佣金基本法项目,入完到积分明细表里后,再执行保单绑定人的其他基本法项目 //保单出账先执行销售佣金基本法项目,入完到积分明细表里后,再执行保单绑定人的其他基本法项目
Result<List<AlgorithmResDto>> result = apiBasicLawCalculateService.policyBrokerAlgorithm(AlgorithmDto.builder() Result<List<AlgorithmResDto>> result = apiBasicLawCalculateService.policyBrokerAlgorithm(AlgorithmDto.builder()
.issueNumber(dto.getIssueNumber())
.brokerBizId(brokerDto.getBrokerBizId()) .brokerBizId(brokerDto.getBrokerBizId())
.clientUserBizId(brokerDto.getBrokerBizId()) .clientUserBizId(brokerDto.getBrokerBizId())
.sqlTemplateParamDto(SqlTemplateParamDto.builder() .sqlTemplateParamDto(SqlTemplateParamDto.builder()
......
package com.yd.csf.api.service.impl; package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
import com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient; import com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient;
...@@ -17,16 +18,21 @@ import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceDTO; ...@@ -17,16 +18,21 @@ import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceDTO;
import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO; import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO;
import com.yd.csf.feign.enums.SalaryStatusEnum; import com.yd.csf.feign.enums.SalaryStatusEnum;
import com.yd.csf.feign.request.salary.*; import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse; import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
import com.yd.csf.service.enums.FortuneAccountStatusEnum; import com.yd.csf.service.enums.FortuneAccountStatusEnum;
import com.yd.csf.service.model.FortuneAccount; import com.yd.csf.service.model.FortuneAccount;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.model.Salary; import com.yd.csf.service.model.Salary;
import com.yd.csf.service.model.SalaryRemittance; import com.yd.csf.service.model.SalaryRemittance;
import com.yd.csf.service.service.FortuneAccountService; import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.ISalaryRemittanceService; import com.yd.csf.service.service.ISalaryRemittanceService;
import com.yd.csf.service.service.ISalaryService; import com.yd.csf.service.service.ISalaryService;
import com.yd.insurance.base.feign.client.usersaleexpand.ApiUserSaleExpandFeignClient;
import com.yd.insurance.base.feign.request.usersaleexpand.ApiUserSaleExpandListRequest;
import com.yd.insurance.base.feign.response.usersaleexpand.ApiUserSaleExpandDetailResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -42,6 +48,7 @@ import java.time.YearMonth; ...@@ -42,6 +48,7 @@ import java.time.YearMonth;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -63,6 +70,9 @@ public class ApiSalaryServiceImpl implements ApiSalaryService { ...@@ -63,6 +70,9 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
@Autowired @Autowired
private ApiExchangeRateFeignClient apiExchangeRateFeignClient; private ApiExchangeRateFeignClient apiExchangeRateFeignClient;
@Resource
private ApiUserSaleExpandFeignClient apiUserSaleExpandFeignClient;
/** /**
* 分页查询-制作薪资单列表信息 * 分页查询-制作薪资单列表信息
* @param request * @param request
...@@ -72,10 +82,46 @@ public class ApiSalaryServiceImpl implements ApiSalaryService { ...@@ -72,10 +82,46 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
public Result<IPage<ApiSalaryPageResponse>> page(ApiSalaryPageRequest request) { public Result<IPage<ApiSalaryPageResponse>> page(ApiSalaryPageRequest request) {
Page<ApiSalaryPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize()); Page<ApiSalaryPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSalaryPageResponse> iPage = iSalaryService.page(page, request); IPage<ApiSalaryPageResponse> iPage = iSalaryService.page(page, request);
iPage = setPage(iPage);
return Result.success(iPage); return Result.success(iPage);
} }
/** /**
* 设置分页结果返参
* @param iPage
* @return
*/
public IPage<ApiSalaryPageResponse> setPage(IPage<ApiSalaryPageResponse> iPage) {
if (CollectionUtils.isEmpty(iPage.getRecords())) {
return iPage;
}
List<String> clientUserBizIdList = iPage.getRecords()
.stream()
.map(ApiSalaryPageResponse::getBrokerBizId)
.distinct()
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(clientUserBizIdList)) {
return iPage;
}
ApiUserSaleExpandListRequest request = new ApiUserSaleExpandListRequest();
request.setClientUserBizIdList(clientUserBizIdList);
Result<List<ApiUserSaleExpandDetailResponse>> result = apiUserSaleExpandFeignClient.list(request);
if (CollectionUtils.isEmpty(result.getData())) {
return iPage;
}
Map<String, ApiUserSaleExpandDetailResponse> policyFollowMap = result.getData().stream()
.collect(Collectors.toMap(ApiUserSaleExpandDetailResponse::getClientUserBizId, Function.identity()));
iPage.getRecords().forEach(d -> {
ApiUserSaleExpandDetailResponse response = policyFollowMap.get(d.getBrokerBizId());
if (response != null) {
d.setTeamName(response.getTeamName());
d.setInternalNumber(response.getInternalNumber());
}
});
return iPage;
}
/**
* 分页查询-电子薪资单列表信息(推送列表信息) * 分页查询-电子薪资单列表信息(推送列表信息)
* @param request * @param request
* @return * @return
...@@ -188,9 +234,9 @@ public class ApiSalaryServiceImpl implements ApiSalaryService { ...@@ -188,9 +234,9 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
if (salary == null) { if (salary == null) {
throw new BusinessException("薪资单信息不存在"); throw new BusinessException("薪资单信息不存在");
} }
if (SalaryStatusEnum.DTJ.getItemValue().equals(salary.getStatus()) if (!(SalaryStatusEnum.DTJ.getItemValue().equals(salary.getStatus())
|| SalaryStatusEnum.TH.getItemValue().equals(salary.getStatus())) { || SalaryStatusEnum.TH.getItemValue().equals(salary.getStatus()))) {
throw new BusinessException("非待提交或者退回状态不能提交核对"); throw new BusinessException("只有待提交或者退回状态,才能提交核对");
} }
//重新提交->待核对状态 //重新提交->待核对状态
salary.setStatus(SalaryStatusEnum.DHD.getItemValue()); salary.setStatus(SalaryStatusEnum.DHD.getItemValue());
...@@ -405,6 +451,92 @@ public class ApiSalaryServiceImpl implements ApiSalaryService { ...@@ -405,6 +451,92 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
} }
/** /**
* 查询薪资单转介人列表信息
* @return
*/
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList(String name) {
// 构造查询条件:状态为“完成出账”(2) 且 未删除
QueryWrapper<FortuneAccount> wrapper = new QueryWrapper<>();
wrapper.eq("status", FortuneAccountStatusEnum.SENT.getItemValue())
.like(StringUtils.isNotBlank(name),"broker",name)
.eq("is_deleted", 0);
// 查询所有符合条件的出账记录
List<FortuneAccount> accountList = fortuneAccountService.list(wrapper);
if (CollectionUtils.isEmpty(accountList)) {
return Result.success(Collections.emptyList());
}
// 按 brokerBizId 分组,收集月份(去重)
Map<String, Set<String>> brokerMonthMap = new LinkedHashMap<>();
Map<String, String> brokerNameMap = new HashMap<>();
Set<String> bizIdSet = new HashSet<>();
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyyMM");
for (FortuneAccount account : accountList) {
String bizId = account.getBrokerBizId();
String brokerName = account.getBroker();
Date date = account.getFortuneAccountDate();
if (StringUtils.isBlank(bizId) || StringUtils.isBlank(brokerName) || date == null) {
continue; // 跳过无效数据
}
// 转换为 yyyyMM 格式
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
String month = localDate.format(monthFormatter);
// 存储转介人名称(首次出现)
brokerNameMap.putIfAbsent(bizId, brokerName);
bizIdSet.add(bizId);
// 收集月份(自动去重)
brokerMonthMap.computeIfAbsent(bizId, k -> new LinkedHashSet<>()).add(month);
}
//获取转介人详细详细列表
List<String> bizIdList = bizIdSet.stream().collect(Collectors.toList());
ApiUserSaleExpandListRequest request = new ApiUserSaleExpandListRequest();
request.setClientUserBizIdList(bizIdList);
Result<List<ApiUserSaleExpandDetailResponse>> result = apiUserSaleExpandFeignClient.list(request);
Map<String, ApiUserSaleExpandDetailResponse> policyFollowMap = null;
if (CollectionUtils.isNotEmpty(result.getData())) {
policyFollowMap = result.getData().stream()
.collect(Collectors.toMap(ApiUserSaleExpandDetailResponse::getClientUserBizId, Function.identity()));
}
// 组装响应对象
List<ApiSalaryBrokerListResponse> resultList = new ArrayList<>();
for (Map.Entry<String, Set<String>> entry : brokerMonthMap.entrySet()) {
String bizId = entry.getKey();
Set<String> monthSet = entry.getValue();
ApiSalaryBrokerListResponse response = new ApiSalaryBrokerListResponse();
if (policyFollowMap != null) {
ApiUserSaleExpandDetailResponse detailResponse = policyFollowMap.get(bizId);
if (detailResponse != null) {
//内部编号
response.setInternalNumber(detailResponse.getInternalNumber());
}
}
response.setBrokerBizId(bizId);
response.setBroker(brokerNameMap.getOrDefault(bizId, ""));
// 月份列表按时间升序排序
List<String> sortedMonths = new ArrayList<>(monthSet);
Collections.sort(sortedMonths);
response.setMonthList(sortedMonths);
resultList.add(response);
}
// 最终按转介人名称排序
resultList.sort(Comparator.comparing(ApiSalaryBrokerListResponse::getBroker,
Comparator.nullsLast(String::compareTo)));
return Result.success(resultList);
}
/**
* 批量校验同一转介人同一年月只能有一条薪资单记录 * 批量校验同一转介人同一年月只能有一条薪资单记录
* @param apiSalaryBatchAddDTOList 批量新增DTO列表 * @param apiSalaryBatchAddDTOList 批量新增DTO列表
*/ */
......
...@@ -3,6 +3,7 @@ package com.yd.csf.feign.client.salary; ...@@ -3,6 +3,7 @@ package com.yd.csf.feign.client.salary;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.salary.ApiSalaryFeignFallbackFactory; import com.yd.csf.feign.fallback.salary.ApiSalaryFeignFallbackFactory;
import com.yd.csf.feign.request.salary.*; import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 香港保险服务-薪资单信息Feign客户端 * 香港保险服务-薪资单信息Feign客户端
...@@ -136,4 +138,11 @@ public interface ApiSalaryFeignClient { ...@@ -136,4 +138,11 @@ public interface ApiSalaryFeignClient {
*/ */
@PostMapping("/calculate/totalAmount") @PostMapping("/calculate/totalAmount")
Result<BigDecimal> calculateTotalAmount(@Validated @RequestBody ApiSalaryCalculateTotalAmountRequest request); Result<BigDecimal> calculateTotalAmount(@Validated @RequestBody ApiSalaryCalculateTotalAmountRequest request);
/**
* 查询薪资单转介人列表信息
* @return
*/
@GetMapping("/broker/list")
Result<List<ApiSalaryBrokerListResponse>> brokerList(@RequestParam(value = "name",required = false) String name);
} }
...@@ -3,6 +3,7 @@ package com.yd.csf.feign.fallback.salary; ...@@ -3,6 +3,7 @@ package com.yd.csf.feign.fallback.salary;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.feign.client.salary.ApiSalaryFeignClient; import com.yd.csf.feign.client.salary.ApiSalaryFeignClient;
import com.yd.csf.feign.request.salary.*; import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
...@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component; ...@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 香港保险服务-薪资单信息Feign降级处理 * 香港保险服务-薪资单信息Feign降级处理
...@@ -94,6 +96,11 @@ public class ApiSalaryFeignFallbackFactory implements FallbackFactory<ApiSalaryF ...@@ -94,6 +96,11 @@ public class ApiSalaryFeignFallbackFactory implements FallbackFactory<ApiSalaryF
public Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request) { public Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request) {
return null; return null;
} }
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList(String name) {
return null;
}
}; };
} }
} }
...@@ -43,6 +43,11 @@ public class ApiSalaryAddRequest { ...@@ -43,6 +43,11 @@ public class ApiSalaryAddRequest {
private BigDecimal otherAmount; private BigDecimal otherAmount;
/** /**
* 通用备注
*/
private String remark;
/**
* 其他调整的备注 * 其他调整的备注
*/ */
private String otherRemark; private String otherRemark;
......
...@@ -53,6 +53,11 @@ public class ApiSalaryEditRequest { ...@@ -53,6 +53,11 @@ public class ApiSalaryEditRequest {
private String otherRemark; private String otherRemark;
/** /**
* 通用备注
*/
private String remark;
/**
* 实发总金额(单位:HKD) * 实发总金额(单位:HKD)
*/ */
private BigDecimal paidAmount; private BigDecimal paidAmount;
......
...@@ -15,4 +15,9 @@ public class ApiSalaryPageRequest extends PageDto { ...@@ -15,4 +15,9 @@ public class ApiSalaryPageRequest extends PageDto {
* 薪资月份(同出账月,如:202605) * 薪资月份(同出账月,如:202605)
*/ */
private String month; private String month;
/**
* 薪资单状态:1-待提交 2-待核对 3-已核对 4-退回 5-已推送 6-已取消
*/
private String status;
} }
package com.yd.csf.feign.response.salary;
import lombok.Data;
import java.util.List;
@Data
public class ApiSalaryBrokerListResponse {
/**
* 转介人
*/
private String broker;
/**
* 转介人业务id
*/
private String brokerBizId;
/**
* 内部编号
*/
private String internalNumber;
/**
* 月份列表(格式: 202606)
*/
private List<String> monthList;
}
...@@ -53,6 +53,11 @@ public class ApiSalaryDetailResponse { ...@@ -53,6 +53,11 @@ public class ApiSalaryDetailResponse {
private String otherRemark; private String otherRemark;
/** /**
* 通用备注
*/
private String remark;
/**
* 实发总金额(单位:HKD) * 实发总金额(单位:HKD)
*/ */
private BigDecimal paidAmount; private BigDecimal paidAmount;
......
package com.yd.csf.feign.response.salary; package com.yd.csf.feign.response.salary;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -18,6 +19,11 @@ public class ApiSalaryPageResponse { ...@@ -18,6 +19,11 @@ public class ApiSalaryPageResponse {
private String salaryBizId; private String salaryBizId;
/** /**
* 转介人业务id
*/
private String brokerBizId;
/**
* 转介人名称 * 转介人名称
*/ */
private String brokerName; private String brokerName;
...@@ -60,5 +66,6 @@ public class ApiSalaryPageResponse { ...@@ -60,5 +66,6 @@ public class ApiSalaryPageResponse {
/** /**
* 制作时间(创建时间) * 制作时间(创建时间)
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;
} }
...@@ -9,6 +9,11 @@ import java.time.LocalDateTime; ...@@ -9,6 +9,11 @@ import java.time.LocalDateTime;
public class ApiSalaryPushPageResponse { public class ApiSalaryPushPageResponse {
/** /**
* 薪资单表唯一业务ID
*/
private String salaryBizId;
/**
* 转介人名称 * 转介人名称
*/ */
private String brokerName; private String brokerName;
......
...@@ -72,6 +72,18 @@ public class FortuneQueryRequest extends PageDto implements Serializable { ...@@ -72,6 +72,18 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
private String payoutDateEnd; private String payoutDateEnd;
/** /**
* 出账年月(实)开始
*/
@Schema(description = "出账年月(实)开始 格式:yyyy-MM")
private String actualPayoutDateStart;
/**
* 出账年月(实)结束
*/
@Schema(description = "出账年月(实)结束 格式:yyyy-MM")
private String actualPayoutDateEnd;
/**
* 检核年月 * 检核年月
*/ */
@Schema(description = "检核年月,格式:yyyy-MM") @Schema(description = "检核年月,格式:yyyy-MM")
......
package com.yd.csf.service.enums;
/**
* 基本法类型枚举
*/
public enum CommissionRuleConfigEnum {
BZ_JBF("commission_rule_config_dJea6a7rM8j38zK5","RULE6623256596","标准基本法"),
;
/**
* 基本法配置表唯一业务ID
*/
private String ruleBizId;
/**
* 基本法编码
*/
private String ruleCode;
/**
* 基本法名称
*/
private String ruleName;
//构造函数
CommissionRuleConfigEnum(String ruleBizId, String ruleCode,String ruleName) {
this.ruleBizId = ruleBizId;
this.ruleCode = ruleCode;
this.ruleName = ruleName;
}
public String getRuleBizId() {
return ruleBizId;
}
public String getRuleCode() {
return ruleCode;
}
public String getRuleName() {
return ruleName;
}
}
package com.yd.csf.service.enums;
/**
* 基本法项目枚举
*/
public enum RuleItemConfigEnum {
XS_YJ("rule_item_config_FePX0vpJQ9bU1vEo","commission_rule_config_dJea6a7rM8j38zK5","ITEM4736190590","销售佣金"),
XQ_XS_YJ("rule_item_config_Gxw21FGdwg29RFz","commission_rule_config_dJea6a7rM8j38zK5","ITEM4570368732","续期销售佣金"),
;
/**
* 基本法项目配置表唯一业务ID
*/
private String ruleItemBizId;
/**
* 基本法配置表唯一业务ID
*/
private String ruleBizId;
/**
* 基本法项目编码
*/
private String itemCode;
/**
* 基本法项目名称
*/
private String itemName;
//构造函数
RuleItemConfigEnum(String ruleItemBizId, String ruleBizId,String itemCode,String itemName) {
this.ruleItemBizId = ruleItemBizId;
this.ruleBizId = ruleBizId;
this.itemCode = itemCode;
this.itemName = itemName;
}
public String getRuleItemBizId() {
return ruleItemBizId;
}
public String getRuleBizId() {
return ruleBizId;
}
public String getItemCode() {
return itemCode;
}
public String getItemName() {
return itemName;
}
}
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -148,7 +146,7 @@ public class Salary implements Serializable { ...@@ -148,7 +146,7 @@ public class Salary implements Serializable {
/** /**
* 创建人名称 * 创建人名称
*/ */
@TableField("creator_name") @TableField(value = "creator_name", fill = FieldFill.INSERT)
private String creatorName; private String creatorName;
/** /**
......
...@@ -45,4 +45,5 @@ public interface FortuneAccountService extends IService<FortuneAccount> { ...@@ -45,4 +45,5 @@ public interface FortuneAccountService extends IService<FortuneAccount> {
List<FortuneAccount> queryList(String brokerBizId,String month,String status); List<FortuneAccount> queryList(String brokerBizId,String month,String status);
List<FortuneAccount> queryList(List<Map.Entry<String, String>> pairs, String status); List<FortuneAccount> queryList(List<Map.Entry<String, String>> pairs, String status);
} }
...@@ -105,6 +105,21 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -105,6 +105,21 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 2. 获取该月的最后一天 // 2. 获取该月的最后一天
payoutDateEnd = yearMonth.atEndOfMonth(); payoutDateEnd = yearMonth.atEndOfMonth();
} }
// 出账年月(实)开始
LocalDate actualPayoutDateStart = null;
if (StringUtils.isNotBlank(fortuneQueryRequest.getActualPayoutDateStart())) {
actualPayoutDateStart = LocalDate.parse(fortuneQueryRequest.getActualPayoutDateStart() + "-01");
}
// 出账年月(实)结束 月最后一天
LocalDate actualPayoutDateEnd = null;
if (StringUtils.isNotBlank(fortuneQueryRequest.getActualPayoutDateEnd())) {
// 1. 先解析为 YearMonth (专门处理年月)
YearMonth yearMonth = YearMonth.parse(fortuneQueryRequest.getActualPayoutDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM"));
// 2. 获取该月的最后一天
actualPayoutDateEnd = yearMonth.atEndOfMonth();
}
String brokerName = fortuneQueryRequest.getBrokerName(); String brokerName = fortuneQueryRequest.getBrokerName();
// 入账状态 // 入账状态
...@@ -116,8 +131,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -116,8 +131,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
queryWrapper.in(CollUtil.isNotEmpty(insuranceCompanyBizIdList), "insurance_company_biz_id", insuranceCompanyBizIdList); queryWrapper.in(CollUtil.isNotEmpty(insuranceCompanyBizIdList), "insurance_company_biz_id", insuranceCompanyBizIdList);
queryWrapper.in(CollUtil.isNotEmpty(productLaunchBizIdList), "product_launch_biz_id", productLaunchBizIdList); queryWrapper.in(CollUtil.isNotEmpty(productLaunchBizIdList), "product_launch_biz_id", productLaunchBizIdList);
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart); queryWrapper.ge(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd); queryWrapper.le(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
queryWrapper.ge(ObjectUtils.isNotEmpty(actualPayoutDateStart), "actual_payout_date", actualPayoutDateStart);
queryWrapper.le(ObjectUtils.isNotEmpty(actualPayoutDateEnd), "actual_payout_date", actualPayoutDateEnd);
queryWrapper.like(StringUtils.isNotBlank(brokerName), "broker", "%" + brokerName + "%"); queryWrapper.like(StringUtils.isNotBlank(brokerName), "broker", "%" + brokerName + "%");
// 入账状态, 关联查询 commission_expected 表 // 入账状态, 关联查询 commission_expected 表
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
SELECT SELECT
s.salary_no, s.salary_no,
s.salary_biz_id, s.salary_biz_id,
s.broker_biz_id,
s.broker_name, s.broker_name,
s.internal_number, s.internal_number,
s.paid_amount, s.paid_amount,
...@@ -16,6 +17,7 @@ ...@@ -16,6 +17,7 @@
GROUP_CONCAT(DISTINCT sr.currency ORDER BY sr.currency SEPARATOR ';') AS currencyList GROUP_CONCAT(DISTINCT sr.currency ORDER BY sr.currency SEPARATOR ';') AS currencyList
FROM salary s FROM salary s
LEFT JOIN salary_remittance sr ON s.salary_biz_id = sr.salary_biz_id AND sr.is_deleted = 0 LEFT JOIN salary_remittance sr ON s.salary_biz_id = sr.salary_biz_id AND sr.is_deleted = 0
<where> <where>
<if test="request.brokerName != null and request.brokerName != ''"> <if test="request.brokerName != null and request.brokerName != ''">
AND s.broker_name LIKE CONCAT('%', #{request.brokerName}, '%') AND s.broker_name LIKE CONCAT('%', #{request.brokerName}, '%')
...@@ -23,6 +25,9 @@ ...@@ -23,6 +25,9 @@
<if test="request.month != null and request.month != ''"> <if test="request.month != null and request.month != ''">
AND s.month = #{request.month} AND s.month = #{request.month}
</if> </if>
<if test="request.status != null and request.status != ''">
AND s.status = #{request.status}
</if>
AND s.is_deleted = 0 AND s.is_deleted = 0
</where> </where>
GROUP BY s.salary_biz_id GROUP BY s.salary_biz_id
...@@ -31,6 +36,7 @@ ...@@ -31,6 +36,7 @@
<select id="pushPage" resultType="com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse"> <select id="pushPage" resultType="com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse">
select select
s.salary_biz_id,
s.broker_name, s.broker_name,
s.month, s.month,
s.paid_amount, s.paid_amount,
......
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