食谱计划优化、按天计算提成优化、图片logo修改

This commit is contained in:
xiezhijun
2021-01-19 17:35:30 +08:00
parent 53bc0d22fd
commit 160dc5abfd
12 changed files with 184 additions and 37 deletions

View File

@ -29,6 +29,7 @@ public class SysRecipesPlan extends BaseEntity
private String customer;
//非持久化字段,客户手机号
@Excel(name = "客户手机号")
private String phone;
/** 食谱开始日期 */

View File

@ -79,4 +79,11 @@ public interface SysRecipesPlanMapper
* @return
*/
List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan);
/**
* 根据订单ID查询食谱计划
* @param sysRecipesPlan
* @return
*/
List<SysRecipesPlan> selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan);
}

View File

@ -80,4 +80,11 @@ public interface ISysRecipesPlanService
* @return
*/
List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan);
/**
* 根据订单ID查询食谱计划
* @param sysRecipesPlan
* @return
*/
List<SysRecipesPlan> selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan);
}

View File

@ -123,6 +123,7 @@ 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);
@ -225,10 +226,10 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
//整理出每个用户对应的订单List
Map<Long, List<SysOrderCommisionDayDetail>> userOrderResultMap = new HashMap<>();
for (SysOrder sysOrder : orderList) {
//建档时间为空、售后人员ID为空、营养师ID为空、订单金额为空或小于0,都视为异常订单
//开始时间为空、售后人员ID为空、营养师ID为空、订单金额为空,都视为异常订单
if(sysOrder.getOrderTime() == null || sysOrder.getStartTime() == null || sysOrder.getServeTimeId() == null
|| (sysOrder.getAfterSaleId() == null && sysOrder.getNutritionistId() == null)
|| sysOrder.getAmount() == null || sysOrder.getAmount().doubleValue() < 0){
|| sysOrder.getAmount() == null){
//System.out.println("客户:"+ sysOrder.getCustomer() +",营养师:"+sysOrder.getNutritionist() + ",售后" + sysOrder.getAfterSale());
continue;
}
@ -436,7 +437,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
* double转为BigDecimal保留一位小数向下舍去
* */
public BigDecimal getMoney(Double money, int n){
return new BigDecimal(money).setScale(n, BigDecimal.ROUND_HALF_UP);
return new BigDecimal(money.toString()).setScale(n, BigDecimal.ROUND_DOWN);
}
/**
@ -459,7 +460,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
nf.setRoundingMode(RoundingMode.DOWN);
System.out.println(Double.parseDouble(nf.format(s)));
System.out.println( new BigDecimal(nf.format(s)).doubleValue());*/
System.out.println(new BigDecimal(s).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
/*System.out.println(new BigDecimal(s).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
LocalDate localDate = LocalDate.of(2020, 1, 15);
System.out.println(ChronoUnit.MONTHS.between(localDate, LocalDate.now()));
@ -467,6 +468,14 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
System.out.println(localDate.getDayOfWeek());
System.out.println(localDate.getDayOfYear());
System.out.println(ChronoUnit.DAYS.between(LocalDate.of(2021, 1,14), LocalDate.now()));
System.out.println(ChronoUnit.DAYS.between(LocalDate.of(2021, 1,14), LocalDate.now()));*/
/*System.out.println(ts(109792.8 * 6 / 100D, 1));
System.out.println(ts(6587.8,2).doubleValue());*/
System.out.println(ts(1.919,1).doubleValue());
}
public static BigDecimal ts(Double money, int n){
return new BigDecimal(money.toString()).setScale(n, BigDecimal.ROUND_DOWN);
}
}

View File

@ -1,6 +1,7 @@
package com.stdiet.custom.service.impl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.List;
@ -196,7 +197,8 @@ public class SysOrderServiceImpl implements ISysOrderService {
* @param sysOrder
*/
private void setOrderServerEndDate(SysOrder sysOrder){
sysOrder.setServerEndTime(DateUtils.localDateToDate(sysCommissionDayService.getServerEndDate(sysOrder)));
LocalDate serverEndDate = sysCommissionDayService.getServerEndDate(sysOrder);
sysOrder.setServerEndTime(serverEndDate != null ? DateUtils.localDateToDate(serverEndDate) : null);
}
/**

View File

@ -133,10 +133,11 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService
return;
}
SysOrder sysOrder = sysOrderService.selectSysOrderById(orderId);
//订单为空、金额小于0不进行食谱生成、更新
if(sysOrder == null){
//订单为空、金额小于0不进行食谱生成、更新只对2021年开始的订单进行食谱计划生成
if(sysOrder == null && DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear() > 2020){
return;
}
System.out.println(DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear());
try{
//获取redis中该订单对应的锁
if(synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))){
@ -281,4 +282,14 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService
public List<SysRecipesPlan> selectPlanListByCondition(SysRecipesPlan sysRecipesPlan){
return sysRecipesPlanMapper.selectPlanListByCondition(sysRecipesPlan);
}
/**
* 根据订单ID查询食谱计划
* @param sysRecipesPlan
* @return
*/
@Override
public List<SysRecipesPlan> selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan){
return sysRecipesPlanMapper.selectPlanListByOrderId(sysRecipesPlan);
}
}

