当前位置:首页>python>每月几百张回单手工对账?用Python一键搞定!

每月几百张回单手工对账?用Python一键搞定!

  • 2026-06-29 12:39:17
每月几百张回单手工对账?用Python一键搞定!

🏦 每月几百张回单手工对账?用Python一键搞定!

场景痛点:建行银企联云接口返回的电子回单金额全是 0,财务同事每月要手动打开几百个 PDF 附件逐一核对金额,再手工录入对账,效率极低,还容易出错。


一、问题背景

在 NCC(用友)财务系统中,银行电子回单通过银企联云接口同步数据,但建行返回的回单报文中,amount(金额)字段值为 0.0

真实金额藏在 PDF 附件里,每次对账都需要:

  1. 手动下载 PDF 附件

  2. 打开查看金额

  3. 手工填写对账数据

每月涉及数百条数据,这是一项重复性极高、价值极低的体力劳动。

💡 本文介绍一套完整的自动化解决方案,通过 SQL + Shell + Python 三步走,实现附件金额的自动识别与数据库批量更新。


二、整体方案架构

┌─────────────────────────────────────────────────┐
│              自动化处理流程                                                                                │
│                                                                                                                     │
│  Step 1             Step 2        Step 3                                                               │
│  SQL查询   →  批量下载   →  Python解析                                                     │
│  回单主键       PDF附件       金额+生成SQL                                                    │
│  及附件路径                                                                                                  │
│                                     ↓                                                                              │
│             Step 4: 执行SQL更新数据库                                                              │
└─────────────────────────────────────────────────┘

三、Step 1:SQL 查询回单主键及附件路径

首先从数据库中查询出所有金额为0、未匹配的建行回单,同时关联出对应的附件存储路径。

-- 电子回单及附件目录查询
SELECT
-- 回单业务信息
    a.billnoAS"单据号",
    a.pk_bankreceiptAS"银行电子回单主键",
    a.vbillnoAS"回单编号",
    a.amountAS"金额",
    a.transdateAS"交易日期",
CASE a.direction
WHEN'0'THEN'收款'
WHEN'1'THEN'付款'
ELSENULL
ENDAS"收付方向",
    a.curraccnoAS"本方账号",
    a.curraccnameAS"本方账户名",
    b.nameAS"银行类别名称",
CASE a.matchstatus
WHEN'0'THEN'Unmatch'
WHEN'1'THEN'ToBeConfirmed'
WHEN'-1'THEN'Nomatch'
WHEN'2'THEN'Matched'
ELSENULL
ENDAS"匹配状态",

-- 文件元数据信息
    f.pk_docAS"文件主键",
    f.filepathAS"附件真实路径",
    f.filedescAS"文件描述/名称",
    f.filelengthAS"文件大小",
    f.filetypeAS"文件类型",

-- 底层文件存储信息
    h.guidAS"底层文件头GUID",
    h.pathAS"底层文件关联PATH",
    bd.*

FROM sp_bankreceipt a
INNERJOIN bd_banktype b
ON a.pk_banktype= b.pk_banktype
INNERJOIN sm_pub_filesystem f
ON(f.filepath= a.pk_bankreceipt
OR f.filepathLIKE a.pk_bankreceipt||'/%')
LEFTJOIN bap_fs_header h
ON h.path= f.pk_doc
LEFTJOIN bap_fs_body bd
ON bd.headid= h.guid
WHERE
    a.transdate>='2026-01-01'
AND b.code='04'-- 建行
AND a.matchstatus='0'-- 未匹配
AND a.amount=0-- 金额为0
ORDERBY
    a.transdateDESC,
    f.tsDESC;

关键关联逻辑说明:

关联说明
sp_bankreceipt → sm_pub_filesystem通过 pk_bankreceipt 关联附件元数据
sm_pub_filesystem → bap_fs_header通过 pk_doc 关联底层文件头
bap_fs_header → bap_fs_body通过 guid 关联底层文件体(含二进制内容)

四、Step 2:批量下载 PDF 附件到本地

将 SQL 查询出来的 filepath(STOREPATH)保存为 found_paths.txt,然后使用 Shell 脚本批量打包下载。

方案一:使用 --transform 参数(推荐)

# 将所有PDF打包,去除深层目录,所有文件平铺在压缩包最外层
tar -czvf target_pdfs.tar.gz \
--transform='s#.*/##' \
-T found_paths.txt

--transform='s#.*/##' 的作用:删除最后一个 / 前的所有路径,只保留文件名,避免解压后产生深层目录结构。

方案二:兼容旧版 tar(临时文件夹法)

# 1. 创建临时文件夹
mkdir my_temp_pdfs

