Commit 32a01ef1 by zhangxingmin

push

parent e5522735
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
<file url="file://$PROJECT_DIR$/yd-csf-api/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/yd-csf-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-csf-api/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/yd-csf-api/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-csf-feign/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/yd-csf-feign/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-csf-feign/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-csf-service/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/yd-csf-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/yd-csf-service/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/yd-csf-service/src/main/resources" charset="UTF-8" />
</component> </component>
......
...@@ -198,4 +198,14 @@ public class ApiSalaryController implements ApiSalaryFeignClient { ...@@ -198,4 +198,14 @@ public class ApiSalaryController implements ApiSalaryFeignClient {
return apiSalaryService.export(request); return apiSalaryService.export(request);
} }
/**
* 条件查询-电子薪资单列表信息(查询已推送薪资单信息)
* @param request
* @return
*/
@Override
public Result<ApiSalaryConditionListResponse> conditionList(ApiSalaryConditionListRequest request) {
return apiSalaryService.conditionList(request);
}
} }
...@@ -39,6 +39,8 @@ public interface ApiSalaryService { ...@@ -39,6 +39,8 @@ public interface ApiSalaryService {
Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request); Result<BigDecimal> calculateTotalAmount(ApiSalaryCalculateTotalAmountRequest request);
Result<ApiSalaryConditionListResponse> conditionList(ApiSalaryConditionListRequest request);
Result<ApiSalaryExportResponse> export(ApiSalaryExportRequest request); Result<ApiSalaryExportResponse> export(ApiSalaryExportRequest request);
Result<List<ApiSalaryBrokerListResponse>> brokerList(String name); Result<List<ApiSalaryBrokerListResponse>> brokerList(String name);
......
...@@ -456,6 +456,91 @@ public class ApiSalaryServiceImpl implements ApiSalaryService { ...@@ -456,6 +456,91 @@ public class ApiSalaryServiceImpl implements ApiSalaryService {
} }
/** /**
* 条件查询-电子薪资单列表信息
* @param request
* @return
*/
@Override
public Result<ApiSalaryConditionListResponse> conditionList(ApiSalaryConditionListRequest request) {
// 1. 根据手机号查询转介人信息
ApiUserSaleExpandListRequest listRequest = new ApiUserSaleExpandListRequest();
listRequest.setPhone(request.getMobile());
Result<List<ApiUserSaleExpandDetailResponse>> result = apiUserSaleExpandFeignClient.list(listRequest);
if (CollectionUtils.isEmpty(result.getData())) {
// 无转介人信息,返回空列表
ApiSalaryConditionListResponse response = new ApiSalaryConditionListResponse();
response.setCount(0);
response.setConditionResponseList(Collections.emptyList());
return Result.success(response);
}
// 取第一个转介人(通常一个手机号对应一个转介人)
ApiUserSaleExpandDetailResponse userDetail = result.getData().get(0);
String brokerBizId = userDetail.getClientUserBizId();
if (StringUtils.isBlank(brokerBizId)) {
// 转介人业务ID为空,返回空列表
ApiSalaryConditionListResponse response = new ApiSalaryConditionListResponse();
response.setCount(0);
response.setConditionResponseList(Collections.emptyList());
return Result.success(response);
}
// 2. 根据转介人业务ID和年份查询薪资单
String year = request.getYear();
LambdaQueryWrapper<Salary> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Salary::getBrokerBizId, brokerBizId)
.likeRight(Salary::getMonth, year) // month 为 yyyyMM,匹配前四位年份
.eq(Salary::getIsDeleted, 0)
.orderByDesc(Salary::getMonth); // 按月份降序排列(最近的在前面)
List<Salary> salaryList = iSalaryService.list(wrapper);
if (CollectionUtils.isEmpty(salaryList)) {
ApiSalaryConditionListResponse response = new ApiSalaryConditionListResponse();
response.setCount(0);
response.setConditionResponseList(Collections.emptyList());
return Result.success(response);
}
// 3. 转换为响应对象
List<ApiSalaryConditionResponse> conditionResponseList = salaryList.stream()
.map(salary -> {
ApiSalaryConditionResponse resp = new ApiSalaryConditionResponse();
resp.setSalaryBizId(salary.getSalaryBizId());
// 格式化月份为 "xxxx年MM月"
String month = salary.getMonth();
String yearMonth = formatYearMonth(month);
resp.setYearMonth(yearMonth);
resp.setPaidAmount(salary.getPaidAmount());
// 状态名称转换
// resp.setStatusName(getStatusDesc(salary.getStatus()));
resp.setStatusName("已发放");
return resp;
})
.collect(Collectors.toList());
// 4. 组装最终响应
ApiSalaryConditionListResponse response = new ApiSalaryConditionListResponse();
response.setCount(conditionResponseList.size());
response.setConditionResponseList(conditionResponseList);
return Result.success(response);
}
/**
* 将 yyyyMM 格式的月份转为 xxxx年MM月
*/
private String formatYearMonth(String month) {
if (StringUtils.isBlank(month) || month.length() != 6) {
return month;
}
try {
String year = month.substring(0, 4);
String mm = month.substring(4, 6);
return year + "年" + mm + "月";
} catch (Exception e) {
return month;
}
}
/**
* 电子薪资单-导出 * 电子薪资单-导出
* @param request * @param request
* @return * @return
......
...@@ -4,6 +4,7 @@ import com.yd.common.result.Result; ...@@ -4,6 +4,7 @@ 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.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryConditionListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import com.yd.csf.feign.response.salary.ApiSalaryExportResponse; import com.yd.csf.feign.response.salary.ApiSalaryExportResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
...@@ -154,4 +155,12 @@ public interface ApiSalaryFeignClient { ...@@ -154,4 +155,12 @@ public interface ApiSalaryFeignClient {
*/ */
@PostMapping("/salary/export") @PostMapping("/salary/export")
Result<ApiSalaryExportResponse> export(@Validated @RequestBody ApiSalaryExportRequest request); Result<ApiSalaryExportResponse> export(@Validated @RequestBody ApiSalaryExportRequest request);
/**
* 条件查询-电子薪资单列表信息
* @param request
* @return
*/
@PostMapping("/condition/list")
Result<ApiSalaryConditionListResponse> conditionList(@Validated @RequestBody ApiSalaryConditionListRequest request);
} }
...@@ -4,6 +4,7 @@ import com.yd.common.result.Result; ...@@ -4,6 +4,7 @@ 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.ApiSalaryBrokerListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryConditionListResponse;
import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse; import com.yd.csf.feign.response.salary.ApiSalaryDetailResponse;
import com.yd.csf.feign.response.salary.ApiSalaryExportResponse; import com.yd.csf.feign.response.salary.ApiSalaryExportResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -107,6 +108,11 @@ public class ApiSalaryFeignFallbackFactory implements FallbackFactory<ApiSalaryF ...@@ -107,6 +108,11 @@ public class ApiSalaryFeignFallbackFactory implements FallbackFactory<ApiSalaryF
public Result<ApiSalaryExportResponse> export(ApiSalaryExportRequest request) { public Result<ApiSalaryExportResponse> export(ApiSalaryExportRequest request) {
return null; return null;
} }
@Override
public Result<ApiSalaryConditionListResponse> conditionList(ApiSalaryConditionListRequest request) {
return null;
}
}; };
} }
} }
package com.yd.csf.feign.request.salary;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiSalaryConditionListRequest {
/**
* 手机号(用于和CSF系统人员信息匹配)
*/
@NotBlank(message = "手机号不能为空")
private String mobile;
/**
* 薪资年份(格式:yyyy)
*/
@NotBlank(message = "薪资年份不能为空")
private String year;
}
package com.yd.csf.feign.response.salary;
import lombok.Data;
import java.util.List;
@Data
public class ApiSalaryConditionListResponse {
/**
* 列表数量
*/
private Integer count;
/**
* 薪资列表信息
*/
private List<ApiSalaryConditionResponse> conditionResponseList;
}
package com.yd.csf.feign.response.salary;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApiSalaryConditionResponse {
/**
* 薪资单表唯一业务ID
*/
private String salaryBizId;
/**
* 薪资年月(同出账月,如:xxxx年MM月)
*/
private String yearMonth;
/**
* 实发总金额(单位:HKD)
*/
private BigDecimal paidAmount;
/**
* 状态名称
*/
private String statusName;
}
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