Browse Source

ROI费率底表

contract
Yen 2 years ago
parent
commit
f57023830f
  1. 29
      src/main/java/com/qs/serve/common/model/dto/DateSplitDTO.java
  2. 67
      src/main/java/com/qs/serve/common/util/DateSplitUtil.java
  3. 22
      src/main/java/com/qs/serve/common/util/DateUtils.java
  4. 51
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  5. 136
      src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java
  6. 134
      src/main/java/com/qs/serve/modules/bir/entity/BirRoiRate.java
  7. 14
      src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java
  8. 14
      src/main/java/com/qs/serve/modules/bir/mapper/BirRoiRateMapper.java
  9. 20
      src/main/java/com/qs/serve/modules/bir/service/BirBaseActivityService.java
  10. 15
      src/main/java/com/qs/serve/modules/bir/service/BirRoiRateService.java
  11. 124
      src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java
  12. 36
      src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java
  13. 9
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
  14. 10
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java
  15. 3
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  16. 1
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

29
src/main/java/com/qs/serve/common/model/dto/DateSplitDTO.java

@ -0,0 +1,29 @@
package com.qs.serve.common.model.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.util.Date;
/**
* @author YenHex
* @since 2023/6/5
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DateSplitDTO {
Integer days;
LocalDate startDate;
LocalDate endDate;
Integer yearMonth;
Integer sort;
}

67
src/main/java/com/qs/serve/common/util/DateSplitUtil.java

@ -0,0 +1,67 @@
package com.qs.serve.common.util;
import com.qs.serve.common.model.dto.DateSplitDTO;
import lombok.experimental.UtilityClass;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 分割时间DTO工具类
* @author YenHex
* @since 2023/6/5
*/
@UtilityClass
public class DateSplitUtil {
public static List<DateSplitDTO> getSplitDto(LocalDate sDate, LocalDate eDate){
int diffYear = eDate.getYear() - sDate.getYear();
int diffMonthOfYear = eDate.getMonthValue() - sDate.getMonthValue();
int diffMonth = diffYear * 12 + diffMonthOfYear;
//最后一个月的年月数
int lastYearMonth = eDate.getYear()*100 + eDate.getMonthValue();
int firstYearMonth = sDate.getYear()*100 + sDate.getMonthValue();
if(diffMonth<1){
//同一个月
int days = eDate.getDayOfMonth() - sDate.getDayOfMonth() + 1;
DateSplitDTO splitDTO = new DateSplitDTO(days,sDate,eDate,lastYearMonth,1);
return Arrays.asList(splitDTO);
}else {
List<DateSplitDTO> dateSplitDTOS = new ArrayList<>();
for (int i = 0; i < diffMonth+2; i++) {
int sort = i+1;
LocalDate newStartDate = sDate.plusMonths(i);
int currYearMonth = newStartDate.getYear()*100 + newStartDate.getMonthValue();
//第一个月
if(firstYearMonth==currYearMonth){
int days = sDate.lengthOfMonth() - sDate.getDayOfMonth() + 1;
//当月最后一天
LocalDate endLocalDate = LocalDate.of(sDate.getYear(),sDate.getMonth(),sDate.lengthOfMonth());
DateSplitDTO splitDTO = new DateSplitDTO(days,sDate,endLocalDate,currYearMonth,sort);
dateSplitDTOS.add(splitDTO);
}else if(currYearMonth==lastYearMonth){
int days = eDate.getDayOfMonth();
//当月第一天
LocalDate startDate = newStartDate.withDayOfMonth(1);
DateSplitDTO splitDTO = new DateSplitDTO(days,startDate,eDate,currYearMonth,sort);
dateSplitDTOS.add(splitDTO);
break;
}else {
int days = newStartDate.lengthOfMonth();
//当月第一天
LocalDate startDate = newStartDate.withDayOfMonth(1);
//当月最后一天
LocalDate endLocalDate = LocalDate.of(newStartDate.getYear(),newStartDate.getMonth(),newStartDate.lengthOfMonth());
DateSplitDTO splitDTO = new DateSplitDTO(days,startDate,endLocalDate,currYearMonth,sort);
dateSplitDTOS.add(splitDTO);
}
}
return dateSplitDTOS;
}
}
}

