导图社区 zzsfpzhfwpt_执行逻辑脑图
关于zzsfpzhfwpt_执行逻辑脑图,分享了进入baseutils.HandleZZSFPDIR装饰器函数和执行cj_fp_main.main函数。
编辑于2023-06-07 16:02:17 江苏省zzsfpzhfwpt
1. 进入baseutils.HandleZZSFPDIR装饰器函数
进入__enter__函数
判断是否存在zzsfp_dir_path文件夹
存在时,删除该文件夹
创建zzsfp_dir_path文件夹
创建download_dir_path文件夹
创建_upload_dir_path文件夹
复制入栈xml文件到download_dir_path目录下
返回self
2. 执行cj_fp_main.main函数
尝试运行cj_fp_main.Task().run()函数
定义变量tx_data_url,data_source,初始化值均为""
调用yzftaxbot.reset_timout_start_time()重置任务时间
重置baseutils全局变量month_data的值为{}
判断run()函数接收到的参数enter_title是否为True
结果为True时,进入enter()函数开始执行
定义全局变量is_signature的值为"NONE"
判断".chinatax.gov.cn:8443/"字符串是否是当前浏览器url的子串和XML文件中的CompanyInfo.Xzqhid是否在税局税务数字账户的地区id列表zzsfpcommon.swsz_area_id_list中
判断结果为True时,执行该分支代码
调用Task().upload_collect_source()函数,上传采集来源
尝试执行以下代码
从yzfxml包中导入xml
使用xml从XML文件中获取CompanyTask.Ext.InvoiceCollectSource的值
判断获取到的值是否为空
不为空时,打印日志"获取到采集路径:InvoiceCollectSource",并推出upload_collect_source()函数的执行
通过XML文件获取Company.Task._YzfCompanyTask__data.@env的值,并赋值给ENV变量
通过税务数字账户/综合服务平台采集路径回调字典/获取token获取zzsfpcommon.saveCompanySubInfo的值,并赋值给saveCompanySubInfo_host变量
定义字典变量 post_data
打印日志:"上传数据结果: post_data"
调用Task().get_uuid()方法,获取本地uuid。实现方法是通过读取本地注册表获取,获取失败时返回空字符串
判断是否获取到正常的uuid值
如果为空,打印日志:"获取uuid失败",并退出该函数的执行
使用requests库get方式请求saveCompanySubInfo_host。获取请求结果赋值给response变量
构造请求头headers,其中Access-Token的值为response['result']
post请求'saveCompanySubInfo_host /api/company/company/subinfo/saveCompanySubInfo',传递参数json为post_data变量,请求头为headers变量。将请求返回结果赋值给res变量
判断res.code是否为0
如果是0,打印日志:"上传来源成功"
否则,打印日志:"上传来源失败"
调用yzftaxbox.YzfProxy.get_current_proxy_ip()函数获取当前的代理IP,并赋值给变量ip
判断ip是否为空并且XML文件中CompanyInfo.Xzqhid是否在列表中
如果判断结果为True,调用Task().get_and_set_proxy_rewrite()方法
设置10次循环
调用yzftaxbot.Yzfproxy().get_and_set_proxy()方法设置一个代理IP
调用Task()._access_third_website() 方法
定义请求头变量headers_t,作为requests请求参数
调用requests.get()方法访问baidu.com网站,并将请求的返回结果赋值给res变量
判断res为False时,直接返回res,否则返回值为True
判断上面调用方法返回值是否为True
为True时,退出函数的执行
否则,通过封装工具,正常抛出异常"连续10次更换代理ip不可用"
调用yzftaxbot.register_popups_resume()方法开始启用弹窗处理功能
定义变量data_source并初始化值为"DZSJ",意思是代账税局
调用yzftaxbot.register_popus()方法,注册弹窗css路径
通过yzftaxbot.YzfBrowser.current_url获取当前浏览器的url,并处理得到地区代码赋值给area_id变量
实例化GDapplyfp类的一个对象noapply
通过yzftaxbot.TaskGroup.get_attr_value()方法获取XML文件中fpzl的值,并赋值给fpzl变量
判断地区代码area_id是否属于在临时列表里面
不在列表里时,切换browser对象到最后浏览器标签页窗口
判断fpzl是否是"SW_BQ"
如果是,尝试调用执行Task().BQ()方法,并传参数noapply进去
异常时正常抛出异常调用栈
不是"SW_BQ"时,判断fpzl的开头是否是"SW" 或者 fpzl属于"ALL", "FP"其中的一个
如果是,则继续判断fpzl是否是"SW_JX"
如果是,则通过noapply.run()调用GDapplyfp类中的run方法获取发票的张数
如果不是,则判断fpzl是否是"SW_XX"
如果是,调用noapply.run(),传参为"1",获取发票类型为"1"的发票张数
如果不是,则调用noapply.run(),获取发票类型为"0,1"的张数
判断noapply.is_success是否为True
如果是True,将noapply.run()执行的结果拼接在result后面
如果是False,判断"登录失效"是否在noapply.run()返回的结果里面
如果是,则调用yzfexceptions.TaxationException()抛出异常"登录失效,请重新下发采集任务"
如果不是,抛出异常,异常信息为noapply.run()返回的结果
判断fpzl是否属于"SW_JX", "SW_JXX", "GX", "DK", "ALL"其中的一个
如果是,尝试通过yzftaxbot.MyBot.CompanyInfo.nsrzgdm获取XML文件中nsrzgdm,并赋值给Task().nsrzgdm变量
判断nsrzgdm是否是"101"
如果是,则打印日志信息:小规模纳税人无法下载抵扣发票
异常时,通过yzftaxbot.MyBot.CompanyInfo.nsrzg获取XML文件中nsrzg的值,并赋值给变量nsrzg
判断nsrzg是否是"101"
如果是,则打印日志信息为:小规模纳税人无法下载抵扣发票
最后,调用Task().sw_dk()方法,并传参area_id,noapply。返回值拼接在result之后
判断fpzl是否是"GX"
如果是,判断nsrzg或者nsrzgdm是否是"101"
如果是,则result拼接字符串"(小规模纳税人无法下载勾选发票)"
如果不是,调用noapply.GXFP()方法,将返回的结果拼接在result后面
调用noapply.TSFP()方法,将返回的结果拼接在result后面
判断fpzl是否属于"DK", "GX", "SW_JXX", "SW_JX", "ALL"其中的一个
如果是,判断nsrzg或者nsrzgdm是否是"101"
如果是,调用noapply.judge_signature()方法,将返回的结果赋值给变量is_signature
判断结果为False时,执行该分支代码
调用Task().upload_collect_source()方法,传参数0.上传采集来源。
调用yzftaxbot.register_popups()方法注册弹窗管理
初始化fppt_taskgroups
调用yzftaxbot.MyBot.register_go_to_main_page()方法,注册返回首页函数
调用yzftaxbot.TaskGroup.get_attr_value("fpzl")获取发票种类,并将返回值赋值给变量fpzl
定义变量result,开始执行任务
出现异常时,获取异常内容
判断异常内容是否是"已重试5次,仍下载文件失败"
判断结果为True时,调用yzftaxbot.TaskGruop.notify_done_custom函数通知客户出现异常
判断结果为False时,直接抛出异常调用栈