Commit fe59ea40 by jianan

新单跟进50

parent 89792737
......@@ -105,7 +105,7 @@ public class ApiCommissionExpectedController {
* @return
*/
@PostMapping("/list/page")
@Operation(summary = "分页获取预计来佣列表")
@Operation(summary = "分页获取预计来佣列表", description = "可根据 reconciliation_company、commission_name、commission_period、amount 排序,默认按照佣金期数升序排序")
public Result<Page<CommissionExpectedVO>> listCommissionExpectedByPage(@RequestBody CommissionExpectedQueryRequest CommissionExpectedQueryRequest) {
long current = CommissionExpectedQueryRequest.getPageNo();
long size = CommissionExpectedQueryRequest.getPageSize();
......
......@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
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.yd.common.constant.CommonConstant;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.utils.RandomStringGenerator;
......@@ -16,6 +17,7 @@ import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
......@@ -103,8 +105,19 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
String policyNo = commissionExpectedQueryRequest.getPolicyNo();
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(policyNo), "policy_no", policyNo);
// 排序规则
// 默认排序规则
queryWrapper.orderByAsc("commission_period");
// 排序字段
String sortField = commissionExpectedQueryRequest.getSortField();
String sortOrder = commissionExpectedQueryRequest.getSortOrder();
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("reconciliation_company"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("commission_name"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("commission_period"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
queryWrapper.orderBy(ObjectUtils.isNotEmpty(sortField) && sortField.equals("amount"), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
return queryWrapper;
}
......@@ -132,6 +145,7 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "预计来佣列表不能为空");
}
List<CommissionExpected> addList = new ArrayList<>();
List<CommissionExpected> updateList = new ArrayList<>();
for (CommissionExpectedAddDto addDto : addDtoList) {
CommissionExpected commissionExpected = new CommissionExpected();
......@@ -144,13 +158,21 @@ public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpecte
commissionExpected.setUpdateTime(new Date());
// 设置默认状态
commissionExpected.setStatus(CommissionExpectedStatusEnum.PENDING.getItemValue());
addList.add(commissionExpected);
} else {
commissionExpected.setUpdateTime(new Date());
updateList.add(commissionExpected);
}
updateList.add(commissionExpected);
}
// 新增预计来佣
if (CollectionUtils.isNotEmpty(addList)) {
this.saveBatch(addList);
}
if (CollectionUtils.isNotEmpty(updateList)) {
this.updateBatchById(updateList);
}
// 新增或更新预计来佣
return this.saveOrUpdateBatch(updateList);
return true;
}
@Override
......
......@@ -98,12 +98,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
BeanUtils.copyProperties(commissionUpdateRequest, commission, "id", "commissionBizId");
// 查询预计来佣
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("commission_biz_id", commissionBizId);
queryWrapper.eq("commission_name", commission.getCommissionName());
queryWrapper.eq("commission_period", commission.getCommissionPeriod());
queryWrapper.eq("commission_currency", commission.getCurrency());
CommissionExpected commissionExpected = commissionExpectedService.getOne(queryWrapper);
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
......@@ -119,11 +114,26 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return this.updateById(commission);
}
private CommissionExpected queryByCommission(Commission commission) {
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_no", commission.getPolicyNo());
queryWrapper.eq("commission_name", commission.getCommissionName());
queryWrapper.eq("commission_period", commission.getCommissionPeriod());
queryWrapper.eq("currency", commission.getCurrency());
return commissionExpectedService.getOne(queryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) {
List<String> commissionBizIdList = generateFortuneRequest.getCommissionBizIdList();
List<Commission> commissionList = this.list(new QueryWrapper<Commission>().in("commission_biz_id", commissionBizIdList));
// 校验来佣记录状态
for (Commission commission : commissionList) {
if (StringUtils.equals(commission.getStatus(), CommissionStatusEnum.WAIT.getItemValue())) {
throw new BusinessException(ResultCode.FAIL.getCode(), "来佣记录为未比对,不能生成出帐");
}
}
// 获取所有保单号
Set<String> policyNoSet = commissionList.stream().map(Commission::getPolicyNo).collect(Collectors.toSet());
......@@ -206,12 +216,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 设置默认状态
commission.setStatus(CommissionStatusEnum.WAIT.getItemValue());
// 查询预计来佣
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("commission_biz_id", commissionBizId);
queryWrapper.eq("commission_name", commissionAddRequest.getCommissionName());
queryWrapper.eq("commission_period", commissionAddRequest.getCommissionPeriod());
queryWrapper.eq("commission_currency", commissionAddRequest.getCurrency());
CommissionExpected commissionExpected = commissionExpectedService.getOne(queryWrapper);
CommissionExpected commissionExpected = queryByCommission(commission);
if (commissionExpected != null) {
// 对比预计来佣
compareWithExpected(commission, commissionExpected);
......
......@@ -134,6 +134,17 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
List<String> fortuneBizIdList = fortuneDownloadRequest.getFortuneBizIdList();
if (CollUtil.isNotEmpty(fortuneBizIdList)) {
List<Fortune> fortuneList = this.list(new QueryWrapper<Fortune>().in("fortune_biz_id", fortuneBizIdList));
// 校验发佣记录状态
StringBuilder validateMsg = new StringBuilder();
for (Fortune fortune : fortuneList) {
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.WAIT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("为待出账,不能生成出账记录; ");
}
}
if (StringUtils.isNotBlank(validateMsg.toString())) {
throw new BusinessException(ResultCode.FAIL.getCode(), validateMsg.toString());
}
if (CollUtil.isNotEmpty(fortuneList)) {
// 按人和币种分组
Map<String, List<Fortune>> fortuneMap = fortuneList.stream().collect(Collectors.groupingBy(fortune -> fortune.getBroker() + "_" + fortune.getCurrency()));
......
......@@ -457,21 +457,6 @@ public class PolicyFollowServiceImpl extends ServiceImpl<PolicyFollowMapper, Pol
if (CollUtil.isEmpty(policyFollowList)) {
return policyFollowDetailVOPage;
}
// 处理 nextStatusList 字段
policyFollowList.forEach(policyFollow -> {
Object nextStatusList = policyFollow.getNextStatusList();
if (nextStatusList != null && !nextStatusList.toString().isEmpty()) {
String[] statusArr = nextStatusList.toString().split(",");
List<Map<String, String>> statusMapList = new ArrayList<>();
for (String status : statusArr) {
Map<String, String> map = new HashMap<>();
map.put("itemLabel", PolicyFollowStatusEnum.getEnumByValue(status).getItemLabel());
map.put("itemValue", status);
statusMapList.add(map);
}
policyFollow.setNextStatusList(statusMapList);
}
});
// 对象列表 => 封装对象列表
List<PolicyFollowDetailVO> policyFollowDetailVOList = policyFollowList.stream().map(PolicyFollowDetailVO::objToVo).collect(Collectors.toList());
......
package com.yd.csf.service.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -9,8 +10,7 @@ import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* 新单跟进 DetailVO
......@@ -57,7 +57,7 @@ public class PolicyFollowDetailVO implements Serializable {
*/
private String customerName;
/**
/**
* 递交日期
*/
private Date submitDate;
......@@ -127,7 +127,7 @@ public class PolicyFollowDetailVO implements Serializable {
*/
private String paymentNumber;
/**
/**
* 产品业务id
*/
private String productBizId;
......@@ -167,7 +167,7 @@ public class PolicyFollowDetailVO implements Serializable {
*/
private String status;
/**
/**
* 下一步跟进状态列表
*/
private Object nextStatusList;
......@@ -276,6 +276,19 @@ public class PolicyFollowDetailVO implements Serializable {
PolicyFollowDetailVO.setPolicyBizId(policyFollow.getPolicyBizId());
// 转换PolicyFollow
BeanUtils.copyProperties(policyFollow, PolicyFollowDetailVO);
// 处理 nextStatusList 字段
Object nextStatusList = policyFollow.getNextStatusList();
if (nextStatusList != null && !nextStatusList.toString().isEmpty()) {
String[] statusArr = nextStatusList.toString().split(",");
List<Map<String, String>> statusMapList = new ArrayList<>();
for (String status : statusArr) {
Map<String, String> map = new HashMap<>();
map.put("itemLabel", PolicyFollowStatusEnum.getEnumByValue(status).getItemLabel());
map.put("itemValue", status);
statusMapList.add(map);
}
PolicyFollowDetailVO.setNextStatusList(statusMapList);
}
return PolicyFollowDetailVO;
}
......
......@@ -3,6 +3,7 @@ package com.yd.csf.service.vo;
import com.yd.csf.service.dto.PolicyFollowUpdateDto;
import com.yd.csf.service.dto.PolicyMailing;
import com.yd.csf.service.dto.VerifyPolicyInfo;
import com.yd.csf.service.enums.PolicyFollowStatusEnum;
import com.yd.csf.service.model.PolicyBroker;
import com.yd.csf.service.model.PolicyFollow;
import io.swagger.v3.oas.annotations.media.Schema;
......@@ -10,12 +11,10 @@ import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.*;
/**
* 新单跟进视图
*
*/
@Data
public class PolicyFollowVO implements Serializable {
......@@ -28,7 +27,7 @@ public class PolicyFollowVO implements Serializable {
@Schema(description = "新单跟进唯一业务ID")
private String policyBizId;
/**
/**
* 下一步跟进状态列表
*/
@Schema(description = "下一步跟进状态列表, 下拉框")
......@@ -82,8 +81,18 @@ public class PolicyFollowVO implements Serializable {
BeanUtils.copyProperties(policyFollow, policyFollowUpdateDto);
policyFollowVO.setPolicyFollowUpdateDto(policyFollowUpdateDto);
if (policyFollow.getNextStatusList() != null) {
policyFollowVO.setNextStatusList(policyFollow.getNextStatusList());
// 处理 nextStatusList 字段
Object nextStatusList = policyFollow.getNextStatusList();
if (nextStatusList != null && !nextStatusList.toString().isEmpty()) {
String[] statusArr = nextStatusList.toString().split(",");
List<Map<String, String>> statusMapList = new ArrayList<>();
for (String status : statusArr) {
Map<String, String> map = new HashMap<>();
map.put("itemLabel", PolicyFollowStatusEnum.getEnumByValue(status).getItemLabel());
map.put("itemValue", status);
statusMapList.add(map);
}
policyFollowVO.setNextStatusList(statusMapList);
}
VerifyPolicyInfo verifyPolicyInfo = new VerifyPolicyInfo();
......
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