Commit 92508ba1 by zhangxingmin

push

parent b3ea220d
......@@ -5,6 +5,7 @@ import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiSalaryService;
import com.yd.csf.feign.client.salary.ApiSalaryFeignClient;
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.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
......@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;
/**
* 薪资单信息
......@@ -180,5 +182,14 @@ public class ApiSalaryController implements ApiSalaryFeignClient {
return apiSalaryService.calculateTotalAmount(request);
}
/**
* 查询薪资单转介人列表信息
* @return
*/
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList() {
return apiSalaryService.brokerList();
}
}
......@@ -3,11 +3,13 @@ package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
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.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
import java.math.BigDecimal;
import java.util.List;
public interface ApiSalaryService {
Result<IPage<ApiSalaryPageResponse>> page(ApiSalaryPageRequest request);
......@@ -39,4 +41,6 @@ public interface ApiSalaryService {
Result<BigDecimal> calculatePaidAmount(ApiSalaryCalculatePaidAmountRequest request);
Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request);
Result<List<ApiSalaryBrokerListResponse>> brokerList();
}
package com.yd.csf.api.service.impl;
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.extension.plugins.pagination.Page;
import com.yd.base.feign.client.exchangerate.ApiExchangeRateFeignClient;
......@@ -17,6 +18,7 @@ import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceDTO;
import com.yd.csf.feign.dto.salaryremittance.ApiSalaryRemittanceFzDTO;
import com.yd.csf.feign.enums.SalaryStatusEnum;
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.ApiSalaryPageResponse;
import com.yd.csf.feign.response.salary.ApiSalaryPushPageResponse;
......@@ -405,6 +407,72 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
}
/**
* 查询薪资单转介人列表信息
* @return
*/
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList() {
// 构造查询条件:状态为“完成出账”(2) 且 未删除
QueryWrapper<FortuneAccount> wrapper = new QueryWrapper<>();
wrapper.eq("status", FortuneAccountStatusEnum.SENT.getItemValue())
.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<>();
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);
// 收集月份(自动去重)
brokerMonthMap.computeIfAbsent(bizId, k -> new LinkedHashSet<>()).add(month);
}
// 组装响应对象
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();
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列表
*/
......
......@@ -3,6 +3,7 @@ package com.yd.csf.feign.client.salary;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.salary.ApiSalaryFeignFallbackFactory;
import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
......@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;
/**
* 香港保险服务-薪资单信息Feign客户端
......@@ -136,4 +138,11 @@ public interface ApiSalaryFeignClient {
*/
@PostMapping("/calculate/totalAmount")
Result<BigDecimal> calculateTotalAmount(@Validated @RequestBody ApiSalaryCalculateTotalAmountRequest request);
/**
* 查询薪资单转介人列表信息
* @return
*/
@GetMapping("/broker/list")
Result<List<ApiSalaryBrokerListResponse>> brokerList();
}
......@@ -3,6 +3,7 @@ package com.yd.csf.feign.fallback.salary;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.salary.ApiSalaryFeignClient;
import com.yd.csf.feign.request.salary.*;
import com.yd.csf.feign.response.salary.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
......@@ -10,6 +11,7 @@ import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;
/**
* 香港保险服务-薪资单信息Feign降级处理
......@@ -94,6 +96,11 @@ public class ApiSalaryFeignFallbackFactory implements FallbackFactory<ApiSalaryF
public Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request) {
return null;
}
@Override
public Result<List<ApiSalaryBrokerListResponse>> brokerList() {
return null;
}
};
}
}
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;
/**
* 月份列表(格式: 202606)
*/
private List<String> monthList;
}
......@@ -45,4 +45,5 @@ public interface FortuneAccountService extends IService<FortuneAccount> {
List<FortuneAccount> queryList(String brokerBizId,String month,String status);
List<FortuneAccount> queryList(List<Map.Entry<String, String>> pairs, String status);
}
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