工控上位机控制系统通用UI框架

This commit is contained in:
2026-03-09 16:29:32 +08:00
parent 19af6e2b4e
commit a00e13b11a
54 changed files with 11356 additions and 0 deletions

145
dbCtrl/clsUserTb.py Normal file
View File

@ -0,0 +1,145 @@
# 文件声明了封装用户信息表相关的数据表操作
import copy
from common.dbORMType import stuTbUser
from common.generalFunc import CCommon
from sqliteModule.sqlite_db import g_dbInst
# 用户类别 int ---> string
def _int2str_usertype(userType: int) -> str:
from msg_dict import g_uiCtrlScript
if 0 == userType:
strRet = g_uiCtrlScript['CTRL_USER_TYPE_ADMIN']
elif 1 == userType:
strRet = g_uiCtrlScript['CTRL_USER_TYPE_TECH']
else:
strRet = g_uiCtrlScript['CTRL_USER_TYPE_OP']
return strRet
class CTbUserMgt:
# public:
def __init__(self):
self._m_tbName = 't_user'
self._m_record = [] # 存储表中记录每条记录是一个stuTbUser类型
self._m_error: str = '' # 存储反馈的错误信息
self._getAllUserInfo() # 读取所有用户信息
# 创建用户
def addNewUser(self, userID: str, userType: int) -> bool:
key_list = list(stuTbUser.keys())
strSqlCmd = ('INSERT INTO ' + self._m_tbName + '(' + key_list[0] + ',' +
key_list[1] + ',' + key_list[3] + ') VALUES (?, ?, ?)')
strTime = CCommon.fnGetCurrentTime() # 获取当前时间用于记录用户创建
bRes = g_dbInst.execute_sql(strSqlCmd, (userID, userType, strTime))
if bRes: # 更新到用户信息缓存
stuTbUser[key_list[0]] = userID
stuTbUser[key_list[1]] = userType
stuTbUser[key_list[3]] = strTime
other = copy.deepcopy(stuTbUser)
self._m_record.append(other)
return bRes
# 修改密码
def changePasswd(self, userID: str, userPasswd: str) -> bool:
keys_list = list(stuTbUser.keys()) # 转换为列表
strSqlCmd = 'UPDATE ' + self._m_tbName + ' SET ' + keys_list[2] + ' = ? WHERE ' + keys_list[0] + ' = ?'
bRes = g_dbInst.execute_sql(strSqlCmd, (userPasswd, userID))
if bRes and self._m_record:
for user in self._m_record:
if userID == user[keys_list[0]]:
user[keys_list[2]] = userPasswd
break
return bRes
# 删除用户
def delUser(self, userID: list[str]) -> bool:
if not userID:
return False
# 使用 IN 语句支持批量删除
keys_list = list(stuTbUser.keys())
placeholders = ','.join(['?'] * len(userID))
strSqlCmd = f'DELETE FROM {self._m_tbName} WHERE {keys_list[0]} IN ({placeholders})'
bRes = g_dbInst.execute_sql(strSqlCmd, tuple(userID))
# 删除成功了,要同步更新到缓存
if bRes and self._m_record:
nTotal = len(self._m_record)
nScan = 0
while nScan < nTotal:
user_id = list(self._m_record[nScan].items())[0][1]
if user_id in userID:
del self._m_record[nScan]
nTotal -= 1
continue
nScan += 1
return bRes
# 读取指定用户密码
def getPasswdByUserID(self, userID: str) -> str:
strRes = None
if self._m_record:
for user in self._m_record:
lstSingle = list(user.items())
if userID == lstSingle[0][1]:
strRes = lstSingle[2][1]
break
return strRes
# 读取所有用户id
def readAllUserIDs(self) -> list:
lstRet = []
if self._m_record:
for item in self._m_record:
lstRet.append(list(item.items())[0][1])
return lstRet
# 读取除管理员以外其他用户的id 类别和创建日期
def readUserId_type_date(self) -> list[tuple[str, str, str]]:
lstRet = []
if self._m_record:
for user in self._m_record:
lstSingle = list(user.items())
# 只添加非管理员用户用户类型不等于0
if lstSingle[1][1] != 0:
# 使用_int2str_usertype转换用户类别为字符串
user_type_str = _int2str_usertype(lstSingle[1][1])
singleItem = (lstSingle[0][1], user_type_str, lstSingle[3][1])
lstRet.append(singleItem)
return lstRet
# 根据用户id获取其用户类别
def getUserTypeById(self, userID: str) -> str:
strRet = None
if self._m_record:
for item in self._m_record:
lstSingle = list(item.items())
if userID == lstSingle[0][1]:
strRet = _int2str_usertype(lstSingle[1][1])
break
return strRet
# -------------------------------------------
# 获取错误信息
def getLastError(self) -> str:
return self._m_error
# private:
# 一次读取所有用户信息包括id 类别,密码,创建日期
def _getAllUserInfo(self) -> None:
strSqlCmd = 'SELECT * FROM ' + self._m_tbName
allUsers = g_dbInst.fetch_all(strSqlCmd)
if allUsers:
theField = list(stuTbUser.keys())
for user in allUsers:
stuTbUser[theField[0]] = user[0]
stuTbUser[theField[1]] = user[1]
stuTbUser[theField[2]] = user[2]
stuTbUser[theField[3]] = user[3]
other = copy.deepcopy(stuTbUser)
self._m_record.append(other)
# **************************************************************
g_userCtrl = CTbUserMgt() # 全局对象实例