|
|
本帖最后由 echochen 于 2013-12-4 18:08 编辑
Q:平台有没有封装好的函数去获取工作分钟数????
A:类似具体做法您可以在CalendarProcessBean类下添加一个方法,类似如下图所示:
该方式具体的代码如下:
- public double countTimesOfWorkingDayskimi(Date startDate, Date endDate, String calendar) throws Exception {
- double count = 0;
- CalendarVO vo = (CalendarVO) doView(calendar);
- boolean isNegative = false;
- if (endDate != null && startDate != null) {
-
- //***************限制计算时间的年份为当前年份的前后10年start*******************
- Calendar start = Calendar.getInstance();
- start.setTime(new Date());
- start.add(Calendar.YEAR, -10);
- Date pre = start.getTime();
- start.add(Calendar.YEAR, 20);
- Date after = start.getTime();
- if(startDate.before(pre) || startDate.after(after) ||
- endDate.before(pre) || endDate.after(after)){
- //startDate或endDate任意一个小于当前年份的前10年 或者 大于当前年份的后10年
- return 0.00;
- }
- //****************限制计算时间的年份为当前年份的前后10年end******************
-
- if (startDate.compareTo(endDate) == 1) {
- isNegative = true;
- Date temp = startDate;
- startDate = endDate;
- endDate = temp;
- }
- Date currDate = startDate;
-
- // 处理开始日期剩余时间
- boolean isStart = true;
- while (currDate.compareTo(endDate) <= 0) {
-
- DayPart dayPart = vo.findDayPart(currDate);
-
- if (dayPart != null) {
- Calendar cald = Calendar.getInstance();
- cald.setTime(currDate);
- cald.set(Calendar.HOUR_OF_DAY, dayPart.getToHour());
- cald.set(Calendar.MINUTE, dayPart.getToMinute());
- boolean flag = cald.getTime().compareTo(endDate) <= 0;
-
- if (flag) {
- count += dayPart.getRemainingMinutes(currDate);
- } else if (dayPart.includes(currDate)) {
- // 处理结束日期剩余时间
- Calendar cald2 = Calendar.getInstance();
- cald2.setTime(endDate);
- int fromHour = cald2.get(Calendar.HOUR_OF_DAY);
- int fromMinute = cald2.get(Calendar.MINUTE);
- int toHour = dayPart.getFromHour();
- int toMinute = dayPart.getFromMinute();
- if (isStart) {
- cald2 = Calendar.getInstance();
- cald2.setTime(startDate);
- toHour = cald2.get(Calendar.HOUR_OF_DAY);
- toMinute = cald2.get(Calendar.MINUTE);
- isStart = false;
- }
- count += (fromHour - toHour) * 60 + (fromMinute - toMinute);
- }
- }
- isStart = false;
- currDate = vo.findNextStartDate(currDate);
- }
- }
- count = Math.round(count * 100.0) / 100.0 ;
- if (isNegative)
- return -count;
- return count;
- }
复制代码 添加完成后再平台调用代码如下:- var starttime =getItemValueAsDate("开始日期");
- var endtime =getItemValueAsDate("结束日期");
- var calendarid ="11e3-251f-5b633995-a1e5-f3a8d2f87a7b";
- var cprocess=new Packages.cn.myapps.core.workcalendar.calendar.ejb.CalendarProcessBean();
- var rtn=0;
- println(starttime+" =====starttime=="+endtime+" =====endtime=");
- if(starttime!=null && endtime!=null){
- rtn=cprocess.countTimesOfWorkingDayskimi(starttime,endtime,calendarid);
- }
- rtn;
复制代码 效果图请查看图:
对应帖子链接:http://www.teemlink.com/bbs/view ... %26amp%3Btypeid%3D2 |
|