周文健 zwj

zwj ha pushato nel dev in bozzysadmb/ISCS_APP

  • ec9c275acd refactor(更新) : - 新增硬件ID(`hardwareId`)的本地存储(`SPUtils`)与获取逻辑。 - 登录时,在获取并保存 `cabinetId` 的同时,增加保存 `hardwareId` 的操作。 - 取锁逻辑调整,现在根据 `hardwareId` 而非 `cabinetId` 来过滤已注册的挂锁。 - 增加了相关日志输出,以便于调试挂锁数据和硬件ID的匹配情况。

4 giorni fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 947dbb613c feat(人脸识别): - 在 `LoginActivity` 中,默认启用 HLK-223 模组作为人脸识别后端,替代原有的虹软(ArcSoft)引擎。 feat(硬件): - `Hlk223Client`, `Hlk223PhotoEnroll`: - 修复了通过照片下发注册用户(`enrollWithPhoto`)时的分包逻辑,确保大数据包(如JPG图片)能被正确切分和传输。 - 优化了分包策略,将数据块大小(`DATA_CHUNK`)与协议MTU解耦,并使用`LinkedList`保证帧发送的严格顺序。 - 将 `bioType`(生物特征类型)的默认值从 `1`(特征)修正为 `0`(图像),以匹配照片注册的场景。 - `Hlk223Config`: 新增 `LoggerPlugin` 插件,用于在日志中打印所有与HLK-223模组收发的串口指令,方便调试。 refactor(人脸识别): - `FaceUtil`: - 在人脸登录(`checkCamera`)和注册预览(`startPreview`)流程中,将相机预览画面(`preview`)与人脸框绘制控件(`faceOverlayView`)进行绑定,实现了在HLK模式下的人脸框实时绘制功能,提升了用户交互体验。 - 优化了HLK和虹软两种模式下的回调逻辑,确保人脸框能够稳定地在主线程上更新。 - `ImageCompress`: - 新增 `base64ToJpegUnderMB` 方法,提供一个通过MB单位指定目标压缩大小的便捷接口,内部自动转换为字节单位调用现有压缩逻辑。 chore(依赖): - 升级通信库 `sik-comm` 版本从 `1.0.18` 至 `1.0.19`。

1 settimana fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • aa50e3f683 refactor(人脸识别): - `FaceUtil`: 重构人脸识别工具类,引入多重并发控制机制以解决竞态问题,提高稳定性。 - **线程安全**: - 引入`Mutex`(`detectGate`, `arcLock`, `hlkLock`)和`ReentrantLock`(`cameraLock`),分别用于保护人脸预览处理、ArcSoft引擎生命周期、HLK模组调用和相机生命周期的并发访问,彻底解决了因多线程调用导致的引擎崩溃或状态错乱问题。 - 废弃了`inDetecting`标志位,改用更可靠的`Mutex`进行互斥。 - 使用固定的`FaceEngine-Serial`单线程调度器(`feDispatcher`)来串行化所有对ArcSoft引擎的操作(如`init`/`unInit`、检测、注册、比对),避免了引擎内部的并发冲突。 - **性能与体验**: - 在`checkCamera`流程中实现“命中即停”逻辑:一旦人脸识别成功(相似度>0.5),立即通过`stopAfterHit`原子标志位拦截后续的所有预览帧处理,并停止相机,显著降低了识别成功后的CPU占用和延迟。 - 对`initCamera`和`checkCamera`的回调进行节流处理(1秒1次),避免因预览帧率过高而频繁触发上层UI更新,减轻UI线程压力。 - 在HLK模式下,`onPreview`回调中对MLKit的人脸检测也增加了节流和`mlDetectRunning`原子锁,防止并发处理。 - **鲁棒性与初始化**: - 新增`ensureArcReady`方法,在执行ArcSoft相关操作前,会自动检查并完成引擎的激活和初始化,确保引擎始终处于可用状态。 - 通过`WeakReference`持有`Context`,避免内存泄漏,并用于在需要时懒加载引擎。 - 优化了`registerFace`和`verifyFaceArcSoft`方法,将其执行逻辑全部迁移到`feDispatcher`单线程调度器中,并增加了`ensureArcReady`保护。 - **HLK模组驱动**: - `Hlk223Client`: 修正了`startVerifyWithNotes`中对人脸框(FaceState NOTE)坐标的解析逻辑。增加了对Q8.8定点数格式的判断和缩放处理,并正确实现了从传感器坐标系(640x480)到顺时针旋转270°后的显示坐标系(480x640)的转换,确保了人脸框在预览画面上的正确定位。 - `Hlk223PhotoEnroll`: 增强了照片注册流程的稳定性和超时处理。为分包发送的不同阶段(首包、中间包、末包)设置了不同的超时时间,并优化了REPLY响应的等待和解析逻辑,提高了大批量照片注册的成功率。 - `FaceOverlayView`: 重构了人脸框绘制控件的内部实现和注释,使其逻辑更清晰、性能更优。 feat(人脸识别): - `checkCamera`回调接口增加`faceRect`参数,允许上层在识别成功时获取人脸位置框,用于UI绘制。 - 在登录弹窗 (`iscs_lock`, `iscs_mc`) 中,利用新增的`faceRect`参数,通过`FaceOverlayView`在预览画面上绘制出识别到的人脸框,提升了用户交互的直观性。

