Commit 49324567 by jianan

来佣接口7

parent ec378a2e
...@@ -9,12 +9,12 @@ import com.yd.common.exception.BusinessException; ...@@ -9,12 +9,12 @@ import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
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.FortuneDownloadRequest; import com.yd.csf.service.dto.*;
import com.yd.csf.service.dto.FortuneQueryRequest;
import com.yd.csf.service.dto.FortuneStatusUpdateRequest;
import com.yd.csf.service.dto.FortuneUpdateRequest;
import com.yd.csf.service.model.Fortune; import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService; import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.vo.FortuneAccountVO;
import com.yd.csf.service.vo.FortuneVO; 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;
...@@ -48,6 +48,9 @@ public class ApiFortuneController { ...@@ -48,6 +48,9 @@ public class ApiFortuneController {
@Resource @Resource
private FortuneService fortuneService; private FortuneService fortuneService;
@Resource
private FortuneAccountService fortuneAccountService;
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -121,6 +124,27 @@ public class ApiFortuneController { ...@@ -121,6 +124,27 @@ public class ApiFortuneController {
} }
/** /**
* 分页获取出账列表
*
* @param fortuneAccountQueryRequest
* @param request
* @return
*/
@PostMapping("/list/page/fortuneAccount")
@Operation(summary = "分页获取出账列表")
public Result<Page<FortuneAccountVO>> listAccountByPage(@RequestBody FortuneAccountQueryRequest fortuneAccountQueryRequest,
HttpServletRequest request) {
long current = fortuneAccountQueryRequest.getPageNo();
long size = fortuneAccountQueryRequest.getPageSize();
// 查询数据库
Page<FortuneAccount> fortunePage = fortuneAccountService.page(new Page<>(current, size),
fortuneAccountService.getQueryWrapper(fortuneAccountQueryRequest));
// 获取封装类
return Result.success(fortuneAccountService.getFortuneAccountVOPage(fortunePage));
}
/**
* 删除fna * 删除fna
* *
* @param deleteRequest * @param deleteRequest
......
...@@ -36,11 +36,18 @@ public class CommissionQueryRequest extends PageDto implements Serializable { ...@@ -36,11 +36,18 @@ public class CommissionQueryRequest extends PageDto implements Serializable {
private String reconciliationCompany; private String reconciliationCompany;
/** /**
* 来佣日期 * 来佣日期开始
*/ */
@Schema(description = "来佣日期", example = "2023-01-01",format = "yyyy-MM-dd") @Schema(description = "来佣日期开始", example = "2023-01-01",format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate; private Date commissionDateStart;
/**
* 来佣日期结束
*/
@Schema(description = "来佣日期结束", example = "2023-01-01",format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDateEnd;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
package com.yd.csf.service.dto;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
@Data
public class FortuneAccountQueryRequest extends PageDto {
@Schema(description = "转介人")
private String broker;
@Schema(description = "出账日期开始", example = "2023-01-01", type = "string", format = "date")
private Date accountDateStart;
@Schema(description = "出账日期结束", example = "2023-01-01", type = "string", format = "date")
private Date accountDateEnd;
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 出账记录表
* @TableName fortune_account
*/
@TableName(value ="fortune_account")
@Data
public class FortuneAccount implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 出账记录业务id
*/
private String fortuneAccountBizId;
/**
* 转介人
*/
private String broker;
/**
* 出账日期
*/
private Date fortuneAccountDate;
/**
* 出账信息
*/
private String content;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
...@@ -22,6 +22,7 @@ import com.yd.csf.service.service.FortuneService; ...@@ -22,6 +22,7 @@ import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.service.PolicyBrokerService; import com.yd.csf.service.service.PolicyBrokerService;
import com.yd.csf.service.service.PolicyService; import com.yd.csf.service.service.PolicyService;
import com.yd.csf.service.vo.CommissionVO; import com.yd.csf.service.vo.CommissionVO;
import com.yd.csf.service.vo.FnaVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -59,12 +60,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -59,12 +60,16 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
String status = commissionQueryRequest.getStatus(); String status = commissionQueryRequest.getStatus();
String policyNo = commissionQueryRequest.getPolicyNo(); String policyNo = commissionQueryRequest.getPolicyNo();
String reconciliationCompany = commissionQueryRequest.getReconciliationCompany(); String reconciliationCompany = commissionQueryRequest.getReconciliationCompany();
Date commissionDate = commissionQueryRequest.getCommissionDate(); Date commissionDateStart = commissionQueryRequest.getCommissionDateStart();
Date commissionDateEnd = commissionQueryRequest.getCommissionDateEnd();
queryWrapper.eq(StringUtils.isNotBlank(status), "status", status); queryWrapper.eq(StringUtils.isNotBlank(status), "status", status);
queryWrapper.like(StringUtils.isNotBlank(policyNo), "policy_no", policyNo); queryWrapper.like(StringUtils.isNotBlank(policyNo), "policy_no", policyNo);
queryWrapper.like(StringUtils.isNotBlank(reconciliationCompany), "reconciliation_company", reconciliationCompany); queryWrapper.like(StringUtils.isNotBlank(reconciliationCompany), "reconciliation_company", reconciliationCompany);
queryWrapper.eq(commissionDate != null, "commission_date", commissionDate);
if (commissionDateStart != null && commissionDateEnd != null) {
queryWrapper.between("commission_date", commissionDateStart, commissionDateEnd);
}
queryWrapper.orderByDesc("id"); queryWrapper.orderByDesc("id");
return queryWrapper; return queryWrapper;
...@@ -73,16 +78,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -73,16 +78,12 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override @Override
public Page<CommissionVO> getCommissionVOPage(Page<Commission> commissionPage) { public Page<CommissionVO> getCommissionVOPage(Page<Commission> commissionPage) {
List<Commission> commissionList = commissionPage.getRecords(); List<Commission> commissionList = commissionPage.getRecords();
Page<CommissionVO> commissionVOPage = new Page<>(commissionPage.getCurrent(), commissionPage.getSize()); Page<CommissionVO> commissionVOPage = new Page<>(commissionPage.getCurrent(), commissionPage.getSize(), commissionPage.getTotal());
if (CollUtil.isEmpty(commissionList)) { if (CollUtil.isEmpty(commissionList)) {
return commissionVOPage; return commissionVOPage;
} }
List<CommissionVO> commissionVOList = commissionList.stream().map(commission -> { List<CommissionVO> commissionVOList = commissionList.stream().map(CommissionVO::objToVo).collect(Collectors.toList());
CommissionVO commissionVO = new CommissionVO();
BeanUtils.copyProperties(commission, commissionVO);
return commissionVO;
}).collect(Collectors.toList());
commissionVOPage.setRecords(commissionVOList); commissionVOPage.setRecords(commissionVOList);
return commissionVOPage; return commissionVOPage;
......
...@@ -12,6 +12,7 @@ import com.yd.common.enums.ResultCode; ...@@ -12,6 +12,7 @@ import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.csf.service.dto.*; import com.yd.csf.service.dto.*;
import com.yd.csf.service.model.Fortune; import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.service.FortuneAccountService;
import com.yd.csf.service.service.FortuneService; import com.yd.csf.service.service.FortuneService;
import com.yd.csf.service.dao.FortuneMapper; import com.yd.csf.service.dao.FortuneMapper;
import com.yd.csf.service.vo.FortuneVO; import com.yd.csf.service.vo.FortuneVO;
...@@ -20,6 +21,7 @@ import org.springframework.beans.BeanUtils; ...@@ -20,6 +21,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
...@@ -38,6 +40,9 @@ import java.util.stream.Collectors; ...@@ -38,6 +40,9 @@ import java.util.stream.Collectors;
public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
implements FortuneService { implements FortuneService {
@Resource
private FortuneAccountService fortuneAccountService;
@Override @Override
public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) { public Wrapper<Fortune> getQueryWrapper(FortuneQueryRequest fortuneQueryRequest) {
QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>(); QueryWrapper<Fortune> queryWrapper = new QueryWrapper<>();
...@@ -191,6 +196,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -191,6 +196,10 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
} }
dataList.add(row); dataList.add(row);
} }
// 写入数据库
fortuneAccountService.saveFortuneAccount(accountExportDTOList);
// 使用try-with-resources确保流正确关闭 // 使用try-with-resources确保流正确关闭
try (ServletOutputStream outputStream = response.getOutputStream()) { try (ServletOutputStream outputStream = response.getOutputStream()) {
// 写入 Excel // 写入 Excel
......
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.Commission;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -12,82 +16,115 @@ public class CommissionVO implements Serializable { ...@@ -12,82 +16,115 @@ public class CommissionVO implements Serializable {
/** /**
* 保单来佣业务id * 保单来佣业务id
*/ */
@Schema(description = "保单来佣业务id")
private String commissionBizId; private String commissionBizId;
/** /**
* 保单号 * 保单号
*/ */
@Schema(description = "保单号")
private String policyNo; private String policyNo;
/** /**
* 对账公司 * 对账公司
*/ */
@Schema(description = "对账公司")
private String reconciliationCompany; private String reconciliationCompany;
/** /**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer commissionPeriod; private Integer commissionPeriod;
/** /**
* 总来佣期数 * 总来佣期数
*/ */
@Schema(description = "总来佣期数")
private Integer totalPeriod; private Integer totalPeriod;
/** /**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等) * 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/ */
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionName; private String commissionName;
/** /**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等) * 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/ */
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType; private String commissionType;
/** /**
* 来佣金额 * 来佣金额
*/ */
@Schema(description = "来佣金额")
private BigDecimal amount; private BigDecimal amount;
/** /**
* 来佣币种 * 来佣币种
*/ */
@Schema(description = "来佣币种")
private String currency; private String currency;
/** /**
* 来佣日期 * 来佣日期
*/ */
@Schema(description = "来佣日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate; private Date commissionDate;
/** /**
* 来佣状态 0=未比对 1=已比对 * 来佣状态 0=未比对 1=已比对
*/ */
@Schema(description = "来佣状态 0=未比对 1=已比对")
private String status; private String status;
/** /**
* 通用备注 * 通用备注
*/ */
@Schema(description = "备注")
private String remark; private String remark;
/** /**
* 创建人ID * 创建人ID
*/ */
@Schema(description = "创建人ID")
private String creatorId; private String creatorId;
/** /**
* 更新人ID * 更新人ID
*/ */
@Schema(description = "更新人ID")
private String updaterId; private String updaterId;
/** /**
* 创建时间 * 创建时间
*/ */
@Schema(description = "创建时间")
private Date createTime; private Date createTime;
/** /**
* 更新时间 * 更新时间
*/ */
@Schema(description = "更新时间")
private Date updateTime; private Date updateTime;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 对象转封装类
*
* @param commission
* @return
*/
public static CommissionVO objToVo(Commission commission) {
if (commission == null) {
return null;
}
CommissionVO commissionVO = new CommissionVO();
BeanUtils.copyProperties(commission, commissionVO);
return commissionVO;
}
} }
package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.Customer;
import com.yd.csf.service.model.FortuneAccount;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class FortuneAccountVO {
/**
* 出账记录业务id
*/
@Schema(description = "出账记录业务id")
private String fortuneAccountBizId;
/**
* 转介人
*/
@Schema(description = "转介人")
private String broker;
/**
* 出账日期
*/
@Schema(description = "出账日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date fortuneAccountDate;
/**
* 出账信息
*/
@Schema(description = "出账信息")
private List<Map<String, Object>> fortuneList;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 对象转封装类
*
* @param fortuneAccount
* @return
*/
public static FortuneAccountVO objToVo(FortuneAccount fortuneAccount) {
if (fortuneAccount == null) {
return null;
}
FortuneAccountVO fortuneAccountVO = new FortuneAccountVO();
BeanUtils.copyProperties(fortuneAccount, fortuneAccountVO);
return fortuneAccountVO;
}
}
package com.yd.csf.service.vo; package com.yd.csf.service.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.csf.service.model.Fortune;
import com.yd.csf.service.model.FortuneAccount;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -12,121 +17,134 @@ public class FortuneVO implements Serializable { ...@@ -12,121 +17,134 @@ public class FortuneVO implements Serializable {
/** /**
* 保单发佣业务id * 保单发佣业务id
*/ */
@Schema(description = "保单发佣业务id")
private String fortuneBizId; private String fortuneBizId;
/** /**
* 保单号 * 保单号
*/ */
@Schema(description = "保单号")
private String policyNo; private String policyNo;
/** /**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年) * 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/ */
@Schema(description = "发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)")
private Integer fortunePeriod; private Integer fortunePeriod;
/** /**
* 发佣总期数 * 发佣总期数
*/ */
@Schema(description = "发佣总期数")
private Integer fortuneTotalPeriod; private Integer fortuneTotalPeriod;
/** /**
* 转介人 * 转介人
*/ */
@Schema(description = "转介人")
private String broker; private String broker;
/** /**
* 转介人业务ID * 转介人业务ID
*/ */
@Schema(description = "转介人业务ID")
private String brokerBizId; private String brokerBizId;
/** /**
* 所属团队 * 所属团队
*/ */
@Schema(description = "所属团队")
private String team; private String team;
/** /**
* 所属团队业务ID * 所属团队业务ID
*/ */
@Schema(description = "所属团队业务ID")
private String teamBizId; private String teamBizId;
/** /**
* 个人职级佣金率 * 发佣名称
*/
private BigDecimal gradeCommissionRate;
/**
* 多个代理人财富分摊比例
*/
private BigDecimal shareRate;
/**
* 来佣名称
*/ */
@Schema(description = "发佣名称")
private String fortuneName; private String fortuneName;
/** /**
* 发佣类型 * 发佣类型
*/ */
@Schema(description = "发佣类型")
private String fortuneType; private String fortuneType;
/** /**
* 发佣金额 * 发佣金额
*/ */
@Schema(description = "发佣金额")
private BigDecimal amount; private BigDecimal amount;
/** /**
* 发佣币种 * 发佣币种
*/ */
@Schema(description = "发佣币种")
private String currency; private String currency;
/** /**
* 佣金发放状态 0=暂不可发 1=可发放 2=已发并关账 * 佣金发放状态 0=暂不可发 1=可发放 2=已发并关账
*/ */
@Schema(description = "佣金发放状态 0=暂不可发 1=可发放 2=已发并关账 字典值:csf_fortune_status")
private String status; private String status;
/** /**
* 发佣日期 * 发佣日期
*/ */
@Schema(description = "发佣日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date payoutDate; private Date payoutDate;
/** /**
* 是否含税 0=No, 1=Yes * 是否含税 0=No, 1=Yes
*/ */
@Schema(description = "是否含税 0=No, 1=Yes")
private Integer isTax; private Integer isTax;
/** /**
* 应缴税额 * 应缴税额
*/ */
@Schema(description = "应缴税额")
private BigDecimal taxAmount; private BigDecimal taxAmount;
/** /**
* 税后发佣 * 税后发佣
*/ */
@Schema(description = "税后发佣")
private BigDecimal netAmount; private BigDecimal netAmount;
/** /**
* 薪资单业务id * 薪资单业务id
*/ */
@Schema(description = "薪资单业务id")
private String salaryBizId; private String salaryBizId;
/** /**
* 基本法id * 基本法id
*/ */
@Schema(description = "基本法id")
private String baseRuleBizId; private String baseRuleBizId;
/** /**
* 计算规则id * 计算规则id
*/ */
@Schema(description = "计算规则id")
private String settlementBizId; private String settlementBizId;
/** /**
* 计算公式 * 计算公式
*/ */
@Schema(description = "计算公式")
private String calculationFormula; private String calculationFormula;
/** /**
* 通用备注 * 备注
*/ */
@Schema(description = "备注")
private String remark; private String remark;
/** /**
...@@ -155,4 +173,20 @@ public class FortuneVO implements Serializable { ...@@ -155,4 +173,20 @@ public class FortuneVO implements Serializable {
private Date updateTime; private Date updateTime;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 对象转封装类
*
* @param fortune
* @return
*/
public static FortuneVO objToVo(Fortune fortune) {
if (fortune == null) {
return null;
}
FortuneVO fortuneVO = new FortuneVO();
BeanUtils.copyProperties(fortune, fortuneVO);
return fortuneVO;
}
} }
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