View File

@ -96,11 +96,11 @@
</update>
<delete id="deleteSysRecipesPlanById" parameterType="Long">
update sys_recipes_plan set del_flag = 1 where id = #{id}
delete from sys_recipes_plan where id = #{id}
</delete>
<delete id="deleteSysRecipesPlanByIds" parameterType="String">
update sys_recipes_plan set del_flag = 1 where id in
delete from sys_recipes_plan where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
@ -118,7 +118,7 @@
<!-- 根据订单ID删除对应食谱计划 -->
<update id="delRecipesPlanByOrderId" parameterType="String">
update sys_recipes_plan set del_flag = 1 where order_id in
delete from sys_recipes_plan where order_id in
<foreach item="orderId" collection="array" open="(" separator="," close=")">
#{orderId}
</foreach>
@ -133,10 +133,38 @@
LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND su_nutritionist_assis.del_flag = 0
WHERE srp.del_flag = 0
<if test="orderId != null">AND srp.order_id = #{orderId}</if>
<if test="customer != null and customer != ''">AND sr.customer like concat('%',#{customer},'%')</if>
<if test="sendFlag != null">AND srp.send_flag = #{sendFlag}</if>
<if test="customer != null and customer != ''">AND (sr.customer like concat('%',#{customer},'%') OR sr.phone like concat('%',#{customer},'%'))</if>
<if test="nutritionistId != null">AND su_nutritionist.user_id = #{nutritionistId}</if>
<if test="nutritionistAssisId != null">AND su_nutritionist_assis.user_id = #{nutritionistAssisId}</if>
<if test="startDate != null and endDate != null ">AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') AND date_format(#{endDate},'%y%m%d') </if>
ORDER BY srp.order_id DESC,srp.id ASC
</select>
<!-- 食谱计划、订单表联查 -->
<!--<select id="selectPlanListByCondition" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
SELECT sr.order_id,sr.customer,sr.phone,su_nutritionist.nick_name nutritionist,su_nutritionist_assis.nick_name AS nutritionist_assis,sr.start_time,sr.server_end_time
FROM sys_order sr
LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = sr.nutritionist_id AND su_nutritionist.del_flag = 0
LEFT JOIN sys_user su_nutritionist_assis ON su_nutritionist_assis.user_id = sr.nutri_assis_id AND su_nutritionist_assis.del_flag = 0
<where>
<if test="orderId != null">AND sr.order_id = #{orderId}</if>
<if test="customer != null and customer != ''">AND (sr.customer like concat('%',#{customer},'%') OR sr.phone like concat('%',#{customer},'%'))</if>
<if test="nutritionistId != null">AND su_nutritionist.user_id = #{nutritionistId}</if>
<if test="nutritionistAssisId != null">AND su_nutritionist_assis.user_id = #{nutritionistAssisId}</if>
<if test="startDate != null and endDate != null ">
AND sr.order_id IN ( SELECT order_id FROM sys_recipes_plan srp WHERE srp.del_flag = 0 AND srp.start_date BETWEEN date_format(#{startDate},'%y%m%d') AND date_format(#{endDate},'%y%m%d'))
</if>
</where>
ORDER BY sr.order_id DESC
</select>-->
<!-- 根据订单ID查询食谱计划 -->
<select id="selectPlanListByOrderId" parameterType="SysRecipesPlan" resultMap="SysRecipesPlanResult">
SELECT srp.id,srp.order_id,sr.customer,sr.phone, srp.start_date,srp.end_date,srp.send_flag,srp.send_time
FROM sys_recipes_plan srp
LEFT JOIN sys_order sr ON sr.order_id = srp.order_id
WHERE srp.del_flag = 0 AND srp.order_id = #{orderId}
<if test="sendFlag != null">AND srp.send_flag = #{sendFlag}</if>
ORDER BY srp.id ASC
</select>
</mapper>