diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java index 07534dbd4..40f178e46 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java @@ -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; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java index 95cc237a1..02e223550 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java @@ -108,14 +108,6 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { * 根据用户ID统计出该用户在该月所有订单的服务数量、服务总天数、服务订单总额、暂停总天数 * **/ public void dealServerOrderCommissionDetail(List 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 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> 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; //服务天数(不满一个月的零头) diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java index 27c17c8e9..9ee2c1a41 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java @@ -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); // 审核后的订单才生成食谱 diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java index 035811af6..87629416e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java @@ -136,9 +136,9 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { || sysOrder.getAmount().floatValue() <= 0 || sysOrder.getStartTime() == null || sysOrder.getServerEndTime() == null) { return; } - //判断是否提成单,拆分单中的副单,体验单 + //判断是否提成单,拆分单中的副单,体验单,定金单 if(sysOrder.getAfterSaleCommissOrder().intValue() == 1 || ("1".equals(sysOrder.getOrderType()) && sysOrder.getMainOrderId().intValue() != 0) || - "2".equals(sysOrder.getOrderType())){ + "2".equals(sysOrder.getOrderType()) || "1".equals(sysOrder.getOrderMoneyType())){ System.out.println("---------------------不生成食谱------------------------"); return; } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml index dff79ab11..0d38fd545 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml @@ -47,6 +47,7 @@ + @@ -219,6 +220,7 @@ order_money_type, main_order_id, after_sale_commiss_order, + commiss_start_time, del_flag, @@ -259,6 +261,7 @@ #{orderMoneyType}, #{mainOrderId}, #{afterSaleCommissOrder}, + #{commissStartTime}, #{delFlag}, @@ -303,6 +306,7 @@ order_money_type = #{orderMoneyType}, main_order_id = #{mainOrderId}, after_sale_commiss_order = #{afterSaleCommissOrder}, + commiss_start_time = #{commissStartTime}, del_flag = #{delFlag}, where order_id = #{orderId} @@ -362,6 +366,7 @@ + @@ -389,9 +394,9 @@ where del_flag = 0 and order_id = #{order_id} - +