Commit 856a8ff9 by zhangxingmin

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

parents ad444037 e33e4b9f
......@@ -40,6 +40,8 @@ import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.ExpectedFortuneExportDTO;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.user.feign.client.clientuser.ApiClientUserFeignClient;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
......@@ -65,43 +67,36 @@ import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService {
@Autowired
private PolicyService policyService;
@Autowired
private ApiClientUserFeignClient apiClientUserFeignClient;
@Autowired
private ICommissionRuleBindingService iCommissionRuleBindingService;
@Autowired
private ApiBasicLawCalculateService apiBasicLawCalculateService;
@Autowired
private IExpectedFortuneService iExpectedFortuneService;
@Autowired
private ApplicationContext applicationContext;
private ApiExpectedFortuneService getSelf() {
return applicationContext.getBean(ApiExpectedFortuneService.class);
}
@Autowired
private TransactionTemplate transactionTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
@Autowired
private PolicyBrokerService policyBrokerService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
/**
* 生成预计发佣
*
* @param request
* @return
*/
......@@ -112,16 +107,16 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (StringUtil.isNotBlank(value)) {
//有值正在执行,提示
return Result.fail("生成预计发佣正在执行中,无需再次执行");
}else {
} else {
//无值设置值,表示正在执行
redisUtil.setCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo(),request.getPolicyNo());
redisUtil.setCacheObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo(), request.getPolicyNo());
}
List<ExpectedFortune> list = iExpectedFortuneService.queryList(request.getPolicyNo());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException("当前保单已经生成过预计发佣数据,无需再次生成");
}
//根据保单号查询保单和转介人列表信息
List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList = policyService.queryPolicyBrokerList(request.getPolicyNo());
List<QueryPolicyAndBrokerDto> queryPolicyAndBrokerDtoList = policyService.queryPolicyBrokerList(request.getPolicyNo());
if (CollectionUtils.isEmpty(queryPolicyAndBrokerDtoList)) {
throw new BusinessException("保单和转介人信息不存在");
}
......@@ -141,13 +136,14 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
// 通过代理对象调用
getSelf().execute(queryPolicyAndBrokerDtoList, commissionRuleBindingList,request.getPolicyNo());
getSelf().execute(queryPolicyAndBrokerDtoList, commissionRuleBindingList, request.getPolicyNo());
return Result.success(null,"生成预计发佣正在处理....,稍后查看预计发佣列表");
return Result.success(null, "生成预计发佣正在处理....,稍后查看预计发佣列表");
}
/**
* 异步处理-> 遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
*
* @param queryPolicyAndBrokerDtoList
* @param commissionRuleBindingList
* @return
......@@ -232,6 +228,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 执行 - 奖励(非销售佣金基本法)
*
* @param dto
* @return
*/
......@@ -297,6 +294,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 执行 - 销售佣金(销售佣金基本法)
*
* @param dto
* @return
*/
......@@ -357,6 +355,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 生成保单预计发佣表记录
*
* @return
*/
@Transactional(rollbackFor = Exception.class)
......@@ -366,7 +365,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
//获得积分业务员绑定的基本法列表对应计算值结果集合
for (AlgorithmResDto algorithmResDto : fortuneDto.getAlgorithmResDtoList()) {
if (Objects.isNull(algorithmResDto.getCalculatedValue())
|| algorithmResDto.getCalculatedValue().compareTo(BigDecimal.ZERO) == 0){
|| algorithmResDto.getCalculatedValue().compareTo(BigDecimal.ZERO) == 0) {
//判空判0
continue;
}
......@@ -460,6 +459,8 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
if (CollectionUtils.isEmpty(fortuneAddRequestList)) {
return true;
}
validateAdd(fortuneAddRequestList);
// 查询最新一条有 payableNo 记录
ExpectedFortune latest = iExpectedFortuneService.getOne(
new QueryWrapper<ExpectedFortune>().isNotNull("payable_no").orderByDesc("id").last("LIMIT 1"),
......@@ -475,6 +476,10 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
expectedFortune.setExpectedFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EXPECTED_FORTUNE.getCode()));
// 应付款编号
expectedFortune.setPayableNo(this.createPayableNo(expectedFortune.getFortuneBizType(), latest));
// 默认结算汇率
expectedFortune.setDefaultExchangeRate(queryDefaultExchangeRate(expectedFortune.getCurrency()));
// 计算港币金额
expectedFortune.setHkdAmount(expectedFortune.getAmount().multiply(expectedFortune.getDefaultExchangeRate()));
// 已出帐金额、待出帐金额、已出帐比例、待出帐比例
expectedFortune.setPaidAmount(BigDecimal.ZERO);
expectedFortune.setUnpaidAmount(expectedFortune.getAmount());
......@@ -486,6 +491,29 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
return true;
}
private BigDecimal queryDefaultExchangeRate(String currency) {
if ("HKD".equalsIgnoreCase(currency)) {
return BigDecimal.valueOf(1);
}
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue());
}
}
}
return BigDecimal.ONE;
}
private void validateAdd(List<ExpectedFortuneAddRequest> fortuneAddRequestList) {
for (ExpectedFortuneAddRequest expectedFortuneDto : fortuneAddRequestList) {
if (Objects.isNull(expectedFortuneDto.getAmount())) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计出账金额不能为空");
}
}
}
@Override
public void exportExpectedFortune(ApiExpectedFortunePageRequest request, HttpServletResponse response) {
// 查询数据
......@@ -528,6 +556,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 分页查询 - 预计发佣
*
* @param request
* @return
*/
......@@ -590,6 +619,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 查询保单是否生成过预计发佣
*
* @param policyNo
* @return
*/
......@@ -604,6 +634,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
/**
* 根据保单号批量删除预计发佣数据
*
* @param policyNo
* @return
*/
......@@ -656,6 +687,12 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
ExpectedFortune updateExpectedFortune = new ExpectedFortune();
BeanUtils.copyProperties(request, updateExpectedFortune);
updateExpectedFortune.setId(expectedFortune.getId());
// 默认结算汇率
if (updateExpectedFortune.getDefaultExchangeRate() == null) {
updateExpectedFortune.setDefaultExchangeRate(queryDefaultExchangeRate(updateExpectedFortune.getCurrency()));
}
// 计算港币金额
updateExpectedFortune.setHkdAmount(updateExpectedFortune.getAmount().multiply(updateExpectedFortune.getDefaultExchangeRate()));
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
......
......@@ -94,6 +94,12 @@ public class FortuneUpdateRequest implements Serializable {
private String currency;
/**
* 出账结算汇率
*/
@Schema(description = "出账结算汇率")
private BigDecimal exchangeRate;
/**
* 出账日期
*/
@Schema(description = "出账日期")
......
......@@ -179,6 +179,18 @@ public class ExpectedFortune implements Serializable {
private LocalDate actualPayoutDate;
/**
* 默认结算汇率
*/
@TableField("default_exchange_rate")
private BigDecimal defaultExchangeRate;
/**
* 港币预计出账金额
*/
@TableField("hkd_amount")
private BigDecimal hkdAmount;
/**
* 已出账金额
*/
@TableField("paid_amount")
......
......@@ -129,11 +129,26 @@ public class Fortune implements Serializable {
private String currency;
/**
* 结算汇率
*/
private BigDecimal exchangeRate;
/**
* 港币金额
*/
private BigDecimal hkdAmount;
/**
* 本次出账金额
*/
private BigDecimal currentPaymentAmount;
/**
* 本次出账港币金额
*/
private BigDecimal currentPaymentHkdAmount;
/**
* 本期出账比例
*/
private BigDecimal currentPaymentRatio;
......
......@@ -364,7 +364,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
}
}
}
return BigDecimal.ZERO;
return BigDecimal.ONE;
}
@Override
......
......@@ -45,6 +45,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
/**
......@@ -165,8 +166,9 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 填充应收账款编号、已入账比例、待入账比例
commissionVO.setReceivableNo(commissionExpected.getReceivableNo());
if (commissionExpected.getCommissionRatio() != null) {
commissionVO.setPaidRatio(commissionExpected.getPaidRatio());
commissionVO.setPendingRatio(commissionExpected.getCommissionRatio().subtract(commissionExpected.getPaidRatio()));
BigDecimal paidRatio = commissionExpected.getPaidRatio() != null ? commissionExpected.getPaidRatio() : BigDecimal.ZERO;
commissionVO.setPaidRatio(paidRatio);
commissionVO.setPendingRatio(commissionExpected.getCommissionRatio().subtract(paidRatio));
}
commissionVO.setCommissionExpectedStatus(commissionExpected.getStatus());
}
......@@ -720,39 +722,17 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
String currency = commissionExpected.getCurrency();
// 如果当前入账币种等于保单币种,直接计算来佣比例
if (StringUtils.equals(currentCurrency, currency)) {
if (StringUtils.equalsIgnoreCase(currentCurrency, currency)) {
return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
} else {
// 将入账金额从入账币种转换为保单币种
BigDecimal amountInPolicyCurrency = amount.divide(exchangeRate, 4, RoundingMode.HALF_UP);
// 计算佣金比例
return amountInPolicyCurrency.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100"));
}
// 如果币种不同,首先把当前入账金额转换为对应币种金额
if (!StringUtils.equals(currentCurrency, "HKD")) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
log.info("--------------当前入账金额: {} {}", amount, currentCurrency);
log.info("--------------当前入账币种: {}", currentCurrency);
BigDecimal defaultExchangeRate = null;
if (CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currentCurrency)) {
defaultExchangeRate = new BigDecimal(dictItem.getItemValue());
}
}
}
if (ObjectUtils.isEmpty(defaultExchangeRate)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "未找到当前入账币种对应的结算汇率");
}
amount = amount.divide(defaultExchangeRate, 4, RoundingMode.HALF_UP);
log.info("--------------当前入账港币: {}", amount);
}
// 当前来佣比例=当前入账金额/结算汇率/保费 * 100
BigDecimal currentCommissionRatio = amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
.divide(exchangeRate, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
log.info("--------------当前结算汇率: {}", exchangeRate);
log.info("--------------当前来佣比例: {}", currentCommissionRatio);
return currentCommissionRatio;
}
@Override
......
......@@ -76,6 +76,9 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
}
String reconciliationYearMonth = fortuneQueryRequest.getReconciliationYearMonth();
List<String> statusList = fortuneQueryRequest.getStatusList();
if (CollectionUtils.isEmpty(statusList)) {
statusList = Collections.singletonList(FortuneStatusEnum.CHECKED.getItemValue());
}
String policyNo = fortuneQueryRequest.getPolicyNo();
List<String> insuranceCompanyBizIdList = fortuneQueryRequest.getInsuranceCompanyBizIdList();
List<String> productLaunchBizIdList = fortuneQueryRequest.getProductLaunchBizIdList();
......@@ -208,6 +211,15 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
throw new BusinessException(ResultCode.PARAM_CHECK_ERROR.getCode(), "出账币种不能为空");
}
}
// 更新结算汇率
BigDecimal exchangeRate = ObjectUtils.isNotEmpty((fortuneUpdateRequest.getExchangeRate()))
? fortuneUpdateRequest.getExchangeRate()
: queryDefaultExchangeRate(fortuneUpdateRequest.getCurrency());
fortune.setExchangeRate(exchangeRate);
if (ObjectUtils.isEmpty(fortune.getHkdAmount())) {
fortune.setHkdAmount(fortune.getAmount().multiply(exchangeRate));
}
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
......@@ -235,6 +247,24 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return true;
}
private BigDecimal queryDefaultExchangeRate(String currency) {
if (StringUtils.isBlank(currency)) {
return BigDecimal.ONE;
}
if ("HKD".equalsIgnoreCase(currency)) {
return BigDecimal.valueOf(1);
}
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_exchange_rate_hkd");
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemLabel(), currency)) {
return new BigDecimal(dictItem.getItemValue());
}
}
}
return BigDecimal.ONE;
}
/**
* 拆分发放(按本次发放金额拆)
*/
......@@ -250,8 +280,11 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
if (currentPaymentAmount.compareTo(main.getCurrentPaymentAmount()) > 0)
throw new BusinessException("本次发放金额不能大于可出账金额");
// 本次发放港币金额
BigDecimal currentHkdAmount = currentPaymentAmount.multiply(main.getExchangeRate());
// 1. 更新主行 = 本次发放金额
main.setCurrentPaymentAmount(currentPaymentAmount);
main.setCurrentPaymentHkdAmount(currentHkdAmount);
main.setCurrentPaymentRatio(currentPaymentAmount
.divide(expectedFortune.getAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
main.setStatus(FortuneStatusEnum.CHECKED.getItemValue());
......@@ -270,6 +303,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
BeanUtils.copyProperties(main, part, "id", "fortuneBizId", "currentPaymentAmount", "status", "isPart", "payoutDate");
part.setFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_FORTUNE.getCode()));
part.setCurrentPaymentAmount(leftAmount);
part.setCurrentPaymentHkdAmount(leftAmount.multiply(main.getExchangeRate()));
part.setCurrentPaymentRatio(leftAmount
.divide(expectedFortune.getAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
part.setStatus(FortuneStatusEnum.WAIT.getItemValue());
......@@ -286,17 +320,18 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
.one();
if (ef == null) return;
BigDecimal newPaid = ef.getPaidAmount() == null ? BigDecimal.ZERO : ef.getPaidAmount().add(currentPaymentAmount);
BigDecimal newUnpaid = ef.getAmount().subtract(newPaid);
// 统一使用港币金额
BigDecimal newPaid = ef.getPaidAmount() == null ? BigDecimal.ZERO : ef.getPaidAmount().add(currentHkdAmount);
BigDecimal newUnpaid = ef.getHkdAmount().subtract(newPaid);
String newStatus = newUnpaid.compareTo(BigDecimal.ZERO) == 0 ? "6" : "3";
expectedFortuneService.lambdaUpdate()
.set(ExpectedFortune::getPaidAmount, newPaid)
.set(ExpectedFortune::getUnpaidAmount, newUnpaid)
.set(ExpectedFortune::getPaidRatio,
newPaid.divide(ef.getAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
newPaid.divide(ef.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getUnpaidRatio,
newUnpaid.divide(ef.getAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
newUnpaid.divide(ef.getHkdAmount(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)))
.set(ExpectedFortune::getStatus, newStatus)
.eq(ExpectedFortune::getId, ef.getId())
.update();
......
......@@ -88,9 +88,22 @@
<select id="getCommissionStatistics" resultType="com.yd.csf.service.vo.CommissionStatisticsVO">
SELECT
COALESCE(SUM(c.hkd_amount), 0) as totalPaidAmount,
COALESCE(MAX(e.expected_amount), 0) as expectePaidAmount,
COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as pendingPaidAmount,
COALESCE(IFNULL(e.expected_amount, 0) - SUM(c.amount), 0) as differenceAmount,
COALESCE(
(SELECT SUM(e2.expected_amount)
FROM commission_expected e2
WHERE e2.commission_expected_biz_id IN (
SELECT DISTINCT c2.commission_expected_biz_id
FROM commission c2
WHERE c2.is_deleted = 0
<if test="commissionIdList != null and commissionIdList.size > 0">
AND c2.id IN
<foreach collection="commissionIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
)
), 0
) as expectePaidAmount,
COUNT(DISTINCT c.policy_no) as totalPolicyCount,
COALESCE(CAST(c.premium AS DECIMAL(15,2)) * p.payment_term, 0) AS totalPremium,
COUNT(DISTINCT c.reconciliation_company) as reconciliationCompanyCount,
......
......@@ -26,7 +26,7 @@
<select id="getStatistics" resultType="com.yd.csf.service.vo.ExpectedFortuneStatisticsVO">
select
ifnull(sum(ef.amount),0) as totalExpectedAmount,
ifnull(sum(ef.hkd_amount),0) as totalExpectedAmount,
ifnull(sum(ef.paid_amount),0) as totalPaidAmount,
ifnull(sum(ef.unpaid_amount),0) as totalUnpaidAmount,
ifnull(e.totalPremiumAmount,0) as totalPremiumAmount,
......
......@@ -25,7 +25,10 @@
<result property="fortuneType" column="fortune_type" />
<result property="amount" column="amount" />
<result property="currency" column="currency" />
<result property="exchangeRate" column="exchange_rate" />
<result property="hkdAmount" column="hkd_amount" />
<result property="currentPaymentAmount" column="current_payment_amount" />
<result property="currentPaymentHkdAmount" column="current_payment_hkd_amount" />
<result property="currentPaymentRatio" column="current_payment_ratio" />
<result property="status" column="status" />
<result property="payoutDate" column="payout_date" />
......@@ -49,7 +52,7 @@
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,fortune_biz_type,batch_biz_id,
commission_biz_id,commission_expected_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,is_part,
amount,currency,current_payment_amount,current_payment_ratio,status,payout_date,actual_payout_date,is_tax,
amount,currency,exchange_rate,hkd_amount,current_payment_amount,current_payment_hkd_amount,current_payment_ratio,status,payout_date,actual_payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
calculation_formula,remark,is_deleted,creator_id,updater_id,
create_time,update_time
......@@ -58,12 +61,12 @@
<select id="getFortuneStatistics" resultType="com.yd.csf.service.dto.FortuneStatisticsVO">
SELECT
f.policy_no,
SUM(CASE WHEN f.is_part = '0' THEN f.amount ELSE 0 END) AS amount,
SUM(CASE WHEN f.status = '2' THEN f.current_payment_amount ELSE 0 END) AS sentAmount,
SUM(CASE WHEN f.status = '0' THEN f.current_payment_amount ELSE 0 END) AS pendingOutAmount,
SUM(CASE WHEN f.status = '6' THEN f.current_payment_amount ELSE 0 END) AS availableOutAmount,
SUM(CASE WHEN f.is_part = '0' THEN f.hkd_amount ELSE 0 END) AS amount,
SUM(CASE WHEN f.status = '2' THEN f.current_payment_hkd_amount ELSE 0 END) AS sentAmount,
SUM(CASE WHEN f.status = '0' THEN f.current_payment_hkd_amount ELSE 0 END) AS pendingOutAmount,
SUM(CASE WHEN f.status = '6' THEN f.current_payment_hkd_amount ELSE 0 END) AS availableOutAmount,
COUNT(DISTINCT f.policy_no) AS totalPolicyCount,
MAX(c.amount) AS totalInAmount,
MAX(c.hkd_amount) AS totalInAmount,
MAX(c.premium) AS totalPremium
FROM fortune f
LEFT JOIN commission c ON f.commission_biz_id = c.commission_biz_id
......
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