Commit 96a9cfb4 by jianan

新单跟进改版2

parent 269f86d2
......@@ -15,7 +15,7 @@ import java.util.List;
*/
public interface FortuneMapper extends BaseMapper<Fortune> {
FortuneStatisticsVO getFortuneStatistics(@Param("fortuneIdList") List<Long> fortuneIdList);
List<FortuneStatisticsVO> getFortuneStatistics(@Param("fortuneIdList") List<Long> fortuneIdList);
}
......
......@@ -36,6 +36,12 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
private String policyNo;
/**
* 入账状态
*/
@Schema(description = "入账状态,可多选 字典值: csf_expected_commission_status")
private List<String> commissionStatusList;
/**
* 保险公司业务 id 列表
*/
@Schema(description = "保险公司业务 id 列表")
......
......@@ -59,6 +59,11 @@ public class Fortune implements Serializable {
private String commissionBizId;
/**
* 预计来佣记录业务ID
*/
private String commissionExpectedBizId;
/**
* 保单号
*/
private String policyNo;
......
......@@ -613,6 +613,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
Commission matchedCommission = commissionByPolicyPeriod.get(key);
if (matchedCommission != null) {
fortune.setCommissionBizId(matchedCommission.getCommissionBizId());
fortune.setCommissionExpectedBizId(matchedCommission.getCommissionExpectedBizId());
} else {
fortune.setStatus(FortuneStatusEnum.MATCH_FAIL.getItemValue());
fortune.setRemark("未找到当前预计发佣对应的来佣");
......
......@@ -8,11 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Joiner;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.dto.*;
import com.yd.csf.service.enums.FortuneStatusEnum;
......@@ -20,10 +22,14 @@ import com.yd.csf.service.model.*;
import com.yd.csf.service.service.*;
import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.vo.FortuneVO;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -58,6 +64,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
private IExpectedFortuneService expectedFortuneService;
@Resource
private PolicyService policyService;
@Autowired
private ApiSysDictFeignClient apiSysDictFeignClient;
@Override
......@@ -73,6 +81,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<String> productLaunchBizIdList = fortuneQueryRequest.getProductLaunchBizIdList();
LocalDate payoutDateStart = fortuneQueryRequest.getPayoutDateStart();
LocalDate payoutDateEnd = fortuneQueryRequest.getPayoutDateEnd();
// 入账状态
List<String> commissionStatusList = fortuneQueryRequest.getCommissionStatusList();
queryWrapper.eq(StringUtils.isNotBlank(reconciliationYearMonth), "reconciliation_year_month", reconciliationYearMonth);
queryWrapper.in(CollUtil.isNotEmpty(statusList), "status", statusList);
......@@ -83,6 +93,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
queryWrapper.gt(ObjectUtils.isNotEmpty(payoutDateStart), "payout_date", payoutDateStart);
queryWrapper.lt(ObjectUtils.isNotEmpty(payoutDateEnd), "payout_date", payoutDateEnd);
// 入账状态, 关联查询 commission_expected 表
if (CollUtil.isNotEmpty(commissionStatusList)) {
queryWrapper.apply("EXISTS (SELECT 1 FROM commission_expected ce WHERE ce.commission_expected_biz_id = fortune.commission_expected_biz_id AND ce.status IN ({0}))",
Joiner.on(",").join(commissionStatusList));
}
queryWrapper.orderByAsc("id");
return queryWrapper;
}
......@@ -464,11 +480,26 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
BeanUtil.copyProperties(fortuneAddRequest, fortune);
// 生成发佣业务ID
fortune.setFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_FORTUNE.getCode()));
fortune.setCurrentPaymentAmount(fortuneAddRequest.getAmount());
fortune.setFortuneName(queryByDict(fortuneAddRequest.getFortuneType()));
fortune.setIsPart(0);
fortune.setStatus(FortuneStatusEnum.WAIT.getItemValue());
return this.save(fortune);
}
private String queryByDict(String fortuneType) {
Result<List<GetDictItemListByDictTypeResponse>> result = apiSysDictFeignClient.getDictItemListByDictType("csf_fortune_type");
if (CollectionUtils.isNotEmpty(result.getData())) {
for (GetDictItemListByDictTypeResponse dictItem : result.getData()) {
if (StringUtils.equalsIgnoreCase(dictItem.getItemValue(), fortuneType)) {
return dictItem.getItemLabel();
}
}
}
return null;
}
/**
* 查询单个对象
* @param fortuneBizId
......@@ -492,7 +523,24 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
return fortuneStatisticsVO;
}
// 自定义查询
FortuneStatisticsVO fortuneStatistics = this.baseMapper.getFortuneStatistics(fortuneIdList);
List<FortuneStatisticsVO> fortuneStatisticsList = this.baseMapper.getFortuneStatistics(fortuneIdList);
// 查询结果
FortuneStatisticsVO fortuneStatistics;
if (CollectionUtils.isNotEmpty(fortuneStatisticsList) && fortuneStatisticsList.size() > 1) {
// 合并查询结果
FortuneStatisticsVO noPolicyNoData = fortuneStatisticsList.get(0);
FortuneStatisticsVO policyNoData = fortuneStatisticsList.get(1);
// 合并查询结果
fortuneStatistics = new FortuneStatisticsVO();
fortuneStatistics.setTotalInAmount(policyNoData.getTotalInAmount());
fortuneStatistics.setTotalPolicyCount(policyNoData.getTotalPolicyCount());
fortuneStatistics.setTotalPremium(policyNoData.getTotalPremium());
fortuneStatistics.setPendingOutAmount(noPolicyNoData.getPendingOutAmount().add(policyNoData.getPendingOutAmount()));
fortuneStatistics.setAvailableOutAmount(noPolicyNoData.getAvailableOutAmount().add(policyNoData.getAvailableOutAmount()));
} else {
fortuneStatistics = fortuneStatisticsList.get(0);
}
// 计算差额
fortuneStatistics.setDifferenceAmount(fortuneStatistics.getPendingOutAmount().subtract(fortuneStatistics.getAvailableOutAmount()));
return fortuneStatistics;
......
......@@ -13,6 +13,7 @@
<result property="isPart" column="is_part" />
<result property="batchBizId" column="batch_biz_id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="commissionExpectedBizId" column="commission_expected_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="fortunePeriod" column="fortune_period" />
<result property="fortuneTotalPeriod" column="fortune_total_period" />
......@@ -45,7 +46,7 @@
<sql id="Base_Column_List">
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,fortune_biz_type,batch_biz_id,
commission_biz_id,policy_no,fortune_period,fortune_total_period,broker_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,status,payout_date,actual_payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_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