按天计算提成相关
This commit is contained in:
parent
a9ada467d2
commit
64cda6be9e
@ -1,8 +1,11 @@
|
|||||||
package com.stdiet.web.controller.custom;
|
package com.stdiet.web.controller.custom;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.stdiet.custom.domain.SysCommissionDayDetail;
|
||||||
|
import com.stdiet.custom.service.ISysCommissionDayService;
|
||||||
import com.stdiet.framework.web.domain.server.Sys;
|
import com.stdiet.framework.web.domain.server.Sys;
|
||||||
import com.stdiet.system.domain.CusSalesman;
|
import com.stdiet.system.domain.CusSalesman;
|
||||||
import com.stdiet.system.service.ISysUserService;
|
import com.stdiet.system.service.ISysUserService;
|
||||||
@ -40,6 +43,9 @@ public class SysCommisionController extends BaseController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISysUserService userService;
|
private ISysUserService userService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysCommissionDayService sysCommissionDayService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询业务提成比例列表
|
* 查询业务提成比例列表
|
||||||
*/
|
*/
|
||||||
@ -181,4 +187,16 @@ public class SysCommisionController extends BaseController {
|
|||||||
}
|
}
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按天计算提成详细列表
|
||||||
|
* */
|
||||||
|
@PreAuthorize("@ss.hasPermi('commisionDay:detail:list')")
|
||||||
|
@GetMapping("/detailDay")
|
||||||
|
public TableDataInfo getDetailDay(SysCommision sysCommision) {
|
||||||
|
startPage();
|
||||||
|
return getDataTable(sysCommissionDayService.calculateCommissionByDay(sysCommision));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -77,9 +77,9 @@ public class SysOrderController extends OrderBaseController {
|
|||||||
order.setOperatorAssis(user.getNickName());
|
order.setOperatorAssis(user.getNickName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (order.getPhone() != null && !order.getPhone().equals("")) {
|
/*if (order.getPhone() != null && !order.getPhone().equals("")) {
|
||||||
order.setPhone(order.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
|
order.setPhone(order.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
return getOrderDataTable(list, totalAmount);
|
return getOrderDataTable(list, totalAmount);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,10 @@ package com.stdiet.common.utils;
|
|||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||||
|
|
||||||
@ -152,4 +156,34 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
|||||||
// long sec = diff % nd % nh % nm / ns;
|
// long sec = diff % nd % nh % nm / ns;
|
||||||
return day + "天" + hour + "小时" + min + "分钟";
|
return day + "天" + hour + "小时" + min + "分钟";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date对象转LocalDateTime
|
||||||
|
* */
|
||||||
|
public static LocalDateTime dateToLocalDateTime(Date date){
|
||||||
|
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LocalDateTime对象转Date
|
||||||
|
* */
|
||||||
|
public static Date localDateTimeToDate(LocalDateTime localDateTime){
|
||||||
|
ZonedDateTime zdt = LocalDateTime.now().atZone(ZoneId.systemDefault());
|
||||||
|
return Date.from(zdt.toInstant());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date对象转LocalDate
|
||||||
|
* */
|
||||||
|
public static LocalDate dateToLocalDate(Date date){
|
||||||
|
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LocalDate转Date
|
||||||
|
*/
|
||||||
|
public static Date localDateToDate(LocalDate localDate) {
|
||||||
|
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
|
||||||
|
return Date.from(zonedDateTime.toInstant());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,185 @@
|
|||||||
|
package com.stdiet.custom.domain;
|
||||||
|
|
||||||
|
import com.stdiet.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SysCommissionDayDetail extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
//用户ID
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
//用户姓名
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
//用户账户
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
//用户岗位ID
|
||||||
|
private Long postId;
|
||||||
|
|
||||||
|
//岗位名称
|
||||||
|
private String postName;
|
||||||
|
|
||||||
|
private BigDecimal totalCommissionAmount;
|
||||||
|
|
||||||
|
private BigDecimal totalHasSentCommissionAmount;
|
||||||
|
|
||||||
|
private BigDecimal totalNotSentCommissionAmount;
|
||||||
|
|
||||||
|
private List<Map<String, Object>> sendDetailList;
|
||||||
|
|
||||||
|
|
||||||
|
//提成比例
|
||||||
|
private Float rate;
|
||||||
|
|
||||||
|
//订单成交总额
|
||||||
|
private BigDecimal orderTotalAmount;
|
||||||
|
|
||||||
|
//服务总天数
|
||||||
|
private Integer serverTotalDay;
|
||||||
|
|
||||||
|
//服务总额(每笔订单的服务天数 * 每天金额,相加)
|
||||||
|
private BigDecimal serverTotalAmount;
|
||||||
|
|
||||||
|
//服务订单总数量
|
||||||
|
private Integer serverOrderTotalCount;
|
||||||
|
|
||||||
|
//服务暂停总天数
|
||||||
|
private Integer serverOrderPauseTotalDay;
|
||||||
|
|
||||||
|
//服务提成金额
|
||||||
|
private BigDecimal commissionTotalAmount;
|
||||||
|
|
||||||
|
public Long getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(Long userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNickName() {
|
||||||
|
return nickName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNickName(String nickName) {
|
||||||
|
this.nickName = nickName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPostName() {
|
||||||
|
return postName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPostName(String postName) {
|
||||||
|
this.postName = postName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Float getRate() {
|
||||||
|
return rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRate(Float rate) {
|
||||||
|
this.rate = rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getOrderTotalAmount() {
|
||||||
|
return orderTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrderTotalAmount(BigDecimal orderTotalAmount) {
|
||||||
|
this.orderTotalAmount = orderTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getServerTotalDay() {
|
||||||
|
return serverTotalDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerTotalDay(Integer serverTotalDay) {
|
||||||
|
this.serverTotalDay = serverTotalDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getServerTotalAmount() {
|
||||||
|
return serverTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerTotalAmount(BigDecimal serverTotalAmount) {
|
||||||
|
this.serverTotalAmount = serverTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getServerOrderTotalCount() {
|
||||||
|
return serverOrderTotalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerOrderTotalCount(Integer serverOrderTotalCount) {
|
||||||
|
this.serverOrderTotalCount = serverOrderTotalCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getServerOrderPauseTotalDay() {
|
||||||
|
return serverOrderPauseTotalDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerOrderPauseTotalDay(Integer serverOrderPauseTotalDay) {
|
||||||
|
this.serverOrderPauseTotalDay = serverOrderPauseTotalDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getCommissionTotalAmount() {
|
||||||
|
return commissionTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCommissionTotalAmount(BigDecimal commissionTotalAmount) {
|
||||||
|
this.commissionTotalAmount = commissionTotalAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getPostId() {
|
||||||
|
return postId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPostId(Long postId) {
|
||||||
|
this.postId = postId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserName(String userName) {
|
||||||
|
this.userName = userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTotalCommissionAmount() {
|
||||||
|
return totalCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalCommissionAmount(BigDecimal totalCommissionAmount) {
|
||||||
|
this.totalCommissionAmount = totalCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTotalHasSentCommissionAmount() {
|
||||||
|
return totalHasSentCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalHasSentCommissionAmount(BigDecimal totalHasSentCommissionAmount) {
|
||||||
|
this.totalHasSentCommissionAmount = totalHasSentCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTotalNotSentCommissionAmount() {
|
||||||
|
return totalNotSentCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalNotSentCommissionAmount(BigDecimal totalNotSentCommissionAmount) {
|
||||||
|
this.totalNotSentCommissionAmount = totalNotSentCommissionAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Map<String, Object>> getSendDetailList() {
|
||||||
|
return sendDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendDetailList(List<Map<String, Object>> sendDetailList) {
|
||||||
|
this.sendDetailList = sendDetailList;
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@ package com.stdiet.custom.domain;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
@ -173,7 +174,7 @@ public class SysOrder extends BaseEntity {
|
|||||||
* 赠送时长
|
* 赠送时长
|
||||||
*/
|
*/
|
||||||
@Excel(name = "赠送时长", width = 30, suffix = "天")
|
@Excel(name = "赠送时长", width = 30, suffix = "天")
|
||||||
private String giveServeDay;
|
private Integer giveServeDay;
|
||||||
|
|
||||||
private Long serveTimeId;
|
private Long serveTimeId;
|
||||||
|
|
||||||
@ -187,6 +188,11 @@ public class SysOrder extends BaseEntity {
|
|||||||
@Excel(name = "成交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
@Excel(name = "成交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date orderTime;
|
private Date orderTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单暂停记录 非持久化字段
|
||||||
|
* */
|
||||||
|
private List<SysOrderPause> orderPauseList;
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
public Date getStartTime() {
|
public Date getStartTime() {
|
||||||
return startTime;
|
return startTime;
|
||||||
@ -454,14 +460,22 @@ public class SysOrder extends BaseEntity {
|
|||||||
return orderTime;
|
return orderTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGiveServeDay() {
|
public Integer getGiveServeDay() {
|
||||||
return giveServeDay;
|
return giveServeDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGiveServeDay(String giveServeDay) {
|
public void setGiveServeDay(Integer giveServeDay) {
|
||||||
this.giveServeDay = giveServeDay;
|
this.giveServeDay = giveServeDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SysOrderPause> getOrderPauseList() {
|
||||||
|
return orderPauseList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrderPauseList(List<SysOrderPause> orderPauseList) {
|
||||||
|
this.orderPauseList = orderPauseList;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
@ -0,0 +1,152 @@
|
|||||||
|
package com.stdiet.custom.domain;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.stdiet.common.annotation.Excel;
|
||||||
|
import com.stdiet.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 每个订单的提成详情
|
||||||
|
* */
|
||||||
|
public class SysOrderCommisionDayDetail extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**订单成交时间*/
|
||||||
|
private LocalDateTime orderTime;
|
||||||
|
|
||||||
|
/**客户姓名*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**服务结束时间*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Excel(name = "成交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDate serverStartDate;
|
||||||
|
|
||||||
|
/**服务结束时间*/
|
||||||
|
private LocalDate serverEndDate;
|
||||||
|
|
||||||
|
/**服务月数*/
|
||||||
|
private Integer serverMonth;
|
||||||
|
|
||||||
|
/**赠送天数*/
|
||||||
|
private Integer giveDay;
|
||||||
|
|
||||||
|
/**订单金额*/
|
||||||
|
private BigDecimal orderAmount;
|
||||||
|
|
||||||
|
/**服务天数*/
|
||||||
|
private Integer serverDay;
|
||||||
|
|
||||||
|
/**每天金额*/
|
||||||
|
private BigDecimal dayMoney;
|
||||||
|
|
||||||
|
/**每年每月暂停天数*/
|
||||||
|
private Map<String, Integer> everyYearMonthPauseDay;
|
||||||
|
|
||||||
|
/**每年每月服务天数**/
|
||||||
|
private Map<String, Integer> everyYearMonthServerDay;
|
||||||
|
|
||||||
|
/**每年每月对应金额*/
|
||||||
|
private Map<String, BigDecimal> everyYearMonthServerMoney;
|
||||||
|
|
||||||
|
public LocalDateTime getOrderTime() {
|
||||||
|
return orderTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrderTime(LocalDateTime orderTime) {
|
||||||
|
this.orderTime = orderTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getServerStartDate() {
|
||||||
|
return serverStartDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerStartDate(LocalDate serverStartDate) {
|
||||||
|
this.serverStartDate = serverStartDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getServerEndDate() {
|
||||||
|
return serverEndDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerEndDate(LocalDate serverEndDate) {
|
||||||
|
this.serverEndDate = serverEndDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getServerMonth() {
|
||||||
|
return serverMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerMonth(Integer serverMonth) {
|
||||||
|
this.serverMonth = serverMonth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getGiveDay() {
|
||||||
|
return giveDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGiveDay(Integer giveDay) {
|
||||||
|
this.giveDay = giveDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getOrderAmount() {
|
||||||
|
return orderAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrderAmount(BigDecimal orderAmount) {
|
||||||
|
this.orderAmount = orderAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getServerDay() {
|
||||||
|
return serverDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerDay(Integer serverDay) {
|
||||||
|
this.serverDay = serverDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getDayMoney() {
|
||||||
|
return dayMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDayMoney(BigDecimal dayMoney) {
|
||||||
|
this.dayMoney = dayMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> getEveryYearMonthPauseDay() {
|
||||||
|
return everyYearMonthPauseDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEveryYearMonthPauseDay(Map<String, Integer> everyYearMonthPauseDay) {
|
||||||
|
this.everyYearMonthPauseDay = everyYearMonthPauseDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> getEveryYearMonthServerDay() {
|
||||||
|
return everyYearMonthServerDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEveryYearMonthServerDay(Map<String, Integer> everyYearMonthServerDay) {
|
||||||
|
this.everyYearMonthServerDay = everyYearMonthServerDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, BigDecimal> getEveryYearMonthServerMoney() {
|
||||||
|
return everyYearMonthServerMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEveryYearMonthServerMoney(Map<String, BigDecimal> everyYearMonthServerMoney) {
|
||||||
|
this.everyYearMonthServerMoney = everyYearMonthServerMoney;
|
||||||
|
}
|
||||||
|
}
|
@ -60,4 +60,6 @@ public interface SysCommisionMapper
|
|||||||
public int deleteSysCommisionByIds(Long[] ruleIds);
|
public int deleteSysCommisionByIds(Long[] ruleIds);
|
||||||
|
|
||||||
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision);
|
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision);
|
||||||
|
|
||||||
|
List<SysCommision> selectSysCommisionDayDetail(SysCommision sysCommision);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.stdiet.custom.mapper;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.stdiet.custom.domain.SysOrder;
|
import com.stdiet.custom.domain.SysOrder;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销售订单Mapper接口
|
* 销售订单Mapper接口
|
||||||
@ -66,4 +67,10 @@ public interface SysOrderMapper
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public BigDecimal selectAllOrderAmount(SysOrder sysOrder);
|
public BigDecimal selectAllOrderAmount(SysOrder sysOrder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单信息
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SysOrder> selectSimpleOrderMessage(@Param("userId") Long userId);
|
||||||
}
|
}
|
@ -1,6 +1,8 @@
|
|||||||
package com.stdiet.custom.service;
|
package com.stdiet.custom.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import com.stdiet.custom.domain.SysCommision;
|
import com.stdiet.custom.domain.SysCommision;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,4 +62,6 @@ public interface ISysCommisionService
|
|||||||
public int deleteSysCommisionById(Long ruleId);
|
public int deleteSysCommisionById(Long ruleId);
|
||||||
|
|
||||||
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision);
|
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision);
|
||||||
|
|
||||||
|
List<SysCommision> selectSysCommisionDayDetail(SysCommision sysCommision);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.stdiet.custom.service;
|
||||||
|
|
||||||
|
import com.stdiet.custom.domain.SysCommision;
|
||||||
|
import com.stdiet.custom.domain.SysCommissionDayDetail;
|
||||||
|
import com.stdiet.custom.domain.SysOrderCommisionDayDetail;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按天计算提成
|
||||||
|
*
|
||||||
|
* @author wonder
|
||||||
|
* @date 2020-09-24
|
||||||
|
*/
|
||||||
|
public interface ISysCommissionDayService {
|
||||||
|
|
||||||
|
List<SysCommissionDayDetail> calculateCommissionByDay(SysCommision sysCommision);
|
||||||
|
|
||||||
|
}
|
@ -98,4 +98,9 @@ public class SysCommisionServiceImpl implements ISysCommisionService
|
|||||||
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision) {
|
public List<SysCommision> selectSysCommisionDetail(SysCommision sysCommision) {
|
||||||
return sysCommisionMapper.selectSysCommisionDetail(sysCommision);
|
return sysCommisionMapper.selectSysCommisionDetail(sysCommision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysCommision> selectSysCommisionDayDetail(SysCommision sysCommision){
|
||||||
|
return sysCommisionMapper.selectSysCommisionDayDetail(sysCommision);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,477 @@
|
|||||||
|
package com.stdiet.custom.service.impl;
|
||||||
|
|
||||||
|
import com.stdiet.common.utils.DateUtils;
|
||||||
|
import com.stdiet.common.utils.StringUtils;
|
||||||
|
import com.stdiet.custom.domain.*;
|
||||||
|
import com.stdiet.custom.mapper.SysCommisionMapper;
|
||||||
|
import com.stdiet.custom.mapper.SysOrderMapper;
|
||||||
|
import com.stdiet.custom.mapper.SysOrderPauseMapper;
|
||||||
|
import com.stdiet.custom.service.ISysCommisionService;
|
||||||
|
import com.stdiet.custom.service.ISysCommissionDayService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.time.*;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.time.temporal.TemporalAdjusters;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysCommisionMapper sysCommisionMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysOrderMapper sysOrderMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysOrderPauseMapper sysOrderPauseMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysCommissionDayDetail> calculateCommissionByDay(SysCommision sysCommision){
|
||||||
|
List<SysCommissionDayDetail> result = new ArrayList<>();
|
||||||
|
//查询用户
|
||||||
|
List<SysCommision> list = sysCommisionMapper.selectSysCommisionDayDetail(sysCommision);
|
||||||
|
if(list != null && list.size() > 0){
|
||||||
|
Map<Long, List<SysOrderCommisionDayDetail>> orderDetailMap = getOrderByList(null);
|
||||||
|
SysCommissionDayDetail sysCommissionDayDetail = null;
|
||||||
|
for(SysCommision commision : list){
|
||||||
|
sysCommissionDayDetail = new SysCommissionDayDetail();
|
||||||
|
sysCommissionDayDetail.setUserId(commision.getUserId());
|
||||||
|
sysCommissionDayDetail.setNickName(commision.getUserName());
|
||||||
|
sysCommissionDayDetail.setPostId(commision.getPostId());
|
||||||
|
sysCommissionDayDetail.setPostName(commision.getPostName());
|
||||||
|
sysCommissionDayDetail.setOrderTotalAmount(commision.getAmount());
|
||||||
|
//获取查询时间
|
||||||
|
LocalDate localDate = StringUtils.isEmpty(sysCommision.getBeginTime()) ? LocalDate.now() : LocalDate.parse(sysCommision.getBeginTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
//dealServerOrderCommissionDetail2(orderDetailMap.get(sysCommissionDayDetail.getUserId()), sysCommissionDayDetail, localDate.getYear()+""+localDate.getMonth().getValue());
|
||||||
|
dealServerOrderCommissionDetail2(orderDetailMap.get(sysCommissionDayDetail.getUserId()), sysCommissionDayDetail);
|
||||||
|
result.add(sysCommissionDayDetail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID统计出该用户在该月所有订单的服务数量、服务总天数、服务订单总额、暂停总天数
|
||||||
|
* **/
|
||||||
|
public void dealServerOrderCommissionDetail2(List<SysOrderCommisionDayDetail> orderDetailList, SysCommissionDayDetail sysCommissionDayDetail){
|
||||||
|
//总提成
|
||||||
|
double totalCommissionAmount = 0.0;
|
||||||
|
//已发放提成
|
||||||
|
double totalHasSentCommissionAmount = 0.0;
|
||||||
|
//未发放提成
|
||||||
|
double totalNotSentCommissionAmount = 0.0;
|
||||||
|
//未发放提成记录
|
||||||
|
List<Map<String, Object>> sendDetailList = new ArrayList<>();
|
||||||
|
if(orderDetailList != null){
|
||||||
|
//获取每个月的成交总额度
|
||||||
|
Map<String, Double> orderAmount = new TreeMap<>(new MyComparator());
|
||||||
|
Set<String> commissionMonthSet = new TreeSet<>(new MyComparator());
|
||||||
|
for (SysOrderCommisionDayDetail sysOrderCommisionDayDetail : orderDetailList) {
|
||||||
|
String yearMonth = sysOrderCommisionDayDetail.getOrderTime().getYear()+""+sysOrderCommisionDayDetail.getOrderTime().getMonth().getValue();
|
||||||
|
if(orderAmount.containsKey(yearMonth)){
|
||||||
|
orderAmount.put(yearMonth, orderAmount.get(yearMonth) + sysOrderCommisionDayDetail.getOrderAmount().doubleValue());
|
||||||
|
}else{
|
||||||
|
orderAmount.put(yearMonth, sysOrderCommisionDayDetail.getOrderAmount().doubleValue());
|
||||||
|
}
|
||||||
|
commissionMonthSet.addAll(sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().keySet());
|
||||||
|
}
|
||||||
|
//获取提成比例以及计算提成
|
||||||
|
Map<String, Float> rateMap = getRateByAmount2(sysCommissionDayDetail.getUserId(), sysCommissionDayDetail.getPostId(), orderAmount);
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
double commissionA = 0D;
|
||||||
|
for (String ym : commissionMonthSet) {
|
||||||
|
double ym_mession = 0;
|
||||||
|
if(orderAmount.containsKey(ym)){
|
||||||
|
totalCommissionAmount += orderAmount.get(ym) * rateMap.get(ym) / 100D;
|
||||||
|
}
|
||||||
|
for (SysOrderCommisionDayDetail sysOrderCommisionDayDetail : orderDetailList) {
|
||||||
|
Map<String, BigDecimal> everyYearMonthServerMoney = sysOrderCommisionDayDetail.getEveryYearMonthServerMoney();
|
||||||
|
if(everyYearMonthServerMoney.containsKey(ym)){
|
||||||
|
String orderYearMonth = sysOrderCommisionDayDetail.getOrderTime().getYear()+""+sysOrderCommisionDayDetail.getOrderTime().getMonth().getValue();
|
||||||
|
double m = (everyYearMonthServerMoney.get(ym) == null) ? 0 : everyYearMonthServerMoney.get(ym).doubleValue();
|
||||||
|
ym_mession += m * rateMap.get(orderYearMonth) / 100D;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(isSendCommissionByYearMonth(ym)){
|
||||||
|
totalHasSentCommissionAmount += ym_mession;
|
||||||
|
}else{
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
map.put("yearMonth", ym);
|
||||||
|
if(i++ != commissionMonthSet.size()){
|
||||||
|
map.put("yearMonthCommission", getMoney(ym_mession, 1));
|
||||||
|
}else{
|
||||||
|
System.out.println("最后:"+commissionA);
|
||||||
|
map.put("yearMonthCommission", getMoney(totalCommissionAmount - commissionA, 1));
|
||||||
|
}
|
||||||
|
sendDetailList.add(map);
|
||||||
|
}
|
||||||
|
commissionA += getMoney(ym_mession, 1).doubleValue();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sysCommissionDayDetail.setTotalCommissionAmount(getMoney(totalCommissionAmount,1));
|
||||||
|
sysCommissionDayDetail.setTotalHasSentCommissionAmount(getMoney(totalHasSentCommissionAmount,1));
|
||||||
|
sysCommissionDayDetail.setTotalNotSentCommissionAmount(getMoney(totalCommissionAmount - totalHasSentCommissionAmount,1));
|
||||||
|
sysCommissionDayDetail.setSendDetailList(sendDetailList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSendCommissionByYearMonth(String yearMonth){
|
||||||
|
LocalDate localDate = LocalDate.of(Integer.parseInt(yearMonth.substring(0,4)), Integer.parseInt(yearMonth.substring(4)), 1);
|
||||||
|
LocalDate nowDate = LocalDate.now();
|
||||||
|
if(localDate.getMonth().getValue() >= 0){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户成交总额获取对应比例,再计算提成
|
||||||
|
* */
|
||||||
|
public Map<String, Float> getRateByAmount2(Long userId, Long postId, Map<String, Double> amountMap){
|
||||||
|
SysCommision tmpQueryCom = new SysCommision();
|
||||||
|
tmpQueryCom.setUserId(userId);
|
||||||
|
tmpQueryCom.setPostId(postId);
|
||||||
|
List<SysCommision> tmpComList = sysCommisionMapper.selectSysCommisionList(tmpQueryCom);
|
||||||
|
Map<String, Float> rateMap = new TreeMap<>(new MyComparator());
|
||||||
|
for(String yearMonth : amountMap.keySet()){
|
||||||
|
double orderAmount = amountMap.get(yearMonth);
|
||||||
|
rateMap.put(yearMonth, 0F);
|
||||||
|
if(tmpComList != null && tmpComList.size() > 0){
|
||||||
|
for (int i = 0; i < tmpComList.size(); i++) {
|
||||||
|
SysCommision com = tmpComList.get(i);
|
||||||
|
double cAmount = com.getAmount().floatValue();
|
||||||
|
if (orderAmount <= cAmount && i == 0) {
|
||||||
|
// 第一条规则
|
||||||
|
rateMap.put(yearMonth,com.getRate());
|
||||||
|
break;
|
||||||
|
} else if (i == tmpComList.size() - 1 && orderAmount > cAmount) {
|
||||||
|
// 最后一条规则
|
||||||
|
rateMap.put(yearMonth,com.getRate());
|
||||||
|
break;
|
||||||
|
} else if (cAmount < orderAmount && orderAmount <= tmpComList.get(i + 1).getAmount().floatValue()) {
|
||||||
|
// 中间规则
|
||||||
|
rateMap.put(yearMonth,tmpComList.get(i + 1).getRate());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rateMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID统计出该用户在该月所有订单的服务数量、服务总天数、服务订单总额、暂停总天数
|
||||||
|
* **/
|
||||||
|
public void dealServerOrderCommissionDetail(List<SysOrderCommisionDayDetail> orderDetailList, SysCommissionDayDetail sysCommissionDayDetail, String yearMonth){
|
||||||
|
//服务订单数量
|
||||||
|
int serverOrderCount = 0;
|
||||||
|
//服务总天数
|
||||||
|
int serverTotalDay = 0;
|
||||||
|
//服务订单总金额
|
||||||
|
double serverTotalAmount = 0.0;
|
||||||
|
//暂停总天数
|
||||||
|
int pauseTotalDay = 0;
|
||||||
|
if(orderDetailList != null){
|
||||||
|
for (SysOrderCommisionDayDetail sysOrderCommisionDayDetail : orderDetailList) {
|
||||||
|
//Map<String, Integer> dayMap = ((Map<String, Integer>)orderMap.get("everyYearMonthServerDay"));
|
||||||
|
if(sysOrderCommisionDayDetail.getEveryYearMonthServerDay() != null && sysOrderCommisionDayDetail.getEveryYearMonthServerDay().containsKey(yearMonth)){
|
||||||
|
int day = sysOrderCommisionDayDetail.getEveryYearMonthServerDay().get(yearMonth).intValue();
|
||||||
|
serverTotalDay += day;
|
||||||
|
serverOrderCount += day > 0 ? 1 : 0;
|
||||||
|
}
|
||||||
|
if(sysOrderCommisionDayDetail.getEveryYearMonthServerMoney() != null && sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().containsKey(yearMonth)){
|
||||||
|
serverTotalAmount += sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().get(yearMonth).doubleValue();
|
||||||
|
}
|
||||||
|
//dayMap = ((Map<String, Integer>)orderMap.get("everyYearMonthPauseDay"));
|
||||||
|
if(sysOrderCommisionDayDetail.getEveryYearMonthPauseDay() != null && sysOrderCommisionDayDetail.getEveryYearMonthPauseDay().containsKey(yearMonth)){
|
||||||
|
pauseTotalDay += sysOrderCommisionDayDetail.getEveryYearMonthPauseDay().get(yearMonth).intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sysCommissionDayDetail.setServerOrderTotalCount(serverOrderCount);
|
||||||
|
sysCommissionDayDetail.setServerTotalDay(serverTotalDay);
|
||||||
|
sysCommissionDayDetail.setServerTotalAmount(getMoney(serverTotalAmount, 1));
|
||||||
|
sysCommissionDayDetail.setServerOrderPauseTotalDay(pauseTotalDay);
|
||||||
|
//获取提成比例以及计算提成
|
||||||
|
getRateByAmount(sysCommissionDayDetail);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户成交总额获取对应比例,再计算提成
|
||||||
|
* */
|
||||||
|
public void getRateByAmount(SysCommissionDayDetail sysCommissionDayDetail){
|
||||||
|
SysCommision tmpQueryCom = new SysCommision();
|
||||||
|
tmpQueryCom.setUserId(sysCommissionDayDetail.getUserId());
|
||||||
|
tmpQueryCom.setPostId(sysCommissionDayDetail.getPostId());
|
||||||
|
List<SysCommision> tmpComList = sysCommisionMapper.selectSysCommisionList(tmpQueryCom);
|
||||||
|
double orderAmount = sysCommissionDayDetail.getOrderTotalAmount().doubleValue();
|
||||||
|
sysCommissionDayDetail.setRate(0F);
|
||||||
|
sysCommissionDayDetail.setCommissionTotalAmount(getMoney(0.0D, 1));
|
||||||
|
if(tmpComList != null && tmpComList.size() > 0){
|
||||||
|
for (int i = 0; i < tmpComList.size(); i++) {
|
||||||
|
SysCommision com = tmpComList.get(i);
|
||||||
|
double cAmount = com.getAmount().floatValue();
|
||||||
|
if (orderAmount <= cAmount && i == 0) {
|
||||||
|
// 第一条规则
|
||||||
|
sysCommissionDayDetail.setRate(com.getRate());
|
||||||
|
break;
|
||||||
|
} else if (i == tmpComList.size() - 1 && orderAmount > cAmount) {
|
||||||
|
// 最后一条规则
|
||||||
|
sysCommissionDayDetail.setRate(com.getRate());
|
||||||
|
break;
|
||||||
|
} else if (cAmount < orderAmount && orderAmount <= tmpComList.get(i + 1).getAmount().floatValue()) {
|
||||||
|
// 中间规则
|
||||||
|
sysCommissionDayDetail.setRate(tmpComList.get(i + 1).getRate());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double serverAmount = sysCommissionDayDetail.getServerTotalAmount().doubleValue();
|
||||||
|
serverAmount = serverAmount * sysCommissionDayDetail.getRate() / 100D;
|
||||||
|
sysCommissionDayDetail.setCommissionTotalAmount(getMoney(serverAmount, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询2021年1月份之后所有订单,对订单进行处理,得出每笔订单的相关信息
|
||||||
|
* */
|
||||||
|
public Map<Long, List<SysOrderCommisionDayDetail>> getOrderByList(Long userId){
|
||||||
|
//查询2021年1月份之后所有订单
|
||||||
|
List<SysOrder> orderList = sysOrderMapper.selectSimpleOrderMessage(userId);
|
||||||
|
//整理出每个用户对应的订单List
|
||||||
|
Map<Long, List<SysOrderCommisionDayDetail>> userOrderResultMap = new HashMap<>();
|
||||||
|
for (SysOrder sysOrder : orderList) {
|
||||||
|
//建档时间为空、售后人员ID为空、营养师ID为空、订单金额为空或小于0,都视为异常订单
|
||||||
|
if(sysOrder.getStartTime() == null || sysOrder.getAfterSaleId() == null || sysOrder.getNutritionistId() == null
|
||||||
|
|| sysOrder.getAmount() == null || sysOrder.getAmount().doubleValue() < 0){
|
||||||
|
System.out.println("客户:"+ sysOrder.getCustomer() +",营养师:"+sysOrder.getNutritionist() + ",售后" + sysOrder.getAfterSale());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//对每笔订单进行处理,统计出该比订单在每年每月对应的服务天数、金额、暂停天数等
|
||||||
|
SysOrderCommisionDayDetail sysOrderCommisionDayDetail = statisticsOrderMessage(sysOrder);
|
||||||
|
addUserOrderResultMap(sysOrder.getAfterSaleId(), sysOrderCommisionDayDetail, userOrderResultMap);
|
||||||
|
addUserOrderResultMap(sysOrder.getNutritionistId(), sysOrderCommisionDayDetail, userOrderResultMap);
|
||||||
|
}
|
||||||
|
return userOrderResultMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID将订单添加到对应用户的订单List
|
||||||
|
* */
|
||||||
|
public void addUserOrderResultMap(Long id, SysOrderCommisionDayDetail sysOrderCommisionDayDetail, Map<Long, List<SysOrderCommisionDayDetail>> map){
|
||||||
|
if(map.containsKey(id)){
|
||||||
|
map.get(id).add(sysOrderCommisionDayDetail);
|
||||||
|
}else{
|
||||||
|
List<SysOrderCommisionDayDetail> orderMessageMapList = new ArrayList<>();
|
||||||
|
orderMessageMapList.add(sysOrderCommisionDayDetail);
|
||||||
|
map.put(id, orderMessageMapList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计每笔订单的服务开始时间、结束时间、每年每月服务天数、服务金额、服务暂停天数等信息
|
||||||
|
* */
|
||||||
|
public SysOrderCommisionDayDetail statisticsOrderMessage(SysOrder sysOrder){
|
||||||
|
//服务开始时间(客户建档时间)
|
||||||
|
LocalDate serverStartDate = DateUtils.dateToLocalDate(sysOrder.getStartTime());
|
||||||
|
//订单总服务月数
|
||||||
|
int serverMonth = sysOrder.getServeTimeId().intValue()/30;
|
||||||
|
//赠送时长
|
||||||
|
int giveDay = sysOrder.getGiveServeDay().intValue();
|
||||||
|
//订单金额
|
||||||
|
BigDecimal orderAmount = sysOrder.getAmount();
|
||||||
|
//每年每月暂停天数,key为年份加月份,如:2021年1月=20211
|
||||||
|
Map<String, Integer> everyYearMonthPauseDay = getEveryYearMonthPauseDay(sysOrder.getOrderPauseList());
|
||||||
|
//该笔订单暂停总天数
|
||||||
|
int pauseTotalDay = getTotalByMap(everyYearMonthPauseDay);
|
||||||
|
//根据开始时间、服务月数、赠送天数、暂停天数算出该笔订单服务到期时间
|
||||||
|
LocalDate serverEndDate = getServerEndDate(serverStartDate, serverMonth, giveDay, pauseTotalDay);
|
||||||
|
//计算每年每月服务天数
|
||||||
|
Map<String, Integer> everyYearMonthServerDay = getEveryYearMonthDayCount(serverStartDate, serverEndDate, everyYearMonthPauseDay);
|
||||||
|
//服务总天数
|
||||||
|
int serverDay = getTotalByMap(everyYearMonthServerDay);
|
||||||
|
//每天对应金额
|
||||||
|
BigDecimal dayMoney = getMoney(orderAmount.doubleValue()/serverDay, 1);
|
||||||
|
//每年每月对于金额
|
||||||
|
Map<String, BigDecimal> everyYearMonthServerMoney = getEveryMonthServerMoney(everyYearMonthServerDay, orderAmount, dayMoney);
|
||||||
|
|
||||||
|
SysOrderCommisionDayDetail sysOrderCommisionDayDetail = new SysOrderCommisionDayDetail();
|
||||||
|
sysOrderCommisionDayDetail.setOrderTime(DateUtils.dateToLocalDateTime(sysOrder.getOrderTime()));
|
||||||
|
sysOrderCommisionDayDetail.setName(sysOrder.getCustomer());
|
||||||
|
sysOrderCommisionDayDetail.setServerStartDate(serverStartDate);
|
||||||
|
sysOrderCommisionDayDetail.setServerEndDate(serverEndDate);
|
||||||
|
sysOrderCommisionDayDetail.setServerMonth(serverMonth);
|
||||||
|
sysOrderCommisionDayDetail.setGiveDay(giveDay);
|
||||||
|
sysOrderCommisionDayDetail.setOrderAmount(orderAmount);
|
||||||
|
sysOrderCommisionDayDetail.setServerDay(serverDay);
|
||||||
|
sysOrderCommisionDayDetail.setDayMoney(dayMoney);
|
||||||
|
sysOrderCommisionDayDetail.setEveryYearMonthPauseDay(everyYearMonthPauseDay);
|
||||||
|
sysOrderCommisionDayDetail.setEveryYearMonthServerDay(everyYearMonthServerDay);
|
||||||
|
sysOrderCommisionDayDetail.setEveryYearMonthServerMoney(everyYearMonthServerMoney);
|
||||||
|
return sysOrderCommisionDayDetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取每年每月暂停天数
|
||||||
|
* @Param list 暂停记录集合
|
||||||
|
* */
|
||||||
|
public Map<String, Integer> getEveryYearMonthPauseDay(List<SysOrderPause> list){
|
||||||
|
Map<String, Integer> pauseMap = new TreeMap<>(new MyComparator());
|
||||||
|
for (SysOrderPause sysOrderPause : list) {
|
||||||
|
if(sysOrderPause.getPauseStartDate() == null || sysOrderPause.getPauseEndDate() == null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
LocalDate pauseStartDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseStartDate());
|
||||||
|
LocalDate pauseEndDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseEndDate());
|
||||||
|
//根据暂停记录获取该条记录在每年每月的暂停天数
|
||||||
|
Map<String, Integer> orderYearMonthPauseDay = getEveryYearMonthDayCount(pauseStartDate, pauseEndDate, null);
|
||||||
|
//每条暂停记录的暂停天数进行汇总
|
||||||
|
for (String key : orderYearMonthPauseDay.keySet()) {
|
||||||
|
if(pauseMap.containsKey(key)){
|
||||||
|
pauseMap.put(key, pauseMap.get(key) + orderYearMonthPauseDay.get(key));
|
||||||
|
}else{
|
||||||
|
pauseMap.put(key, orderYearMonthPauseDay.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pauseMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Map集合中Value的总和
|
||||||
|
* */
|
||||||
|
public int getTotalByMap(Map<String, Integer> map){
|
||||||
|
int total = 0;
|
||||||
|
for(String key : map.keySet()){
|
||||||
|
total += map.get(key).intValue();
|
||||||
|
}
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单服务时间范围中每年每月服务天数,减去当月暂停天数
|
||||||
|
* @Param server_start_date 服务开始时间
|
||||||
|
* @Param server_end_date 服务到期时间
|
||||||
|
* @Param pauseDayMap 每年每月暂停天数Map
|
||||||
|
* */
|
||||||
|
public Map<String, Integer> getEveryMonthServerDay(LocalDate server_start_date, LocalDate server_end_date, Map<String, Integer> pauseDayMap){
|
||||||
|
return getEveryYearMonthDayCount(server_start_date, server_end_date, pauseDayMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单服务时间范围中每年每月服务金额
|
||||||
|
* @Param everyMonthServerDay 每年每月服务天数
|
||||||
|
* @Param orderMoney 订单总额
|
||||||
|
* @Param dayMoney 每天对于金额
|
||||||
|
* */
|
||||||
|
public Map<String, BigDecimal> getEveryMonthServerMoney(Map<String, Integer> everyMonthServerDay, BigDecimal orderMoney, BigDecimal dayMoney){
|
||||||
|
Map<String, BigDecimal > everyMonthServerMoney = new TreeMap<>(new MyComparator());
|
||||||
|
Set<String> keySet = everyMonthServerDay.keySet();
|
||||||
|
int i = 1;
|
||||||
|
double totalMoney = 0.0;
|
||||||
|
for(String key : keySet){
|
||||||
|
if(i++ != keySet.size()){
|
||||||
|
everyMonthServerMoney.put(key, getMoney(everyMonthServerDay.get(key) * dayMoney.doubleValue(), 1));
|
||||||
|
totalMoney += everyMonthServerMoney.get(key).doubleValue();
|
||||||
|
}else{
|
||||||
|
//由于小数点只保留一位,最后一个月的金额等于总额减去前几个月金额,避免总数不一致
|
||||||
|
everyMonthServerMoney.put(key, getMoney(orderMoney.doubleValue() - totalMoney, 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return everyMonthServerMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据开始日期、结束日期统计出时间范围内每年每月对应的天数
|
||||||
|
* */
|
||||||
|
public Map<String, Integer> getEveryYearMonthDayCount(LocalDate startDate, LocalDate endDate, Map<String, Integer> lessDayMap){
|
||||||
|
Map<String, Integer> everyYearMonthServerDay = new TreeMap<>(new MyComparator());
|
||||||
|
//每月开始第一天
|
||||||
|
LocalDate everyMonthFirstDate = startDate;
|
||||||
|
//每月最后一天
|
||||||
|
LocalDate everyMonthLastDate = everyMonthFirstDate.with(TemporalAdjusters.lastDayOfMonth());
|
||||||
|
int day = 0;
|
||||||
|
boolean breakFlag = false;
|
||||||
|
//写100防止死循环
|
||||||
|
for(int i = 0; i < 100; i++){
|
||||||
|
if(ChronoUnit.DAYS.between(everyMonthLastDate, endDate) >= 0){
|
||||||
|
day = Period.between(everyMonthFirstDate, everyMonthLastDate).getDays() + 1;
|
||||||
|
}else{
|
||||||
|
day = Period.between(everyMonthFirstDate, endDate).getDays() + 1;
|
||||||
|
breakFlag = true;
|
||||||
|
}
|
||||||
|
String key = everyMonthFirstDate.getYear()+""+everyMonthFirstDate.getMonth().getValue();
|
||||||
|
day -= (lessDayMap == null || lessDayMap.get(key) == null) ? 0 : lessDayMap.get(key);
|
||||||
|
everyYearMonthServerDay.put(key, day >= 0 ? day : 0);
|
||||||
|
everyMonthFirstDate = (everyMonthFirstDate.plusMonths(1));
|
||||||
|
everyMonthFirstDate = everyMonthFirstDate.of(everyMonthFirstDate.getYear(), everyMonthFirstDate.getMonthValue(), 1);
|
||||||
|
everyMonthLastDate = everyMonthFirstDate.with(TemporalAdjusters.lastDayOfMonth());
|
||||||
|
if(breakFlag){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return everyYearMonthServerDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据服务月数、赠送时长、暂停天数计算出服务截止日期
|
||||||
|
* **/
|
||||||
|
public LocalDate getServerEndDate(LocalDate server_start_date, int server_month, int give_daye, int pauseDayCount){
|
||||||
|
return server_start_date.plusMonths(server_month).plusDays(give_daye + pauseDayCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* double转为BigDecimal,保留一位小数,向下舍去
|
||||||
|
* */
|
||||||
|
public BigDecimal getMoney(double money, int n){
|
||||||
|
return new BigDecimal(money).setScale(n, RoundingMode.DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 集合排序key值比较器
|
||||||
|
* */
|
||||||
|
class MyComparator implements Comparator<String>{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(String o1, String o2) {
|
||||||
|
return Integer.parseInt(o1) - Integer.parseInt(o2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args){
|
||||||
|
DecimalFormat df = new DecimalFormat("#.#");
|
||||||
|
BigDecimal money = new BigDecimal(3300.00/91);
|
||||||
|
System.out.println(Period.between(LocalDate.of(2020,2, 28), LocalDate.of(2020,1, 27)).getDays());
|
||||||
|
System.out.println(ChronoUnit.DAYS.between(LocalDate.of(2021,2, 28), LocalDate.of(2021,3, 1)));
|
||||||
|
System.out.println(LocalDate.of(2020,1, 20).getYear());
|
||||||
|
System.out.println(LocalDate.of(2021,1, 30).plusMonths(1));
|
||||||
|
|
||||||
|
System.out.println("s" + LocalDate.of(2021,1, 30).getMonth().getValue());
|
||||||
|
|
||||||
|
System.out.println("----------------------------");
|
||||||
|
LocalDate server_end_date = LocalDate.now().plusMonths(3);
|
||||||
|
server_end_date = server_end_date.plusDays(7);
|
||||||
|
server_end_date = server_end_date.minusDays(7);
|
||||||
|
System.out.println(server_end_date);
|
||||||
|
|
||||||
|
System.out.println(LocalDate.now().getMonth().getValue());
|
||||||
|
|
||||||
|
Float f = 520.4F;
|
||||||
|
System.out.println(f * 1 / 100F);
|
||||||
|
|
||||||
|
System.out.println(new BigDecimal(f * 1 / 100F).setScale(1, RoundingMode.DOWN));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -188,4 +188,12 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectSysCommisionDayDetail" parameterType="SysCommision" resultMap="SysCommisionResult">
|
||||||
|
SELECT su.user_id,su.nick_name as user_name,sp.post_id, sp.post_code,sp.post_name FROM sys_user su
|
||||||
|
LEFT JOIN sys_user_post sup ON sup.user_id = su.user_id
|
||||||
|
LEFT JOIN sys_post sp ON sp.post_id = sup.post_id
|
||||||
|
WHERE su.del_flag = 0 AND su.status = 0 AND sp.remark = 'sale_post' AND (sp.post_code = 'after_sale' OR sp.post_code = 'nutri')
|
||||||
|
<if test="postId != null and postId != ''">and sp.post_id = #{postId}</if>
|
||||||
|
<if test="userId != null and userId != ''">and su.user_id = #{userId}</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
@ -36,6 +36,9 @@
|
|||||||
<result property="serveTimeId" column="serve_time_id"/>
|
<result property="serveTimeId" column="serve_time_id"/>
|
||||||
<result property="reviewStatus" column="review_status"/>
|
<result property="reviewStatus" column="review_status"/>
|
||||||
<result property="giveServeDay" column="give_serve_day"/>
|
<result property="giveServeDay" column="give_serve_day"/>
|
||||||
|
<!-- 非持久化字段 -->
|
||||||
|
<result property="afterSale" column="afterSale_name"></result><!-- 售后名称 -->
|
||||||
|
<result property="nutritionist" column="nutritionist_name"></result><!-- 营养师名称 -->
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectSysOrderVo">
|
<sql id="selectSysOrderVo">
|
||||||
@ -213,4 +216,75 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<resultMap type="SysOrder" id="SysOrderResultExtended">
|
||||||
|
<result property="orderId" column="order_id"/>
|
||||||
|
<result property="customer" column="customer"/>
|
||||||
|
<result property="phone" column="phone"/>
|
||||||
|
<result property="amount" column="amount"/>
|
||||||
|
<result property="weight" column="weight"/>
|
||||||
|
<result property="startTime" column="start_time"/>
|
||||||
|
<result property="pauseTime" column="pause_time"/>
|
||||||
|
<result property="status" column="status"/>
|
||||||
|
<result property="payTypeId" column="pay_type_id"/>
|
||||||
|
<result property="payType" column="pay_type"/>
|
||||||
|
<result property="preSaleId" column="pre_sale_id"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
<result property="afterSaleId" column="after_sale_id"/>
|
||||||
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="nutritionistId" column="nutritionist_id"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
<result property="nutriAssisId" column="nutri_assis_id"/>
|
||||||
|
<result property="accountId" column="account_id"/>
|
||||||
|
<result property="account" column="account"/>
|
||||||
|
<result property="plannerId" column="planner_id"/>
|
||||||
|
<result property="plannerAssisId" column="planner_assis_id"/>
|
||||||
|
<result property="operatorId" column="operator_id"/>
|
||||||
|
<result property="operatorAssisId" column="operator_assis_id"/>
|
||||||
|
<result property="recommender" column="recommender"/>
|
||||||
|
<result property="orderTime" column="order_time"/>
|
||||||
|
<result property="serveTime" column="serve_time"/>
|
||||||
|
<result property="serveTimeId" column="serve_time_id"/>
|
||||||
|
<result property="reviewStatus" column="review_status"/>
|
||||||
|
<result property="giveServeDay" column="give_serve_day"/>
|
||||||
|
<!-- 非持久化字段 -->
|
||||||
|
<result property="afterSale" column="afterSale_name"></result><!-- 售后名称 -->
|
||||||
|
<result property="nutritionist" column="nutritionist_name"></result><!-- 营养师名称 -->
|
||||||
|
<association property="orderPauseList" column="order_id" select="getOrderPauseByOrderId"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap type="SysOrderPause" id="SysOrderPauseResult">
|
||||||
|
<result property="id" column="id" />
|
||||||
|
<result property="orderId" column="order_id" />
|
||||||
|
<result property="pauseStartDate" column="pause_start_date" />
|
||||||
|
<result property="pauseEndDate" column="pause_end_date" />
|
||||||
|
<result property="reason" column="reason" />
|
||||||
|
<result property="remarks" column="remarks" />
|
||||||
|
<result property="createTime" column="create_time" />
|
||||||
|
<result property="createBy" column="create_by" />
|
||||||
|
<result property="updateTime" column="update_time" />
|
||||||
|
<result property="updateBy" column="update_by" />
|
||||||
|
<result property="delFlag" column="del_flag" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="getOrderPauseByOrderId" parameterType="Long" resultMap="SysOrderPauseResult">
|
||||||
|
select id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag from sys_order_pause sop
|
||||||
|
where del_flag = 0 and order_id = #{order_id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 查询订单信息(用于计算提成) -->
|
||||||
|
<select id="selectSimpleOrderMessage" resultMap="SysOrderResultExtended">
|
||||||
|
select o.order_id,o.order_time,o.customer,o.review_status,o.amount,o.serve_time_id,o.give_serve_day,o.after_sale_id,su_sale.nick_name as afterSale_name,o.nutritionist_id,su_nutritionist.nick_name as nutritionist_name,sc.create_time as start_time
|
||||||
|
from sys_order o
|
||||||
|
left join sys_user su_sale on su_sale.user_id = o.after_sale_id and su_sale.del_flag = 0
|
||||||
|
left join sys_user su_nutritionist on su_nutritionist.user_id = o.nutritionist_id and su_nutritionist.del_flag = 0
|
||||||
|
left join sys_customer sc on sc.phone = o.phone and sc.del_flag = 0
|
||||||
|
where o.order_time >= '2021-01-01'
|
||||||
|
<if test="userId != null">
|
||||||
|
and (su_sale.user_id = #{userId} or su_nutritionist.user_id = #{userId})
|
||||||
|
</if>
|
||||||
|
order by o.order_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
@ -68,3 +68,12 @@ export function getSalesman() {
|
|||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询按天计算提成明细(营养师、售后)
|
||||||
|
export function detailDayCommision(query) {
|
||||||
|
return request({
|
||||||
|
url: '/custom/commision/detailDay',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
264
stdiet-ui/src/views/custom/commision/detail_day/index.vue
Normal file
264
stdiet-ui/src/views/custom/commision/detail_day/index.vue
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
|
<el-form-item label="岗位" prop="postId">
|
||||||
|
<el-select v-model="queryParams.postId" placeholder="请选择岗位" clearable size="small" @change="searchPostChange">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in postIdOptions"
|
||||||
|
:key="dict.dictValue"
|
||||||
|
:label="dict.dictLabel"
|
||||||
|
:value="dict.dictValue"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="业务员" prop="userId">
|
||||||
|
<el-select v-model="queryParams.userId" placeholder="请选择业务员" clearable size="small">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in searchUserIdOptions"
|
||||||
|
:key="dict.dictValue"
|
||||||
|
:label="dict.dictLabel"
|
||||||
|
:value="dict.dictValue"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!--<el-form-item label="月份" prop="month">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="month"
|
||||||
|
@change="monthRangeChange"
|
||||||
|
type="month"
|
||||||
|
placeholder="选择月">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>-->
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<!--<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-download"
|
||||||
|
size="mini"
|
||||||
|
@click="handleExport"
|
||||||
|
v-hasPermi="['commision:detail:export']"
|
||||||
|
>导出
|
||||||
|
</el-button>
|
||||||
|
</el-col>-->
|
||||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table v-loading="loading" :data="commisionList"
|
||||||
|
@selection-change="handleSelectionChange">
|
||||||
|
<el-table-column label="业务员" align="center" prop="nickName">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.nickName }}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="岗位" align="center" prop="postName"/>
|
||||||
|
<el-table-column label="总提成" align="center" prop="totalCommissionAmount">
|
||||||
|
<template scope="scope">
|
||||||
|
{{scope.row.totalCommissionAmount}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="已发放提成" align="center" prop="totalHasSentCommissionAmount">
|
||||||
|
<template scope="scope">
|
||||||
|
{{scope.row.totalHasSentCommissionAmount}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="未发放提成" align="center" prop="totalNotSentCommissionAmount">
|
||||||
|
<template scope="scope">
|
||||||
|
{{scope.row.totalNotSentCommissionAmount}}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" @click="openFormDialog('查看发放计划', scope.row)">查看发放计划</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<!--<el-table-column label="提成" align="center" prop="commissionTotalAmount"></el-table-column>-->
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
v-show="total>0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog title="提成发放计划" :visible.sync="sendCommissionPlanTable" width="25%" align="center">
|
||||||
|
<el-table :data="sendCommissionPlan">
|
||||||
|
<el-table-column property="nickName" label="姓名" width="150"></el-table-column>
|
||||||
|
<el-table-column property="yearMonth" label="发放年月" width="200"></el-table-column>
|
||||||
|
<el-table-column property="yearMonthCommission" label="提成金额" width="100"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
detailDayCommision,
|
||||||
|
exportCommision,
|
||||||
|
} from "@/api/custom/commision";
|
||||||
|
|
||||||
|
import {getOptions} from "@/api/custom/order";
|
||||||
|
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "CommisionDayDetail",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 显示搜索条件
|
||||||
|
showSearch: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
//
|
||||||
|
month: dayjs(),
|
||||||
|
// 业务提成比例表格数据
|
||||||
|
commisionList: [],
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 业务员字典
|
||||||
|
userIdOptions: [],
|
||||||
|
//
|
||||||
|
postIdOptions: [],
|
||||||
|
//
|
||||||
|
totalUserIdOptions: [],
|
||||||
|
//
|
||||||
|
searchUserIdOptions: [],
|
||||||
|
//
|
||||||
|
options: {},
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
userId: null,
|
||||||
|
postId: null,
|
||||||
|
},
|
||||||
|
sendCommissionPlanTable: false,
|
||||||
|
sendCommissionPlan:[]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
getOptions().then(response => {
|
||||||
|
this.options = response.data.reduce((opts, cur) => {
|
||||||
|
if (cur.postCode != ('after_sale') && cur.postCode != 'nutri') {
|
||||||
|
return opts;
|
||||||
|
}
|
||||||
|
if (!opts[cur.postId]) {
|
||||||
|
opts[cur.postId] = [];
|
||||||
|
}
|
||||||
|
opts[cur.postId].push({dictValue: cur.userId, dictLabel: cur.userName});
|
||||||
|
|
||||||
|
if (!this.postIdOptions.some(opt => opt.dictValue === cur.postId)) {
|
||||||
|
this.postIdOptions.push({dictValue: cur.postId, dictLabel: cur.postName});
|
||||||
|
}
|
||||||
|
if (!this.totalUserIdOptions.some(opt => opt.dictValue === cur.userId)) {
|
||||||
|
this.totalUserIdOptions.push({dictValue: cur.userId, dictLabel: cur.userName});
|
||||||
|
}
|
||||||
|
return opts;
|
||||||
|
}, {});
|
||||||
|
this.postIdOptions = this.postIdOptions.sort((a, b) => a.dictValue - b.dictValue);
|
||||||
|
this.searchUserIdOptions = this.totalUserIdOptions.slice();
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询业务提成比例列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
const dateRange = [dayjs(this.month).startOf('month').format('YYYY-MM-DD'), dayjs(this.month).endOf('month').format('YYYY-MM-DD')];
|
||||||
|
console.log(dateRange)
|
||||||
|
detailDayCommision(this.addDateRange(this.queryParams, dateRange)).then(response => {
|
||||||
|
this.commisionList = response.rows;
|
||||||
|
this.total = response.total;
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 业务员字典翻译
|
||||||
|
userIdFormat(row, column) {
|
||||||
|
return this.selectDictLabel(this.userIdOptions, row.userId);
|
||||||
|
},
|
||||||
|
// 表单重置
|
||||||
|
reset() {
|
||||||
|
this.userIdOptions = [];
|
||||||
|
this.resetForm("form");
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm("queryForm");
|
||||||
|
this.handleQuery();
|
||||||
|
this.searchUserIdOptions = this.totalUserIdOptions.slice();
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.ids = selection.map(item => item.ruleId)
|
||||||
|
this.single = selection.length !== 1
|
||||||
|
this.multiple = !selection.length
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
const queryParams = this.queryParams;
|
||||||
|
this.$confirm('是否确认导出所有业务提成比例数据项?', "警告", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(function () {
|
||||||
|
return exportCommision(queryParams);
|
||||||
|
}).then(response => {
|
||||||
|
this.download(response.msg);
|
||||||
|
}).catch(function () {
|
||||||
|
});
|
||||||
|
},
|
||||||
|
monthRangeChange(time) {
|
||||||
|
this.month = time;
|
||||||
|
},
|
||||||
|
postChange(postId) {
|
||||||
|
this.userIdOptions = this.options[postId];
|
||||||
|
},
|
||||||
|
searchPostChange(postId) {
|
||||||
|
if (!postId) {
|
||||||
|
this.searchUserIdOptions = this.totalUserIdOptions.slice();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.searchUserIdOptions = this.options[postId];
|
||||||
|
this.queryParams.userId = null;
|
||||||
|
},
|
||||||
|
openFormDialog(title, row){
|
||||||
|
this.sendCommissionPlan = row.sendDetailList;
|
||||||
|
var total = 0;
|
||||||
|
this.sendCommissionPlan.forEach(function(e){
|
||||||
|
e.nickName = row.nickName;
|
||||||
|
e.yearMonth = e.yearMonth.substring(0,4) + "年" + e.yearMonth.substring(4)+"月";
|
||||||
|
total += e.yearMonthCommission;
|
||||||
|
});
|
||||||
|
//this.sendCommissionPlan.push({'': })
|
||||||
|
this.sendCommissionPlanTable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
Loading…
x
Reference in New Issue
Block a user