22
src/main/java/com/qs/serve/common/util/DateUtils.java

@ -5,10 +5,7 @@ import lombok.experimental.UtilityClass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
@ -33,6 +30,23 @@ public class DateUtils {
return LocalDateTime.now().format(formatter);
}
public static LocalDate toLocalDate(Date date){
// Instant instant = date.toInstant();
// ZoneId zoneId = ZoneId.systemDefault();
// return instant.atZone(zoneId).toLocalDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String str = dateFormat.format(date);
String[] a = str.split("-");
return LocalDate.of(Integer.parseInt(a[0]),Integer.parseInt(a[1]),Integer.parseInt(a[2]));
}
public static Date toDate(LocalDate localDate){
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
return Date.from(zdt.toInstant());
}
/**
* 获取设置后得时间
* @param time

51
src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java

@ -0,0 +1,51 @@
package com.qs.serve.modules.bir.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bir.entity.BirRoiRate;
import com.qs.serve.modules.bir.service.BirRoiRateService;
import javax.validation.Valid;
import java.util.List;
/**
* BI报表 ROI费率
* @author YenHex
* @since 2023-06-05
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bir/roiRate")
public class BirRoiRateController {
private BirRoiRateService birRoiRateService;
/**
* 翻页
* @param param
* @return
*/
//@GetMapping("/page")
@PreAuthorize("hasRole('bir:roiRate:query')")
public R<PageVo<BirRoiRate>> getPage(BirRoiRate param){
LambdaQueryWrapper<BirRoiRate> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<BirRoiRate> list = birRoiRateService.list(lqw);
return R.byPageHelperList(list);
}
}

136
src/main/java/com/qs/serve/modules/bir/entity/BirBaseActivity.java

@ -0,0 +1,136 @@
package com.qs.serve.modules.bir.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* ROI费率(活动档案) 实体类
* @author YenHex
* @since 2023-06-05
*/
@Data
@TableName("bir_base_activity")
public class BirBaseActivity implements Serializable {
private static final long serialVersionUID = 1L;
/** 编号 */
@TableId(type = IdType.AUTO)
private Long id;
/** 键值(日期数) */
@NotNull(message = "键值(日期数)不能为空")
private Integer keyNum;
/** 活动id */
@NotNull(message = "活动id不能为空")
private Long activityId;
/** 活动金额(费用投入金额) */
@NotNull(message = "活动金额(费用投入金额)不能为空")
private BigDecimal activityAmt;
/** 活动金额(费用投入金额) */
@NotNull(message = "活动总金额(费用投入金额)不能为空")
private BigDecimal activityTotalAmt;
/** 核销金额 */
@NotNull(message = "核销金额不能为空")
private BigDecimal verificationAmt;
/** 客户id */
@NotNull(message = "客户id不能为空")
private Long supplierId;
/** 客户编码 */
@NotBlank(message = "客户编码不能为空")
@Length(max = 30,message = "客户编码长度不能超过30字")
private String supplierCode;
/** 客户名称 */
@NotBlank(message = "客户名称不能为空")
@Length(max = 200,message = "客户名称长度不能超过200字")
private String supplierName;
/** 用户id */
@NotBlank(message = "用户id不能为空")
@Length(max = 64,message = "用户id长度不能超过64字")
private String userId;
/** 用户编码 */
@NotBlank(message = "用户编码不能为空")
@Length(max = 255,message = "用户编码长度不能超过255字")
private String userCode;
/** 用户名 */
@NotBlank(message = "用户名不能为空")
@Length(max = 255,message = "用户名长度不能超过255字")
private String userName;
/** 当月有多少天 */
private Integer monthDays;
/** 活动总天数 */
@Length(max = 255,message = "活动总天数长度不能超过255字")
private Integer totalDays;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
public static BirBaseActivity toNewObject(BirBaseActivity source){
BirBaseActivity baseActivity = new BirBaseActivity();
baseActivity.setId(source.getId());
baseActivity.setKeyNum(source.getKeyNum());
baseActivity.setActivityId(source.getActivityId());
baseActivity.setActivityAmt(source.getActivityAmt());
baseActivity.setVerificationAmt(source.getVerificationAmt());
baseActivity.setSupplierId(source.getSupplierId());
baseActivity.setSupplierCode(source.getSupplierCode());
baseActivity.setSupplierName(source.getSupplierName());
baseActivity.setUserId(source.getUserId());
baseActivity.setUserCode(source.getUserCode());
baseActivity.setUserName(source.getUserName());
baseActivity.setMonthDays(source.getMonthDays());
baseActivity.setTotalDays(source.getTotalDays());
baseActivity.setCreateTime(source.getCreateTime());
baseActivity.setUpdateTime(source.getUpdateTime());
baseActivity.setTenantId(source.getTenantId());
baseActivity.setDelFlag(source.getDelFlag());
return baseActivity;
}
}

