Commit e446cb8e by jianan

来佣接口17

parent acb35b8d
...@@ -108,13 +108,13 @@ public class ApiCommissionController { ...@@ -108,13 +108,13 @@ public class ApiCommissionController {
CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName); CommissionExpected expected = getCommissionExpected(expectedList, policyNo, commissionPeriod, commissionName);
if (expected != null) { if (expected != null) {
if (expected.getAmount().compareTo(commission.getAmount()) == 0) { if (expected.getAmount().compareTo(commission.getAmount()) == 0) {
// 一致,来佣状态设置为 已比对 // 一致,来佣状态设置为 比对成功
commission.setStatus(CommissionStatusEnum.COMPARED.getItemValue()); commission.setStatus(CommissionStatusEnum.COMPARE_SUCCESS.getItemValue());
// 预计来佣的状态设置为 已来佣 // 预计来佣的状态设置为 已来佣
expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue()); expected.setStatus(CommissionExpectedStatusEnum.COMPARED.getItemValue());
} else { } else {
// 不一致,来佣状态设置为 部分来佣 // 不一致,来佣状态设置为 比对失败
commission.setStatus(CommissionStatusEnum.PARTIAL.getItemValue()); commission.setStatus(CommissionStatusEnum.COMPARE_FAIL.getItemValue());
expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue()); expected.setStatus(CommissionExpectedStatusEnum.PARTIAL.getItemValue());
} }
} }
......
...@@ -4,9 +4,11 @@ import com.alibaba.excel.EasyExcel; ...@@ -4,9 +4,11 @@ import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto; import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode; import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.dto.FortuneImportDTO; import com.yd.csf.api.dto.FortuneImportDTO;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
...@@ -19,6 +21,7 @@ import com.yd.csf.service.vo.FortuneVO; ...@@ -19,6 +21,7 @@ import com.yd.csf.service.vo.FortuneVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -31,6 +34,8 @@ import javax.servlet.http.HttpServletResponse; ...@@ -31,6 +34,8 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 保单发佣接口 * 保单发佣接口
...@@ -79,14 +84,48 @@ public class ApiFortuneController { ...@@ -79,14 +84,48 @@ public class ApiFortuneController {
* 处理导入的数据 * 处理导入的数据
*/ */
private void processData(List<FortuneImportDTO> dataList, String loginUserId) { 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) { for (FortuneImportDTO data : dataList) {
// 数据验证 // 数据验证
Fortune entity = FortuneImportDTO.convertToEntity(data, loginUserId); 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; package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result; 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.dto.PolicyQueryRequest;
import com.yd.csf.service.model.CommissionExpected;
import com.yd.csf.service.model.Policy; 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.service.PolicyService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.PolicyVO; import com.yd.csf.service.vo.PolicyVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
...@@ -27,6 +32,8 @@ public class ApiPolicyController { ...@@ -27,6 +32,8 @@ public class ApiPolicyController {
@Resource @Resource
private PolicyService policyService; private PolicyService policyService;
@Resource
private CommissionExpectedService commissionExpectedService;
/** /**
...@@ -131,4 +138,28 @@ public class ApiPolicyController { ...@@ -131,4 +138,28 @@ public class ApiPolicyController {
return Result.success(policyService.getPolicyVOPage(policyPage)); 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 { ...@@ -76,7 +76,7 @@ public class CommissionExcelDTO {
CommissionExpected entity = new CommissionExpected(); CommissionExpected entity = new CommissionExpected();
// 字段映射 // 字段映射
entity.setPolicyNo(data.getPolicyNo()); entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16("commission_expected")); entity.setCommissionExpectedBizId(RandomStringGenerator.generateBizId16("commission_expected"));
entity.setReconciliationCompany(data.getReconciliationCompany()); entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setCommissionPeriod(data.getCommissionPeriod()); entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod()); entity.setTotalPeriod(data.getTotalPeriod());
......
...@@ -14,6 +14,9 @@ import java.util.Date; ...@@ -14,6 +14,9 @@ import java.util.Date;
@Data @Data
public class FortuneImportDTO { public class FortuneImportDTO {
@ExcelProperty("发佣数据业务Id")
private String fortuneBizId;
@ExcelProperty("保单号") @ExcelProperty("保单号")
private String policyNo; private String policyNo;
...@@ -48,7 +51,7 @@ public class FortuneImportDTO { ...@@ -48,7 +51,7 @@ public class FortuneImportDTO {
Fortune entity = new Fortune(); Fortune entity = new Fortune();
// 字段映射 // 字段映射
entity.setPolicyNo(data.getPolicyNo()); entity.setPolicyNo(data.getPolicyNo());
entity.setFortuneBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_FORTUNE.getCode())); entity.setFortuneBizId(data.getFortuneBizId());
entity.setFortunePeriod(data.getFortunePeriod()); entity.setFortunePeriod(data.getFortunePeriod());
entity.setFortuneTotalPeriod(data.getFortuneTotalPeriod()); entity.setFortuneTotalPeriod(data.getFortuneTotalPeriod());
entity.setFortuneName(data.getFortuneName()); 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;
}
...@@ -15,6 +15,12 @@ public class CommissionUpdateRequest { ...@@ -15,6 +15,12 @@ public class CommissionUpdateRequest {
private String commissionBizId; private String commissionBizId;
/** /**
* 来佣比对状态
*/
@Schema(description = "来佣比对状态 1=比对成功 2=比对失败")
private String status;
/**
* 来佣金额 * 来佣金额
*/ */
@Schema(description = "来佣金额") @Schema(description = "来佣金额")
......
...@@ -6,7 +6,7 @@ package com.yd.csf.service.enums; ...@@ -6,7 +6,7 @@ package com.yd.csf.service.enums;
public enum CommissionExpectedStatusEnum { public enum CommissionExpectedStatusEnum {
PENDING("待来佣","0"), PENDING("待来佣","0"),
COMPARED("已比对","1"), COMPARED("已来佣","1"),
PARTIAL("部分来佣","2"), PARTIAL("部分来佣","2"),
; ;
......
package com.yd.csf.service.enums; package com.yd.csf.service.enums;
/** /**
* 来佣状态枚举 * 来佣比对状态枚举
*/ */
public enum CommissionStatusEnum { public enum CommissionStatusEnum {
//来佣状态枚举 //来佣比对状态枚举
COMPARED("已比对","1"), COMPARE_SUCCESS("比对成功","1"),
PARTIAL("部分来佣","2"), COMPARE_FAIL("比对失败","2"),
; ;
//字典项标签(名称) //字典项标签(名称)
......
...@@ -26,9 +26,9 @@ public class CommissionExpected implements Serializable { ...@@ -26,9 +26,9 @@ public class CommissionExpected implements Serializable {
private Long id; private Long id;
/** /**
* 保单来佣业务id * 预计来佣业务id
*/ */
private String commissionBizId; private String commissionExpectedBizId;
/** /**
* 保单号 * 保单号
......
package com.yd.csf.service.service; package com.yd.csf.service.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.service.model.CommissionExpected; import com.yd.csf.service.model.CommissionExpected;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.CommissionExpectedVO;
import com.yd.csf.service.vo.PolicyVO;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
...@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface CommissionExpectedService extends IService<CommissionExpected> { public interface CommissionExpectedService extends IService<CommissionExpected> {
Page<CommissionExpectedVO> getCommissionExpectedVOPage(Page<CommissionExpected> commissionExpectedPage);
} }
package com.yd.csf.service.service.impl; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yd.csf.service.model.CommissionExpected; 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.CommissionExpectedService;
import com.yd.csf.service.dao.CommissionExpectedMapper; 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 org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author Zhang Jianan * @author Zhang Jianan
* @description 针对表【commission_expected(预计来佣表)】的数据库操作Service实现 * @description 针对表【commission_expected(预计来佣表)】的数据库操作Service实现
...@@ -15,6 +23,19 @@ import org.springframework.stereotype.Service; ...@@ -15,6 +23,19 @@ import org.springframework.stereotype.Service;
public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpectedMapper, CommissionExpected> public class CommissionExpectedServiceImpl extends ServiceImpl<CommissionExpectedMapper, CommissionExpected>
implements CommissionExpectedService{ 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 ...@@ -142,8 +142,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
// 4. 构建发佣记录 // 4. 构建发佣记录
List<Fortune> newFortuneList = new ArrayList<>(); List<Fortune> newFortuneList = new ArrayList<>();
for (Commission commission : commissionList) { for (Policy policy : policyList) {
String policyNo = commission.getPolicyNo(); String policyNo = policy.getPolicyNo();
List<PolicyBroker> policyBrokers = brokerMap.get(policyNo); List<PolicyBroker> policyBrokers = brokerMap.get(policyNo);
if (CollectionUtils.isNotEmpty(policyBrokers)) { if (CollectionUtils.isNotEmpty(policyBrokers)) {
......
...@@ -61,7 +61,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -61,7 +61,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
@Override @Override
public Page<FortuneVO> getFortuneVOPage(Page<Fortune> fortunePage) { public Page<FortuneVO> getFortuneVOPage(Page<Fortune> fortunePage) {
List<Fortune> fortuneList = fortunePage.getRecords(); 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)) { if (CollUtil.isEmpty(fortuneList)) {
return fortuneVOPage; 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 @@ ...@@ -6,7 +6,7 @@
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.CommissionExpected"> <resultMap id="BaseResultMap" type="com.yd.csf.service.model.CommissionExpected">
<id property="id" column="id" /> <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="policyNo" column="policy_no" />
<result property="reconciliationCompany" column="reconciliation_company" /> <result property="reconciliationCompany" column="reconciliation_company" />
<result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" /> <result property="reconciliationCompanyBizId" column="reconciliation_company_biz_id" />
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <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, total_period,commission_name,commission_type,amount,currency,
commission_date,status,remark,is_deleted,creator_id, commission_date,status,remark,is_deleted,creator_id,
updater_id,create_time,update_time 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