应付款终版导入:支持 20 万行(流式读取 + 分片导入 + 进度显示) #360
Closed
renshen
wants to merge 2 commits from
feature/sumu-import-memory-fix into main
pull from: feature/sumu-import-memory-fix
merge into: WuYongJie:main
WuYongJie:main
WuYongJie:fix/yueyang-oa-approver-departed-directory
WuYongJie:fix/yueyang-oa-approver-failure-scope
WuYongJie:fix/yueyang-oa-approver-api-resilience
WuYongJie:fix/yueyang-oa-running-task-approver
WuYongJie:fix/yueyang-oa-cashier-approver
WuYongJie:feature/sumu-after-sales-refund-click-date
WuYongJie:feature/sumu-after-sales-refund-export-waybill
WuYongJie:feature/sumu-after-sales-refund-warning
WuYongJie:feature/qiuxiang-marketing-promotion-relocation
WuYongJie:feature/qiuxiang-move-promotion-marketing-account
WuYongJie:fix/yueyang-oa-revoked-label-payment-detail
WuYongJie:feature/qiuxiang-promotion-marketing-account
WuYongJie:fix/92451-store-ledger-scope-isolation
WuYongJie:feature/92451-store-ledger-balance
WuYongJie:integration/chenxi-material-live-sync
WuYongJie:feature/92451-ledger-store-managers
WuYongJie:fix/92451-ledger-report-subject-account-link
WuYongJie:feature/92451-ledger-account-master-fields
WuYongJie:fix/92451-ledger-account-short-propagate
WuYongJie:feature/92451-ledger-account-short-match
WuYongJie:fix/92451-ledger-shop-balance-name-match
WuYongJie:hotfix/chenxi-warehouse-inheritance-live-sync
WuYongJie:integration/chenxi-warehouse-f8c-main-sync
WuYongJie:fix/chenxi-product-cost-warehouse-inheritance
WuYongJie:integration/performance-details-f8c-main-sync
WuYongJie:perf/performance-details-materialized-difference
WuYongJie:feature/qiuxiang-installation-fee-wan-units
WuYongJie:fix/qiuxiang-installation-fee-tab-switch
WuYongJie:fix/92451-ledger-shop-current-subject-null
WuYongJie:feature/92451-ledger-shop-report-data
WuYongJie:feature/qiuxiang-installation-fee-tabs
WuYongJie:fix/qiuxiang-installation-report-table-spacing
WuYongJie:fix/qiuxiang-installation-fee-card-gold-accent
WuYongJie:feature/92451-ledger-shop-header
WuYongJie:fix/92451-shop-ledger-no-auto-backfill
WuYongJie:fix/qiuxiang-installation-platform-summary-order
WuYongJie:fix/92451-finance-ledger-shop-rebuild
WuYongJie:fix/dodo-tax-type-priority
WuYongJie:fix/report-filter-bar-grid
WuYongJie:fix/qiuxiang-installation-item-history-backfill
WuYongJie:fix/dodo-simplify-store-sales-cards
WuYongJie:fix/dodo-business-type-values
WuYongJie:fix/dodo-hide-empty-report-columns
WuYongJie:feature/dodo-operating-report-summary-cards
WuYongJie:fix/chenxi-product-cost-bundle-residual-parents
WuYongJie:feature/92451-withdrawal-current-store-entity
WuYongJie:feature/92451-finance-balance-fallback
WuYongJie:fix/renshen-afs-no-unrelated-fallback
WuYongJie:fix/renshen-afs-batch-fastpath
WuYongJie:fix/renshen-afs-batch-ids
WuYongJie:fix/renshen-afs-batch-orders
WuYongJie:fix/renshen-afs-coverage-start
WuYongJie:fix/renshen-afs-filter-coverage
WuYongJie:integration/qiuxiang-installation-summary
WuYongJie:hotfix/limeng-returned-quote-release
WuYongJie:release/yueyang-hotfix-sync
WuYongJie:hotfix/limeng-quote-periods-release
WuYongJie:feature/renshen-sidebar-dewu-link
WuYongJie:feature/renshen-dept-access-scope
WuYongJie:feature/yueyang-remove-performance-product-amount
WuYongJie:fix/renshen-dingtalk-focus-referer
WuYongJie:feature/chenxi-product-cost-planting-label
WuYongJie:feature/chenxi-product-cost-verification
WuYongJie:feature/chenxi-monthly-weighted-average-automation
WuYongJie:fix/chenxi-supplier-summary-duplicate-rows
WuYongJie:feature/chenxi-supplier-summary-scheduled-import
WuYongJie:fix/renshen-afs-internal-index
WuYongJie:fix/renshen-afs-order-lookup
WuYongJie:fix/esign-across-page-seal
WuYongJie:fix/renshen-afs-date-format
WuYongJie:fix/renshen-afs-columns
WuYongJie:fix/limeng-courier-pagination
WuYongJie:fix/renshen-afs-wide-strings
WuYongJie:feature/renshen-goods-profit-afs
WuYongJie:fix/renshen-import-coverage
WuYongJie:fix/renshen-import-rowkey
WuYongJie:fix/renshen-import-streaming
WuYongJie:feature/renshen-after-sales-cost-import
WuYongJie:feature/aaron-ledger-incremental-sync
WuYongJie:fix/WuYongJie-integrate-quote-cost-snapshots
WuYongJie:hotfix/codex-erp-coverage-date
WuYongJie:fix/codex-erp-daily-sync-coverage
WuYongJie:feature/performance-fee-item
WuYongJie:feature/sumu-payment-page-15
WuYongJie:feature/yueyang-performance-details-display
WuYongJie:fix/limeng-planting-hook-order
WuYongJie:fix/limeng-planting-virtual-order
WuYongJie:hotfix/yueyang-performance-summary-on-8e4b
WuYongJie:hotfix/yueyang-performance-summary-on-e4d82
WuYongJie:fix/limeng-deploy-rollback-guard
WuYongJie:hotfix/zhoushengchen-surcharge-import-on-prod-f8abc8d2
WuYongJie:deploy/limeng-planting-loss
WuYongJie:hotfix/zhoushengchen-surcharge-import-on-prod-a88c6e
WuYongJie:hotfix/yueyang-mapping-authority-on-prod-e0abc
WuYongJie:fix/limeng-planting-loss-freight
WuYongJie:hotfix/yueyang-1688-prefix-on-prod-79f
WuYongJie:deploy/limeng-planting-loss-on-cbbf32bb
WuYongJie:feature/limeng-planting-loss
WuYongJie:fix/jx-subsidy-10stores
WuYongJie:hotfix/yueyang-auto-resync-on-prod-664fc
WuYongJie:fix/shipping-carrier-from-outbound
WuYongJie:fix/limeng-manufacturer-bookkeeping-default-deduct
WuYongJie:feature/limeng-manufacturer-bookkeeping-config
WuYongJie:fix/shipping-resync-40-days
WuYongJie:feature/limeng-stock-quote-billing-rules
WuYongJie:feature/limeng-manufacturer-bookkeeping
WuYongJie:fix/limeng-quote-column-alignment
WuYongJie:feature/limeng-quote-batch-review
WuYongJie:fix/limeng-quote-hide-group-headers
WuYongJie:feature/92451-withdrawal-balance-date-dropdown
WuYongJie:feature/92451-withdrawal-balance-date-filter
WuYongJie:fix/limeng-supplier-external-courier
WuYongJie:fix/limeng-stock-period-courier-prefill
WuYongJie:fix/limeng-stock-period-error-message
WuYongJie:feature/limeng-stock-quote-periods
WuYongJie:feature/limeng-supplier-accessory-freight
WuYongJie:fix/limeng-stock-approval-effective
WuYongJie:feature/sumu-return-header-match
WuYongJie:feature/sumu-return-natural-order
WuYongJie:feature/sumu-return-pagination
WuYongJie:feature/sumu-reconciliation-scroll
WuYongJie:feature/sumu-statement-pagination
WuYongJie:feature/sumu-return-confirmation
WuYongJie:feature/sumu-reconciliation-detail-page
WuYongJie:feature/sumu-reconciliation-amounts
WuYongJie:feature/sumu-reconciliation-barcode
WuYongJie:feature/sumu-reconciliation-reconciler
WuYongJie:feature/sumu-supplier-reconciliation
WuYongJie:feature/sumu-import-stream-memory
WuYongJie:feature/sumu-import-20w-rows
WuYongJie:feature/sumu-payment-reconciliation-date-column
WuYongJie:feature/sumu-return-reconciliation-title-order
WuYongJie:feature/sumu-return-reconciliation-column-order
WuYongJie:feature/sumu-return-reconciliation-columns
WuYongJie:feature/sumu-payment-reconciliation-extra-columns
WuYongJie:feature/sumu-payment-reconciliation-unsent-column
WuYongJie:feature/limeng-stock-quote-entry
WuYongJie:fix/wuyongjie-erp-export-retry-hardening
WuYongJie:fix/limeng-shared-column-picker
WuYongJie:fix/limeng-quote-pdf-chinese-bold
WuYongJie:feature/limeng-agreement-document-sheets
WuYongJie:fix/limeng-quote-change-button
WuYongJie:fix/shipping-superseded-autoship
WuYongJie:feature/limeng-courier-onboarding
WuYongJie:fix/shipping-superseded-packages
WuYongJie:fix/qiuxiang-jingxi-zy-fee-remark
WuYongJie:fix/shipping-view-carrier
WuYongJie:fix/shipping-sync-retry-morning
WuYongJie:fix/shipping-outbound-warehouse-virtual
WuYongJie:preview/zhoushengchen-courier-local
WuYongJie:feature/limeng-agreement-archive-workflow
WuYongJie:fix/yueyang-receipt-promo-selfcheck
WuYongJie:feature/yueyang-billing-details-filters
WuYongJie:fix/yueyang-amount-net-of-expense
WuYongJie:fix/yueyang-export-progress-percent
WuYongJie:fix/yueyang-offset-signed-amount
WuYongJie:feature/jushuitan-cost-price-snapshot
WuYongJie:fix/shipping-outbound-carrier
WuYongJie:fix/jushuitan-shipping-align
WuYongJie:feature/jushuitan-shipping-data
WuYongJie:feature/qiuxiang-mapping-platform-normalize
WuYongJie:feature/qiuxiang-ledger-remark-from-account-mapping
WuYongJie:feature/qiuxiang-jst-planting-flag-fix
WuYongJie:feature/qiuxiang-jst-planting-flag
WuYongJie:feature/qiuxiang-jst-labels-multiselect
WuYongJie:codex/release-store-report-periods
WuYongJie:fix/chenxi-erp-daily-empty-range
WuYongJie:fix/chenxi-erp-daily-calendar
WuYongJie:feature/chenxi-erp-daily-bills
WuYongJie:feature/chenxi-ledger-remark-sheet2
WuYongJie:feature/zhoushengchen-return-pickup-quote
WuYongJie:fix/chenxi-ledger-remark-mirror-tabs
WuYongJie:feature/chenxi-toutiao-daily-cron
WuYongJie:feature/chenxi-ledger-remark-column
WuYongJie:feature/dodo-internal-flow-report
WuYongJie:feature/dodo-tax-forecast
WuYongJie:feature/dodo-shop-entity-trademark-crawl
WuYongJie:feature/yueyang-account-mapping-tax-category
WuYongJie:hotfix/yueyang-account-mapping-category-filter
WuYongJie:hotfix/yueyang-account-mapping-multiselect
WuYongJie:feature/yueyang-account-mapping-log-timezone
WuYongJie:feature/yueyang-account-mapping-history
WuYongJie:feature/dodo-finance-table-layout
WuYongJie:feature/yueyang-account-mapping-page
WuYongJie:feature/chenxi-inventory-warehouse-short-name
WuYongJie:fix/qiuxiang-deleted-migration-deploy-check
WuYongJie:fix/qiuxiang-revert-inventory-mapping-merge
WuYongJie:fix/chenxi-deploy-tunnel-process
WuYongJie:fix/chenxi-regctl-executable
WuYongJie:fix/chenxi-deploy-ssh-reuse
WuYongJie:fix/chenxi-scp-array-splat
WuYongJie:fix/chenxi-macos-scp-compat
WuYongJie:fix/chenxi-macos-deploy-runner
WuYongJie:fix/qiuxiang-vipshop-mp-label
WuYongJie:fix/chenxi-inventory-mapping-release-20260928
WuYongJie:feature/codex-taobao-alipay-authoritative
WuYongJie:feature/qiuxiang-build-version-indicator
WuYongJie:feature/yueyang-small-payment-filter-scroll
WuYongJie:feature/chenxi-inventory-import-export-v2
WuYongJie:fix/chenxi-inventory-sales-stock-enabled
WuYongJie:codex/release-report-query-final
WuYongJie:fix/92451-withdrawal-compliance
WuYongJie:fix/limeng-shipping-sync-query-timeout-v2
WuYongJie:fix/limeng-shipping-timeout
WuYongJie:fix/dodo-new-button
WuYongJie:fix/codex-account-bill-export-scope
WuYongJie:feature/limeng-merge-jushuitan-shipping-data
WuYongJie:fix/chenxi-inventory-report-july-rollforward
WuYongJie:fix/chenxi-inventory-report-july-filter
WuYongJie:fix/limeng-online-daifa-daily-sync
WuYongJie:fix/chenxi-inventory-report-july
WuYongJie:fix/chenxi-login-redirect
WuYongJie:fix/limeng-jst-orders-index
WuYongJie:fix/yueyang-pinduoduo-september-import-date-filter
WuYongJie:fix/limeng-remove-online-daifa-raw-form-column
WuYongJie:fix/yueyang-production-supplier-payable-connection
WuYongJie:feature/yueyang-pinduoduo-complete-bills
WuYongJie:fix/limeng-agreement-personal-counterparty
WuYongJie:fix/chenxi-inventory-aug-opening-balance
WuYongJie:fix/chenxi-inventory-subwarehouses
WuYongJie:feature/limeng-shipping-data-filters
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "feature/sumu-import-memory-fix"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
上一版把「大文件导致 500」修掉了,但 20 万行仍然跑不动:整表解析一次要 25-30 秒、峰值 430MB(sharedStrings),分块读完整表要 9 分钟;单次 HTTP 请求也扛不住。
改动
PayablesWorkbookStreamReader:xlsx 用 ZipArchive + XMLReader 逐行解析,共享字符串用「拼接串 + 偏移索引」紧凑存放(内存从几百兆降到几十兆);支持日期样式单元格(转 Y-m-d)、GBK 编码 CSV、分隔符自动识别;xls 回退 PhpSpreadsheet。PayablesFinalImportRunner:上传时把工作簿转成行缓存(jsonl.gz),之后前端按片调用;每片 20000 行 / 25 秒预算,落库改为批量 upsert + 批量审计事件;单次导入上限 200,000 行,完成后自动清理缓存。import-upload(上传建缓存)/import-chunk(按片处理),只挂在终版目录的按表路由上;导入弹窗改为 AJAX 分片流程,带进度条与"新增/更新"计数,完成后自动刷新。upload_max_filesize10M→64M(nginx 已是 64m / 120s)。验证
PayablesFinalImportRunnerTest5 个用例:xlsx 流式读取(含日期转换)、GBK CSV、分片续跑与完成清理、上传/分片接口、页面接线;全部通过。说明
该 PR 因复用了已合并的旧分支名被 Gitea 判定冲突,已改为 #361 重新提交并合并,此 PR 关闭。
Pull request closed