diff --git a/utils/client.py b/utils/client.py index cb09f0d..5e3baa7 100644 --- a/utils/client.py +++ b/utils/client.py @@ -411,10 +411,22 @@ class HTTPClient: try: with self: self._execute( - sql="""CREATE TABLE IF NOT EXISTS caches (guid TEXT PRIMARY KEY, cache TEXT NOT NULL, timestamp REAL NOT NULL)""" + sql=""" + CREATE TABLE IF NOT EXISTS caches + ( + --缓存唯一标识 + guid TEXT PRIMARY KEY, + --缓存(JSON序列化) + cache TEXT NOT NULL, + --缓存时间 + timestamp REAL NOT NULL + ) + """ ) self._execute( - sql="""CREATE INDEX IF NOT EXISTS idx_timestamp ON caches(timestamp)""" + sql=""" + CREATE INDEX IF NOT EXISTS idx_timestamp ON caches(timestamp) + """ ) except Exception as exception: raise RuntimeError( @@ -432,7 +444,11 @@ class HTTPClient: try: with self: result = self._query_one( - sql="SELECT cache FROM caches WHERE guid = ? AND timestamp >= ?", + sql=""" + SELECT cache + FROM caches + WHERE guid = ? AND timestamp >= ? + """, parameters=(guid, time.time() - self.cache_ttl), ) return ( @@ -453,7 +469,9 @@ class HTTPClient: try: with self: return self._execute( - sql="INSERT OR REPLACE INTO caches (guid, cache, timestamp) VALUES (?, ?, ?)", + sql=""" + INSERT OR REPLACE INTO caches (guid, cache, timestamp) VALUES (?, ?, ?) + """, parameters=( guid, json.dumps(cache, ensure_ascii=False), diff --git a/票据理赔自动化/SQLite.db b/票据理赔自动化/SQLite.db index 5c57b1e..efad18e 100644 Binary files a/票据理赔自动化/SQLite.db and b/票据理赔自动化/SQLite.db differ diff --git a/票据理赔自动化/main.py b/票据理赔自动化/main.py index cfecd14..ab3163d 100644 --- a/票据理赔自动化/main.py +++ b/票据理赔自动化/main.py @@ -282,12 +282,75 @@ if __name__ == "__main__": # 初始化SQLite客户端 super().__init__(database="SQLite.db") - # 初始化购药及就医机构表 try: with self: + # 初始化购药及就医机构表 self._execute( - sql="""CREATE TABLE IF NOT EXISTS institutions (institution TEXT PRIMARY KEY, type TEXT NOT NULL, province TEXT NOT NULL, city TEXT NOT NULL)""" + sql=""" + CREATE TABLE IF NOT EXISTS institutions + ( + --购药及就医机构 + institution TEXT PRIMARY KEY, + --购药及就医机构类型 + institution_type TEXT NOT NULL, + --所在省 + province TEXT NOT NULL, + --所在市 + city TEXT NOT NULL + ) + """ ) + + # 初始化团单表 + self._execute( + sql=""" + CREATE TABLE IF NOT EXISTS group_policies + ( + --团单号,一张团单包括多张个单 + group_policy TEXT NOT NULL, + --投保公司 + insurance_company TEXT NOT NULL, + --保险分公司 + insurer_company TEXT NOT NULL, + --团单有效起期 + from_date REAL NOT NULL, + --团单有效止期 + to_date REAL NOT NULL, + --联合主键:团单号+投保公司+保险分公司 + PRIMARY KEY (group_policy, insurance_company, insurer_company) + ) + """ + ) + + # 初始化个单表 + self._execute( + sql=""" + CREATE TABLE IF NOT EXISTS person_policies + ( + group_policy TEXT NOT NULL, + person_policy TEXT NOT NULL, + from_date REAL NOT NULL, + to_date REAL NOT NULL, + PRIMARY KEY (person_policy, group_policy) + ) + """ + ) + + # 初始化被保人表 + self._execute( + sql=""" + CREATE TABLE IF NOT EXISTS insured_persons + ( + insured_person TEXT NOT NULL, + identity_type TEXT NOT NULL, + identity_number TEXT NOT NULL, + relationship TEXT NOT NULL, + person_policy TEXT NOT NULL, + PRIMARY KEY (person_policy, insured_person, identity_type, identity_number) + ) + """ + ) + except Exception as exception: raise RuntimeError( f"初始化数据库发生异常:{str(exception)}" @@ -305,11 +368,11 @@ if __name__ == "__main__": with self: # noinspection SqlResolve result = self._query_one( - sql="SELECT type FROM institutions WHERE institution = ?", + sql="SELECT institution_type FROM institutions WHERE institution = ?", parameters=(institution,), ) return ( - None if result is None else result["type"] + None if result is None else result["institution_type"] ) # 返回购药及就医机构类型 except Exception as exception: raise RuntimeError(