摘要:針對醫(yī)院財務部門傳統(tǒng)手工開票流程效率低、易出錯的現(xiàn)狀,該研究基于PyQt框架與Python語言,并結(jié)合人工智能技術(shù),設(shè)計并實現(xiàn)了一套自動化票據(jù)打印系統(tǒng)。系統(tǒng)整合SQLite數(shù)據(jù)庫管理、動態(tài)數(shù)據(jù)查詢與PDF套打技術(shù),實現(xiàn)了票據(jù)錄入、打印、作廢及多維度數(shù)據(jù)導出的全流程自動化。核心功能包括:基于數(shù)據(jù)庫聯(lián)動的快速信息填充、金額自動大寫轉(zhuǎn)換、用戶自定義模板適配等。應用表明,系統(tǒng)將單次開票時間從3分鐘縮短至10秒以內(nèi),錯誤率大幅降低,并通過用戶反饋優(yōu)化了交互設(shè)計。本研究為醫(yī)療場景下的財務管理提供了一種高效、實用的技術(shù)解決方案,具有良好的推廣應用前景。
關(guān)鍵詞:票據(jù)打印系統(tǒng);PyQt;人工智能
中圖分類號:TP311" " " 文獻標識碼:A
文章編號:1009-3044(2025)19-0106-03
開放科學(資源服務) 標識碼(OSID)
1 系統(tǒng)開發(fā)背景
醫(yī)院財務部門需要處理大量的往來單位、個人以及內(nèi)部人員的繳費開票業(yè)務。傳統(tǒng)的人工開票方式效率低下,平均每張票據(jù)耗時3分鐘,且易因手動錄入導致錯誤,信息查詢也較為煩瑣。尤其是在人員考試、職稱晉升等集中繳費情況下,常需要多人同時收費,繳費者排隊等候時間較長,效率較低。為解決這些問題,本研究開發(fā)了基于PyQt框架與Python語言的自動化票據(jù)打印系統(tǒng)。
PyQt是Qt應用程序框架的Python綁定,具有跨平臺、控件豐富、支持數(shù)據(jù)庫等優(yōu)點,能夠快速構(gòu)建功能豐富、界面美觀的應用程序[1]??紤]到票據(jù)數(shù)據(jù)量適中,本系統(tǒng)選擇Python自帶的輕量級數(shù)據(jù)庫SQLite,以簡化部署和維護[2]。
2 系統(tǒng)功能
系統(tǒng)包含票據(jù)管理、數(shù)據(jù)查詢和系統(tǒng)管理三項基本功能。
2.1 票據(jù)管理
1) 打印票據(jù):核心功能,簡化會計人員工作。打印日期自動默認為當前系統(tǒng)日期,并允許手動修改。繳費人(今收到) 支持直接讀取Excel表方式和繳費人數(shù)據(jù)庫方式。對于集中繳費情況,系統(tǒng)支持從Excel表格批量導入繳費人員信息,包括手機號、姓名、職工工號等。經(jīng)常往來的單位和個人可以添加到數(shù)據(jù)庫“今收到”字典中。操作員僅須錄入手機號前幾位或工號就能快速讀取到繳費人姓名。選中“今收到”編輯框后面的“自動記憶”復選框,可以將當前項目自動添加到“今收到”數(shù)據(jù)庫字典。勾選“帶入經(jīng)手人”復選框,可將“今收到”信息自動復制到“經(jīng)手人”欄,減少重復錄入。
打印票據(jù)窗口的功能布局如圖2所示。錄入票據(jù)的判斷流程如圖4所示。單擊“打印”按鈕后,收費數(shù)據(jù)首先保存到數(shù)據(jù)庫收據(jù)明細表receipt_detail,表結(jié)構(gòu)參見表1;然后將相關(guān)信息套打到收款收據(jù)的相應位置,收款收據(jù)格式參見圖1。
2) 導出收費明細:支持導出所有收費員或當前收費員的明細到Excel文件,方便二次處理。
3) 收費員結(jié)賬:在當前收費員收費明細中置入當前結(jié)賬日期,便于日清日結(jié)。
4) 作廢票據(jù):用于處理錄入錯誤的票據(jù)。
5) 重打票據(jù):用于處理打印機異?;虿僮魇д`的情況。
2.2 數(shù)據(jù)查詢
1) 收費明細查詢:支持按出納員工號、收費日期、結(jié)賬日期、結(jié)賬狀態(tài)等條件查詢收費明細。
2) 收費匯總查詢:支持按收費/結(jié)賬日期、出納員工號、出納、收款方式、作廢狀態(tài)等條件匯總收費次數(shù)和金額。
3) 按收費時間段查細目:支持按收費時間段展示收費明細,并可導出到Excel文件。
2.3 系統(tǒng)管理
1) 用戶維護:管理系統(tǒng)用戶。
2) 交來名稱維護:維護“交來”字典,提高用戶錄入速度。
3) 今收到名稱維護:維護“今收到”字典,提高用戶錄入速度。
4) 備份收費明細:將工作表數(shù)據(jù)備份到備份表。
5) 刪除收費明細:刪除工作表數(shù)據(jù),實現(xiàn)工作表瘦身,提高存取速度。
6) 調(diào)整票據(jù)套打位置:設(shè)置收據(jù)上每個打印項的位置,提高對票據(jù)和打印機變更的適應能力。
3 DeepSeek實現(xiàn)“按收費時間段查細目”功能
該功能允許用戶自定義起始日期和結(jié)束日期,系統(tǒng)將檢索并顯示該時間段內(nèi)的所有收費明細記錄,并支持導出為Excel文件。按收費時間段查細目功能布局窗口如圖3所示。
3.1 命令提示詞
用PyQt6實現(xiàn):用戶錄入SQLite數(shù)據(jù)庫中表receipt_detail中字段charge_date的開始日期和結(jié)束日期,查詢符合條件的明細,明細用QTableWidget展示,設(shè)置一個“Excel導出”按鈕,單擊該按鈕導出到Excel文件,該文件名默認為“收費明細”+“開始日期”+“-”+“結(jié)束日期”+“.xlsx”。表receipt_detail包含字段:receipt_no、todayget、handover、charge_kind、charge_fee、charge_date、report_date、handedby、op_name、invalid。對應的中文名稱分別為收據(jù)號、今收到、交來、收款方式、收費額、收費日期、結(jié)賬日期、經(jīng)手人、出納、是否作廢。希望這些數(shù)據(jù)以中文名稱顯示在表格中。增加刪除按鈕,可以在表receipt_detail中刪除查詢出來的數(shù)據(jù),刪除前有提示,可以選擇取消或確認。導出的Excel文件以對應的中文字段名稱作為列名。
3.2 生成的主要代碼
def initUI(self):
# 表格
self.table = QTableWidget()
self.headers = ['收據(jù)號', '今收到', '交來', '收款方式', '收費額', '收費日期', '結(jié)賬日期', '經(jīng)手人', '出納', '是否作廢']
……
def query_data(self):
start_date = self.start_date_input.text()
end_date = self.end_date_input.text()
try:
datetime.strptime(start_date, '%Y-%m-%d')
datetime.strptime(end_date, '%Y-%m-%d')
except ValueError:
QMessageBox.warning(self, '日期格式錯誤', '請輸入正確的日期格式 (YYYY-MM-DD)')
return
……
def export_to_excel(self):
start_date = self.start_date_input.text()
end_date = self.end_date_input.text()
filename = f\"收費明細{start_date}-{end_date}.xlsx\"
……
df = pd.DataFrame(data, columns=self.headers)
df.to_excel(filename, index=False)
QMessageBox.information(self, '導出成功', f'數(shù)據(jù)已成功導出到 {filename}')
4 體會
4.1 Python語言的優(yōu)缺點
Python語言擁有豐富的第三方模塊,開發(fā)速度快,但在快速報表生成方面存在不足。打印票據(jù)最開始利用Excel實現(xiàn),設(shè)計報表格式方便快捷,甚至可以利用Excel自身的函數(shù)實現(xiàn)人民幣大寫轉(zhuǎn)換,用戶也可以享有較大的設(shè)計自由度。以下是實現(xiàn)人民幣大寫的Excel函數(shù)指令。
=\"?\"amp;IF(B7lt;0,\"負\",\"\")amp;IF(TRUNC(B7)=B7,TEXT(IF(B7lt;0,-B7,B7),\"[DBNum2]\")amp;\"元整\",IF(TRUNC(B7*10)=B7*10,TEXT(TRUNC(IF(B7lt;0,-B7,B7)),\"[DBNum2]\")amp;\"元\"amp;TEXT(RIGHT(B7),\"[DBNum2]\")amp;\"角整\",TEXT(TRUNC(B7),\"[DBNum2]\")amp;\"元\"amp;IF(ISNUMBER(FIND(\".0\",B7)),\"零\",TEXT(LEFT(RIGHT(B7,2)),\"[DBNum2]\")amp;\"角\")amp;TEXT(RIGHT(B7),\"[DBNum2]\")amp;\"分\"))
人民幣小寫保存在“B7”單元格?!癟RUNC”函數(shù)將數(shù)字的小數(shù)部分截去,返回整數(shù);“FIND”函數(shù)用于在一個文本字符串中查找另一個文本字符串,并返回起始位置;“ISNUMBER”函數(shù)用于判斷一個值是否為數(shù)字;“TEXT”函數(shù)能將數(shù)值按照指定的格式轉(zhuǎn)換為文本;“LEFT”函數(shù)用于從文本字符串的左側(cè)開始提取指定數(shù)量的字符;“RIGHT”函數(shù)用于從文本字符串的右側(cè)開始提取指定數(shù)量的字符;“DBNum2”函數(shù)可把數(shù)字轉(zhuǎn)換為中文大寫數(shù)字,例如“=DBNum2(123)”返回 “壹佰貳拾叁”。然而,使用openpyxl模塊向Excel文件寫入數(shù)據(jù)時,存在5~10秒的延遲,導致用戶等待時間過長,影響效率。
利用PyPDF2模塊,改為將票據(jù)信息寫入PDF的方式,解決了時間延遲問題,但同時也引入了打印機控制和特殊符號打印等新問題。用Ghostscript模塊實現(xiàn)了PDF打印機控制,用canvas模塊可繪制特殊符號。盡管增加了額外的處理功能,但系統(tǒng)速度仍遠優(yōu)于基于Excel的實現(xiàn)方式。
4.2 用戶需求的重要性
系統(tǒng)開發(fā)過程中,與用戶的持續(xù)溝通至關(guān)重要。重視用戶提出的每一個需求,即使看似煩瑣,都能為開發(fā)者提供完善程序的線索和靈感?!白詣佑洃洝薄安磺蹇战痤~”和“帶入經(jīng)手人”等復選框的增加,均源于用戶需求,這些功能的加入顯著提升了開票速度[3]。
4.3 人工智能代碼生成工具應用
隨著大語言模型(Large Language Models,LLMs) 技術(shù)的突破性發(fā)展,基于自然語言交互的智能代碼生成工具正逐步重構(gòu)傳統(tǒng)軟件開發(fā)范式[4]。本案例探討了人工智能代碼生成工具在提升軟件開發(fā)效率方面的應用。以深度求索DeepSeek、字節(jié)跳動豆包、百度文心快碼為代表的生成式人工智能工具,通過其先進的自然語言處理(NLP) 能力和代碼語義理解技術(shù),可顯著提升特定開發(fā)場景下的工作效率。
借助NLP,系統(tǒng)能夠理解用戶查詢背后的意圖,從而提供更準確、與上下文更相關(guān)的搜索結(jié)果。搜索引擎不再僅僅依賴于關(guān)鍵字匹配,而是分析單詞和短語的含義,即使查詢模糊或復雜,也能更輕松地找到相關(guān)信息,有助于改善網(wǎng)絡搜索、文檔檢索以及企業(yè)數(shù)據(jù)系統(tǒng)中的用戶體驗。
借助代碼語義理解技術(shù),可以深入分析代碼的邏輯結(jié)構(gòu)和語義信息,識別出代碼中潛在的邏輯錯誤、語法錯誤以及可能存在的風險,幫助開發(fā)者提前預防問題的發(fā)生。
從技術(shù)實現(xiàn)層面分析,這些工具普遍采用基于Transformer架構(gòu)的多模態(tài)預訓練模型,通過海量開源代碼庫(如GitHub) 和專業(yè)技術(shù)文檔的深度學習,構(gòu)建起代碼語法與語義特征的雙重表征空間[5]。以本課題開發(fā)的票據(jù)系統(tǒng)核心模塊為例,“金額人民幣大寫轉(zhuǎn)換”功能的傳統(tǒng)開發(fā)需耗時約3~4小時進行邊界條件測試與異常處理,而借助DeepSeek的代碼生成功能,通過漸進式提示工程(Prompt Engineering) 優(yōu)化,可將開發(fā)周期壓縮至十幾分鐘內(nèi)。具體而言,初始提示詞“生成金額中文大寫轉(zhuǎn)換函數(shù)”僅能輸出基礎(chǔ)功能代碼,不斷增加約束條件(如“處理萬億級數(shù)值”“支持正負數(shù)標識”“小數(shù)點后只有一位時添加‘整’字”) ,經(jīng)過5輪迭代優(yōu)化,最終獲得的Python函數(shù)在單元測試中一次通過率達到90%以上。
在復雜業(yè)務邏輯實現(xiàn)方面,考察了“按收費時間段查詢細目”功能的開發(fā)過程。傳統(tǒng)開發(fā)模式需要經(jīng)歷業(yè)務需求分析→流程圖設(shè)計→代碼實現(xiàn)的線性過程,而基于Trea工具的人機協(xié)作范式則展現(xiàn)出顯著優(yōu)勢:首先通過自然語言描述業(yè)務規(guī)則,系統(tǒng)自動生成UML狀態(tài)圖;進而基于可視化圖表進行交互式修正后,同步輸出具備事務處理能力的SQL查詢語句。這種“需求—設(shè)計—代碼”的閉環(huán)迭代機制,使開發(fā)效率大幅提升,同時降低因需求理解偏差導致的返工風險。
5 總結(jié)
本研究開發(fā)的自動化票據(jù)打印系統(tǒng),有效地解決了醫(yī)院財務部門傳統(tǒng)手工開票流程中存在的效率低、易出錯等問題。該系統(tǒng)功能完善,操作便捷,顯著提高了開票效率和準確性,具有較高的實用價值和推廣潛力。
參考文獻:
[1] 孫孟宇,劉絢,張梅潔.一種基于PyQt的上位機測試軟件設(shè)計[J].山西電子技術(shù),2025(1):83-86.
[2] 盛凱,曾壹,王守韋.SQLite數(shù)據(jù)庫在調(diào)度集中系統(tǒng)中的應用研究[J].鐵道通信信號,2024,60(10):39-43.
[3] 劉金婷.計算機軟件系統(tǒng)開發(fā)中的主要問題與應對思考[J].電子元器件與信息技術(shù),2024,8(11):65-68.
[4] 司凱威.大語言模型在廣電監(jiān)管系統(tǒng)運維中的應用[J].廣播與電視技術(shù),2025,52(3):87-92.
[5] 胡遠濤.人工智能在計算機應用軟件開發(fā)中的應用探索[J].信息記錄材料,2025,26(2):81-83.
【通聯(lián)編輯:謝媛媛】