根據指紋開啟記錄,計算員工加班時間

2021-07-06 00:14:49 字數 3334 閱讀 5345

首先,原始記錄比較簡單,就是excel 表

就是這種形式記錄

目前需求是這樣

1.公司目前加班常態化,周一至周五8:30-17:30算正式上班,17:30-20:00算加班,加夠2小時算錢,否則不算。

加班時長按8:30開始計算,早來不算。

2.週六上班的時間都算加班時間。

3.周一至周五如果請假缺勤,算付數。

根據這個需求

寫了如下儲存過程

begin

declare a varchar(32);

declare i int default 1;

declare d varchar(50);

declare cur1 cursor for select distinct 姓名 from 上班;

set @staday1 = '2015-9-12';

set @staday2 = '2015-9-19';

set @rest1 = '2015-9-13';

set @rest2 = '2015-9-20';

open cur1;

fetch cur1 into a;

while (a is not null) do 

set  i =1;

#每月最大天數不一致,十月將此值調整為32

while i<31 do

set d = concat('2015-09-',cast(i as char(10)));

set @daytype = (select type from datetype where dd = d);

set @q = (select 

`get0.5`(

if ( (a.`日期`=@staday1 or a.`日期`=@staday2)  , (time_to_sec(b.`時間`) - time_to_sec(a.`時間`))/3600  ,

if (a.`時間`>'8:30',  (time_to_sec(b.`時間`) - time_to_sec(a.`時間`)-32400)/3600,

(time_to_sec(b.`時間`) - time_to_sec('8:30')-32400)/3600)) 

) from 上班 as a  join `下班` as b on a.`姓名` = b.`姓名`  and a.`日期` = b.`日期`  where a.姓名 = a  and a.日期= d);

set @v =

case 

when  @daytype='staday' then @q

when @daytype='restday' then @q

when @daytype is null then if(@q is null,-8,@q)

else

@qend;           

insert into test1 values (a,d,@v,@daytype);

set i = i+1;

end while ;

fetch cur1 into a;

end while;

close cur1;

end其中daytype 表

其中 get0.5函式

begin

declare a float;

set a =

case 

when `num` <0 and  `num`  > -2 then 0

when `num`

when `num` >= 0 and `num` <2 then 0

when `num` >= 2 and `num` <2.25 then 2

when `num` >= 2.25 and `num` <2.75 then 2.5

when `num` >= 2.75 and `num` <3.25 then 3

when `num` >= 3.25 and `num` < 3.75 then 3.5

when `num` >= 3.75 and `num` < 4.25 then 4

when `num` >= 4.25 and `num` < 4.75 then 4.5

when `num` >= 4.75 and `num` < 5.25 then 5

when `num` >= 5.25 and `num` < 5.75 then 5.5

when `num` >= 5.75 and `num` < 6.25 then 6

when `num` >= 6.25 and `num` < 6.75 then 6.5

when `num` >= 6.75 and `num` < 7.25 then 7

when `num` >= 7.25 and `num` < 7.75 then 7.5

when `num` >= 7.75 and `num` < 8.25 then 8

when `num` >= 8.25 and `num` < 8.75 then 8.5

when `num` >= 8.75 and `num` < 9.25 then 9

when `num` >= 9.25 and `num` < 9.75 then 9.5

when `num` >= 9.75 and `num` < 10.25 then 10

when `num` >= 10.25 and `num` < 10.75 then 10.5

when `num` >= 10.75 and `num` < 11.25 then 11

when `num` >= 11.25 and `num` < 11.75 then 11.5

when `num` >= 11.75 and `num` < 12.25 then 12

when `num` >= 12.25 and `num` < 12.75 then 12.5

when `num` >= 12.75 and `num` < 13.25 then 13

when `num` >= 13.25 and `num` < 13.75 then 13.5

when `num` >= 13.75 and `num` < 14.25 then 14

when `num` >= 14.25 and `num` < 14.75 then 14.5

when `num` >= 14.75 and `num` < 15.25 then 15

when `num` >= 15.25 and `num` < 15.75 then 15.5

when `num` >= 15.75 and `num` < 16.25 then 16

else

0end;

return a;

end結果如下

指紋識別除錯記錄

文件是之前寫的,因為當時按壓式指紋識別都沒有量產,原廠 仍在除錯階段,拿到的是不完善版本。配置gpio.涉及到6個gpio spi cs clk,mo mi,rst,int.飛線浪費了很多時間。還有乙個是這個晶元有2個電源,1.8v和3.3v,datasheet上原理圖上是要接上3.3v的。實際拿到...

開啟域成員指紋登入功能

由於目前越來越多新電腦自帶指紋識別功能,因此出現需要使用指紋登入的需求。而預設狀態下,所有域成員的指紋登入許可權是關閉的,以下是關於如何開啟域成員指紋登入功能的方法。在域控伺服器上開啟組策略管理器gpmc.msc,為方便開啟以下所有的 關鍵是懶,不想逐個測試單獨開啟域使用者的生物特徵登入是否能實現相...

vue ui 開啟無效記錄

換了臺電腦,輸入vue ui 無法開啟圖形化介面 1 首先vue ui 沒成功 我找到vue.cmd路徑配置到環境變數依舊沒有解決 然後使用vue h 顯示沒有vue ui這個命令 重新安裝npm i g vue cli 開啟命令列 vue ui 視覺化介面迅速開啟 一些常見問題記錄 在專案中執行的...