-
1505121235 数据老手Lv5
发表于2020-4-2 16:37
楼主
本帖最后由 1505121235 于 2020-4-2 16:39 编辑
需求场景:周报任务,i填报平台默认周日为每周的第一天,假如希望周六为每周的第一天,从本周六 至 下周五 为一周,最佳报表期是本周,这种该如何实现呢?实现方法:
任务属性-报表期设置-最佳报表期脚本
复制代码
需求场景:周报任务,i填报平台默认周日为每周的第一天,假如希望周六为每周的第一天,从本周六 至 下周五 为一周,最佳报表期是本周,这种该如何实现呢?实现方法:
任务属性-报表期设置-最佳报表期脚本
- import java.util.Calendar;
- import java.util.Date;
- import com.esen.i.bbq.impl.BbqWeek;
- public static String getBestBbq(Date t) {
- Calendar d = Calendar.getInstance();
- d.setFirstDayOfWeek(Calendar.SATURDAY); // 星期六是这个星期的第一天,设置之后,无论这个月星晴六之前有几天,都会算作一周,从星期六开始算作第二周
- d.setTime(t);
- int yy = d.get(Calendar.YEAR); // 获取年
- int mm = d.get(Calendar.MONTH) - Calendar.JANUARY + 1; // 获取月
- int week = d.get(Calendar.WEEK_OF_MONTH); // 获取这个星期是这个月的第几周
- int weekMax = BbqWeek.getMaxWeekInMonth(yy, mm);
- int dayofWeek = d.get(Calendar.DAY_OF_WEEK) - 1; // 获取这一天是这个星期的第几天
- if (dayofWeek <= 5) { // 星期五及之前填写上个星期
- if (week <= 1) { // 如果是第一周
- if (mm <= 1) { // 如果是一月,那么填写日期应为去年12月最后一周
- weekMax = BbqWeek.getMaxWeekInMonth(yy - 1, 12);
- return (yy - 1) + "12" + "0" + weekMax;
- } else {
- weekMax = BbqWeek.getMaxWeekInMonth(yy, mm - 1);
- if (mm - 1 <= 9) {
- return yy + "0" + (mm - 1) + "0" + weekMax;
- } else {
- return yy + "" + (mm - 1) + "0" + weekMax;
- }
- }
- } else { // 如果是第二周及之后
- if (mm - 1 <= 9) {
- return yy + "0" + mm + "0" + (week - 1);
- } else {
- return yy + "" + mm + "0" + (week - 1);
- }
- }
- } else {
- if (mm <= 9) {
- return yy + "0" + mm + "0" + (week - 1);
- } else {
- return yy + "" + mm + "0" + (week - 1);
- }
- }
- }
- bestBbq = getBestBbq(new Date());