2 settimane fa

zwj ha pushato nel dev in bozzysadmb/ISCS_APP

  • 953061f2a6 refactor(登录页) : - 重构 `LoginFragment` 与 `SwitchStatusFragment` - 移除构造函数中的 `ViewPager2` 依赖,改为在 Fragment 内部通过 `activity?.findViewById` 获取实例 - 新增 `newInstance` 静态方法来创建 Fragment 实例 - 简化 `TwoFragmentAdapter` 的构造,不再传递 `ViewPager2` 实例 - 优化 `SwitchStatusFragment` 部分代码逻辑,移除冗余注释和空方法体

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • fb8ed66b3a refactor(人脸识别): - `FaceUtil`: 在人脸比对逻辑中,增加置信度阈值(0.5)判断,只有当相似度高于阈值时才返回识别成功的用户,以提高识别准确率,并增加1秒的延迟以避免短时间内重复识别。 - `FaceUtil`: 调整人脸注册逻辑,移除原有的“先搜索再更新或注册”的复杂流程,统一改为直接执行注册(`registerFaceFeature`),简化了代码逻辑。 - `CheckFaceDialog`, `LoginDialog`: 统一处理人脸识别失败的场景,在未识别到人脸(`bitmap`或`userId`为空)时,通过发送`ToastEvent`来提示用户“人脸识别失败”,改善了用户交互。 fix(人脸): - `SetFaceFragment`: 注释掉在保存用户人脸时调用`registerFaceFeature`的代码,该操作已在`FaceUtil`中处理,避免重复注册。 chore(数据库): - `RoomBackupWorker`: 在数据库恢复失败和完成的`finally`块中,增加发送`LoadingEvent`事件,以确保在数据库操作结束后能及时关闭加载提示。

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 24a9f243ae feat(人脸识别): - `FaceUtil`: 将摄像头预览设置为非镜像模式(`isMirror(false)`),以确保预览画面与实际方向一致。 - `FaceUtil`: 增加对虹软(ArcSoft)引擎和激活状态的重复初始化检查,避免不必要的重复操作。 - `Hlk223Client`: 在HLK人脸模组连续验证(1:N)时,设置为循环模式(`loop = true`),以支持持续识别。 fix(人脸识别): - `LoginDialog`, `LoginFragment`, `CheckFaceDialog`: 在人脸识别回调中增加对`bitmap`和`userId`的空值检查,防止因识别失败返回`null`导致的程序崩溃。 fix(硬件): - `HardwareLogic`, `UserLogic`, `RoleLogic`, `UserRepositoryImpl`: 统一了“状态”字段的传参和数据库存储逻辑。将`true`/`false`映射为`1`(启用)/`0`(禁用)或`0`(正常)/`1`(停用),解决了之前部分模块使用`0`/`2`映射导致的状态查询和更新不一致问题。 refactor(人脸识别): - `Hlk223Client`, `Hlk223Frames`, `Hlk223PhotoEnroll`: 增强了HLK-223模组的通信协议解析能力,通过`autoParse`和`pickBestFrame`机制,实现了对多帧(如REPLY、NOTE帧混合返回)和单帧数据的自适应解析,显著提高了通信的稳定性和对不同固件版本的兼容性。 refactor(指纹): - `FingerprintUtil`: 优化了指纹模块的初始化逻辑。在原有中控(ZK)指纹模块探测失败时,会尝试注册并使用串口指纹模块(`FingerprintCaptureService`),实现了对两种主流指纹模块的自动降级和兼容支持。 refactor(图片处理): - `ImageCompress`: 为图片压缩工具新增`rotateDeg`参数,允许在压缩前按指定角度(如270度)旋转图片,以修正图像方向。 fix(UI): - `item_quick_entrance_*.xml`: 移除了快速入口图标上硬编码的`tint`属性,使其颜色能通过主题或代码动态控制。 - `icon_add.xml`, `icon_remove.xml`: 更新了添加/移除图标的`fillColor`,使其样式更符合新设计。 - `item_locker_group.xml`: 将分组标题的下划线背景从`colorBlack`修正为`colorDivider`,使其与主题风格一致;并在横屏模式下为标题增加了背景样式。 - `dialog_add_key.xml`, `dialog_update_key.xml`: 将钥匙状态字段从“必填”改为“非必填”,增强了表单的灵活性。 fix(功能): - `WorkstationManageFragment`: 修复了在取消默认工作站后,未正确清除已保存的默认工作站ID的问题。 - `ModBusController`: 修正了解析钥匙RFID时的字节范围,并完善了日志,解决了因数据长度不足导致RFID读取错误的问题。 chore(代码): - `ISCSApplication`, `ISCSMCApplication`, `LoginActivity`: 注释掉了部分与HLK人脸识别模组相关的测试和初始化代码。 - `BleBusinessManager`, `JobTicketLogic`: 增加了在下发工作票和获取步骤详情时的调试日志,方便问题排查。

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 8208e15c5a chore(构建): - 将所有模块的 `minSdk` 从 26 降级至 25,以提高设备兼容性。 chore(人脸识别): - 在 `iscs_lock` 模块中,临时禁用 HLK-223 人脸识别模组的初始化逻辑,以便在不支持的设备上进行测试。

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • fa1bc77e02 feat(人脸识别): - `FaceUtil`: 新增对HLK-223人脸识别模组的支持,并实现与原有虹软算法的后端切换。 - `FaceUtil`: 在HLK模式下,增加用户与人脸ID的映射管理(`registerUserIdAndLocalUserId`),以及人脸的删除接口 (`clearFace`)。 - `FaceUtil`: 在应用启动时,增加清除所有已注册人脸和设置UVC参数的逻辑,确保设备处于干净的初始状态。 - `SetFaceFragment`: 在开始人脸录入前,调用`FaceUtil.clearFace`清除当前用户可能存在的旧人脸数据。 - `LoginViewModel`: 在登录时重新启用人脸数据的加载和注册流程。 feat(异常上报): - `ExceptionLogic`, `IsExceptionStandardVo`: 异常数据查询时,补充关联查询上报人信息。 - `ExceptionViewModel`: 上报异常时,记录当前用户的ID(`reporterId`)。 refactor(RFID&UI交互): - `UserManageFragment`, `PointMangeFragment`, `JobExecuteFragment`: 在进行需要刷卡或人脸识别的操作时(如绑定卡、共锁确认),通过发送`InRFIDScanModeEvent(false)`事件临时禁用全局RFID扫描,并在弹窗关闭后恢复,避免在非预期场景下响应刷卡。 - `UserManageFragment`, `PointMangeFragment`: 移除过时的`startReadCard`标志位,统一使用事件驱动模式管理RFID扫描状态。 fix(作业管理): - `JobManageFragment`: 修正批量删除作业的逻辑,从只允许删除"已取消"和"已完成"的作业,调整为只允许删除"未开始"和"已取消"的作业,并更新了提示文案。 - `JobExecuteFragment`: 修复在进行共锁人脸验证时,若用户未录入人脸数据,弹出的提示框会错误地触发后续流程的问题。 - `BleBusinessManager`: 修复钥匙归还上报时,`keyNfc`参数类型不匹配的问题(从 `long` 修正为 `String`)。 fix(UI&布局): - `fragment_create_job.xml`, `fragment_edit_job.xml`, `fragment_create_sop.xml` 等:将多个使用`layout_weight`的布局容器高度从`0dp`改为`wrap_content`,并为其中的RecyclerView设置了`minHeight`,解决了在某些场景下布局高度计算错误导致内容显示不全或重叠的问题。 - `dialog_filter_point.xml`: 移除筛选条件中的必填星号标记,使其变为非必填项。 - `dialog_add_user.xml`, `dialog_update_user.xml`: 为"用户昵称"和"用户姓名"输入框增加必填星号。 - `ExceptionJobFragment`: 将共锁人列表的布局管理器从`grid`改为`FlexboxLayoutManager`,以实现更灵活的自动换行和对齐效果。 - `item_locker_group.xml`: 增加了分组标题的背景样式。 refactor(硬件&并发控制): - `HardwareBusinessManager`, `SlotsManageFragment`: 在处理CAN设备事件时,为`HandlerGate`引入了基于设备(节点+类型+ID)的唯一键,并在设备取出和钥匙扣操作时正确地释放(`leave`)并发锁,防止逻辑阻塞。 chore(调试): - `DeviceModel`: 在`deviceChange`状态变更时增加堆栈日志打印,方便追踪是哪个调用栈修改了设备状态。

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • a36e4a4eb2 feat(人脸识别): - 新增HLK-223人脸识别模组作为可选后端,与虹软(ArcSoft)引擎并行支持。 - `FaceUtil` (原 `ArcSoftUtil`) 新增后端切换机制,可通过 `enableHlkBackend` 切换至HLK模组。 - 在HLK模式下,人脸检测、活体识别和1:N验证完全由硬件模组处理,App仅负责预览和回调。 - 引入ML Kit进行人脸框的实时绘制,并配合HLK的NOTE上报进行状态同步。 - `Hlk223Client`: 重构了与模组的通信逻辑,实现了`startVerifyWithNotes`方法,用于持续监听和解析模组的`NOTE`(人脸状态、活体)和`REPLY`(识别结果)帧,并增加了对粘包、半包、丢帧的健壮性处理。 - `Hlk223Frames`: 新增 `Framer` 类,用于增量式地从数据流中解析出完整的HLK协议帧。 refactor(人脸识别): - `ArcSoftUtil.kt` 重命名为 `FaceUtil.kt`,并统一所有模块对其的引用。 - 优化了登录 (`checkCamera`) 和注册 (`initCamera`) 时的人脸识别流程: - **HLK模式**: 调用 `hlkClient.startVerifyWithNotes` 启动硬件识别,通过回调获取`userId`。 - **ArcSoft模式**: 维持原有的本地SDK识别逻辑。 - 在HLK模式下,图片注册(`registerFace`)逻辑调整为调用 `enrollWithPhoto`,将压缩后的JPG图片下发给模组进行注册。 - `Hlk223Client`: 增加了`stopVerify`方法,以可靠地中止模组的识别流程。 feat(用户): - 在`SetJobCardFragment`中,进入/退出设置作业卡时,通过发送`InRFIDScanModeEvent`事件来全局控制RFID扫描模式的开关。 refactor(启动): - `SplashActivity`: 优化应用启动流程,改为先快速跳转至目标页面(`LoginActivity`/`InitActivity`),再通过`ProcessLifecycleOwner`在后台协程中执行耗时任务(如数据库预热、硬件连接、数据预置),避免启动页卡顿,提升了用户体验。 - 在应用启动时,增加打印上次异常退出原因的日志,便于问题排查。 fix(指纹): - 在指纹录入流程中,当连续失败次数达到上限或录入成功时,确保加载提示(`Loading`)被及时关闭,防止UI卡死。 fix(UI): - `JobExecuteFragment`: 将共锁人、待共锁人列表的布局管理器从`GridLayoutManager`改为`FlexboxLayoutManager`,解决了在部分设备上item显示不全或重叠的问题。 - 作业票步骤列表: 移除步骤布局的背景着色(`bg_tint`),解决换肤后背景色不正确的问题。 - `item_locker_group.xml`: 调整布局高度为`wrap_content`,修复了部分场景下分组显示不全的问题。 - `BaseActivity`: 修复了通过快捷入口跳转时,若目标页面不在当前`NavGraph`中,无法正确跳转的问题。 chore(依赖): - 升级通信库 `sik-comm` 版本从 `1.0.17` 至 `1.0.18`。 - 新增 `com.google.mlkit:face-detection` 依赖,用于在HLK模式下绘制人脸框。