134
src/main/java/com/qs/serve/modules/bir/entity/BirRoiRate.java

@ -0,0 +1,134 @@
package com.qs.serve.modules.bir.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* ROI费率 实体类
* @author YenHex
* @since 2023-06-05
*/
@Data
@TableName("bir_roi_rate")
public class BirRoiRate implements Serializable {
private static final long serialVersionUID = 1L;
/** 编号 */
@TableId(type = IdType.AUTO)
private Long id;
/** 键值(日期数) */
@NotNull(message = "键值(日期数)不能为空")
private Integer keyNum;
/** 活动金额(费用投入金额) */
@NotNull(message = "活动金额(费用投入金额)不能为空")
private BigDecimal activityAmt;
/** 核销金额 */
@NotNull(message = "核销金额不能为空")
private BigDecimal verificationAmt;
/** 活动状态 */
private Integer activityState;
/** 发货量类型:0->预估;1->实际 */
private Integer shipmentType;
/** 发货量 */
private Long shipmentQty;
/** 发货金额 */
private BigDecimal shipmentAmt;
/** 客户id */
@NotNull(message = "客户id不能为空")
private Long supplierId;
/** 客户编码 */
@NotBlank(message = "客户编码不能为空")
@Length(max = 30,message = "客户编码长度不能超过30字")
private String supplierCode;
/** 客户名称 */
@NotBlank(message = "客户名称不能为空")
@Length(max = 200,message = "客户名称长度不能超过200字")
private String supplierName;
/** 用户id */
@NotBlank(message = "用户id不能为空")
@Length(max = 64,message = "用户id长度不能超过64字")
private String userId;
/** 用户编码 */
@NotBlank(message = "用户编码不能为空")
@Length(max = 255,message = "用户编码长度不能超过255字")
private String userCode;
/** 用户名 */
@NotBlank(message = "用户名不能为空")
@Length(max = 255,message = "用户名长度不能超过255字")
private String userName;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
public static BirRoiRate toNewObject(BirRoiRate source){
BirRoiRate roiRate = new BirRoiRate();
roiRate.setId(source.getId());
roiRate.setKeyNum(source.getKeyNum());
roiRate.setActivityAmt(source.getActivityAmt());
roiRate.setVerificationAmt(source.getVerificationAmt());
roiRate.setActivityState(source.getActivityState());
roiRate.setShipmentType(source.getShipmentType());
roiRate.setShipmentQty(source.getShipmentQty());
roiRate.setShipmentAmt(source.getShipmentAmt());
roiRate.setSupplierId(source.getSupplierId());
roiRate.setSupplierCode(source.getSupplierCode());
roiRate.setSupplierName(source.getSupplierName());
roiRate.setUserId(source.getUserId());
roiRate.setUserCode(source.getUserCode());
roiRate.setUserName(source.getUserName());
roiRate.setCreateTime(source.getCreateTime());
roiRate.setUpdateTime(source.getUpdateTime());
roiRate.setTenantId(source.getTenantId());
roiRate.setDelFlag(source.getDelFlag());
return roiRate;
}
}

