Commit e446cb8e by jianan

来佣接口17

parent acb35b8d
......@@ -108,13 +108,13 @@ public class ApiCommissionController {
CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName);
if (expected != null) {
if (expected.getAmount().compareTo(commission.getAmount()) == 0) {
// 一致,来佣状态设置为 已比对
commission.setStatus(CommissionStatusEnum.COMPARED.getItemValue());
// 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣
expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
} else {
// 不一致,来佣状态设置为 部分来佣
commission.setStatus(CommissionStatusEnum.PARTIAL.getItemValue());
// 不一致,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue());
}
}
......
......@@ -4,9 +4,11 @@ import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.api.dto.FortuneImportDTO;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*;
......@@ -19,6 +21,7 @@ import com.yd.csf.service.vo.FortuneVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
......@@ -31,6 +34,8 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 保单发佣接口
......@@ -79,14 +84,48 @@ public class ApiFortuneController {
* 处理导入的数据
*/
private void processData(List<FortuneImportDTO> dataList, String loginUserId) {
List<Fortune> entities = new ArrayList<>();
List<Fortune> addList = new ArrayList<>();
List<Fortune> updateList = new ArrayList<>();
for (FortuneImportDTO data : dataList) {
// 数据验证
Fortune entity = FortuneImportDTO.convertToEntity(data, loginUserId);
entities.add(entity);
if (StringUtils.isBlank(entity.getFortuneBizId())) {
entity.setFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_FORTUNE.getCode()));
addList.add(entity);
} else {
updateList.add(entity);
}
}
// 批量保存
fortuneService.saveBatch(entities);
if (CollectionUtils.isNotEmpty(addList)) {
fortuneService.saveBatch(addList);
}
// 批量更新
if (CollectionUtils.isNotEmpty(updateList)) {
// 先根据bizId查询已存在的记录
List<String> updateBizIdList = updateList.stream().map(Fortune::getFortuneBizId).collect(Collectors.toList());
List<Fortune> existingList = fortuneService.lambdaQuery().in(Fortune::getFortuneBizId, updateBizIdList).list();
// 根据 bizId 映射到 entity
Map<String, Fortune> existingMap = existingList.stream().collect(Collectors.toMap(Fortune::getFortuneBizId, f -> f));
// 合并更新数据
for (Fortune updateEntity : updateList) {
Fortune existingEntity = existingMap.get(updateEntity.getFortuneBizId());
if (existingEntity != null) {
// 合并更新字段
existingEntity.setPolicyNo(updateEntity.getPolicyNo());
existingEntity.setFortunePeriod(updateEntity.getFortunePeriod());
existingEntity.setFortuneTotalPeriod(updateEntity.getFortuneTotalPeriod());
existingEntity.setFortuneName(updateEntity.getFortuneName());
existingEntity.setAmount(updateEntity.getAmount());
existingEntity.setCurrency(updateEntity.getCurrency());
existingEntity.setBroker(updateEntity.getBroker());
existingEntity.setTeam(updateEntity.getTeam());
existingEntity.setRemark(updateEntity.getRemark());
}
}
// 批量更新
fortuneService.updateBatchById(existingList);
}
}
......
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.csf.service.dto.CommissionExpectedQueryRequest;
import com.yd.csf.service.dto.PolicyQueryRequest;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.PolicyVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -27,6 +32,8 @@ public class ApiPolicyController {
@Resource
private PolicyService policyService;
@Resource
private CommissionExpectedService commissionExpectedService;
/**
......@@ -131,4 +138,28 @@ public class ApiPolicyController {
return Result.success(policyService.getPolicyVOPage(policyPage));
}
/**
* 分页获取预计来佣列表(VO)
*
* @param commissionExpectedQueryRequest
* @param request
* @return
*/
@PostMapping("/list/page/commission_expected")
@Operation(summary = "分页获取预计来佣列表")
public Result<Page<CommissionExpectedVO>> listCommissionExpectedByPage(@RequestBody CommissionExpectedQueryRequest commissionExpectedQueryRequest,
HttpServletRequest request) {
long current = commissionExpectedQueryRequest.getPageNo();
long size = commissionExpectedQueryRequest.getPageSize();
// 查询数据库
QueryWrapper<CommissionExpected> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("policy_no", commissionExpectedQueryRequest.getPolicyNo());
queryWrapper.orderByAsc("commission_period");
Page<CommissionExpected> commissionExpectedPage = commissionExpectedService.page(new Page<>(current, size),
queryWrapper);
// 获取封装类
return Result.success(commissionExpectedService.getCommissionExpectedVOPage(commissionExpectedPage));
}
}
......@@ -76,7 +76,7 @@ public class CommissionExcelDTO {
CommissionExpected entity = new CommissionExpected();
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
......
......@@ -14,6 +14,9 @@ import java.util.Date;
@Data
public class FortuneImportDTO {
@ExcelProperty("发佣数据业务Id")
private String fortuneBizId;
@ExcelProperty("保单号")
private String policyNo;
......@@ -48,7 +51,7 @@ public class FortuneImportDTO {
Fortune entity = new Fortune();
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_FORTUNE.getCode()));
entity.setFortuneBizId(data.getFortuneBizId());
entity.setFortunePeriod(data.getFortunePeriod());
entity.setFortuneTotalPeriod(data.getFortuneTotalPeriod());
entity.setFortuneName(data.getFortuneName());
......
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class CommissionExpectedQueryRequest extends PageDto {
/**
* 保单号
*/
@Schema(description = "保单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String policyNo;
}
......@@ -14,6 +14,12 @@ public class CommissionUpdateRequest {
@Schema(description = "保单来佣业务id", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionBizId;
/**
* 来佣比对状态
*/
@Schema(description = "来佣比对状态 1=比对成功 2=比对失败")
private String status;
/**
* 来佣金额
*/
......
......@@ -6,7 +6,7 @@ package com.yd.csf.service.enums;
public enum CommissionExpectedStatusEnum {
PENDING("待来佣","0"),
COMPARED("已比对","1"),
COMPARED("已来佣","1"),
PARTIAL("部分来佣","2"),
;
......
package com.yd.csf.service.enums;
/**
* 来佣状态枚举
* 来佣比对状态枚举
*/
public enum CommissionStatusEnum {
//来佣状态枚举
COMPARED("已比对","1"),
PARTIAL("部分来佣","2"),
//来佣比对状态枚举
COMPARE_SUCCESS("比对成功","1"),
COMPARE_FAIL("比对失败","2"),
;
//字典项标签(名称)
......
......@@ -26,9 +26,9 @@ public class CommissionExpected implements Serializable {
private Long id;
/**
* 保单来佣业务id
* 预计来佣业务id
*/
private String commissionBizId;
private String commissionExpectedBizId;
/**
* 保单号
......
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.model.CommissionExpected;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.PolicyVO;
/**
* @author Zhang Jianan
......@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface CommissionExpectedService extends IService<CommissionExpected> {
Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage);
}
package com.yd.csf.service.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy;
import com.yd.csf.service.service.CommissionExpectedService;
import com.yd.csf.service.dao.CommissionExpectedMapper;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.CommissionExpectedVO;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Zhang Jianan
* @description 针对表【commission_expected(预计来佣表)】的数据库操作Service实现
......@@ -15,6 +23,19 @@ import org.springframework.stereotype.Service;
public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpectedMapper, CommissionExpected>
implements CommissionExpectedService{
@Override
public Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage) {
List<CommissionExpected> CommissionExpectedList = commissionExpectedPage.getRecords();
Page<CommissionExpectedVO> CommissionExpectedVOPage = new Page<>(commissionExpectedPage.getCurrent(), commissionExpectedPage.getSize(), commissionExpectedPage.getTotal());
if (CollUtil.isEmpty(CommissionExpectedList)) {
return CommissionExpectedVOPage;
}
// 填充信息
List<CommissionExpectedVO> CommissionExpectedVOList = CommissionExpectedList.stream().map(CommissionExpectedVO::objToVo).collect(Collectors.toList());
CommissionExpectedVOPage.setRecords(CommissionExpectedVOList);
return CommissionExpectedVOPage;
}
}
......
......@@ -142,8 +142,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 4. 构建发佣记录
List<Fortune> newFortuneList = new ArrayList<>();
for (Commission commission : commissionList) {
String policyNo = commission.getPolicyNo();
for (Policy policy : policyList) {
String policyNo = policy.getPolicyNo();
List<PolicyBroker> policyBrokers = brokerMap.get(policyNo);
if (CollectionUtils.isNotEmpty(policyBrokers)) {
......
......@@ -61,7 +61,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
@Override
public Page<FortuneVO> getFortuneVOPage(Page<Fortune> fortunePage) {
List<Fortune> fortuneList = fortunePage.getRecords();
Page<FortuneVO> fortuneVOPage = new Page<>(fortunePage.getCurrent(), fortunePage.getSize());
Page<FortuneVO> fortuneVOPage = new Page<>(fortunePage.getCurrent(), fortunePage.getSize(), fortunePage.getTotal());
if (CollUtil.isEmpty(fortuneList)) {
return fortuneVOPage;
}
......
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.model.CommissionExpected;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionExpectedVO implements Serializable {
/**
* 预计来佣业务id
*/
@Schema(description = "预计来佣业务id")
private String commissionExpectedBizId;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@Schema(description = "佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer commissionPeriod;
/**
* 总来佣期数
*/
@Schema(description = "总来佣期数")
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName;
/**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
/**
* 来佣币种
*/
@Schema(description = "来佣币种")
private String currency;
/**
* 预计来佣日期
*/
@Schema(description = "预计来佣日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate;
/**
* 预计来佣状态 0=待来佣 1=已来佣 2=部分来佣
*/
@Schema(description = "预计来佣状态 0=待来佣 1=已来佣 2=部分来佣")
private String status;
/**
* 通用备注
*/
@Schema(description = "备注")
private String remark;
/**
* 创建人ID
*/
@Schema(description = "创建人ID")
private String creatorId;
/**
* 更新人ID
*/
@Schema(description = "更新人ID")
private String updaterId;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 更新时间
*/
@Schema(description = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
private static final long serialVersionUID = 1L;
/**
* 对象转封装类
*
* @param commissionExpected
* @return
*/
public static CommissionExpectedVO objToVo(CommissionExpected commissionExpected) {
if (commissionExpected == null) {
return null;
}
CommissionExpectedVO commissionVO = new CommissionExpectedVO();
BeanUtils.copyProperties(commissionExpected, commissionVO);
return commissionVO;
}
}
......@@ -6,7 +6,7 @@
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.CommissionExpected">
<id property="id" column="id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="commissionExpectedBizId" column="commission_expected_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="reconciliationCompany" column="reconciliation_company" />
<result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" />
......@@ -27,7 +27,7 @@
</resultMap>
<sql id="Base_Column_List">
id,commission_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
id,commission_expected_biz_id,policy_no,reconciliation_company,reconciliation_company_biz_id,commission_period,
total_period,commission_name,commission_type,amount,currency,
commission_date,status,remark,is_deleted,creator_id,
updater_id,create_time,update_time
......
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