2 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • c358bb631f refactor(人脸/指纹): - `ArcSoftUtil`, `BiometricVerifier`: 将虹软人脸和指纹比对工具类从 `shared` 模块移至 `data/hardware` 下,使其职责更清晰地归属于硬件层。 - `shared/build.gradle.kts`: 将 `sourceafis` 指纹比对库的依赖从 `implementation` 改为 `api`,以便上层模块可以直接使用。 - 各 UI 模块 (`iscs_lock`, `iscs_mc`): 更新对 `ArcSoftUtil` 的引用路径。 feat(人脸): - `ArcSoftUtil`: - 新增后端切换机制,引入 `FaceBackend` (ARC/HLK),并提供 `enableHlkBackend` 和 `disableHlkBackend` 方法,允许在不改变外部 API 的前提下,将人脸识别的底层实现从虹软 SDK 切换到 HLK-223 模组。 - `verifyFaceArcSoft` 方法在HLK模式下,由于模组协议不支持图片对图片的比对,会安全降级(Fallback)到使用本地的虹软引擎进行计算,保证了接口行为的稳定。 - 新增 `extractFeatureFromBase64` 工具方法,用于从Base64图片中提取虹软的人脸特征。 - `iscs_lock/ISCSApplication`: 在应用启动时,增加对HLK-223模组的初始化,并将其设置为 `ArcSoftUtil` 的后端。 feat(硬件): - 新增 `HLK-223` 人脸模组驱动: - `Hlk223Config`: 提供HLK-223模组的Modbus串口配置。 - `Hlk223Frames`: 封装了HLK模组的帧协议打包和解析逻辑。 - `Hlk223Client`: 提供了对HLK模组常用命令的高层封装,如复位、获取设备信息、删除用户、获取用户信息、交互式录入、单次录入、1:N验证等。 - `Hlk223PhotoEnroll`: 实现了通过分包下发JPG图片或人脸特征来进行用户注册的完整流程。 - `FingerprintCaptureService`: - 新增 `getCharOnce` 方法,用于从指纹模块读取已生成的指纹特征模板。 - 优化了指纹图像上传 `upImageOnce` 的分包接收逻辑。 refactor(指纹): - `BiometricVerifier`: - 重构 `verifyFingerprint` 方法,增加 `verifyFingerprintWithDpi` 重载,以支持对不同 DPI 候选集(如500, 508)进行并行模板构建和组合匹配,找出最佳匹配分数,提高了对不同来源指纹图像的识别准确率。 - `FingerprintCaptureService`: 优化了图像采集流程,在成功获取指纹图像后,将其保存到 `/sdcard/iscs/logs/3.txt` 以便于调试。 chore(日志): - `CanReadyPlugin`: 移除在轮询时打印CAN节点二进制状态的调试日志。

