业务规制
每7天一跟踪,如设置时间区间1月1日~1月18日中 1月8日、1月15日时出现“今天”跟踪。如果今天是1月9日,但1-8没有跟踪则显示1-8日。如果跟踪显示1-15。如果上一个回合你没有跟踪显示上一回合的时间。数学差就纠结。想了好久终于有一个算法。名词与公式
跟踪回合数:
这个表示记录我的跟踪的第几个7天。比如1-8我跟踪了标记跟回天数为1 (1月8日-1月1日)=7天 7/7=1 又如 (1月15日-1月1日)=14天 14/7=2
距今总天数:
是指设置的那天也就1月1日离今天多少天 。比如今天为 1月5日 这个值=(1月5日-1月1日)=4天
应该跟踪日期=((跟踪回合数+1)*7-距今总天数)
#查出7天一跟踪的项目 并排序
SELECT dp.id,dp.modifyAppointmentDate,dp.nextVisitTime,dp.prevVisitTime,dp.confirmOrderTime,
date_add(sysdate(),interval ((ifnull(dp.followFlag,0)+1)*7-DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)) day),
((ifnull(dp.followFlag,0)+1)*7-DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)) as i,
dp.supervisorId, bu.CNAME_ as supervisorName,dp.customerTel,dp.customerName,dp.houseVillage,dp.city, DATEDIFF(SYSDATE(),dp.modifyAppointmentDate) days,
DATEDIFF(SYSDATE(),dp.modifyAppointmentDate)%7 AS followDays,dp.followFlag,dc.customercar_USERNAME_
FROM dowell_project dp
LEFT JOIN bdf2_user bu ON bu.USERNAME_ = dp.supervisorId
LEFT JOIN dowell_customer dc ON dc.id = dp.customerId
WHERE dp.`status` <> 4 AND dp.supervisorId IS NOT NULL AND DATEDIFF(dp.nextVisitTime,dp.modifyAppointmentDate)>=7 AND DATEDIFF(dp.nextVisitTime, SYSDATE())>=0 AND modifyAppointmentDate IS NOT NULL
ORDER BY CASE WHEN days>=7 AND followDays!=dp.followFlag THEN 0 ELSE 1 END DESC
,followDays ASC