# 2. 将文件平铺复制到临时文件夹
cat found_paths.txt | xargs -I {} cp {} my_temp_pdfs/

# 3. 进入文件夹并打包
cd my_temp_pdfs
tar -czvf ../target_pdfs.tar.gz *

# 4. 清理临时文件夹
cd ..
rm-rf my_temp_pdfs

五、Step 3:Python 批量解析 PDF 金额并生成更新 SQL

5.1 安装依赖库

pip install pdfplumber pandas openpyxl cffi cryptography

为什么需要 cffi 和 cryptographypdfplumber 底层依赖 cryptography 处理 PDF 的安全限制,而 cryptography 又依赖 C 语言接口模块 cffi,缺少任一组件都会导致解析失败。

⚠️ 扫描件 PDF 兜底方案:如果遇到图片型扫描 PDF,pdfplumber 无法提取文字(返回"未找到金额"),可追加 OCR 兜底处理:

pip install pdf2image pytesseract
# 还需安装系统依赖:apt install tesseract-ocr tesseract-ocr-chi-sim poppler-utils
frompdf2imageimportconvert_from_path
importpytesseract

defocr_fallback(pdf_pathstr->str:
"""对pdfplumber无法解析的扫描件PDF进行OCR识别"""
images = convert_from_path(pdf_pathdpi=200)
forimginimages:
text = pytesseract.image_to_string(imglang='chi_sim+eng')
forpatterninPATTERNS:
match = pattern.search(text)
ifmatch:
returnmatch.group(1)
return"OCR未找到金额"

在 get_amount_from_pdf 末尾返回 "未找到金额" 前,调用 ocr_fallback(pdf_path) 即可实现两级识别,覆盖率可从约 80% 提升至 95%+。

5.2 完整 Python 脚本

importos
importre
importpdfplumber
importpandasaspd

# ================= 配置区域(按实际情况修改)=================
EXCEL_PATH  = r"D:\log\银行电子回单查询20260417.xlsx"# SQL导出的Excel
PDF_FOLDER  = r"D:\log\target_pdfs"# 解压后的PDF目录
OUTPUT_PATH = r"D:\log\银行电子回单查询_已更新.xlsx"# 输出文件路径

# Excel中的列名(需与导出文件完全一致)
COL_PK      = "银行电子回单主键"
COL_PATH    = "STOREPATH"
COL_AMOUNT  = "金额"
COL_SQL     = "数据库更新"
# =============================================================


defget_amount_from_pdf(pdf_namestr->str:
"""从 PDF 中提取金额汇总文本(多模式匹配,提升覆盖率)"""
pdf_path = os.path.join(PDF_FOLDERpdf_name)
ifnotos.path.exists(pdf_path):
return"文件不存在"
# 多模式降级匹配:建行不同版本PDF关键词可能不同
PATTERNS = [
re.compile(r'金额汇总\s*[::]\s*([\d\.,]+)'),
re.compile(r'合计金额\s*[::]?\s*([\d\.,]+)'),
re.compile(r'实际到账金额\s*[::]?\s*([\d\.,]+)'),
re.compile(r'¥\s*([\d\.,]+)'),
    ]
try:
withpdfplumber.open(pdf_pathaspdf:
forpageinpdf.pages:
text = page.extract_text()
iftext:
forpatterninPATTERNS:
match = pattern.search(text)
ifmatch:
returnmatch.group(1)
exceptException:
return"读取出错"
return"未找到金额"


defclean_amount_for_sql(amount_strstr):
"""将金额字符串转为纯数字格式,去掉千位分隔符"""
ifnotamount_str:
returnNone
# 包含空格或字母(如"文件不存在")则跳过
if" "inamount_strorany(c.isalpha() forcinamount_str):
returnNone
returnamount_str.replace(',''')


defmain():
ifnotos.path.exists(EXCEL_PATH):
print(f"❌ 错误:找不到文件 {EXCEL_PATH}")
return

print("📖 正在读取 Excel(文本模式)...")
df = pd.read_excel(EXCEL_PATHdtype=str)

# 初始化列
df[COL_AMOUNT] = ""
df[COL_SQL]    = ""

total_rows = len(df)
print(f"🚀 开始处理,共 {total_rows} 条数据...")
print("-"*60)

forindexrowindf.iterrows():
# 1. 提取 PDF 金额
store_path  = str(row[COL_PATH])
file_name   = store_path.split('/')[-1if'/'instore_pathelse"无效"
amount_raw  = get_amount_from_pdf(file_name)
df.at[indexCOL_AMOUNT] = amount_raw

# 2. 生成 SQL 语句
pk_value = row[COL_PK]
sql_val  = clean_amount_for_sql(amount_raw)

ifsql_valandpk_value:
sql_str = (
f"update sp_bankreceipt "
f"set amount = {sql_val} "
f"where pk_bankreceipt = '{pk_value}';"
            )
df.at[indexCOL_SQL] = sql_str
else:
df.at[indexCOL_SQL] = "-- 无法生成(无金额或主键)"

# 实时打印进度
print(f"[{index + 1}/{total_rows}] 主键: {pk_value} | 金额: {amount_raw}")

print("-"*60)
print("💾 正在保存文件...")
try:
df.to_excel(OUTPUT_PATHindex=False)
print(f"✅ 执行成功!\n📁 输出路径: {OUTPUT_PATH}")
exceptExceptionase:
print(f"❌ 保存失败: {e}")


if__name__ == "__main__":
main()

脚本执行效果示例:

[964/969] 主键: 1770a691Z2Db6_x13CE36BABB9326 → 识别金额: 34,769.76
[965/969] 主键: 1770a69121V97_15A8ECF049MA4SS → 识别金额: 34,769.76
[966/969] 主键: 1770a69121V97_BCO8SD1Y7D826F5 → 识别金额: 4,788.00
[967/969] 主键: 1770a6903ZG413_DIRAG6C24AZCBC4 → 识别金额: 3,320.00
[968/969] 主键: 1770a690S36Z26_70087A7BF6AFCV08 → 识别金额: 2,633.00
[969/969] 主键: 1770a6934B17_BF26D4DA8A1C7F9A5 → 识别金额: 27.08

六、Step 4:执行 SQL 批量更新数据库

将 Excel 中生成的 数据库更新 列 SQL 语句复制出来,在数据库中执行。强烈建议用事务包裹,发生异常可随时回滚,避免部分更新导致数据不一致:

-- ⚠️ 生产执行前务必先在测试环境验证,并备份相关记录
BEGIN;
update sp_bankreceipt set amount =15560576.66where pk_bankreceipt ='1001K310000000A9K6RQ';
update sp_bankreceipt set amount =15560576.66where pk_bankreceipt ='1001K310000000A9K6RP';
update sp_bankreceipt set amount =3799190.31where pk_bankreceipt ='1001K310000000A9K6RN';
update sp_bankreceipt set amount =3799190.31where pk_bankreceipt ='1001K310000000A9K6RO';
update sp_bankreceipt set amount =6318253.25where pk_bankreceipt ='1001K310000000A9K6RE';
update sp_bankreceipt set amount =2930565.48where pk_bankreceipt ='1001K310000000A9K6RD';
update sp_bankreceipt set amount =2635840.22where pk_bankreceipt ='1001K310000000A9K6R6';
-- ... 更多语句
COMMIT;
-- 若发现异常,执行 ROLLBACK; 全部回滚

更新完成后,系统中的回单金额即可正确显示。

七、效果对比

指标改进前(人工)改进后(自动化)
月均处理量数百张数百张
单张处理耗时2~5 分钟< 1 秒
月均总耗时数小时< 5 分钟
出错概率较高(人工录入)极低(程序解析)
人力成本占用财务人员零占用

八、总结

本方案通过 SQL + Shell + Python 三步协作,将原本需要财务人员每月耗费数小时的手工对账工作,压缩至自动化运行的几分钟内完成。

核心思路很简单:银行接口的锅,我们用代码来补。只要数据在附件里,就有办法把它读出来。

如果你的系统也有类似的"接口返回0、数据在附件里"的问题,欢迎参考这套方案,举一反三。


本文涉及的系统环境:用友 NCC、建行银企联云、Linux 服务器、Python 3.x

如有问题或改进建议,欢迎留言交流 👇

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 16:35:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/487404.html
  2. 运行时间 : 0.669237s [ 吞吐率:1.49req/s ] 内存消耗:4,558.34kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a8d15354217dd03a7332ab923ebba733
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000771s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000655s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.011220s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003347s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001406s ]
  6. SELECT * FROM `set` [ RunTime:0.042499s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000884s ]
  8. SELECT * FROM `article` WHERE `id` = 487404 LIMIT 1 [ RunTime:0.056396s ]
  9. UPDATE `article` SET `lasttime` = 1783067739 WHERE `id` = 487404 [ RunTime:0.009678s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.004734s ]
  11. SELECT * FROM `article` WHERE `id` < 487404 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005974s ]
  12. SELECT * FROM `article` WHERE `id` > 487404 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008303s ]
  13. SELECT * FROM `article` WHERE `id` < 487404 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.019297s ]
  14. SELECT * FROM `article` WHERE `id` < 487404 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.368045s ]
  15. SELECT * FROM `article` WHERE `id` < 487404 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.024064s ]
0.671094s