Commit b454e824 by zhangxingmin

push

parent 667dbcb6
......@@ -6,6 +6,7 @@ import com.yd.csf.api.service.ApiSalarySplitService;
import com.yd.csf.feign.client.salarysplit.ApiSalarySplitFeignClient;
import com.yd.csf.feign.request.salarysplit.*;
import com.yd.csf.api.dto.ApiSalarySplitPageListDTO;
import com.yd.csf.feign.response.salarysplit.ApiCalculateToAmountResponse;
import com.yd.csf.feign.response.salarysplit.ApiQueryRemainingResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitExportSummaryListResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitQueryRateResponse;
......@@ -79,6 +80,16 @@ public class ApiSalarySplitController implements ApiSalarySplitFeignClient {
}
/**
* 计算-目标金额
* @param request
* @return
*/
@Override
public Result<ApiCalculateToAmountResponse> calculateToAmount(ApiCalculateToAmountRequest request) {
return apiSalarySplitService.calculateToAmount(request);
}
/**
* 导出-薪资拆分应发信息汇总列表
* @param request
* @return
......
......@@ -4,6 +4,7 @@ import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiSalarySplitSummaryPageDTO;
import com.yd.csf.feign.request.salarysplit.*;
import com.yd.csf.api.dto.ApiSalarySplitPageListDTO;
import com.yd.csf.feign.response.salarysplit.ApiCalculateToAmountResponse;
import com.yd.csf.feign.response.salarysplit.ApiQueryRemainingResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitExportSummaryListResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitQueryRateResponse;
......@@ -19,5 +20,7 @@ public interface ApiSalarySplitService {
Result<ApiSalarySplitQueryRateResponse> queryRate(ApiSalarySplitQueryRateRequest request);
Result<ApiCalculateToAmountResponse> calculateToAmount(ApiCalculateToAmountRequest request);
Result<ApiSalarySplitExportSummaryListResponse> export(ApiSalarySplitExportSummaryListRequest request);
}
......@@ -13,6 +13,7 @@ import com.yd.common.utils.CodeGenerator;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.dto.ApiSalarySplitSummaryPageDTO;
import com.yd.csf.api.service.ApiSalarySplitService;
import com.yd.csf.api.utils.ExchangeUtils;
import com.yd.csf.feign.dto.excel.ApiSalarySplitSummaryExcelDto;
import com.yd.csf.feign.dto.salarysplit.ApiSalarySplitBatchSaveDto;
import com.yd.csf.feign.dto.salarysplit.ApiSalarySplitPageDto;
......@@ -20,6 +21,7 @@ import com.yd.csf.feign.dto.salarysplit.ApiSalarySplitStatisticsDto;
import com.yd.csf.feign.dto.salarysplit.ApiSalarySplitSummaryPageDto;
import com.yd.csf.feign.request.salarysplit.*;
import com.yd.csf.api.dto.ApiSalarySplitPageListDTO;
import com.yd.csf.feign.response.salarysplit.ApiCalculateToAmountResponse;
import com.yd.csf.feign.response.salarysplit.ApiQueryRemainingResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitExportSummaryListResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitQueryRateResponse;
......@@ -219,6 +221,19 @@ public class ApiSalarySplitServiceImpl implements ApiSalarySplitService {
}
/**
* 计算-目标金额
* @param request
* @return
*/
@Override
public Result<ApiCalculateToAmountResponse> calculateToAmount(ApiCalculateToAmountRequest request) {
BigDecimal toAmount = ExchangeUtils.calculateTargetAmount(request.getFromAmount(),request.getExchangeRate());
ApiCalculateToAmountResponse response = new ApiCalculateToAmountResponse();
response.setToAmount(toAmount);
return Result.success(response);
}
/**
* 导出-薪资拆分应发信息汇总列表
* @param request
* @return
......
package com.yd.csf.api.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class ExchangeUtils {
private static final BigDecimal ONE_HUNDRED = new BigDecimal("100");
private static final int SCALE = 4;
private static final int DIVISION_SCALE = 10;
/**
* 计算目标金额
* @param fromAmount 原币种金额(不能为 null)
* @param percent 汇率百分比,例如 20.15 表示 20.15%(不能为 null,通常 >0)
* @return 目标金额,保留四位小数,四舍五入
*/
public static BigDecimal calculateTargetAmount(BigDecimal fromAmount, BigDecimal percent) {
if (fromAmount == null || percent == null) {
throw new IllegalArgumentException("fromAmount and percent must not be null");
}
BigDecimal rate = percent.divide(ONE_HUNDRED, DIVISION_SCALE, RoundingMode.HALF_UP);
BigDecimal target = fromAmount.multiply(rate);
return target.setScale(SCALE, RoundingMode.HALF_UP);
}
public static void main(String[] args) {
System.out.println(calculateTargetAmount(new BigDecimal(20102.8921), new BigDecimal(20.18)));
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.yd.csf.feign.client.salarysplit;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.salarysplit.ApiSalarySplitFeignFallbackFactory;
import com.yd.csf.feign.request.salarysplit.*;
import com.yd.csf.feign.response.salarysplit.ApiCalculateToAmountResponse;
import com.yd.csf.feign.response.salarysplit.ApiQueryRemainingResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitExportSummaryListResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitQueryRateResponse;
......@@ -60,6 +61,14 @@ public interface ApiSalarySplitFeignClient {
Result<ApiSalarySplitQueryRateResponse> queryRate(@Validated @RequestBody ApiSalarySplitQueryRateRequest request);
/**
* 计算-目标金额
* @param request
* @return
*/
@PostMapping("/calculate/toAmount")
Result<ApiCalculateToAmountResponse> calculateToAmount(@Validated @RequestBody ApiCalculateToAmountRequest request);
/**
* 导出-薪资拆分应发信息汇总列表
* @param request
* @return
......
......@@ -3,6 +3,7 @@ package com.yd.csf.feign.fallback.salarysplit;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.salarysplit.ApiSalarySplitFeignClient;
import com.yd.csf.feign.request.salarysplit.*;
import com.yd.csf.feign.response.salarysplit.ApiCalculateToAmountResponse;
import com.yd.csf.feign.response.salarysplit.ApiQueryRemainingResponse;
import com.yd.csf.feign.response.salarysplit.ApiSalarySplitQueryRateResponse;
import lombok.extern.slf4j.Slf4j;
......@@ -45,6 +46,11 @@ public class ApiSalarySplitFeignFallbackFactory implements FallbackFactory<ApiSa
}
@Override
public Result<ApiCalculateToAmountResponse> calculateToAmount(ApiCalculateToAmountRequest request) {
return null;
}
@Override
public Result export(ApiSalarySplitExportSummaryListRequest request) {
return null;
}
......
package com.yd.csf.feign.request.salarysplit;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApiCalculateToAmountRequest {
/**
* 原币种金额
*/
private BigDecimal fromAmount;
/**
* 汇率
*/
private BigDecimal exchangeRate;
}
package com.yd.csf.feign.response.salarysplit;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ApiCalculateToAmountResponse {
/**
* 目标金额
*/
private BigDecimal toAmount;
}
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