3 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • f9e5a1d393 feat(指纹): - 新增对串口指纹模块(`FPM`系列)的支持,通过`FingerprintCaptureService`实现。 - 自动探测并适配波特率(57600/115200),并可自动提速至115200以优化性能。 - 实现指纹图像的采集、传输和解码逻辑,包括对半字节顺序和图像尺寸的自适应解码。 - `FingerprintUtil`中集成新的`FingerprintCaptureService`,与原有中控(ZK)指纹模块并行支持,并通过`isZKDevice`字段区分。 feat(用户): - 在新增/编辑用户弹窗中,增加刷卡录入卡号的功能 (`SwipCardOperationTipDialog`)。 - 通过`InRFIDScanModeEvent`事件控制全局的RFID扫描模式,防止在非输入卡号场景下,刷卡行为被错误响应。 refactor(指纹): - 在指纹扫描流程中增加`onStart`回调,用于在指纹模块开始采集图像时显示“正在获取指纹”提示,优化用户交互体验。 - 对于中控(ZK)指纹设备,仅在`onScan`回调触发(即获取到图像)时才显示加载提示,避免在`onStart`时过早显示。 refactor(人脸识别): - `ArcSoftUtil`: 优化相机初始化逻辑,改为动态查找前置或后置摄像头ID,而不是依赖固定的`CAMERA_FACING_BACK`,并根据上下文获取正确的屏幕旋转角度,提高了相机启动的稳定性和预览的正确性。 refactor(登录): - `LoginActivity`: 优化刷卡登录逻辑,通过`inAccountLogin`标志位判断,仅在非账户登录弹窗激活时才处理刷卡事件,避免在输入账号密码时键盘模拟的刷卡器干扰输入。 fix(UI): - `fragment_set_face.xml`: 修复人脸录入界面`preview_layout`高度为`0dp`导致预览画面无法显示的问题,调整为`match_parent`。 chore(依赖): - 升级通信库`sik-comm`版本从`1.0.13`至`1.0.17`。 chore(日志): - `ISCSApplication`, `ISCSMCApplication`: 调整日志初始化时机,将其提前至`onCreate`方法的开头,确保所有组件都能尽早使用日志。 chore(代码): - `SwipCardOperationTipDialog`: 修正类注释,从“检查人脸弹窗”更正为“刷卡弹窗”。 - 新增`get_fingerprint`字符串资源。