14
src/main/java/com/qs/serve/modules/bir/mapper/BirBaseActivityMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bir.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
/**
* ROI费率(活动档案) Mapper
* @author YenHex
* @date 2023-06-05
*/
public interface BirBaseActivityMapper extends BaseMapper<BirBaseActivity> {
}

14
src/main/java/com/qs/serve/modules/bir/mapper/BirRoiRateMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bir.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bir.entity.BirRoiRate;
/**
* Mapper
* @author YenHex
* @date 2023-06-05
*/
public interface BirRoiRateMapper extends BaseMapper<BirRoiRate> {
}

20
src/main/java/com/qs/serve/modules/bir/service/BirBaseActivityService.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.bir.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
/**
* ROI费率(活动档案) 服务接口
* @author YenHex
* @date 2023-06-05
*/
public interface BirBaseActivityService extends IService<BirBaseActivity> {
/**
* 创建
* @param year
* @param month
*/
void buildReport(int year, int month);
}

15
src/main/java/com/qs/serve/modules/bir/service/BirRoiRateService.java

@ -0,0 +1,15 @@
package com.qs.serve.modules.bir.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bir.entity.BirRoiRate;
/**
* 服务接口
* @author YenHex
* @date 2023-06-05
*/
public interface BirRoiRateService extends IService<BirRoiRate> {
}

124
src/main/java/com/qs/serve/modules/bir/service/impl/BirBaseActivityServiceImpl.java

@ -0,0 +1,124 @@
package com.qs.serve.modules.bir.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.DateSplitDTO;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.DateSplitUtil;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.service.BirBaseActivityService;
import com.qs.serve.modules.bir.mapper.BirBaseActivityMapper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* ROI费率(活动档案) 服务实现类
* @author YenHex
* @since 2023-06-05
*/
@Slf4j
@Service
@AllArgsConstructor
public class BirBaseActivityServiceImpl extends ServiceImpl<BirBaseActivityMapper,BirBaseActivity> implements BirBaseActivityService {
private final TbsActivityMapper activityMapper;
private final SysUserMapper userMapper;
@Override
public void buildReport(int year, int month) {
int yearMonth = Integer.parseInt(year+""+month);
LocalDate startDate = LocalDate.of(year,month,1);
int lastDayNum2 = startDate.lengthOfMonth();
LocalDate endDate = LocalDate.of(year,month,lastDayNum2);
LambdaQueryWrapper<TbsActivity> activityLqw = new LambdaQueryWrapper<>();
//todo dev activityLqw.eq(TbsActivity::getCostPassFlag,1);
activityLqw.and(qw->{
qw.between(TbsActivity::getActStartDate,startDate,endDate)
.or().between(TbsActivity::getActEndDate,startDate,endDate);
});
List<TbsActivity> activityList = activityMapper.selectList(activityLqw);
List<BirBaseActivity> birBaseActivities = new ArrayList<>();
for (TbsActivity activity : activityList) {
LocalDate actStartDate = activity.getActStartDate();
LocalDate actEndDate = activity.getActEndDate();
Period period = Period.between(startDate, endDate);
int currentActDays = period.getDays()+1;
BigDecimal amount = activity.getTotalAmount();
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate);
//活动金额
BigDecimal currentAmount = null;
//核销金额
BigDecimal currentCheckAmount = null;
Integer currItemDays = null;
if(dateSplitList.size()>1){
//当前年月
DateSplitDTO currDateSplit = dateSplitList.stream()
.filter(a->a.getYearMonth().equals(yearMonth))
.collect(Collectors.toList()).get(0);
currItemDays = currDateSplit.getDays();
if(currDateSplit.getSort().equals(dateSplitList.size())){
//活动金额
currentAmount = activity.getTotalAmount();
//核销金额
currentCheckAmount = activity.getUsedAmount();
for (DateSplitDTO splitDTO : dateSplitList) {
//跳过当前年月
if(splitDTO.getYearMonth().equals(yearMonth)){
continue;
}
//日期占比
BigDecimal dayRate = new BigDecimal(splitDTO.getDays()+"")
.multiply(new BigDecimal(currentActDays+""))
.divide(new BigDecimal("100"), RoundingMode.HALF_DOWN);
currentAmount = currentAmount.subtract(amount.multiply(dayRate));
currentCheckAmount = currentCheckAmount.subtract(activity.getUsedAmount().multiply(dayRate));
}
}else {
//日期占比
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays()+"")
.multiply(new BigDecimal(currentActDays+""))
.divide(new BigDecimal("100"), RoundingMode.HALF_DOWN);
currentAmount = amount.multiply(dayRate);
currentCheckAmount = activity.getUsedAmount().multiply(dayRate);
}
}else if (dateSplitList.size()==1){
DateSplitDTO dateSplit = dateSplitList.get(0);
currentAmount = amount;
currentCheckAmount = activity.getUsedAmount();
currItemDays = dateSplit.getDays();
}else {
Assert.throwEx("dateSplitList is empty");
}
BirBaseActivity baseActivity = new BirBaseActivity();
baseActivity.setKeyNum(yearMonth);
baseActivity.setActivityId(activity.getId());
baseActivity.setActivityAmt(currentAmount);
baseActivity.setActivityTotalAmt(activity.getTotalAmount());
baseActivity.setVerificationAmt(currentCheckAmount);
baseActivity.setSupplierId(activity.getSupplierId());
baseActivity.setSupplierCode(activity.getSupplierCode());
baseActivity.setSupplierName(activity.getSupplierName());
baseActivity.setUserId(activity.getCreateBy());
baseActivity.setMonthDays(currItemDays);
baseActivity.setTotalDays(currentActDays);
birBaseActivities.add(baseActivity);
}
this.saveBatch(birBaseActivities);
}
}

