提成计算优化,新增提成计算开始时间
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);
 | 
			
		||||
        // 审核后的订单才生成食谱
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user