3 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 0188873c82 refactor(CAN): - `DeviceParseStatus`: 移除`ExistDebouncer`防抖逻辑,改为在首次上报时不标记`deviceChange`,简化状态变化检测,避免了因异步回调带来的复杂性。 - `CanReadyPlugin`: 新增在轮询时打印CAN节点二进制状态的调试日志,便于问题排查。 - `HardwareBusinessManager`: 调整CAN设备状态变化的处理逻辑,在设备插入(`isExist`为true)时,仅在非首次初始化时才设置充电。 fix(CAN): - `canDeviceKeyHandler`: 修复钥匙取出时未正确处理`deviceChange`状态的问题。 - `CanHardwareHelper`: 修正开锁/开卡扣时的充电控制逻辑。开锁时,应停止充电;关锁时不做操作。此变更确保了操作的正确性,并统一了相关调用。 refactor(UI): - `SlotsManageViewModel`: 优化`registerStatusListener`接口,统一RS485和CAN模式下的状态监听回调参数为布尔值,简化上层调用。 - `SlotsManageFragment`: 适配`SlotsManageViewModel`的接口变更。 chore: - `skin`: 新增`proguard-rules.pro`混淆规则文件。

3 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 890f6c1aaa feat(硬件): - `DeviceModel`: 为CAN设备模型增加`isException`(是否异常)状态字段。 - `DeviceParseStatus`: 在解析钥匙仓和锁仓状态时,增加对`isException`状态的解析和设置。 - `CanHelper`: 在过滤可用钥匙和锁列表时,排除`isException`为`true`的设备。 - `HardwareBusinessManager`: 在处理钥匙/锁的归还逻辑前,增加对设备和仓位自身`isException`状态的检查,若异常则弹窗提示并中止操作。 refactor(硬件): - `DeviceParseStatus`: 引入`ExistDebouncer`对CAN设备(钥匙仓、锁仓)的`isExist`状态变化进行防抖处理,防止因信号抖动导致的重复或错误触发。 - `CanReadyPlugin`, `ModBusController`: 优化了从CAN/Modbus总线读取RFID的逻辑,统一使用`toHexFromLe()`进行小端序转换,并简化了数据长度校验。 - `CanHardwareHelper`: 修正`controlKeyByKey`逻辑,确保在开/关锁后同步控制充电状态。 - `HardwareBusinessManager`: 优化了`canDeviceLockHandler`和`canDeviceKeyHandler`中的异步回调和状态管理,将`deviceChange`标志位的重置操作移至`finally`块中,确保状态无论成功失败都能被清理,避免逻辑卡死。 - `MainViewModel`: 引入`HandlerGate`并发控制机制,防止因CAN设备状态的快速、重复上报而导致对同一把钥匙的蓝牙连接和作业票读取任务被多次触发。 refactor(日志): - `ISCSApplication`, `ISCSMCApplication`: 重构Logback初始化逻辑,改为在应用启动时动态创建日志目录,并将目录路径注入`logback.xml`,移除了XML配置文件中硬编码的路径和自动创建目录的`contextListener`。 refactor(启动): - `SplashActivity`: 简化数据库初始化`initDatabase`的调用逻辑,确保在不同权限场景下都能正确执行。 - `BootAndUnlockReceiver`: 优化开机自启动逻辑,将延迟增加到4秒,并改用`am start`命令来启动应用,以提高启动成功率。 refactor(UI): - `SkinManager`: 优化了`restartApp`逻辑,替换原先的`killProcess`方式为更平滑的`finishAndRemoveTask`/`finishAffinity`,以无缝重启方式应用新皮肤,改善用户体验。 - `activity_login.xml`: 为登录页的日期时间文本控件新增`colorLoginHeaderText`颜色属性,以支持主题换肤。 - `SlotsManageFragment`, `InitDeviceRegistrationKeyAndLockFragment`: 移除根据硬件模式动态设置布局的代码,统一使用`linear()`布局。 fix(UI): - `fragment_home.xml`: 调整首页统计卡片的布局方向为`vertical`,修复文本显示不全问题。 - `activity_main.xml`: 增大了顶部用户名显示区域的`maxLength`,以容纳更长的文本。 chore: - 将所有模块的`minSdk`从24提升至26。 - 预设数据: 将角色名称“作业负责人”更新为“上锁人”, “作业参与人”更新为“共锁人”。 - 字符串: 新增`material_manage`和`statistical_analysis`等中英文字符串资源。

