def login(): if request.method == "POST": username = request.form["username"] password = request.form["password"] if (username == ''): flash("用户名不能为空") elif (password == ''): flash("密码不能为空") else: value = md5(password) user = User.query.filter( db.or_( db.and_(User.username == username, User.password == value), db.and_(User.truename == username, User.password == value), db.and_(User.EnrollNumber == username, User.password == value))).first() if not user: flash('账号或密码错误!') else: login_user(user, remember=True) # menus = dict(menu=MenuRole.query.filter_by(RoleID=current_user.RoleID).outerjoin(Menu, MenuRole.MenuID == Menu.ID)) flash("登陆成功") return redirect(request.args.get("next") or url_for('.index')) return render_template("login.html")
def s_tequan(st, ed): stt = datetime.datetime.strptime(st, '%Y-%m-%d') edt = datetime.datetime.strptime(ed, '%Y-%m-%d') users = User.query.filter(User.DepID != None).all() # 循环每个用户 for item in users: leaves = tequan.query.filter( db.and_(tequan.StartTime >= st, tequan.EndTime <= ed, tequan.LeaveUserId == item.userid)).all() for i in range(0, len(leaves)): # jiange = (leaves[i].EndTime - leaves[i].StartTime).days # print(type(leaves[i].StartTime)) sql = "update t_shidao set zhuangtai=" + str( leaves[i].Category ) + " where userid=" + str(item.userid) + " and sttime >= '" + str( leaves[i].StartTime) + "' and sttime <= '" + str( leaves[i].EndTime ) + "' and zhuangtai<>0 or userid=" + str( item.userid) + " and edtime >= '" + str( leaves[i].StartTime) + "' and edtime<= '" + str( leaves[i].EndTime) + "' and zhuangtai<>0 " print(sql) db.session.execute(sql) db.session.commit() print("特权生成完成!")
def get_var(pos): role = getrole() menuRole = str(role.Menus).split(',') dt = Menu.query.filter(db.and_(Menu.ID.in_(menuRole)), Menu.ParentPos == int(pos)).order_by( Menu.Position).all() return dt
def get_sbdowndata(): data = db.session.query(db.func.count( machinesstate.id).label("count")).filter( db.and_( machinesstate.sj >= (datetime.now() + timedelta(days=-2)).strftime("%Y-%m-%d"), machinesstate.zt != "下载完成")).first() return data.count
def get_parentmenu(): role = getrole() menuRole = str(role.Menus).split(',') dt = Menu.query.filter(Menu.ID.in_(menuRole)).all() list = [] for item in dt: if item.ParentPos not in list: list.append(item.ParentPos) # print(list) dt = Menu.query.filter( db.and_(Menu.Position.in_(list), Menu.ParentPos == 10000)).order_by(Menu.Position).all() # print(dt) return dt
def s_chidaozaotui(st, ed): stt = datetime.datetime.strptime(st, '%Y-%m-%d') edt = datetime.datetime.strptime(ed, '%Y-%m-%d') delshidaosql = "delete from t_shidao where riqi BETWEEN '" + st + "' and '" + ed + "'" db.session.execute(delshidaosql) delkuanggongsql = "delete from t_kuanggong where riqi BETWEEN '" + st + "' and '" + ed + "'" db.session.execute(delkuanggongsql) delsql = "delete from t_chidaozaotui where convert(varchar(10),date,121) BETWEEN '" + st + "' and '" + ed + "'" db.session.execute(delsql) holidayssql = "UPDATE t_yingdao set zhuangtai=dbo.SumlistGetLeaveID(d_HOLIDAYS.CatID) from d_HOLIDAYS where convert(varchar(10),t_yingdao.riqi ,121) between convert(varchar(10),d_HOLIDAYS.STARTTIME,121) and convert(varchar(10),Dateadd(day,d_HOLIDAYS.DURATION-1,d_HOLIDAYS.STARTTIME),121)" db.session.execute(holidayssql) db.session.commit() users = User.query.filter(User.DepID != None).all() # 循环每个用户 for item in users: userid = item.userid EnrollNumber = item.EnrollNumber ShiftID = item.ShiftID CycleID = item.CycleID StartDate = item.StartDate yingdaolist = yingdao.query.filter( db.and_(yingdao.riqi.between(stt, edt), yingdao.userid == userid)).all() schiftlist = db.session.query( shift.SchClassList).filter(shift.ID == ShiftID).first() if schiftlist != None: sclist = schiftlist.SchClassList.split(',') schclasslist = schclass.query.filter( schclass.schClassid.in_(sclist)).all() for item in yingdaolist: # 记录没有指纹的数量 ifkuanggong = 0 # 是否是中午 ifzhongwu = 0 # 循环每一天的数据,如果等于8,就说明这一天上班。 wuzw = [] # 循环上下午的上班时间 for scclass_item in schclasslist: ifkuanggong = ifkuanggong + 1 # 上班日期 sbdt = str(item.riqi) # ==1,这个班是需要上的。 # 开始时间 sttm = scclass_item.StartTime.strftime('%H:%M:%S') edtm = scclass_item.EndTime.strftime('%H:%M:%S') shangbantm = sbdt + ' ' + sttm xiabantm = sbdt + ' ' + edtm # xuhaoshangban if item.zhuangtai == 8: db.session.add( shidao(userid, 9, item.riqi, scclass_item.schName, shangbantm, xiabantm)) db.session.commit() # a 迟到 if ifkuanggong == 1: ifzhongwu = ifzhongwu + 1 else: ifzhongwu = ifzhongwu chidaosql = " EnrollNumber=" + EnrollNumber + " and convert(varchar(10),date,121)='" + str( item.riqi ) + "' and convert(varchar(5),date,108) BETWEEN '" + scclass_item.CheckInTime1.strftime( '%H:%M' ) + "' and '" + scclass_item.CheckInTime2.strftime( '%H:%M') + "' " dataview = db.session.query( atttransaction.date, atttransaction.EnrollNumber, atttransaction.MachineID).filter( chidaosql).order_by( atttransaction.date).first() # 上班又有数据, if dataview != None: sjc = (datetime.datetime.strptime( shangbantm, "%Y-%m-%d %H:%M:%S") - dataview.date).total_seconds() / 60 db.session.add( chidao(dataview.date, shangbantm, str(ifzhongwu), sjc, 10, scclass_item.schName, userid)) # db.session.add(kuanggong(userid, 9, sbdt, scclass_item.schName, shangbantm, xiabantm)) # db.session.commit() else: # 没有数据记为旷工 wuzw.append(ifzhongwu) db.session.add( kuanggong(userid, 13, sbdt, scclass_item.schName, shangbantm, xiabantm)) db.session.commit() # b 早退 if ifkuanggong == 1: ifzhongwu = ifzhongwu + 1 else: ifzhongwu = ifzhongwu - 1 zaotuisql = " EnrollNumber=" + EnrollNumber + " and convert(varchar(11),date,121)='" + str( item.riqi ) + "' and convert(varchar(5),date,108) BETWEEN '" + scclass_item.CheckOutTime1.strftime( '%H:%M' ) + "' and '" + scclass_item.CheckOutTime2.strftime( '%H:%M') + "' " dataview = db.session.query( atttransaction.date, atttransaction.EnrollNumber, atttransaction.MachineID).filter( zaotuisql).order_by( atttransaction.date.desc()).first() if dataview != None: sjc = (dataview.date - datetime.datetime.strptime( xiabantm, "%Y-%m-%d %H:%M:%S")).total_seconds() / 60 db.session.add( chidao(dataview.date, xiabantm, str(ifzhongwu), sjc, 11, scclass_item.schName, userid)) # db.session.add(kuanggong(userid, 9, sbdt, scclass_item.schName, shangbantm, xiabantm)) # db.session.commit() else: # 没有数据记为旷工 wuzw.append(ifzhongwu) db.session.add( kuanggong(userid, 13, sbdt, scclass_item.schName, shangbantm, xiabantm)) db.session.commit() else: # 不是应到,则为不上班,所以直接提交为0. db.session.add( shidao(userid, 0, item.riqi, scclass_item.schName, shangbantm, xiabantm)) db.session.commit() print("迟到早退生成完成!")
def s_qingjia(st, ed): stt = datetime.datetime.strptime(st, '%Y-%m-%d') edt = datetime.datetime.strptime(ed, '%Y-%m-%d') users = User.query.filter(User.DepID != None).all() # 循环每个用户,但是,有些跨月的,提取不到,比如产假,一请就是半年以上的,这种提取不到。所以这种应该生成一个表,记录每一天的请假情况。 for item in users: leaves = writtenForleave.query.filter( db.or_( db.and_(writtenForleave.StartTime >= st, writtenForleave.EndTime <= ed, writtenForleave.LeaveUserId == item.userid, writtenForleave.ifComplete == 1, writtenForleave.Agree == 1), db.and_( db.between(st, writtenForleave.StartTime, writtenForleave.EndTime), writtenForleave.LeaveUserId == item.userid, writtenForleave.ifComplete == 1, writtenForleave.Agree == 1), db.and_( db.between(ed, writtenForleave.StartTime, writtenForleave.EndTime), writtenForleave.LeaveUserId == item.userid, writtenForleave.ifComplete == 1, writtenForleave.Agree == 1))).all() for i in range(0, len(leaves)): jiange = (leaves[i].EndTime - leaves[i].StartTime).days # print(leaves[i].LeaveID) sql = "update t_kuanggong set zhuangtai=" + str( leaves[i].Category ) + " where userid=" + str(item.userid) + " and sttime >= '" + str( leaves[i].StartTime) + "' and sttime <= '" + str( leaves[i].EndTime) + "' and zhuangtai=13 or userid=" + str( item.userid) + " and edtime >= '" + str( leaves[i].StartTime) + "' and edtime<= '" + str( leaves[i].EndTime) + "' and zhuangtai=13" # print(sql) db.session.execute(sql) db.session.commit() dataviews = db.session.query( db.func.count(kuanggong.schName).label("cishu"), kuanggong.schName, kuanggong.userid, kuanggong.riqi, kuanggong.zhuangtai).filter( db.and_(kuanggong.riqi >= st, kuanggong.riqi <= ed, kuanggong.zhuangtai == 13)).group_by( kuanggong.schName, kuanggong.userid, kuanggong.riqi, kuanggong.zhuangtai).all() # print(dataviews)把旷工的导进去 for i in range(0, len(dataviews)): # print (dataviews[i].cishu) sql = "update t_shidao set zhuangtai=" + str( dataviews[i].zhuangtai ) + " where userid =" + str(dataviews[i].userid) + " and riqi='" + str( dataviews[i].riqi) + "' and schName='" + dataviews[i].schName + "'" print(sql) db.session.execute(sql) db.session.commit() dataviews = db.session.query( db.func.count(kuanggong.schName).label("cishu"), kuanggong.schName, kuanggong.userid, kuanggong.riqi, kuanggong.zhuangtai).filter( db.and_(kuanggong.riqi >= st, kuanggong.riqi <= ed, kuanggong.zhuangtai != 9, kuanggong.zhuangtai != 13)).group_by( kuanggong.schName, kuanggong.userid, kuanggong.riqi, kuanggong.zhuangtai).all() # print(dataviews)把不是旷工也不是实到的更新进去 for i in range(0, len(dataviews)): # print (dataviews[i].cishu) sql = "update t_shidao set zhuangtai=" + str( dataviews[i].zhuangtai ) + " where userid =" + str(dataviews[i].userid) + " and riqi='" + str( dataviews[i].riqi) + "' and schName='" + dataviews[i].schName + "'" print(sql) db.session.execute(sql) db.session.commit() print("请假生成完成!")