BOSS要远程考勤。只有几个人而已。然后用AAU写了一个考勤的,RUBY这个是查询MYSQL,然后发送邮件到人事那边用的(以附件方式发)。代码如下。
#!/usr/bin/ruby
require 'mysql'
require 'time'
require 'net/smtp'
require 'mailfactory'
csv_str = "id,name,start work,get off work,hour\n"
day = Time.now.strftime("%Y-%m-%d")
filename = "/home/163/check_in/" + Time.now.to_s.split[0] + ".csv"
db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, 'utf8')
db = Mysql.real_connect("192.168.1.4", "kq", "123123", "kq123", 3306)
db.query("SET NAMES utf8")
user = db.query("select * from username")
def writefile(str,filename)
aFile = File.new(filename,"w")
aFile.puts str
aFile.close
end
def sendmail(text, file)
mail = MailFactory.new
mail.from = "test@163.com"
mail.subject = text
mail.text = text
mail.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_message mail.to_s(),'test@163.com','you@163.com'
end
end
while row = user.fetch_row do
next if row[0] == '1'
time_max = db.query("select max(time) from kqtime where time>\"#{day + " 06:00"}\" and time <\"#{day + " 23:00"}\" and userid=#{row[0]}").fetch_row[0]
time_min = db.query("select min(time) from kqtime where time>\"#{day + " 06:00"}\" and time <\"#{day + " 23:00"}\" and userid=#{row[0]}").fetch_row[0]
if time_min.nil? && time_max.nil?
csv_str = csv_str + row[0] + "," + row[1] + ",,,0.0\n"
elsif time_min.nil?
csv_str = csv_str + row[0] + "," + row[1] + "," + time_min.to_s.split[-1][0..-4] + ",,0.0\n"
elsif time_max.nil?
csv_str = csv_str + row[0] + "," + row[1] + ",," + time_max.to_s.split[-1][0..-4] + ",0.0\n"
else
time_ok = Time.parse(time_max.to_s) - Time.parse(time_min.to_s)
min = time_ok % (60)
if time_ok < 3600 && time_min.to_s.split(':')[0][-2..-1].to_i < 13
csv_str = csv_str + row[0] + "," + row[1] + "," + time_min.to_s.split[-1][0..-4] + ",,0.0\n"
elsif time_ok < 3600 && time_max.to_s.split(':')[0][-2..-1].to_i > 13
csv_str = csv_str + row[0] + "," + row[1] + ",," + time_max.to_s.split[-1][0..-4] + ",0.0\n"
else
min = time_ok % (60)
if min < 15
min = time_ok.div(60).div(60) + 0.0
elsif min >= 15 && min < 45
min = time_ok.div(60).div(60) + 0.5
elsif min >= 45
min = time_ok.div(60).div(60) + 1.0
end
csv_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"
end
end
end
writefile(csv_str, filename)
sendmail(Time.now.to_s.split[0] + " Check-In", filename)
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。