Commit 4a0388f0 by zhangxingmin

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

parents 5054dc00 fe2a87d1
...@@ -4,6 +4,8 @@ import com.alibaba.excel.EasyExcel; ...@@ -4,6 +4,8 @@ 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.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.csf.api.dto.CommissionExcelDTO; import com.yd.csf.api.dto.CommissionExcelDTO;
import com.yd.csf.service.common.ErrorCode; import com.yd.csf.service.common.ErrorCode;
...@@ -28,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -28,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -53,6 +56,7 @@ public class ApiCommissionController { ...@@ -53,6 +56,7 @@ public class ApiCommissionController {
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
@Operation(summary = "上传保单来佣Excel文件")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException { public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
List<CommissionExcelDTO> dataList = new ArrayList<>(); List<CommissionExcelDTO> dataList = new ArrayList<>();
...@@ -66,17 +70,49 @@ public class ApiCommissionController { ...@@ -66,17 +70,49 @@ public class ApiCommissionController {
throw new RuntimeException("Excel读取失败", e); throw new RuntimeException("Excel读取失败", e);
} }
// 数据校验
validateCommissionUpload(dataList);
// 获取当前登录用户的ID // 获取当前登录用户的ID
AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser(); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString(); String loginUserId = currentLoginUser.getId().toString();
// 数据验证和处理 // 数据处理
processData(dataList, loginUserId); processData(dataList, loginUserId);
return Result.success(true); 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.保存到数据库 * 1.处理导入的数据 2.比对预计来佣 3.保存到数据库
*/ */
private void processData(List<CommissionExcelDTO> dataList, String loginUserId) { private void processData(List<CommissionExcelDTO> dataList, String loginUserId) {
......
...@@ -58,6 +58,7 @@ public class ApiFortuneController { ...@@ -58,6 +58,7 @@ public class ApiFortuneController {
@PostMapping("/upload/excel") @PostMapping("/upload/excel")
@Operation(summary = "上传保单发佣Excel文件")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException { public Result<Boolean> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
try { try {
...@@ -242,7 +243,7 @@ public class ApiFortuneController { ...@@ -242,7 +243,7 @@ public class ApiFortuneController {
// return Result.fail(ErrorCode.NO_AUTH_ERROR.getCode(), ErrorCode.NO_AUTH_ERROR.getMessage()); // 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) { if (!result) {
return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage()); return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), ErrorCode.OPERATION_ERROR.getMessage());
} }
......
package com.yd.csf.service.dto; package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.math.BigDecimal;
import java.util.Date;
@Data @Data
public class CommissionAddRequest implements Serializable { public class CommissionAddRequest implements Serializable {
...@@ -33,10 +35,40 @@ public class CommissionAddRequest implements Serializable { ...@@ -33,10 +35,40 @@ public class CommissionAddRequest implements Serializable {
private Integer commissionPeriod; private Integer commissionPeriod;
/** /**
* 佣金列表 * 总来佣期数
*/ */
@Schema(description = "佣金列表", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "总来佣期数")
private List<CommissionAddDto> commissionAddDtoList; 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 { ...@@ -35,9 +35,9 @@ public class FortuneAccountAddRequest implements Serializable {
private BigDecimal amount; 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; private String status;
/** /**
......
package com.yd.csf.service.dto; package com.yd.csf.service.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yd.common.dto.PageDto; import com.yd.common.dto.PageDto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -15,12 +16,14 @@ public class FortuneAccountQueryRequest extends PageDto { ...@@ -15,12 +16,14 @@ public class FortuneAccountQueryRequest extends PageDto {
@Schema(description = "所属团队") @Schema(description = "所属团队")
private String team; private String team;
@Schema(description = "出账状态 可出账、待出账、已出账") @Schema(description = "出账状态 字典值:csf_fortune_account_status")
private String 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; 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; private Date accountDateEnd;
} }
...@@ -76,7 +76,7 @@ public class Commission implements Serializable { ...@@ -76,7 +76,7 @@ public class Commission implements Serializable {
private Date commissionDate; private Date commissionDate;
/** /**
* 来佣状态 0=未比对 1=已比对 * 来佣状态 0=未比对 1=比对成功 2=比对失败
*/ */
private String status; private String status;
......
package com.yd.csf.service.model; package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -80,6 +77,7 @@ public class FortuneAccount implements Serializable { ...@@ -80,6 +77,7 @@ public class FortuneAccount implements Serializable {
/** /**
* 删除标识: 0-正常, 1-删除 * 删除标识: 0-正常, 1-删除
*/ */
@TableLogic
private Integer isDeleted; private Integer isDeleted;
/** /**
......
...@@ -166,39 +166,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -166,39 +166,24 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean addCommission(CommissionAddRequest commissionAddRequest) { 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(); AuthUserDto currentLoginUser = SecurityUtil.getCurrentLoginUser();
String loginUserId = currentLoginUser.getId().toString(); String loginUserId = currentLoginUser.getId().toString();
List<Commission> commissionList = new ArrayList<>();
for (CommissionAddDto item : commissionAddDtoList) {
Commission commission = new Commission(); Commission commission = new Commission();
BeanUtils.copyProperties(item, commission); BeanUtils.copyProperties(commissionAddRequest, commission);
// 生成新单编号 // 生成新单编号
String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode()); String commissionBizId = RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_COMMISSION.getCode());
commission.setCommissionBizId(commissionBizId); 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.setStatus(CommissionStatusEnum.WAIT.getItemValue());
commission.setRemark(commissionAddRequest.getRemark());
commission.setCreatorId(loginUserId); commission.setCreatorId(loginUserId);
commission.setCreateTime(new Date()); commission.setCreateTime(new Date());
commission.setUpdaterId(loginUserId); commission.setUpdaterId(loginUserId);
commission.setUpdateTime(new Date()); commission.setUpdateTime(new Date());
commissionList.add(commission); return this.save(commission);
}
return this.saveBatch(commissionList);
} }
@Override @Override
......
...@@ -46,7 +46,7 @@ public class FortuneAccountVO { ...@@ -46,7 +46,7 @@ public class FortuneAccountVO {
/** /**
* 出账状态 * 出账状态
*/ */
@Schema(description = "出账状态 0=可出账 1=待出账 2=已出账") @Schema(description = "出账状态 1=可出账 2=已出账")
private String status; 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