i@report控制填报时间(报表期)

587
0

liyzh 数据小白Lv1

发表于2022-6-10 18:35

楼主
本帖最后由 liyzh 于 2022-6-10 18:35 编辑

1、适用场景:
月报,每个月的几号之前可以填当月的,几号之后只能填下个月的
解决方案:
在该任务的任务属性中进行报表期设置(要写脚本的话注意不能勾选报表期设置)脚本如下:
  1. IF(DAY(TODAY())>9,str(left(od(today(),'m+1'),6)^"--"),str(left(today(),6)^"--"))
复制代码

效果图如下:

2、适用场景
固定每个月的某几天可以填报,其余时间不允许填报
解决方案:
只要客户想实现每月某些天可以填,这个脚本都使用,不区分什么报表期(这个脚本里面默认5号到15号允许填报,可以自己把这两个数值改变,而且该脚本没考虑到当月没有31号,2月没有30号,平年2月没有29号这些情况。)
脚本如下:
  1. import java.util.Calendar;

  2. import com.esen.ei.bbq.BbqFuncs;
  3. import com.esen.ei.rp.Task;
  4. import com.esen.ei.server.IReportServer;
  5. import com.esen.util.StrFunc;


  6. boolean allowOnlineFill = StrFunc.str2boolean(task.getProperty("allowOnlineFill","true"));
  7. Calendar cal = Calendar.getInstance();
  8. int dd = cal.get(Calendar.DATE); // 获取天
  9. int startDate = 5; // 允许填报日期区间,开始于每月第几天
  10. int endDate = 15; // 允许填报日期区间,结束于每月第几天
  11. try {
  12. if (dd >= startDate && dd <= endDate) { // 在允许填报的日期范围内
  13. if (!allowOnlineFill) { // 如果任务当前不允许填报,那么需要设置为可填报
  14. task.setProperty("allowOnlineFill", "true");
  15. task.getServerPpt().saveProperties(); // 保存任务允许填报服务器属性
  16. System.out.println("更新任务" + task.getCaption() + "(" + task.getServerId() + ")允许填报");
  17. }
  18. System.out.println("今天(" + StrFunc.formatDateTime(cal.getTime()) + ")允许填报任务" + task.getCaption() + "(" + task.getServerId() + ")");
  19. } else { // 不在允许填报的日期范围内,且允许填报,需要设置为不允许填报
  20. if (allowOnlineFill) {
  21. task.setProperty("allowOnlineFill", "false");
  22. task.getServerPpt().saveProperties(); // 保存任务允许填报服务器属性
  23. System.out.println("更新任务" + task.getCaption() + "(" + task.getServerId() + ")不允许填报");
  24. }
  25. System.out.println("今天(" + StrFunc.formatDateTime(cal.getTime()) + ")不允许填报任务" + task.getCaption() + "(" + task.getServerId() + ")");
  26. }
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. bestBbq = BbqFuncs.getBestBbq(task.getBbqType(), task);
复制代码
脚本位置:
效果图如下:通过这样达到不允许在线填报的效果

3、适用场景
任务填报界面的报表期只显示2005年1月、2月、3月的报表期,其它报表期不显示。
报表期类型:月报

解决方案:                             
任务属性-》报表期设置中定义报表期显示脚本,例如显示2005年1月、2月、3月的报表期,
脚本如下:

复制代码
  1. bbqs.clear();
  2. bbqs.add("200501--");
  3. bbqs.add("200502--");
  4. bbqs.add("200503--");
复制代码
此处是以月报为例,如果还想添加其他报表期,继续在脚本后面添加“bbqs.add("报表期")”即可。
注意:只有当任务设置了不允许填写最佳报表期外的其他报表期时,此脚本才会生效!
效果图如下:




最近看过此主题的会员

wxw

jrjrjr

绿水青山

缱绻

大艺术家

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号