Commit 6375ca6e by jianan

来佣接口1

parent de378866
package com.yd.csf.api.controller;
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.result.Result;
import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.service.common.ErrorCode;
import com.yd.csf.service.dto.CommissionQueryRequest;
import com.yd.csf.service.dto.CommissionUpdateRequest;
import com.yd.csf.service.model.Commission;
import com.yd.csf.service.service.CommissionService;
import com.yd.csf.service.vo.CommissionVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 保单来佣接口
*
* @author jianan
* @since 2025-09-15
*/
@RestController
@RequestMapping("/commission")
@Tag(name = "保单来佣接口")
public class ApiCommissionController {
private static final Logger log = LoggerFactory.getLogger(ApiCommissionController.class);
@Resource
private CommissionService commissionService;
@PostMapping("/upload/excel")
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
try {
List<CommissionExcelDTO> dataList = EasyExcel.read(file.getInputStream())
.head(CommissionExcelDTO.class)
.sheet("来佣")
.doReadSync();
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 数据验证和处理
processData(dataList, loginUserId);
} catch (IOException e) {
throw new RuntimeException("Excel读取失败", e);
}
return Result.success(true);
}
/**
* 处理导入的数据
*/
private void processData(List<CommissionExcelDTO> dataList, String loginUserId) {
List<Commission> entities = new ArrayList<>();
for (CommissionExcelDTO data : dataList) {
// 数据验证
Commission entity = CommissionExcelDTO.convertToEntity(data, loginUserId);
entities.add(entity);
}
// 批量保存
commissionService.saveBatch(entities);
}
/**
* 创建保单来佣
*
* @param customerAddRequest
* @param request
* @return
*/
// @Operation(summary = "创建保单来佣")
// @PostMapping("/add")
// @Transactional(rollbackFor = Exception.class)
// public Result<Map<String, Object>> addCustomer(@RequestBody CustomerAddRequest customerAddRequest, HttpServletRequest request) {
// if (customerAddRequest == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// return Result.success(policyFollowService.addCustomer(customerAddRequest));
// }
/**
* 删除fna
*
* @param deleteRequest
* @param request
* @return
*/
// @PostMapping("/delete")
// public Result<Boolean> deleteFna(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) {
// if (deleteRequest == null || deleteRequest.getId() <= 0) {
// throw new BusinessException(ErrorCode.PARAMS_ERROR);
// }
// User user = userService.getLoginUser(request);
// long id = deleteRequest.getId();
// // 判断是否存在
// Customer oldFna = policyFollowService.getById(id);
// ThrowUtils.throwIf(oldFna == null, ErrorCode.NOT_FOUND_ERROR);
// // 仅本人或管理员可删除
// if (!oldFna.getUserId().equals(user.getId()) && !userService.isAdmin(request)) {
// throw new BusinessException(ErrorCode.NO_AUTH_ERROR);
// }
// // 操作数据库
// boolean result = policyFollowService.removeById(id);
// ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
// return Result.success(true);
// }
/**
* 更新保单来佣
*
* @param commissionUpdateRequest
* @return
*/
@PostMapping("/update")
@Operation(summary = "更新保单来佣信息")
public Result<Boolean> updateCommission(@RequestBody CommissionUpdateRequest commissionUpdateRequest) {
if (commissionUpdateRequest == null || commissionUpdateRequest.getCommissionBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
return Result.success(commissionService.updateCommission(commissionUpdateRequest));
}
/**
* 根据 commissionBizId 获取保单来佣(封装类)
*
* @param commissionBizId
* @return
*/
// @GetMapping("/get/vo")
// @Operation(summary = "根据 policyBizId 获取保单来佣详情")
// public Result<PolicyFollowVO> getPolicyFollowByPolicyBizId(@RequestParam("commissionBizId") String commissionBizId, HttpServletRequest request) {
// if (commissionBizId == null) {
// return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
// }
// // 查询数据库
// PolicyFollow policyFollow = policyFollowService.getByPolicyBizId(policyBizId);
// if (policyFollow == null) {
// return Result.fail(ErrorCode.NOT_FOUND_ERROR.getCode(), ErrorCode.NOT_FOUND_ERROR.getMessage());
// }
//
// // 获取封装类
// return Result.success(policyFollowService.getPolicyFollowVO(policyFollow));
// }
/**
* 分页获取保单来佣列表(仅管理员可用)
*
* @param fnaQueryRequest
* @return
*/
// @PostMapping("/list/page")
// public Result<Page<Customer>> listFnaByPage(@RequestBody FnaQueryRequest fnaQueryRequest) {
// long current = fnaQueryRequest.getPageNo();
// long size = fnaQueryRequest.getPageSize();
// // 查询数据库
// Page<Customer> fnaPage = policyFollowService.page(new Page<>(current, size),
// policyFollowService.getQueryWrapper(fnaQueryRequest));
// return Result.success(fnaPage);
// }
/**
* 分页获取保单来佣列表(VO)
*
* @param commissionQueryRequest
* @param request
* @return
*/
@PostMapping("/list/page/vo")
@Operation(summary = "分页获取保单来佣列表")
public Result<Page<CommissionVO>> listPolicyFollowByPage(@RequestBody CommissionQueryRequest commissionQueryRequest,
HttpServletRequest request) {
long current = commissionQueryRequest.getPageNo();
long size = commissionQueryRequest.getPageSize();
// 查询数据库
Page<Commission> commissionPage = commissionService.page(new Page<>(current, size),
commissionService.getQueryWrapper(commissionQueryRequest));
// 获取封装类
return Result.success(commissionService.getCommissionVOPage(commissionPage));
}
}
...@@ -2,6 +2,7 @@ package com.yd.csf.api.controller; ...@@ -2,6 +2,7 @@ package com.yd.csf.api.controller;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator; import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.api.dto.PolicyExcelDTO; import com.yd.csf.api.dto.PolicyExcelDTO;
...@@ -90,7 +91,7 @@ public class ApiPolicyFollowController { ...@@ -90,7 +91,7 @@ public class ApiPolicyFollowController {
for (PolicyExcelDTO policyExcelDTO : list) { for (PolicyExcelDTO policyExcelDTO : list) {
String policyNo = policyExcelDTO.getPolicyNo(); String policyNo = policyExcelDTO.getPolicyNo();
// 生成新单编号 // 生成新单编号
String policyBizId = RandomStringGenerator.generateBizId16("policy"); String policyBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_POLICY.getCode());
// 转换为PolicyFollow对象 // 转换为PolicyFollow对象
PolicyFollow policyFollow = new PolicyFollow(); PolicyFollow policyFollow = new PolicyFollow();
BeanUtils.copyProperties(policyExcelDTO, policyFollow); BeanUtils.copyProperties(policyExcelDTO, policyFollow);
......
package com.yd.csf.api.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.csf.service.enums.CommissionStatusEnum;
import com.yd.csf.service.model.Commission;
import lombok.Data;
import javax.crypto.SecretKey;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionExcelDTO {
@ExcelProperty("保单号")
private String policyNo;
@ExcelProperty("对账公司")
private String reconciliationCompany;
@ExcelProperty("当前来佣期数")
private Integer commissionPeriod;
@ExcelProperty("来佣总期数")
private Integer totalPeriod;
@ExcelProperty("来佣项目")
private String commissionName;
@ExcelProperty("来佣金额")
private BigDecimal amount;
@ExcelProperty("来佣币种")
private String currency;
@ExcelProperty("来佣日期")
private Date commissionDate;
@ExcelProperty("备注")
private String remark;
/**
* 数据转换
*/
public static Commission convertToEntity(CommissionExcelDTO data, String loginUserId) {
Commission entity = new Commission();
// 字段映射
entity.setPolicyNo(data.getPolicyNo());
entity.setCommissionBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()));
entity.setReconciliationCompany(data.getReconciliationCompany());
entity.setCommissionPeriod(data.getCommissionPeriod());
entity.setTotalPeriod(data.getTotalPeriod());
entity.setCommissionName(data.getCommissionName());
entity.setAmount(data.getAmount());
entity.setCurrency(data.getCurrency());
entity.setCommissionDate(data.getCommissionDate());
entity.setRemark(data.getRemark());
entity.setStatus(CommissionStatusEnum.UNCOMPARE.getItemValue());
entity.setCreatorId(loginUserId);
entity.setUpdaterId(loginUserId);
entity.setCreateTime(new Date());
entity.setUpdateTime(new Date());
return entity;
}
}
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* 查询commission请求
*
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CommissionQueryRequest extends PageDto implements Serializable {
/**
* 来佣状态
*/
@Schema(description = "来佣状态 '0'-'未比对','1'-'已比对', 字典值: csf_commission_status")
private String status;
/**
* 保单号
*/
@Schema(description = "保单号")
private String policyNo;
/**
* 对账公司
*/
@Schema(description = "对账公司")
private String reconciliationCompany;
/**
* 来佣日期
*/
@Schema(description = "来佣日期", example = "2023-01-01",format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date commissionDate;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yd.csf.service.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionUpdateRequest {
/**
* 保单来佣业务id
*/
@Schema(description = "保单来佣业务id", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionBizId;
/**
* 来佣金额
*/
@Schema(description = "来佣金额")
private BigDecimal amount;
/**
* 来佣币种
*/
@Schema(description = "来佣币种")
private String currency;
/**
* 来佣日期
*/
@Schema(description = "来佣日期")
private Date commissionDate;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
}
package com.yd.csf.service.enums;
/**
* 来佣状态枚举
*/
public enum CommissionStatusEnum {
//来佣状态枚举
UNCOMPARE("未比对","0"),
COMPARED("已比对","1"),
;
//字典项标签(名称)
private String itemLabel;
//字典项值
private String itemValue;
//构造函数
CommissionStatusEnum(String itemLabel, String itemValue) {
this.itemLabel = itemLabel;
this.itemValue = itemValue;
}
public String getItemLabel() {
return itemLabel;
}
public String getItemValue() {
return itemValue;
}
}
package com.yd.csf.service.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionVO implements Serializable {
/**
* 保单来佣业务id
*/
private String commissionBizId;
/**
* 保单号
*/
private String policyNo;
/**
* 对账公司
*/
private String reconciliationCompany;
/**
* 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private Integer commissionPeriod;
/**
* 总来佣期数
*/
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
private String commissionName;
/**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
private String commissionType;
/**
* 来佣金额
*/
private BigDecimal amount;
/**
* 来佣币种
*/
private String currency;
/**
* 来佣日期
*/
private Date commissionDate;
/**
* 来佣状态 0=未比对 1=已比对
*/
private String status;
/**
* 通用备注
*/
private String remark;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
private static final long serialVersionUID = 1L;
}
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