有关检查借阅链发现读者证条码或册条码不存在的情况处理
问题:
读者角度批检查借阅链时发现很多册记录不存在:
检查读者记录 040019 时发现问题: 检查读者记录中借阅册条码号 03902117 关联的册记录时发生错误: 册条码号 '03902117' 不存在。
*** 修复读者记录 040019 内链条问题时出错: 根据strConfirmItemRecPath '图书总库实体/193351' 获得册记录失败: 记录 '0000193351' 在库中不存在
原因:
- 相应的册记录在服务器中被删除了,但是读者记录没有被删除。然后检查的时候,出现册记录不存在的情况。
修复:
- 将读者角度检查借阅链出现“册记录不存在”的证条码提取出来。
- 分析这些读者都是来自哪些图书馆
以下操作需先到本地模拟一下,才能在用户服务器实施 3. 如果该图书馆不存在分馆,那么与领导确认这个馆是否保留还是删除。(删除前一定要导出xml备份) 4. 如果这些图书馆包含在分馆内,那么将对应册记录重新导入进本地。(以前删除记录都有备份) 5. 当执行完以上操作之后,,再次通过两个角度检查借阅链。应不再出现“XXX不存在”的情况。
实际操练
一、发现问题:
用户层:
- 读者角度检查借阅链940条出现“册条码不存在情况”
检查读者记录 040019 时发现问题: 检查读者记录中借阅册条码号 03902117 关联的册记录时发生错误: 册条码号 '03902117' 不存在。
*** 修复读者记录 040019 内链条问题时出错: 根据strConfirmItemRecPath '图书总库实体/193351' 获得册记录失败: 记录 '0000193351' 在库中不存在
- 将文本拷贝到文本里,向上级反应。
二、问题分析:
- 抽查其中几条册条码号,进入服务器检查,发现册记录已被删除。
三、数据处理:(该步骤错误,不能直接用用户服务器进行操作)
- 将检查借阅链问题的结果中 读者证条码提取出来。(提取到txt中)
- 进入读者查询窗,按条码号查询读者。
- 统计分别来自哪些读者库、(有些用户按照单位区分,所以要注意一下)
- 跟领导讨论后,删除读者记录。
四、模拟数据恢复处理:
大备份本地层:
-
大备份用户服务器,恢复到本地。
-
导入被错误删除的册记录bdf文件 执行该操作时,应使用恢复模式导入,并且导入时仅恢复下级册记录模式
-
读者角度检查借阅链。(该步骤错误,应先前滚日志再操作)
检查时,新增多条读者记录异常的情况
检查读者记录 3401111705110303(XXXX/3052) 时发现问题: 读者记录中借阅册条码号 01266889 关联的册记录中,其字段关联回的读者证条码号是 ,而不是出发的读者证条码号 3401111705110303。
-
前滚用户当天日志。
-
检查读者借阅链,发现没有异常。
-
册角度检查借阅链出现异常
检查册记录 01570998(临时编目实体/730) 时发现问题:
虽然册记录 临时编目实体/730 中表明了被读者 '015655' 借阅,但是读者记录 XXXXXX/15098 中并没有关于册条码号 '01570998' 的借阅记录。
出现原因是之前删除读者库的时候,删除了分馆读者(应保留的)
-
导入被误删除的读者记录
-
再次执行册角度检查借阅链。报错信息中没有出现“证条码号不存在”的报错信息 证明,排除了读者或者册被删除的错误操作
五、模拟数据修复:
-
将借阅链异常的结果,拷贝到word中。(便于检查) 检查得到剩余50条借阅链异常情况为,虽然册记录 临时编目实体/730 中表明了被读者 '015655' 借阅,但是读者记录 洞庭湖校区/15098 中并没有关于册条码号 '01570998' 的借阅记录
同时检查到有100册图书的册条码为空,未处理。开发者回复:册记录中的 barcode 是允许为空的,这样的册记录靠 refID 元素来实现借书还书。程序没有考虑到这种特殊情况,还需要改进一下。 20220117-软件改进版本:重新检查借阅链的时候,发现版本对于册条码为空的情况不再报错。 -
挑选其中一条册条码开始修复。---成功原册记录中有借阅者borrower元素,修复后将有关借阅者的元素全部清除。
-
开始批量修复借阅链。
-
修复好之后,最终通过两个角度检查借阅链。本地借阅链已正常。没有异常情况。
六、回归借阅链修复功能
因为版本改动较大,所以需冒烟测试一下 https://github.com/DigitalPlatform/dp2/issues/905
七、开始用户修复:
用户层:
- 导入误删除的册记录。-----恢复模式导入
- 导入误删除的读者记录----恢复记录导入
- 读者角度检查借阅链---预期应没有问题(如果有异常的借阅链紧急停止分析原因)
- 册角度检查借阅链-----预期应不会出现:“证条码不存在”的报错。
- 记录检查出的借阅链异常结果-----统计错误种类。
- 对第一条册记录进行零星修复---预期修复成功
- 开始进行批修复---预期应能修复成功
- 册角度检查借阅链---预期应没有借阅链异常的报错信息。
- 统计借阅链出错的册条码。根据馆藏地分类。
- 发邮件通知各个用户---核实实物书是否在馆,如果不在馆。请补借一次图书。
总结1:
1. 如何通过恢复模式导入读者记录(包含borrows元素)
| 序号 | 模块 | 步骤 | 操作 |
|---|---|---|---|
| 1 | 本地模拟 | 创建读者在借环境 | 本地实例,读者借一本书 |
| 2 | 删除读者记录 | 普通删除应删除不了,需使用强制删除 | |
| 3 | 恢复模式-导入读者记录 | 模式选择-覆盖到原有路径;勾选-【恢复模式[会强制写入借阅信息]】 | |
| 4 | 进入dp2rms,确认读者xml中包含borrows元素 | 确认本地恢复模式导入读者记录正确 | |
| 5 | 检查借阅链 | ||
| 6 | 大备份恢复实例导入 | 恢复模式-导入读者记录 | 恢复模式导入 |
| 7 | 根据借阅链给出的结果得出读者证条码号 | 提取出册角度检查读者记录不存在册条码 | |
| 8 | 抽查读者证条码 | 抽查读者证条码XML观察是否包含borrows元素 | |
| 9 | 检查借阅链 |
总结2:
如何删除读者记录:
后面会有恢复-----
| 序号 | 模块 | 事项 | 操作 |
|---|---|---|---|
| 1 | 环境准备 | 用户系统大备份 | dp2管理中心直接备份到NAS上 |
| 2 | 读者角度检查借阅链 | 本地内务检查完成 | |
| 3 | 删除读者库 | 获取读者所在库 | 由报错的借阅链获取读者所在库、所在单位 |
| 4 | 跟马老师确认删除的读者信息 | 获取读者所在 的读者库后跟马老师核对,哪些确认删除。 | |
| 5 | 备份将要删除的读者xml到本地 | 先分读者库以id为检索途径,检索所有读者记录,导出读者记录到xml文件。 | |
| 确认读者信息类别是否可以删除 | |||
| 6 | 删除已备份的读者 | 按照在借记录排序(有在借册排在后面),全选右键删除读者记录 | |
| 7 | 强制删除有在借册读者信息 | 按住CTRL+删除读者记录 删除,删除前确认剩余的读者是否都有在借册,核对数量与借阅链检查数量是否一致 | |
| 8 | 确认读者库是否需要删除 | 根据殷老师的清单备注确认是否删除。 | |
| 9 | 对应读者库删除 | 数据库中删除 | |
| 10 | 再次按照读者角度检查借阅链 | 根据结果再看后面步骤 |