Python版中控系统考勤管理

#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)

时间: 2024-12-20 09:40:32

Python版中控系统考勤管理的相关文章

《小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付》

<小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付> 之前发布了不少微赢的多用户微信网站源码,今天为我的小伙伴们准备的是功能非常强悍,最新版小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM,其功能非常不错的,安装也很简单.目前不少用微信管家的童鞋,估计都知道微信管家几百M的源码,实际上很多都是多余的文件,而且安装起来也是超麻烦.小猪CMS(pigcms)多用户微信营销系统也是个非常棒的选择哦. 这

Salesforce 如何把签卡数据同步到中控系统

一.考勤界面 二.分析 1)同步数据首先要得到数据,如何得到数据呢? 第一步:创建签卡数据的触发器 第二步:创建同步日志类,把所有的签卡信息都添加到同步日志里 2)从数据源得到数据后以Json格式传递 3)创建一个SpringMVC的Maven工程, a.以阿里巴巴的Druid配置数据源, b.创建个定时器,每隔一分钟从Salesforce的日志里读取信息 c.在Dao层里写数据同步的代码 d.测试 三.同步示意图: 四.触发器代码: trigger attendanceSyncTrigger

系统权限管理设计 (转)

权限设计(初稿)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案.      2. 目标:      直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要简单,包括概念数量上的简单和意义上的简单还有功能上的简单.想用一个权限系统解

制作移动版Win8系统

两条命令就能在不破坏原有磁盘格局的情况下安装好移动版Windows 8系统,这样简单的事情你相信吗?曾过用Win8的Windows To Go功能以及借助专用的WTG辅助工具在Win7下制作移动版Win8的两种方法.然而,前者需要有一个32GB以上的U盘或移动盘,并需在Win 8企业版下装载ISO安装镜像才能进行制作,这对于仍然在用Win7系统的用户有些为难.后者则除了要去找WTG辅助工具外,也至少需要20GB以上的移动存储设备,万一手头的旧设备不足20GB空间,岂不就失望了? 其实,有更简单的

LAMP一键安装(Python版)

去年有出一个python整的LAMP自动安装,不过比较傻,直接调用的yum 去安装了XXX...不过这次一样有用shell..我也想如何不调用shell 来弄一个LAMP自动安装部署啥啥的..不过尼玛智商有限,没搞定,暂且分享一下 先说说目前的缺陷     这个脚本总体来说是调用一个字典,组成这个字典是最花费时间的,实际代码到是没几行,本来想把Nginx 的部署也加进去,什么memcached phpmyadmin apc 这样的常用组件作为功能加进去,尼玛,时间不够,只能打打酱油,包括最后我也

Python作业-选课系统

Python作业-选课系统 学习 python Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 days6作业-选课系统: 角色:学校.学员.课程.讲师 作业需求 1.创建北京.上海 2 所学校 2.创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3.课程包含,周期,价格,通过学校创建课程 4.通过学校创建班级, 班级关联课程.

简易版支付系统部署(单节点) 吴水成

一.前期准备 1.MySQL数据库的安装:MySQL-5.6.22,自行安装 2.Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装 3.Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装 4.Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装 5.持续集成管理平台(SVN.Nexus.Maven.Hudson)的安装: Dubbo视频教程--基础篇--第11节至18节 6.Dubbo视频教程--高级篇--第21节

系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555) 1. 前言: 权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 2. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重

Dubbo高级篇教程--支付系统开发 之 简易版支付系统部署(单节点)

一.前期准备 1.MySQL数据库的安装:MySQL-5.6.22,自行安装 2.Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装 3.Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装 4.Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装 5.持续集成管理平台(SVN.Nexus.Maven.Hudson)的安装: Dubbo视频教程--基础篇--第11节至18节 6.Dubbo视频教程--高级篇--第21节