Commit 4a0388f0 by zhangxingmin

Merge remote-tracking branch 'origin/test' into test

parents 5054dc00 fe2a87d1
......@@ -4,6 +4,8 @@ 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.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.service.common.ErrorCode;
......@@ -28,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
......@@ -53,6 +56,7 @@ public class ApiCommissionController {
@PostMapping("/upload/excel")
@Operation(summary = "上传保单来佣Excel文件")
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
List<CommissionExcelDTO> dataList = new ArrayList<>();
......@@ -66,17 +70,49 @@ public class ApiCommissionController {
throw new RuntimeException("Excel读取失败", e);
}
// 数据校验
validateCommissionUpload(dataList);
// 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
// 数据验证和处理
// 数据处理
processData(dataList, loginUserId);
return Result.success(true);
}
/**
* 校验导入的来佣数据是否符合要求,返回行号和错误信息
*/
private void validateCommissionUpload(List<CommissionExcelDTO> dataList) {
// 校验数据是否为空
if (CollectionUtils.isEmpty(dataList)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "导入数据不能为空");
}
StringBuilder errorMsg = new StringBuilder();
for (CommissionExcelDTO excelDTO : dataList) {
// 校验必填字段是否为空
if (StringUtils.isBlank(excelDTO.getPolicyNo()) ||
StringUtils.isBlank(excelDTO.getReconciliationCompany()) ||
StringUtils.isBlank(excelDTO.getCommissionName()) ||
excelDTO.getAmount() == null ||
StringUtils.isBlank(excelDTO.getCurrency()) ||
excelDTO.getCommissionDate() == null) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行存在空字段");
}
// 校验来佣金额是否为正数
if (excelDTO.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
errorMsg.append("第").append(dataList.indexOf(excelDTO) + 1).append("行来佣金额必须为正数");
}
}
if (errorMsg.length() > 0) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), errorMsg.toString());
}
}
/**
* 1.处理导入的数据 2.比对预计来佣 3.保存到数据库
*/
private void processData(List<CommissionExcelDTO> dataList, String loginUserId) {
......
......@@ -58,6 +58,7 @@ public class ApiFortuneController {
@PostMapping("/upload/excel")
@Operation(summary = "上传保单发佣Excel文件")
@Transactional(rollbackFor = Exception.class)
public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
try {
......@@ -242,7 +243,7 @@ public class ApiFortuneController {
// return Result.fail(ErrorCode.NO_AUTH_ERROR.getCode(), ErrorCode.NO_AUTH_ERROR.getMessage());
// }
// 操作数据库
boolean result = fortuneService.removeById(oldFortuneAccount);
boolean result = fortuneAccountService.removeById(oldFortuneAccount);
if (!result) {
return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
}
......
package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CommissionAddRequest implements Serializable {
......@@ -33,10 +35,40 @@ public class CommissionAddRequest implements Serializable {
private Integer commissionPeriod;
/**
* 佣金列表
* 总来佣期数
*/
@Schema(description = "佣金列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<CommissionAddDto> commissionAddDtoList;
@Schema(description = "总来佣期数")
private Integer totalPeriod;
/**
* 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)", requiredMode = Schema.RequiredMode.REQUIRED)
private String commissionName;
/**
* 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
*/
@Schema(description = "来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)")
private String commissionType;
/**
* 来佣金额
*/
@Schema(description = "来佣金额", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal amount;
/**
* 来佣币种
*/
@Schema(description = "来佣币种", requiredMode = Schema.RequiredMode.REQUIRED)
private String currency;
/**
* 来佣日期
*/
@Schema(description = "来佣日期", requiredMode = Schema.RequiredMode.REQUIRED, format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date commissionDate;
/**
* 备注
......
......@@ -35,9 +35,9 @@ public class FortuneAccountAddRequest implements Serializable {
private BigDecimal amount;
/**
* 出账状态 0-可出账、1-待出账、2-已出账
* 出账状态 1-可出账、2-已出账
*/
@Schema(description = "出账状态 0-可出账、1-待出账、2-已出账", requiredMode = Schema.RequiredMode.REQUIRED)
@Schema(description = "出账状态 1-可出账、2-已出账 字典值:csf_fortune_account_status", requiredMode = Schema.RequiredMode.REQUIRED)
private String status;
/**
......
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;
......@@ -15,12 +16,14 @@ public class FortuneAccountQueryRequest extends PageDto {
@Schema(description = "所属团队")
private String team;
@Schema(description = "出账状态 可出账、待出账、已出账")
@Schema(description = "出账状态 字典值:csf_fortune_account_status")
private String status;
@Schema(description = "出账日期开始", example = "2023-01-01", type = "string", format = "date")
@Schema(description = "出账日期开始", format = "date")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date accountDateStart;
@Schema(description = "出账日期结束", example = "2023-01-01", type = "string", format = "date")
@Schema(description = "出账日期结束", format = "date")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date accountDateEnd;
}
......@@ -76,7 +76,7 @@ public class Commission implements Serializable {
private Date commissionDate;
/**
* 来佣状态 0=未比对 1=已比对
* 来佣状态 0=未比对 1=比对成功 2=比对失败
*/
private String status;
......
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 com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.math.BigDecimal;
......@@ -80,6 +77,7 @@ public class FortuneAccount implements Serializable {
/**
* 删除标识: 0-正常, 1-删除
*/
@TableLogic
private Integer isDeleted;
/**
......
......@@ -166,39 +166,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addCommission(CommissionAddRequest commissionAddRequest) {
List<CommissionAddDto> commissionAddDtoList = commissionAddRequest.getCommissionAddDtoList();
if (CollUtil.isEmpty(commissionAddDtoList)) {
throw new BusinessException(ResultCode.PARAMS_ERROR.getCode(), "佣金列表不能为空");
}
// 获取当前登录用户
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString();
List<Commission> commissionList = new ArrayList<>();
for (CommissionAddDto item : commissionAddDtoList) {
Commission commission = new Commission();
BeanUtils.copyProperties(item, commission);
// 生成新单编号
String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode());
commission.setCommissionBizId(commissionBizId);
commission.setPolicyNo(commissionAddRequest.getPolicyNo());
commission.setReconciliationCompany(commissionAddRequest.getReconciliationCompany());
commission.setReconciliationCompanyBizId(commissionAddRequest.getReconciliationCompanyBizId());
commission.setCommissionPeriod(commissionAddRequest.getCommissionPeriod());
commission.setStatus(CommissionStatusEnum.WAIT.getItemValue());
commission.setRemark(commissionAddRequest.getRemark());
commission.setCreatorId(loginUserId);
commission.setCreateTime(new Date());
commission.setUpdaterId(loginUserId);
commission.setUpdateTime(new Date());
commissionList.add(commission);
}
Commission commission = new Commission();
BeanUtils.copyProperties(commissionAddRequest, commission);
// 生成新单编号
String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode());
commission.setCommissionBizId(commissionBizId);
// 设置默认状态
commission.setStatus(CommissionStatusEnum.WAIT.getItemValue());
commission.setCreatorId(loginUserId);
commission.setCreateTime(new Date());
commission.setUpdaterId(loginUserId);
commission.setUpdateTime(new Date());
return this.saveBatch(commissionList);
return this.save(commission);
}
@Override
......
......@@ -46,7 +46,7 @@ public class FortuneAccountVO {
/**
* 出账状态
*/
@Schema(description = "出账状态 0=可出账 1=待出账 2=已出账")
@Schema(description = "出账状态 1=可出账 2=已出账")
private String status;
/**
......
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