BOSS要远程考勤。只有几个人而已。然后用AAU写了一个考勤的,RUBY这个是查询MYSQL,然后发送邮件到人事那边用的(以附件方式发)。代码如下。

#!/usr/bin/rubyrequire'mysql'require'time'require'net/smtp'require'mailfactory'csv_str="id,name,startwork,getoffwork,hour\n"day=Time.now.strftime("%Y-%m-%d")filename="/home/163/check_in/"+Time.now.to_s.split[0]+".csv"db=Mysql.initdb.options(Mysql::SET_CHARSET_NAME,'utf8')db=Mysql.real_connect("192.168.1.4","kq","123123","kq123",3306)db.query("SETNAMESutf8")user=db.query("select*fromusername")defwritefile(str,filename)aFile=File.new(filename,"w")aFile.putsstraFile.closeenddefsendmail(text,file)mail=MailFactory.newmail.from="test@163.com"mail.subject=textmail.text=textmail.attach(file);mail.to='you@163.com'acct='test@163.com'domain="163.com"pass='123123'Net::SMTP.start('smtp.163.com',25,domain,acct,pass,:login)do|smtp|smtp.send_messagemail.to_s(),'test@163.com','you@163.com'endendwhilerow=user.fetch_rowdonextifrow[0]=='1'time_max=db.query("selectmax(time)fromkqtimewheretime>\"#{day+"06:00"}\"andtime<\"#{day+"23:00"}\"anduserid=#{row[0]}").fetch_row[0]time_min=db.query("selectmin(time)fromkqtimewheretime>\"#{day+"06:00"}\"andtime<\"#{day+"23:00"}\"anduserid=#{row[0]}").fetch_row[0]iftime_min.nil?&&time_max.nil?csv_str=csv_str+row[0]+","+row[1]+",,,0.0\n"elsiftime_min.nil?csv_str=csv_str+row[0]+","+row[1]+","+time_min.to_s.split[-1][0..-4]+",,0.0\n"elsiftime_max.nil?csv_str=csv_str+row[0]+","+row[1]+",,"+time_max.to_s.split[-1][0..-4]+",0.0\n"elsetime_ok=Time.parse(time_max.to_s)-Time.parse(time_min.to_s)min=time_ok%(60)iftime_ok<3600&&time_min.to_s.split(':')[0][-2..-1].to_i<13csv_str=csv_str+row[0]+","+row[1]+","+time_min.to_s.split[-1][0..-4]+",,0.0\n"elsiftime_ok<3600&&time_max.to_s.split(':')[0][-2..-1].to_i>13csv_str=csv_str+row[0]+","+row[1]+",,"+time_max.to_s.split[-1][0..-4]+",0.0\n"elsemin=time_ok%(60)ifmin<15min=time_ok.div(60).div(60)+0.0elsifmin>=15&&min<45min=time_ok.div(60).div(60)+0.5elsifmin>=45min=time_ok.div(60).div(60)+1.0endcsv_str=csv_str+row[0]+","+row[1]+","+time_min.to_s.split[-1][0..-4]+","+time_max.to_s.split[-1][0..-4]+","+min.to_s+"\n"endendendwritefile(csv_str,filename)sendmail(Time.now.to_s.split[0]+"Check-In",filename)