dp2 icon indicating copy to clipboard operation
dp2 copied to clipboard

有关检查借阅链发现读者证条码或册条码不存在的情况处理

Open wuayang001 opened this issue 3 years ago • 5 comments

问题:

读者角度批检查借阅链时发现很多册记录不存在:

检查读者记录 040019 时发现问题: 检查读者记录中借阅册条码号 03902117 关联的册记录时发生错误: 册条码号 '03902117' 不存在。
*** 修复读者记录 040019 内链条问题时出错: 根据strConfirmItemRecPath '图书总库实体/193351' 获得册记录失败: 记录 '0000193351' 在库中不存在

原因:

  1. 相应的册记录在服务器中被删除了,但是读者记录没有被删除。然后检查的时候,出现册记录不存在的情况。

wuayang001 avatar Jan 14 '22 01:01 wuayang001

修复:

  1. 将读者角度检查借阅链出现“册记录不存在”的证条码提取出来。
  2. 分析这些读者都是来自哪些图书馆

以下操作需先到本地模拟一下,才能在用户服务器实施 3. 如果该图书馆不存在分馆,那么与领导确认这个馆是否保留还是删除。(删除前一定要导出xml备份) 4. 如果这些图书馆包含在分馆内,那么将对应册记录重新导入进本地。(以前删除记录都有备份) 5. 当执行完以上操作之后,,再次通过两个角度检查借阅链。应不再出现“XXX不存在”的情况。

wuayang001 avatar Jan 14 '22 01:01 wuayang001

实际操练

一、发现问题:

用户层:

  1. 读者角度检查借阅链940条出现“册条码不存在情况”
检查读者记录 040019 时发现问题: 检查读者记录中借阅册条码号 03902117 关联的册记录时发生错误: 册条码号 '03902117' 不存在。
*** 修复读者记录 040019 内链条问题时出错: 根据strConfirmItemRecPath '图书总库实体/193351' 获得册记录失败: 记录 '0000193351' 在库中不存在
  1. 将文本拷贝到文本里,向上级反应。

二、问题分析:

  1. 抽查其中几条册条码号,进入服务器检查,发现册记录已被删除。

三、数据处理:(该步骤错误,不能直接用用户服务器进行操作)

  1. 将检查借阅链问题的结果中 读者证条码提取出来。(提取到txt中)
  2. 进入读者查询窗,按条码号查询读者。
  3. 统计分别来自哪些读者库、(有些用户按照单位区分,所以要注意一下)
  4. 跟领导讨论后,删除读者记录。

四、模拟数据恢复处理:

大备份本地层:

  1. 大备份用户服务器,恢复到本地。

  2. 导入被错误删除的册记录bdf文件 执行该操作时,应使用恢复模式导入,并且导入时仅恢复下级册记录模式

  3. 读者角度检查借阅链。(该步骤错误,应先前滚日志再操作)

检查时,新增多条读者记录异常的情况
检查读者记录 3401111705110303(XXXX/3052) 时发现问题: 读者记录中借阅册条码号 01266889 关联的册记录中,其字段关联回的读者证条码号是 ,而不是出发的读者证条码号 3401111705110303。
  1. 前滚用户当天日志。

  2. 检查读者借阅链,发现没有异常。

  3. 册角度检查借阅链出现异常

检查册记录 01570998(临时编目实体/730) 时发现问题: 
虽然册记录 临时编目实体/730 中表明了被读者 '015655' 借阅,但是读者记录 XXXXXX/15098 中并没有关于册条码号 '01570998' 的借阅记录。

出现原因是之前删除读者库的时候,删除了分馆读者(应保留的)

  1. 导入被误删除的读者记录

  2. 再次执行册角度检查借阅链。报错信息中没有出现“证条码号不存在”的报错信息 证明,排除了读者或者册被删除的错误操作

