XcglRptDao_activitiOvertimeStats.sql 1.5 KB

123456789101112131415161718192021222324252627282930313233
  1. select
  2. realname,
  3. count(*) as overcount,
  4. case when max(overdaycount)=0 then 1 else max(overdaycount) end as maxdaycount
  5. from (
  6. select
  7. bu.realname as realName
  8. ,hi.START_TIME_ + INTERVAL :tookTime day as shouldDoneTime
  9. ,hivar.text_ as title,
  10. case when hivardept.text_ is not null then hivardept.text_ else dept.glcdesc end as departname ,
  11. proc.START_TIME_ as starttime,
  12. hi.start_time_ as ustarttime,
  13. datediff(now() , hi.start_time_) -:tookTime as overdaycount
  14. from
  15. ACT_HI_TASKINST hi
  16. left join act_hi_varinst hivar on hi.PROC_INST_ID_ =hivar.PROC_INST_ID_ and hivar.NAME_ ='bpm_biz_title'
  17. left join act_hi_varinst hivardept on hi.PROC_INST_ID_ =hivardept.PROC_INST_ID_ and hivardept.NAME_ ='dep_name'
  18. left join act_hi_varinst hivarcreate on hi.PROC_INST_ID_ =hivarcreate.PROC_INST_ID_ and hivarcreate.NAME_ ='create_by'
  19. left join act_hi_procinst proc on proc.PROC_INST_ID_ = hivar.PROC_INST_ID_
  20. inner join t_s_base_user bu on hi.ASSIGNEE_=bu.username
  21. left join t_s_base_user startu on startu.username = proc.start_user_id_ and startu.delete_flag = 0
  22. left join t_s_user_org uo on uo.user_id = startu.id and uo.ifpluralism = 0
  23. left join t_s_depart dept on dept.id = uo.org_id
  24. left join t_bus_user_personnel per on per.userid=bu.id
  25. where per.leave_date is null
  26. and hi.START_TIME_<now() +INTERVAL 0-:tookTime day
  27. and hi.END_TIME_ is null
  28. and left(hi.START_TIME_ ,4) > '2019'
  29. and hivarcreate.text_ <> hi.ASSIGNEE_ ) temp
  30. group by realname
  31. order by overcount desc