Esempio n. 1
0
def getjg():
    user_info = dict(request.args)
    result = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == user_info['userid'],
                                              HSZCOMPANY.usereventually != 0).first()
    autowork = result.autowork
    if autowork != 'taskfailed' and autowork != 'taskworking' and autowork == 'accpmplish' and result.usereventually != datetime.datetime.now().strftime(
            '%Y%m'):
        start_spider(userId=user_info['userid'])
        session.execute(
            'update {} set autowork="taskworking" where userId = "{}" and usereventually!=0'.format(
                'hszcompany', user_info['userid']))
        return 'taskworking'
    else:
        return autowork
Esempio n. 2
0
def start_spider(userId):
    result = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                              HSZCOMPANY.eventuallykjqj != 0).all()
    headers = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                               HSZCOMPANY.headers.like('%{0}%'.format("sap"))).first().headers
    headers = dict(parse.parse_qsl(headers))
    for zt in result:
        url = 'https://sap.kungeek.com/portal/ftsp/portal/khxx.do?handleCustomer'
        data = {'ztZtxxId': zt.ztId, 'khxxId': zt.id_num}
        print(data)
        account_date = down.visit(url=url, response_container=['json', 'utf-8'], method='post', data=data,
                                  headers=headers)
        if account_date.get('data', None):
            fwqxz = account_date['data']['fwqxz']
            startkjqj = account_date['data']['qyQj']
            eventally = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                                         HSZCOMPANY.ztId == zt.ztId,
                                                         HSZCOMPANY.eventuallykjqj != 0).first()
            if eventally.eventuallykjqj > str(2):
                if eventally.eventuallykjqj < fwqxz:
                    startkjqj = eventally.eventuallykjqj
                    account_date_poll(zt, headers, fwqxz, startkjqj, first=0)
                else:
                    date = datetime.datetime.now().strftime('%Y%m')
                    session.execute(
                        'update {} set eventuallykjqj="{}" , endkjqj="{}" , eventually_work="{}" where userId = "{}" and eventuallykjqj!=0 and ztId="{}"'.format(
                            'hszcompany', date, fwqxz, date, userId, zt.ztId))
                    eventually_works = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                                                        HSZCOMPANY.ztId == zt.ztId,
                                                                        HSZCOMPANY.eventuallykjqj != 0).all()
                    for eventually_work in eventually_works:
                        if eventually_work.eventually_work < date:
                            break
                    else:
                        session.execute(
                            'update {} set usereventually="{}" , autowork="accomplish"  where userId = "{}" and usereventually!=0'.format(
                                'hszcompany', date, userId))
                        print("轮训成功")
                        return

            else:
                startkjqj = startkjqj
                account_date_poll(zt, headers, fwqxz, startkjqj, first=1)
Esempio n. 3
0
from database.sql_test import session, HSZCOMPANY
from urllib import parse

import datetime
userId="4E06FEE71A5E4AA393F509DB16BC8A32"

result = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                              HSZCOMPANY.usereventually != 0).first()
autowork = result.autowork

# autowork='accomplish'
print(result.userId,result.usereventually,result.autowork)
if autowork != 'taskfailed' and autowork != 'taskworking' and autowork == 'accpmplish' and result.usereventually != datetime.datetime.now().strftime('%Y%m'):
    autowork='accomplish'

    session.execute(
        'update {} set autowork="{}" where userId = "{}" and usereventually!=0'.format('hszcompany', autowork, userId))
    session.close()


    print('taskworking')






# result = session.query(HSZCOMPANY).filter_by(userId=userId).first()
# print(result.headers)
#
# headers = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId, HSZCOMPANY.headers.like('%{0}%'.format("sap"))).first().headers
# headers=dict(parse.parse_qsl(headers))
Esempio n. 4
0
def getrecord():
    account = request.form.get('account')
    username = request.form.get('username')
    result = ''
    for i in range(3):
        try:
            result = session.query(YCTGZACCOUNT).filter(
                YCTGZACCOUNT.account == account).first()
            session.close()
            if not result:
                return '账号错误'
            if result.unlock_state == '未锁定':
                return '请填写锁定账号'
        except:
            session.rollback()
            session.close()
            if i == 2:
                return '后台错误,请联系后台'
        else:
            if result.complete_state == '完成':
                return '请不要重复提交'
            else:
                break
    man = ''
    for i in range(3):
        try:
            man = session.query(YCTGZWORKERMAN).filter(
                YCTGZWORKERMAN.username == username).first()
            session.close()
            if not man:
                return '工作人员错误'
            break
        except:
            session.rollback()
            session.close()
            if i == 2:
                return '后台错误,请联系后台'
    if result and man:

        for z in range(3):
            try:
                session.execute(
                    'update {} set complete_state="完成",unlock_state="未锁定" where account = "{}"'
                    .format('yctaccount', result.account))
                session.close()
                break
            except Exception as e:
                session.rollback()
                session.close()
                if z == 2:
                    return '后台错误,请联系后台,1'
        x = str(datetime.datetime.now().strftime('%Y%m%d'))
        for z in range(3):
            try:
                result = YCTGZRECORDER(username=username,
                                       account=account,
                                       time_scope=x,
                                       complete_state='完成')
                session.add(result)
                session.commit()
                session.close()
                break
            except:
                session.rollback()
                session.close()
                if z == 2:
                    return '后台错误,请联系后台,2'
        return '1'
    elif not result:
        return '后台没有账号信息,请正确填写'
    elif not man:
        return '后台没有完成人信息,请联系后台验证'