3 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

4 settimane fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

1 mese fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 08d437aa1f refactor(用户管理): - 优化`UserDao`中用户查询逻辑: - 新增`getUserManagePage`方法,通过SQL直接实现用户管理列表的分页和筛选(昵称、状态、卡号、岗位名),替代原先在`UserLogic`中获取全量数据后再进行内存筛选的方式,大幅提升查询效率。指纹数量统计口径调整为按`group`去重。 - 新增`getJobUsersByIdsAndTicket`方法,通过SQL直接查询指定作业票、用户ID列表和用户角色的用户信息,并包含用户所属分组名。 - 新增`getAllUsersWithWorkstation`方法,通过SQL直接按岗位ID查询所有相关用户信息。指纹数量统计口径调整为直接按指纹记录数。 - 在上述新查询中,角色、岗位、工卡信息均在SQL层面通过`GROUP_CONCAT`聚合,并由`TypeConverter`转换为List,简化了数据处理。 - `UserLogic`中对应的数据获取方法 (`getUserManagerData`, `getJobUserDataByUserIdAndTicketId`, `getAllUserDataWithWorkstation`) 改为直接调用`UserRepository`中新的查询方法。 - `UserRepository`及其实现类`UserRepositoryImpl`和`NetworkUserRepositoryImpl`同步更新接口和实现,以支持新的DAO方法。 - `UpdateUserDataVo`和`UserManageVo`中的`cardNfc`字段类型从`String`修改为`String?`,以允许NFC卡号为空。 - `UserManageViewModel`中更新用户工卡时,增加对`updateUserDataVo.cardNfc`是否为空的判断。

