#coding:utf-8
import win32com.client
import sys
import smtplib
import urllib
import os
import string
import chardet
import openpyxl
import time
from datetime import datetime
from collections import Counter
zk = win32com.client.Dispatch(‘zkemkeeper.ZKEM.1‘)
if not zk.Connect_Net(‘172.10.14.224‘, 4370):
print ("Connect Error")
sys.exit(1)
zk.SSR_GetAllUserInfo(1)
uid = {}
while 1:
machenum, EnrollNumber, username, other, privilege, dwEnable = zk.SSR_GetAllUserInfo(1)
if not machenum:
break
else:
if dwEnable:
uid[EnrollNumber] = str(username.split(u‘\x00‘)[0].encode(‘gbk‘), encoding = "gbk")
#wb=openpyxl.Workbook(optimized_write=True)
#ws=wb.create_sheet()
#for key,value in sorted(uid.items()):
# ws.append([int(key),value])
#wb.save(filename=‘D:\data.xlsx‘)
#for key,value in sorted(uid.items()):
# print (key,value)
checkin = {}
last_month = time.localtime()[1]-1 or 12
if last_month == 12:
cur_year = time.localtime()[0]-1
else:
cur_year = time.localtime()[0]
if zk.ReadAllGLogData(1): #read All checkin data
while 1:
dwMachineNumber, dwEnrollNumber, dwVerifyMode, dwInOutMode, dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond, dwWorkcode = zk.SSR_GetGeneralLogData(1)
if not dwMachineNumber:
break
if cur_year == dwYear and 12 == dwMonth:
if dwEnrollNumber not in checkin:
checkin[dwEnrollNumber] = {}
if dwDay in checkin[dwEnrollNumber]:
checkin[dwEnrollNumber][dwDay].append(str(dwHour)+‘:‘+str(dwMinute))
else:
checkin[dwEnrollNumber][dwDay] = [str(dwHour)+‘:‘+str(dwMinute)]
zk.Disconnect()
xk = win32com.client.Dispatch(‘zkemkeeper.ZKEM.1‘)
if not xk.Connect_Net(‘172.10.14.237‘, 4370):
print ("Connect Error")
sys.exit(1)
xk.SSR_GetAllUserInfo(1)
xid = {}
while 1:
machenum, EnrollNumber, username, other, privilege, dwEnable = xk.SSR_GetAllUserInfo(1)
if not machenum:
break
else:
if dwEnable:
xid[EnrollNumber] = str(username.split(u‘\x00‘)[0].encode(‘gbk‘), encoding = "gbk")
#wb=openpyxl.Workbook(optimized_write=True)
#ws=wb.create_sheet()
#for key,value in sorted(uid.items()):
# ws.append([int(key),value])
#wb.save(filename=‘D:\data.xlsx‘)
#for key,value in sorted(uid.items()):
# print (key,value)
xheckin = {}
last_month = time.localtime()[1]-1 or 12
if last_month == 12:
cur_year = time.localtime()[0]-1
else:
cur_year = time.localtime()[0]
if xk.ReadAllGLogData(1): #read All checkin data
while 1:
dwMachineNumber, dwEnrollNumber, dwVerifyMode, dwInOutMode, dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond, dwWorkcode = xk.SSR_GetGeneralLogData(1)
if not dwMachineNumber:
break
if cur_year == dwYear and 12 == dwMonth:
if dwEnrollNumber not in xheckin:
xheckin[dwEnrollNumber] = {}
if dwDay in xheckin[dwEnrollNumber]:
xheckin[dwEnrollNumber][dwDay].append(str(dwHour)+‘:‘+str(dwMinute))
else:
xheckin[dwEnrollNumber][dwDay] = [str(dwHour)+‘:‘+str(dwMinute)]
xk.Disconnect()
def user(d1, d2):
u = dict(d1)
u.update(d2)
return u
def check(d1, d2):
c = dict(d1)
c.update(d2)
return c
finaluser=user(uid,xid)
finalcheck=check(checkin,xheckin)
finaluser[‘54‘]=‘54‘
fid = open("d:\log.xls", "a")
for i in sorted(finalcheck.keys()):
for key,value in sorted(finalcheck[i].items()):
print(finaluser[i],key,value)
if datetime.strptime(str(value[0]), ‘%H:%M‘) >datetime.strptime(‘14:00‘, ‘%H:%M‘):
print(str(finaluser[i])+‘ ‘,‘12月‘+str(key)+‘日‘+‘ ‘,‘未打卡‘+‘ ‘,str(value[len(value)-1]), file=fid)
if datetime.strptime(str(value[len(value)-1]), ‘%H:%M‘) <datetime.strptime(‘14:00‘, ‘%H:%M‘):
print(str(finaluser[i])+‘ ‘,‘12月‘+str(key)+‘日‘+‘ ‘,str(value[0])+‘ ‘,‘未打卡‘, file=fid)
if datetime.strptime(str(value[len(value)-1]), ‘%H:%M‘) >datetime.strptime(‘14:00‘, ‘%H:%M‘) and datetime.strptime(str(value[0]), ‘%H:%M‘) <datetime.strptime(‘14:00‘, ‘%H:%M‘):
print(str(finaluser[i])+‘ ‘,‘12月‘+str(key)+‘日‘+‘ ‘,str(value[0])+‘ ‘,str(value[len(value)-1]), file=fid)