Esempio n. 5
0
def getgzrender():
    x = str(datetime.datetime.now().strftime('%Y%m%d'))
    result = session.query(YCTGZACCOUNT).filter(
        YCTGZACCOUNT.time_scope != x).all()
    for i in result:
        for n in range(3):
            try:
                session.execute(
                    'update {} set time_scope={} , complete_state="未完成" , unlock_state="未锁定" where account = "{}"'
                    .format('yctaccount', x, i.account))
                session.close()
                break
            except:
                session.rollback()
                session.close()
                if i == 2:
                    return '后台错误,请联系后台'
    for i in range(3):
        try:
            result = session.query(YCTGZACCOUNT).filter_by(
                complete_state='未完成').first()
            session.close()
            break
        except:
            session.rollback()
            session.close()
            if i == 2:
                return '后台错误,请联系后台'
    lists = []
    if result:
        if result.unlock_state == '未锁定':
            #print(result.account)
            #print(result.unlock_state)
            for n in range(3):
                try:
                    session.execute(
                        'update {} set unlock_state="锁定" where account = "{}"'.
                        format('yctaccount', result.account))
                    session.close()
                    break
                except:
                    session.rollback()
                    session.close()
                    if n == 2:
                        return '后台错误,请联系后台'
        for i in range(3):
            try:
                result = session.query(YCTGZACCOUNT).filter_by(
                    complete_state='未完成').all()
                session.close()
                break
            except:
                session.rollback()
                session.close()
                if i == 2:
                    return '后台错误,请联系后台'
        for x, y in enumerate(result):
            dicts = {}
            dicts['account'] = y.account
            dicts['password'] = y.password
            dicts['complete_state'] = y.complete_state
            dicts['id'] = x
            dicts['time_scope'] = y.time_scope
            dicts['unlock'] = y.unlock_state
            lists.append(dicts)
        res = {'code': 0, 'data': lists, 'count': len(lists)}
        return json.dumps(res)
    else:
        return '1'
Esempio n. 6
0
def account_date_poll(zt, headers, fwqxz, startkjqj, first):
    '''账期轮训逻辑'''
    url = 'https://sap.kungeek.com/portal/ftsp/portal/balance.do?queryYeb&funcCode=ftsp_zhangbu_balance'
    data = {'ztZtxxId': zt.ztId, 'startKjQj': startkjqj, 'endKjQj': startkjqj, 'cxwbkm': '0'}

    if startkjqj < fwqxz and first == 0:
        if startkjqj == '201912':
            kjqj = '202001'
        elif startkjqj == '202012':
            kjqj = '202101'
        elif startkjqj == '201812':
            kjqj = '201901'
        elif startkjqj == '201712':
            kjqj = '201801'
        elif startkjqj == '201612':
            kjqj = '201701'
        elif startkjqj == '201512':
            kjqj = '201601'
        elif startkjqj == '201412':
            kjqj = '201501'
        elif startkjqj == '201312':
            kjqj = '201401'
        elif startkjqj == '201212':
            kjqj = '201301'
        elif startkjqj == '201112':
            kjqj = '201201'
        else:
            kjqj = str(eval('{}+1'.format(startkjqj)))
    else:
        kjqj = str(startkjqj)
    data.update({'startKjQj': kjqj, 'endKjQj': kjqj})
    single_account_date = down.visit(url=url, response_container=['json', 'utf-8'], method='post', data=data,
                                     headers=headers)
    userId = zt.userId
    userName = zt.userName
    zjxxName = zt.zjxxName
    ztId = zt.ztId
    id_num = zt.id_num
    session.close()
    if single_account_date.get('data', 'None'):
        total = single_account_date['total']
        datas = single_account_date['data']
        datas.append(total)
        for i in datas:
            result = HSZCOMPANY(
                userId=userId, userName=userName, zjxxName=zjxxName,
                autowork=0, ztId=ztId, id_num=id_num, headers=0, usereventually=0, endkjqj=0, eventuallykjqj=0,
                startkjqj=kjqj, content=parse.urlencode(i), eventually_work=0)
            session.add(result)
        session.commit()
        session.close()
        if kjqj < fwqxz:
            session.execute(
                'update {} set eventuallykjqj="{}" , endkjqj="{}" where userId = "{}" and eventuallykjqj!=0 and ztId="{}"'.format(
                    'hszcompany', kjqj, fwqxz, userId, ztId))
            return account_date_poll(zt, headers, fwqxz, kjqj, first=0)
        else:
            date = datetime.datetime.now().strftime('%Y%m')
            session.execute(
                'update {} set eventuallykjqj="{}" , endkjqj="{}" , eventually_work="{}" where userId = "{}" and eventuallykjqj!=0 and ztId="{}"'.format(
                    'hszcompany', kjqj, fwqxz, date, userId, ztId))

            # 最后判断所有数据库结果
            eventually_works = session.query(HSZCOMPANY).filter(HSZCOMPANY.userId == userId,
                                                                HSZCOMPANY.ztId == ztId,
                                                                HSZCOMPANY.eventuallykjqj != 0).all()
            for eventually_work in eventually_works:
                if eventually_work.eventually_work <= date:
                    return
            session.execute(
                'update {} set usereventually="{}" , autowork="accomplish" where userId = "{}" and usereventually!=0'.format(
                    'hszcompany', date, userId))
            print("轮训成功")
    else:
        datetimenowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        rubbish = {'userId': zt.userId, 'headers': headers, 'url': url, 'function': 'account_date_poll',
                   'time': datetimenowTime, 'webname': '慧算账', 'errMsg': single_account_date['errMsg'],
                   'account_time': kjqj, 'ztZtxxId': zt.ztId}
        print(rubbish)