瀏覽代碼

Procedury dla grafiku

a.binder 11 年之前
父節點
當前提交
d4129802f6
共有 1 個文件被更改,包括 105 次插入0 次删除
  1. 105 0
      SE/superedit-DB_PROCEDURES_CREATE.php

+ 105 - 0
SE/superedit-DB_PROCEDURES_CREATE.php

@@ -889,8 +889,113 @@ where au.A_STATUS='NORMAL' and cps.ID is not null
 ";
 
 
+$sql['procedure_GRAFIK_PRACY_FILL_DATE_drop']="drop procedure if exists GRAFIK_PRACY_FILL_DATE";
+$sql['procedure_GRAFIK_PRACY_FILL_DATE_create']="CREATE PROCEDURE GRAFIK_PRACY_FILL_DATE(start_date DATE, end_date DATE)
+BEGIN
+  DECLARE crt_date DATE;
+  DECLARE USER  TEXT;
+  DECLARE COUNT_USERS integer;
+  DECLARE USERS_counter int;
+  DECLARE ACL_GROUP TEXT;
+  DECLARE USER_GROUP TEXT;
+
+ 
+  SET @USERS_counter = 0;
+  SET USERS_counter = 0;
+  SET @ACL_GROUP = '';
+  SET @USER_GROUP = '';
+  SELECT COUNT(`ID`) into COUNT_USERS FROM ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL';
+
+WHILE USERS_counter < COUNT_USERS DO
+  SET crt_date=start_date;
+
+ PREPARE stmt FROM \"SELECT ADM_ACCOUNT into @USER from ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL' limit ?,1;\";
+ EXECUTE stmt USING @USERS_counter ;
+DEALLOCATE PREPARE stmt;
+      
+ PREPARE stmt FROM \"SELECT DEFAULT_ACL_GROUP into @ACL_GROUP from ADMIN_USERS WHERE EMPLOYEE_TYPE='Pracownik' and A_STATUS='NORMAL' limit ?,1;\";
+ EXECUTE stmt USING @USERS_counter ;
+DEALLOCATE PREPARE stmt;
+
+
+SELECT GROUP_CONCAT(concat('[',cap.ID_ZASOB,']')) into @USER_GROUP from ADMIN_USERS au 
+   LEFT JOIN CRM_AUTH_PROFILE as cap on cap.REMOTE_ID=au.ID and cap.REMOTE_TABLE='ADMIN_USERS' and cap.A_STATUS in ('NORMAL','WAITING')
+   WHERE au.ADM_ACCOUNT=@USER ;
+
+
+  WHILE crt_date < end_date DO
+    
+
+
+
+INSERT ignore INTO GRAFIK_PRACY (`L_APPOITMENT_USER`,`DATE`,`WEEK`,`DAY_OF_WEEK`,`A_CLASSIFIED`,`A_ADM_COMPANY`,`USER_GROUPS`) VALUES(@USER , crt_date,date_format(crt_date,'%v'),date_format(crt_date,'%W'), @ACL_GROUP,@ACL_GROUP, @USER_GROUP );
+SET crt_date = ADDDATE(crt_date, INTERVAL 1 DAY);
+      
+       END WHILE;
+      SET USERS_counter = USERS_counter +1;
+      SET @USERS_counter = @USERS_counter +1;
+
+  END WHILE;
+END";
+
+
+
+$sql['event_delete_GRAFIK_PRACY_FILL_DATE']="drop event if exists GRAFIK_PRACY_FILL_DATE_event";
+$sql['event_create_GRAFIK_PRACY_FILL_DATE']="CREATE DEFINER=root@localhost EVENT GRAFIK_PRACY_FILL_DATE_event
+    ON SCHEDULE EVERY 1 DAY 
+    STARTS str_to_date( date_format(now(), '%Y%m%d 0400'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
+    DO 
+     BEGIN 
+     	call GRAFIK_PRACY_FILL_DATE(date_format(now(),'%Y-%m-01'),date_format(DATE_ADD(now(),INTERVAL + 2 MONTH ),'%Y-%m-01'));
+
+     END 
+    
+     ";
+
+
+
+$sql['view__GRAFIK_PRACY']="create or replace definer=`root`@`localhost` view GRAFIK_PRACY_view as 
+
+SELECT  ID,YEAR( DATE ) as rok , MONTH( DATE ) as miesiac,
+`L_APPOITMENT_USER` , SUM( TIME_TO_SEC( TIMEDIFF(  `END_WORK_HOUR` ,  `START_WORK_HOUR`  ) ) )/3600  AS GODZIN_PLANOWO,
 
+ SUM( TIME_TO_SEC( TIMEDIFF(  `END_WORK_HOUR_CONFIRM` ,  `START_WORK_HOUR_CONFIRM`  ) ) )/3600  AS GODZIN_FAKTYCZNIE,
 
+SUM(
+if(
+TIME_TO_SEC( TIMEDIFF(  `START_WORK_HOUR_CONFIRM`, `START_WORK_HOUR`  ) ) >0,
+TIME_TO_SEC( TIMEDIFF(  `START_WORK_HOUR_CONFIRM`, `START_WORK_HOUR`  ) ),
+0
+)
+ )/3600 as GODZIN_SPOZNIEN,
+
+SUM(
+if(
+TIME_TO_SEC( TIMEDIFF(  `END_WORK_HOUR`, `END_WORK_HOUR_CONFIRM`  ) ) >0,
+TIME_TO_SEC( TIMEDIFF(  `END_WORK_HOUR`, `END_WORK_HOUR_CONFIRM`  ) ),
+0
+)
+ )/3600 as GODZIN_WYJSC_PRZED_CZASEM,
+
+ sum(`BREAK1_MINUTES`+`BREAK2_MINUTES`)/60 as CZAS_PRZERW ,
+
+sum(
+ if(BREAK1_MINUTES>0,1,0)+
+ if(BREAK2_MINUTES>0,1,0)
+) as ILOSC_PRZERW ,
+
+
+sum(
+if( TIME_TO_SEC( TIMEDIFF(  `START_WORK_HOUR_CONFIRM`, `START_WORK_HOUR`  ) ) >0,1,0)
+) as DNI_W_PRACY  , 
+
+count(ID) as ILOSC_DNI
+
+FROM  `GRAFIK_PRACY` 
+WHERE 1 
+ GROUP  BY L_APPOITMENT_USER, YEAR( DATE ) , MONTH( DATE ) 
+
+";