|
|
@@ -1,41 +1,352 @@
|
|
|
-# ISCS_LOTO_Linux
|
|
|
-
|
|
|
-锁控机柜系统
|
|
|
-
|
|
|
-# 项目结构说明
|
|
|
-
|
|
|
-./src目录
|
|
|
-
|
|
|
-## httpclient
|
|
|
-
|
|
|
-./src/httpclient
|
|
|
-
|
|
|
-- 用于访问后台的功能模块
|
|
|
-
|
|
|
-## interactice
|
|
|
-
|
|
|
-./src/interactive
|
|
|
-
|
|
|
-- C++与QML交互的模块
|
|
|
-
|
|
|
-## qml
|
|
|
-
|
|
|
-./src/qml
|
|
|
-
|
|
|
-- 用户界面UI
|
|
|
-
|
|
|
-# usr
|
|
|
-
|
|
|
-./src/usr
|
|
|
-
|
|
|
-- 基本配置信息
|
|
|
-
|
|
|
-- 用户信息、用户登录等功能
|
|
|
-
|
|
|
-# resources
|
|
|
-
|
|
|
-./src/resources
|
|
|
-
|
|
|
-- 图片、字体等相关静态资源
|
|
|
-
|
|
|
-find /home/kim/Desktop/ISCS_LOTO_Linux/src -type f -printf '%P\n' | grep png
|
|
|
+# ISCS_LOTO_Linux
|
|
|
+
|
|
|
+锁控机柜系统
|
|
|
+
|
|
|
+# 项目结构说明
|
|
|
+
|
|
|
+./src目录
|
|
|
+
|
|
|
+## httpclient目录
|
|
|
+
|
|
|
+./src/httpclient
|
|
|
+
|
|
|
+- 用于访问后台的功能模块
|
|
|
+
|
|
|
+```
|
|
|
+调用HttpClient对象的大致流程(以HttpPasswordLogin为例):
|
|
|
+1. HttpPasswordLogin类声明有关请求的信号
|
|
|
+ 1.1 signalPostRequestData: 发送Post请求,HttpClient对象处理相关业务逻辑
|
|
|
+ 1.2 signalLoginReturnStat: 前端(Qml)端处理信号响应槽函数
|
|
|
+ 1.3 signalLoginReturnParam: 槽函数更新参数
|
|
|
+2. HttpClient对象的响应signalPostRequestData信号,执行槽函数slotPostRequestData。
|
|
|
+ 2.1 HttpClient类中有slotPostRequestData、slotGetRequestData和slotPutRequestData等槽函数以对应Post请求、Get请求和Put请求
|
|
|
+3. 在这些槽函数中执行postJsonRequest、postFormdataRequest、getRequest和putJsonRequest等请求方法,并接收到返回结果,再根据请求的Url字符串进行判断触发其对应的信号
|
|
|
+4. HttpPasswordLogin对象接收到signalResponsePasswordLoginData信号触发,执行slotHttpResponseUsernameLogin槽函数,其解析返回结果,然后将解析后的信息作为参数传入signalLoginReturnStat信号中,触发signalLoginReturnStat信号
|
|
|
+5. 前端(Qml端)响应signalLoginReturnStat信号执行槽函数onSignalLoginReturnStat,其根据解析的信息在前端(Qml端)进行显示或执行其他操作
|
|
|
+```
|
|
|
+
|
|
|
+### HttpCardLogin.h
|
|
|
+
|
|
|
+- 处理工卡登录
|
|
|
+
|
|
|
+### HttpClient.h
|
|
|
+
|
|
|
+- 访问后台的子线程
|
|
|
+
|
|
|
+```
|
|
|
+HttpClient类是以postJsonRequest、postFormdataRequest、getRequest和putJsonRequest等请求方法处理与后台的交互逻辑
|
|
|
+```
|
|
|
+
|
|
|
+### HttpFaceLogin.h
|
|
|
+
|
|
|
+- 处理人脸登录
|
|
|
+
|
|
|
+### HttpGetJobTickets.h
|
|
|
+
|
|
|
+- 获取当前用户所关联的所有工作任务信息
|
|
|
+
|
|
|
+### HttpGetUserInfo.h
|
|
|
+
|
|
|
+- 获取当前用户的信息
|
|
|
+
|
|
|
+### HttpGetWorkNodeDetail.h
|
|
|
+
|
|
|
+- 获取表单详情信息
|
|
|
+
|
|
|
+### HttpPasswordLogin.h
|
|
|
+
|
|
|
+- 处理用户名/密码登录
|
|
|
+
|
|
|
+### HttpUpdateNodeApproval.h
|
|
|
+
|
|
|
+- 更新任务节点的信息和是否完成的状态
|
|
|
+
|
|
|
+### HttpUpdateUserInfo.h
|
|
|
+
|
|
|
+- 在设置页面中提交更新用户信息
|
|
|
+
|
|
|
+### HttpUpdateUserPassword.h
|
|
|
+
|
|
|
+- 在设置页面中修改用户密码
|
|
|
+
|
|
|
+### JobTicketModel.h
|
|
|
+
|
|
|
+- 单例对象,关联当前用户的所有工作任务信息的数据模型
|
|
|
+
|
|
|
+### UserInfoModel.h
|
|
|
+
|
|
|
+- 单例对象,存储当前用户的信息的数据模型
|
|
|
+
|
|
|
+### WorkNodeFormModel.h
|
|
|
+
|
|
|
+- 单例对象,存储当前任务节点(录入信息、上锁隔离、解除隔离等)的所有信息的数据模型
|
|
|
+
|
|
|
+## interactice目录
|
|
|
+
|
|
|
+./src/interactive
|
|
|
+
|
|
|
+- C++与QML交互的模块
|
|
|
+
|
|
|
+### InteractiveCAN.h
|
|
|
+
|
|
|
+- 处理前端(Qml)与钥匙和锁等硬件交互功的单例对象
|
|
|
+
|
|
|
+- 处理前端(Qml)与蓝牙交互功的单例对象
|
|
|
+
|
|
|
+```
|
|
|
+1. 前端(Qml端)点击“立即获取锁具”按钮,执行InteractiveCAN::openEKey函数,开始分配钥匙
|
|
|
+2. 获取到钥匙Nfc后,依据Nfc向后台查询(发出信号InteractiveCAN::signalGetRequestData)钥匙的MAC地址,同时查询隔离点位的信息创建作业票(InteractiveCAN::createJobTicket)
|
|
|
+3. 调用InteractiveCAN::connectBLEDevice连接蓝牙,成功连接后,(InteractiveCAN::sendJobTicket)下发作业票到钥匙中
|
|
|
+4. 成功下发作业票后,执行InteractiveCAN::getLocks方法打开锁的卡扣
|
|
|
+5. 成功打开锁的卡扣后,执行InteractiveCAN::getEKey方法打开锁的卡扣
|
|
|
+6. 取出钥匙和锁后,弹出提示框"成功取出设备,请执行上锁操作"
|
|
|
+```
|
|
|
+
|
|
|
+### InteractiveData.h
|
|
|
+
|
|
|
+- 计划作为与前端交互的数据模型集合,暂时未开发
|
|
|
+
|
|
|
+### InteractiveFace.h
|
|
|
+
|
|
|
+- 处理前端(Qml)人脸识别交互功能的单例对象
|
|
|
+
|
|
|
+### ReturnKeyLockManager.h
|
|
|
+
|
|
|
+- 处理前端(Qml)归还设备交互功能的单例对象
|
|
|
+
|
|
|
+## qml目录
|
|
|
+
|
|
|
+./src/qml
|
|
|
+
|
|
|
+### Login.qml
|
|
|
+
|
|
|
+- 登录界面
|
|
|
+
|
|
|
+### JobTicketPage.qml
|
|
|
+
|
|
|
+- 显示关联当前用户的所有任务
|
|
|
+
|
|
|
+### SettingPage.qml
|
|
|
+
|
|
|
+- 用户信息设置页面
|
|
|
+
|
|
|
+### WorkingPage.qml
|
|
|
+
|
|
|
+- 任务详情页面,包含录入信息、上锁隔离、解除隔离等页面
|
|
|
+
|
|
|
+### components组件目录
|
|
|
+
|
|
|
+#### AlertDialog.qml
|
|
|
+
|
|
|
+- 弹窗对话框
|
|
|
+
|
|
|
+#### AvatarCard.qml
|
|
|
+
|
|
|
+- 用户头像组件
|
|
|
+
|
|
|
+#### BlurMask.qml
|
|
|
+
|
|
|
+- 模糊遮罩,qt5版本效果不好
|
|
|
+
|
|
|
+#### CustomVirtualKeyboard.qml
|
|
|
+
|
|
|
+- 自定义虚拟键盘组件
|
|
|
+
|
|
|
+#### FormCard.qml
|
|
|
+
|
|
|
+- 自定义详情表单组件
|
|
|
+
|
|
|
+#### IconText.qml
|
|
|
+
|
|
|
+- 图标加文字的提示组件
|
|
|
+
|
|
|
+#### JobTicketCard.qml
|
|
|
+
|
|
|
+- 显示单个任务信息
|
|
|
+
|
|
|
+- 点击该组件后跳转到对应的任务详情
|
|
|
+
|
|
|
+#### JobTicketColockProcess.qml
|
|
|
+
|
|
|
+- 与解除隔离类型节点有关的交互界面
|
|
|
+
|
|
|
+#### JobTicketProcess.qml
|
|
|
+
|
|
|
+- 与上锁隔离类型节点有关的交互界面
|
|
|
+
|
|
|
+#### JobTicketSubProcess.qml
|
|
|
+
|
|
|
+- 显示上锁隔离/解除隔离任务节点中取出设备相关进度
|
|
|
+
|
|
|
+#### LoadingDialog.qml
|
|
|
+
|
|
|
+- Loading提示对话框
|
|
|
+
|
|
|
+#### LockStatusCard.qml
|
|
|
+
|
|
|
+- 与上锁状态/共锁状态有关的组件
|
|
|
+
|
|
|
+#### LoginCard.qml
|
|
|
+
|
|
|
+- 显示不同登录方式的界面,有人脸、工卡和用户名/密码等方式
|
|
|
+
|
|
|
+#### MBlurCard.qml
|
|
|
+
|
|
|
+- 自定义遮罩组件
|
|
|
+
|
|
|
+#### MButton.qml
|
|
|
+
|
|
|
+- 自定义按钮组件
|
|
|
+
|
|
|
+#### MCalendar.qml
|
|
|
+
|
|
|
+- 自定义日期组件
|
|
|
+
|
|
|
+#### MComboBox.qml
|
|
|
+
|
|
|
+- 自定义下拉框组件
|
|
|
+
|
|
|
+#### MDatePicker.qml
|
|
|
+
|
|
|
+- 自定义选择日期组件
|
|
|
+
|
|
|
+#### MDateRange.qml
|
|
|
+
|
|
|
+- 自定义选择时间范围组件
|
|
|
+
|
|
|
+#### MDateTimePicker.qml
|
|
|
+
|
|
|
+- 自定义选择时间(时分秒)组件
|
|
|
+
|
|
|
+#### MInput.qml
|
|
|
+
|
|
|
+- 自定义输入框组件
|
|
|
+
|
|
|
+#### MNavCard.qml
|
|
|
+
|
|
|
+- 自定义导航卡片组件
|
|
|
+
|
|
|
+#### MRadioButton.qml
|
|
|
+
|
|
|
+- 自定义单选框组件
|
|
|
+
|
|
|
+#### MScrollBar.qml
|
|
|
+
|
|
|
+- 自定义滑动条组件
|
|
|
+
|
|
|
+#### MSelectDateTime.qml
|
|
|
+
|
|
|
+- 自定义选择日期时间组件
|
|
|
+
|
|
|
+#### MSwitchButton.qml
|
|
|
+
|
|
|
+- 自定义SwitchButton按钮组件
|
|
|
+
|
|
|
+#### MTextArea.qml
|
|
|
+
|
|
|
+- 自定义文本块组件
|
|
|
+
|
|
|
+#### MTheme.qml
|
|
|
+
|
|
|
+- 自定义样式对象
|
|
|
+
|
|
|
+#### MTimePicker.qml
|
|
|
+
|
|
|
+- 自定义选择日期组件
|
|
|
+
|
|
|
+#### MVirtualKeyboard.qml
|
|
|
+
|
|
|
+- 自定义虚拟键盘组件
|
|
|
+
|
|
|
+#### NoJobTicketDialog.qml
|
|
|
+
|
|
|
+- 无任务信息的提示对话框
|
|
|
+
|
|
|
+#### ReturnKeyLockProcess.qml
|
|
|
+
|
|
|
+- 归还设备的交互界面
|
|
|
+
|
|
|
+#### SettingFormCard.qml
|
|
|
+
|
|
|
+- 自定义设置表单卡片
|
|
|
+
|
|
|
+#### UpdatePasswordDialog.qml
|
|
|
+
|
|
|
+- 更新用户密码的交互界面
|
|
|
+
|
|
|
+#### UserInfoCard.qml
|
|
|
+
|
|
|
+- 显示用户信息的卡片组件
|
|
|
+
|
|
|
+## usr目录
|
|
|
+
|
|
|
+./src/usr
|
|
|
+
|
|
|
+- 基本配置信息
|
|
|
+
|
|
|
+- 用户信息、用户登录等功能
|
|
|
+
|
|
|
+### define.h
|
|
|
+
|
|
|
+- 宏:根据CAN通讯协议.pdf文件,定义CAN读/写报文结构等信息的宏
|
|
|
+
|
|
|
+### config.h
|
|
|
+
|
|
|
+- 基础配置信息的单例对象
|
|
|
+
|
|
|
+- 有关访问后台API的成员变量
|
|
|
+
|
|
|
+### BluetoothClient.h
|
|
|
+
|
|
|
+- 低功耗蓝牙类
|
|
|
+
|
|
|
+### CANClient.h
|
|
|
+
|
|
|
+- CAN通讯类
|
|
|
+
|
|
|
+- 存储硬件信息的结构体
|
|
|
+ ```
|
|
|
+ 读操作相关:
|
|
|
+ 1. struct CANKeyBaseStatus: 左/右钥匙的基本状态
|
|
|
+ 2. struct CANKeyBaseControlStaus: 左/右钥匙卡扣的状态
|
|
|
+ 3. struct CANSingleLockStatus: 单个锁的基本状态
|
|
|
+ 4. struct CANLocksControl: 5路挂锁(包含1~5号锁)的卡扣状态
|
|
|
+ 5. struct CANKeyRFIDStatus: 左/右钥匙的RFID(Nfc)信息
|
|
|
+ 6. struct CANLockRFIDStatus: 5路挂锁(包含1~5号锁)的RFID(Nfc)信息
|
|
|
+
|
|
|
+ 写操作相关:
|
|
|
+ 1. struct CANKeyBaseChargeStatus: 写入左/右钥匙的卡扣状态
|
|
|
+ 2. struct CANLocksControl: 写入5路挂锁(包含1~5号锁)的卡扣状态
|
|
|
+ 其他:
|
|
|
+ 1. struct CANReturnKeyDevices: 存储归还设备信息
|
|
|
+ 1.1 key是钥匙的Nfc信息
|
|
|
+ 1.2 value是钥匙对应的主索引号
|
|
|
+ ```
|
|
|
+
|
|
|
+- 重要成员变量
|
|
|
+
|
|
|
+ - 需注意的是每对左右锁对应一个主索引号,一个5路挂锁对应一个主索引号,故使用主索引号作为其key值
|
|
|
+
|
|
|
+ ```
|
|
|
+ 钥匙相关:
|
|
|
+ 1. m_keyBaseStatus:钥匙的基本状态
|
|
|
+ 2. m_keyBaseControlStatus: 钥匙卡扣的状态
|
|
|
+ 3. m_keyRFIDStatus: 钥匙的RFID(Nfc)信息
|
|
|
+
|
|
|
+ 锁相关:
|
|
|
+ 1. m_locksControlStatus: 锁的基本状态
|
|
|
+ 2. m_locksControl: 5路挂锁(包含1~5号锁)的卡扣状态
|
|
|
+ 3. m_locksRFIDStatus: 5路挂锁(包含1~5号锁)的RFID(Nfc)信息
|
|
|
+ ```
|
|
|
+
|
|
|
+### LotoQmlPlugin.h
|
|
|
+
|
|
|
+- C++类注册到Qml端的插件类
|
|
|
+
|
|
|
+# resources
|
|
|
+
|
|
|
+./src/resources
|
|
|
+
|
|
|
+- 图片、字体等相关静态资源
|
|
|
+
|
|
|
+find /home/kim/Desktop/ISCS_LOTO_Linux/src -type f -printf '%P\n' | grep png
|