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