Пример #1
0
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")
Пример #2
0
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("特权生成完成!")
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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("迟到早退生成完成!")
Пример #7
0
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("请假生成完成!")