提成计算优化,新增提成计算开始时间
This commit is contained in:
		| @@ -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; | ||||
|  | ||||
|   | ||||
| @@ -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; | ||||
|         //服务天数(不满一个月的零头) | ||||
|   | ||||
| @@ -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); | ||||
|         // 审核后的订单才生成食谱 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user