1 mese fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • f9657ac68a refactor(Data): 重构仓储层和逻辑层,引入Repository模式 - **新增Repository接口和实现** - 为`Exception`、`Hardware`、`IsolationPoint`、`JobTicket`、`Role`、`Sop`、`SysMenu`、`Workflow`、`Workstation`等模块创建了Repository接口。 - 针对每个接口,提供了标准的本地实现 (e.g., `HardwareRepositoryImpl`) 和对应的网络实现 (e.g., `NetworkHardwareRepositoryImpl`)。网络实现目前为TODO状态。 - `RepositoryModule`根据`SERVER_ADDRESS`配置动态选择使用本地或网络实现。 - **重构逻辑层(Logic)** - 原先直接依赖Dao的逻辑层 (e.g., `HardwareLogic`, `JobTicketLogic`, `UserLogic`, `SopLogic`, `ExceptionLogic`, `IsolationPointLogic`, `RoleLogic`, `SysMenuLogic`, `WorkflowLogic`, `WorkstationLogic`, `DataExportLogic`) 现在改为依赖对应的Repository接口。 - 移除了`IRfidTokenLogic`和`RfidTokenLogic`,相关功能已整合到`HardwareLogic`和`HardwareRepository`。 - 部分原先在Logic层中直接操作Dao的方法,调整为调用Repository对应的方法。 - `JobTicketRepositoryImpl`、`SopRepositoryImpl`、`HardwareRepositoryImpl`、`WorkstationRepositoryImpl`在构造时注入了其他必要的Repository,以处理跨模块的数据获取(例如,作业票导出时需要关联区域、流程、SOP信息)。 - **调整DAO和DI模块** - `WorkflowStepDao`重命名为`WorkflowDao`,以更准确地反映其职责。 - `DatabaseModule`中相应调整了`provideWorkflowStepDao`的返回类型为`WorkflowDao`。 - `LogicManager`和`AppEntryPoint`中移除了对`IRfidTokenLogic`的引用。 - `LogicModule`中移除了`provideRfidTokenRepository`。 - **数据导出逻辑调整** - `DataExportLogic`现在通过Repository获取数据进行导出,例如通过`hardwareRepository.getAllDataExportPointData()`获取点位导出数据。 - **具体方法调整示例** - `HardwareLogic`中的`getKeyInfo`原调用`hardwareDao.getKeyInfoByRfid`,现改为`hardwareRepository.getKeyInfoByRfid`。 - `JobTicketLogic`中的`createJob`原调用`workflowStepDao.isUnlockBeforeLock`和`workflowStepDao.getStepsByMode`,现改为调用`workflowRepository`的对应方法。 - `WorkstationRepositoryImpl`在其`getWorkstationData`方法内部实现了树形结构的构建逻辑。 - `JobTicketRepositoryImpl`在其`getAllJobData`和`getAllLockedPointsExportData`方法中,注入并使用了`WorkstationRepository`、`WorkflowRepository`和`SopRepository`来组装导出VO所需的数据。 - `SopRepositoryImpl`在其`getDataExportSopData`方法中,注入并使用了`WorkstationRepository`和`WorkflowRepository`来组装导出VO所需的数据。 - `HardwareRepositoryImpl`在其`getAllDataExportPointData`方法中,注入并使用了`WorkstationRepository`来组装导出VO所需的数据。

1 mese fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 5601bfeacc fix(硬件): - `CanCommand`: 修复`setLatchBits_1to5`方法中控制位逻辑错误,确保开锁(`isOpen=true`)时值为`0b0_0000`,关锁(`isOpen=false`)时值为`0b1_1111`。 - `CanHardwareHelper`: 调整`openOrCloseLocks`中`target`的计算逻辑,`lockIdxList`中锁索引从1开始,计算时需减1以匹配位操作(`1 shl (i-1)`),并修正初始累加值为0。

1 mese fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • 41705816fb refactor(data): - 包名修改 refactor(can): - 初始化的代码无效的问题

1 mese fa

zwj ha pushato nel dev in zwj/ISCS_BASE_APP

  • fd2cc230d9 refactor(Dialogs): - 统一将`CustomDialog?`的可空类型修改为`CustomDialog`非空类型,增强代码健壮性。 - 移除部分模块中不再使用的import语句。

1 mese fa