提成计算优化,新增提成计算开始时间

This commit is contained in:
xiezhijun 2021-03-25 17:26:47 +08:00
parent 63ab5bdc85
commit dffca92564
6 changed files with 35 additions and 19 deletions

View File

@ -255,6 +255,11 @@ public class SysOrder extends BaseEntity {
/** 售后二开提成单, 0非提成单 1提成单 */
private Integer afterSaleCommissOrder;
/** 提成计算开始时间,与食谱计划开始时间区分开 */
@JsonFormat(pattern = "yyyy-MM-dd")
//@Excel(name = "提成计算开始时间,与食谱计划开始时间区分开", width = 30, dateFormat = "yyyy-MM-dd")
private Date commissStartTime;
/** 删除标记 */
private Integer delFlag;

View File

@ -108,14 +108,6 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
* 根据用户ID统计出该用户在该月所有订单的服务数量服务总天数服务订单总额暂停总天数
* **/
public void dealServerOrderCommissionDetail(List<SysOrderCommisionDayDetail> orderDetailList, SysCommissionDayDetail sysCommissionDayDetail){
/*System.out.println("------------------开始--------------");
if(orderDetailList != null){
for(SysOrderCommisionDayDetail sysOrderCommisionDayDetail : orderDetailList){
System.out.println("姓名:"+sysOrderCommisionDayDetail.getName() + " 总天数:"+sysOrderCommisionDayDetail.getServerDay()
+" 每天金额:"+sysOrderCommisionDayDetail.getDayMoney() + " 一月服务天数:"+sysOrderCommisionDayDetail.getEveryYearMonthServerDay().get("20211")
+" 一月对应金额:"+ sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().get("20211"));
}
}*/
//总提成
BigDecimal totalCommissionAmount = new BigDecimal(0);
//已发放提成
@ -135,7 +127,6 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
}
commissionMonthSet.addAll(sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().keySet());
}
//System.out.println("总提成:"+sysCommissionDayDetail.getNickName()+"-"+orderAmount.get("20211"));
//获取提成比例以及计算提成
Map<String, Float> rateMap = getRateByAmount(sysCommissionDayDetail.getUserId(), sysCommissionDayDetail.getPostId(), orderAmount);
@ -170,7 +161,6 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
sendDetailList.add(map);
}
i++;
}
}
sysCommissionDayDetail.setTotalCommissionAmount(totalCommissionAmount);
@ -239,8 +229,8 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
//整理出每个用户对应的订单List
Map<Long, List<SysOrderCommisionDayDetail>> userOrderResultMap = new HashMap<>();
for (SysOrder sysOrder : orderList) {
//开始时间为空售后人员ID为空营养师ID都为空订单金额为空都视为异常订单
if(sysOrder.getOrderTime() == null || sysOrder.getStartTime() == null || sysOrder.getServeTimeId() == null
//提成开始时间为空售后人员ID为空营养师ID都为空订单金额为空都视为异常订单
if(sysOrder.getOrderTime() == null || sysOrder.getCommissStartTime() == null || sysOrder.getServeTimeId() == null
|| (sysOrder.getAfterSaleId() == null && sysOrder.getNutritionistId() == null)
|| sysOrder.getAmount() == null){
//System.out.println("客户:"+ sysOrder.getCustomer() +",营养师:"+sysOrder.getNutritionist() + ",售后" + sysOrder.getAfterSale());
@ -275,8 +265,8 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
* 统计每笔订单的服务开始时间结束时间每年每月服务天数服务金额服务暂停天数等信息
* */
public SysOrderCommisionDayDetail statisticsOrderMessage(SysOrder sysOrder){
//服务开始时间(客户建档时间)
LocalDate serverStartDate = DateUtils.dateToLocalDate(sysOrder.getStartTime());
//提成计算开始时间与食谱计划开始时间可能不同
LocalDate serverStartDate = DateUtils.dateToLocalDate(sysOrder.getCommissStartTime());
//订单总服务月数
int serverMonth = sysOrder.getServeTimeId().intValue()/30;
//服务天数(不满一个月的零头)

View File

@ -17,7 +17,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import java.util.List;
@ -75,7 +77,8 @@ public class SysOrderServiceImpl implements ISysOrderService {
Date orderTime = DateUtils.getNowDate();
sysOrder.setCreateTime(orderTime);
sysOrder.setCreateBy(SecurityUtils.getUsername());
//sysOrder.setOrderTime(orderTime);
//新增订单时食谱开始时间和提成计算开始时间保持一致
sysOrder.setCommissStartTime(sysOrder.getStartTime());
//计算服务到期时间
setOrderServerEndDate(sysOrder);
sysOrder.setOrderId(Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, orderTime)));
@ -204,6 +207,19 @@ public class SysOrderServiceImpl implements ISysOrderService {
sysOrder.setOperatorId(null);
sysOrder.setOperatorAssisId(null);
}
LocalDate oldStartDate = oldSysOrder.getStartTime() != null ? DateUtils.dateToLocalDate(oldSysOrder.getStartTime()) : null;
LocalDate nowStartDate = sysOrder.getStartTime() != null ? DateUtils.dateToLocalDate(sysOrder.getStartTime()) : null;
//判断修改的开始时间是否为上个月时间为上个月时间则不修改提成开始时间
if (oldStartDate != null && nowStartDate != null
&& ChronoUnit.DAYS.between(oldStartDate, nowStartDate) != 0) {
//本月第一天
LocalDate monthStart = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
//System.out.println(monthStart.toString());
//旧的开始时间和新的开始时间都要需要大于本月第一天
if(ChronoUnit.DAYS.between(monthStart, oldStartDate) >= 0 && ChronoUnit.DAYS.between(monthStart, nowStartDate) >= 0){
sysOrder.setCommissStartTime(sysOrder.getStartTime());
}
}
//更新订单
int row = sysOrderMapper.updateSysOrder(sysOrder);
// 审核后的订单才生成食谱

View File

@ -47,6 +47,7 @@
<result property="orderMoneyType" column="order_money_type" />
<result property="mainOrderId" column="main_order_id" />
<result property="afterSaleCommissOrder" column="after_sale_commiss_order" />
<result property="commissStartTime" column="commiss_start_time" />
<result property="delFlag" column="del_flag" />
<!-- 非持久化字段 -->
@ -219,6 +220,7 @@
<if test="orderMoneyType != null">order_money_type,</if>
<if test="mainOrderId != null">main_order_id,</if>
<if test="afterSaleCommissOrder != null">after_sale_commiss_order,</if>
<if test="commissStartTime != null">commiss_start_time,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
@ -259,6 +261,7 @@
<if test="orderMoneyType != null">#{orderMoneyType},</if>
<if test="mainOrderId != null">#{mainOrderId},</if>
<if test="afterSaleCommissOrder != null">#{afterSaleCommissOrder},</if>
<if test="commissStartTime != null">#{commissStartTime},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
@ -303,6 +306,7 @@
<if test="orderMoneyType != null">order_money_type = #{orderMoneyType},</if>
<if test="mainOrderId != null">main_order_id = #{mainOrderId},</if>
<if test="afterSaleCommissOrder != null">after_sale_commiss_order = #{afterSaleCommissOrder},</if>
<if test="commissStartTime != null">commiss_start_time = #{commissStartTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
</trim>
where order_id = #{orderId}
@ -362,6 +366,7 @@
<result property="orderMoneyType" column="order_money_type" />
<result property="mainOrderId" column="main_order_id" />
<result property="afterSaleCommissOrder" column="after_sale_commiss_order" />
<result property="commissStartTime" column="commiss_start_time" />
<result property="delFlag" column="del_flag" />
<!-- 非持久化字段 -->
@ -389,9 +394,9 @@
where del_flag = 0 and order_id = #{order_id}
</select>
<!-- 查询2021年开始的已审核的订单信息用于计算提成 -->
<!-- 查询2021年开始的已审核的订单信息用于计算提成,请勿随意改动 -->
<select id="selectSimpleOrderMessage" resultMap="SysOrderResultExtended" parameterType="SysCommision">
select o.order_id,o.order_time,o.start_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
select o.order_id,o.order_time,o.commiss_start_time,o.server_end_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
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

View File

@ -180,7 +180,7 @@ export default {
pageSize: 10,
userId: null,
postId: null,
reviewStatus: "yes"
reviewStatus: null
},
};
},

View File

@ -266,7 +266,7 @@ export default {
pageSize: 20,
userId: null,
postId: null,
reviewStatus: "yes",
reviewStatus: null,
},
sendCommissionPlanTable: false,
sendCommissionPlan: {},