36
src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java

@ -0,0 +1,36 @@
package com.qs.serve.modules.bir.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.DateSplitDTO;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.DateSplitUtil;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bir.entity.BirRoiRate;
import com.qs.serve.modules.bir.service.BirRoiRateService;
import com.qs.serve.modules.bir.mapper.BirRoiRateMapper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;
/**
* 服务实现类
* @author YenHex
* @since 2023-06-05
*/
@Slf4j
@Service
@AllArgsConstructor
public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRate> implements BirRoiRateService {
}

9
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java

@ -138,6 +138,15 @@ public class TbsActivity implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime finishedTime;
/** 预计活动销量 */
private Long preActQuantity;
/** 预计不做活动销量 */
private Long preNotActQuantity;
/** 预估roi费率(人工输入) */
private BigDecimal preRoiRate;
/** 合计金额 */
private BigDecimal totalAmount;

10
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsActivityBo.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.tbs.entity.bo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.io.Serializable;
@ -61,6 +62,15 @@ public class TbsActivityBo implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDate preCheckDate;
/** 预计活动销量 */
private Long preActQuantity;
/** 预计不做活动销量 */
private Long preNotActQuantity;
/** 预估roi费率(人工输入) */
private BigDecimal preRoiRate;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;

3
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -131,6 +131,9 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
activity.setSupplierId(Long.parseLong(supplier.getId()));
activity.setSupplierCode(supplier.getCode());
activity.setSupplierName(supplier.getName());
activity.setPreActQuantity(activityBo.getPreActQuantity());
activity.setPreNotActQuantity(activityBo.getPreNotActQuantity());
activity.setPreRoiRate(activityBo.getPreRoiRate());
boolean isUpdate = activity.getId()!=null;
activity.setTotalAmount(totalAmount);
// SysConfig sysConfig = configService.getByKey(SysConfigKey.ActivityPreCheckDays);

1
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -222,6 +222,7 @@ public class VtbVerificationApplication {
BigDecimal totalUsed = activity.getUsedAmount().add(totalAmount);
TbsActivity activity4Upd = new TbsActivity();
activity4Upd.setId(activity.getId());
activity4Upd.setUsedAmount(totalUsed);
if(totalUsed.compareTo(activity.getTotalAmount())>=0){
activity4Upd.setActivityState(TbsActivityState.STATE_1_Finished);
}else {

Loading…
Cancel
Save