五、模拟数据修复:

  1. 将借阅链异常的结果,拷贝到word中。(便于检查) 检查得到剩余50条借阅链异常情况为,虽然册记录 临时编目实体/730 中表明了被读者 '015655' 借阅,但是读者记录 洞庭湖校区/15098 中并没有关于册条码号 '01570998' 的借阅记录 同时检查到有100册图书的册条码为空,未处理。 开发者回复:册记录中的 barcode 是允许为空的,这样的册记录靠 refID 元素来实现借书还书。程序没有考虑到这种特殊情况,还需要改进一下。 20220117-软件改进版本:重新检查借阅链的时候,发现版本对于册条码为空的情况不再报错。

  2. 挑选其中一条册条码开始修复。---成功原册记录中有借阅者borrower元素,修复后将有关借阅者的元素全部清除。

  3. 开始批量修复借阅链。

  4. 修复好之后,最终通过两个角度检查借阅链。本地借阅链已正常。没有异常情况。

六、回归借阅链修复功能

因为版本改动较大,所以需冒烟测试一下 https://github.com/DigitalPlatform/dp2/issues/905

七、开始用户修复:

用户层:

  1. 导入误删除的册记录。-----恢复模式导入
  2. 导入误删除的读者记录----恢复记录导入
  3. 读者角度检查借阅链---预期应没有问题(如果有异常的借阅链紧急停止分析原因)
  4. 册角度检查借阅链-----预期应不会出现:“证条码不存在”的报错。
  5. 记录检查出的借阅链异常结果-----统计错误种类。
  6. 对第一条册记录进行零星修复---预期修复成功
  7. 开始进行批修复---预期应能修复成功
  8. 册角度检查借阅链---预期应没有借阅链异常的报错信息。
  9. 统计借阅链出错的册条码。根据馆藏地分类。
  10. 发邮件通知各个用户---核实实物书是否在馆,如果不在馆。请补借一次图书。

wuayang001 avatar Jan 14 '22 01:01 wuayang001

总结1:

1. 如何通过恢复模式导入读者记录(包含borrows元素)

序号 模块 步骤 操作
1 本地模拟 创建读者在借环境 本地实例,读者借一本书
2 删除读者记录 普通删除应删除不了,需使用强制删除
3 恢复模式-导入读者记录 模式选择-覆盖到原有路径;勾选-【恢复模式[会强制写入借阅信息]】
4 进入dp2rms,确认读者xml中包含borrows元素 确认本地恢复模式导入读者记录正确
5 检查借阅链
6 大备份恢复实例导入 恢复模式-导入读者记录 恢复模式导入
7 根据借阅链给出的结果得出读者证条码号 提取出册角度检查读者记录不存在册条码
8 抽查读者证条码 抽查读者证条码XML观察是否包含borrows元素
9 检查借阅链

wuayang001 avatar Jan 14 '22 02:01 wuayang001

总结2:

如何删除读者记录:

后面会有恢复-----

序号 模块 事项 操作
1 环境准备 用户系统大备份 dp2管理中心直接备份到NAS上
2 读者角度检查借阅链 本地内务检查完成
3 删除读者库 获取读者所在库 由报错的借阅链获取读者所在库、所在单位
4 跟马老师确认删除的读者信息 获取读者所在 的读者库后跟马老师核对,哪些确认删除。
5 备份将要删除的读者xml到本地 先分读者库以id为检索途径,检索所有读者记录,导出读者记录到xml文件。
  确认读者信息类别是否可以删除  
6 删除已备份的读者 按照在借记录排序(有在借册排在后面),全选右键删除读者记录
7 强制删除有在借册读者信息 按住CTRL+删除读者记录 删除,删除前确认剩余的读者是否都有在借册,核对数量与借阅链检查数量是否一致
8 确认读者库是否需要删除 根据殷老师的清单备注确认是否删除。
9 对应读者库删除 数据库中删除
10   再次按照读者角度检查借阅链 根据结果再看后面步骤

wuayang001 avatar Jan 14 '22 07:01 wuayang001

总结3:

wuayang001 avatar Jan 14 '22 07:01 wuayang001