欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 257

点击:21924[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 1 楼
文章id: 119
将dt1000流通数据升级到dp2系统 开发进展

作者: xietao


程序名叫做upgradedt1000loan.exe


发表时间: 2006-08-26 22:54:52



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 120
书目数据转换窗口

作者: xietao


书目数据转换窗口,用于将dt1000的MARC格式书目数据,转换成dp2系统的XML格式数据,进入对应的书目库;同时,把MARC格式书目数据中的906和986字段中的册信息,拆分为若干实体XML记录存入dp2系统的实体库。

===

编程中感到比较不爽的是,dt1000书目数据986字段中,$t子字段为“应还书日期”,而缺乏“借阅日期”信息。而dt1000读者数据的986字段中,除了有“应还书日期”外(在$v子字段中),还有“借阅日期”(在$t子字段中)。这就意味着,在单独一轮升级书目数据的过程中,缺乏足够的信息来创建完整的dp2实体记录,而要等到读者数据也升级后,专门用一轮交叉处理来重写、增补dp2实体记录的某些信息。

从上面也可以看出,在设计dt1000书目数据和读者数据的时候,碰巧两个有关的字段的字段名都设计成了986,但是同样叫$t子字段,含义却不同,容易引起误会,这是一个遗憾。

===

保存书目记录:

MARC书目记录按照UNIMARC或USMARC格式转换为MARCXML格式。全部MARC字段都得到保留。自然,其中的dt1000扩充的906/986等字段,仅仅起到参考的作用,今后dp2软件不会再更新这些字段。保存记录到dp2系统的时候,是追加方式。这就要求批处理前,必须先清空dp2书目库。保存成功后,可以获得实际存入的dp2记录id号。

创建实体记录的步骤:

1) 将MARC数据中的906和986字段按照册条码或登录号合并。如果没有册条码的,按照登录号进行判重。如果某册信息发生重复,以986的信息为准。 

2) 根据MARC数据中的信息,创建实体XML记录。

<parent> -- 父记录id: 根据先前追加存入dp2书目库中获得记录id。

<barcode> -- 册条码:从子字段组中$a获得。

<registerNo> -- 登录号:从子字段组中$h获得。这是本次新增的元素。

<state> -- 状态:暂空白。

<location> -- 馆藏地点:从子字段组中$b获得。

<price> -- 价格:从子字段组中$d获得。如果从$d中获得的价格内容为空,则从982$b中获得。

<bookType> -- 图书册类型:从子字段组中$f获得。如果$f中获得的图书册类型内容为空,则从982$a中获得。

<comment> -- 注释:从子字段组中$z获得。

<borrower> -- 借阅者:从子字段组中$r获得。

<borrowDate> -- 借阅日期:从子字段组中$t获得。长度要求为8字符。转换为RFC1123格式。本来,$t为应还日期,但是由于dt1000书目册信息中缺乏借阅日期,所以只好用此应还日期来充作“借阅日期”,并且把借阅期限设置为1天,相当于应还日期的第二天。

<borrowPeriod> -- 借阅期限:象征性设置为1天,即“1day”。

<mergeComment> -- 增补注释:关于从906字段增补过来的册信息这一情形的注释。属于临时性注释,并未纳入dp2系统的正式信息元素。



发表时间: 2006-08-26 23:01:08
最后修改时间: 2006-08-27 16:09:32



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 121
读者数据转换窗口

作者: xietao


读者数据转换窗口,用于将dt1000的MARC格式读者数据,转换成dp2系统的XML格式读者数据,进入对应的读者库。 

 

===

根据MARC数据中的读者信息,创建实体XML记录

<barcode> -- 读者证条码:从MARC记录中的100$a获得。

<password> -- 密码:从MARC记录中的080$a获得。dt1000读者数据中的密码为明码,而转换到dp2读者记录中后,需要转换为hash码。

<readerType> -- 读者类型:从MARC记录中的110$a获得。

<createDate> -- 发证日期:dt1000读者信息中缺此项。保持空白。

<expireDate> -- 失效期:从MARC记录中的110$d获得。需要从8字符格式转换为RFC1123格式。

<state> -- 停借原因:从MARC记录中的982$b获得。此元素为本次新增元素。如果读者证状态正常,就不应有此元素或者保持此元素的文本内容为空。

<name> -- 姓名:从MARC记录中的200$a获得。

<namePinyin> -- 姓名拼音:从MARC记录的200$A获得。这是本次新增的元素。

<gender> -- 性别:从MARC记录的200$d获得。

<bornDate> -- 生日:dt1000读者记录中缺乏此信息。保持空白。

<idCardNumber> -- 身份证号:dt1000读者记录中缺乏此信息。保持空白。

<department> -- 单位:从MARC记录的300$a中获得。

<address> -- 通信地址:从MARC记录的400$b中获得。

<zipcode> -- 邮政编码:从MARC记录的400$a中获得。

<tel> -- 电话:从MARC记录的300$b中获得。

<email> -- Email地址:dt1000读者记录中缺乏此信息。保持空白。

---

<borrows> -- 借阅信息(集合)。该元素下可有若干<borrow>元素,每个<borrow>元素表示一册图书的借阅信息。

<borrow> -- 借阅信息(单册):从MARC记录的986字段中的一个子字段组获得。该元素有若干属性:

barcode属性 -- 册条码:从子字段组$a中获得。

borrowDate属性 -- 借阅日期:从子字段组$t中获得。需要从8字符格式转换为RFC1123格式。

no属性 -- 续借次数:从子字段组$y中获得。表示续借次数。1表示?

borrowPeriod属性 -- 借阅期限:子字段组中$v为应还日期,根据它和借阅日期$t计算出借阅期限。也许这个借阅期限不是很准确,因为可能dt1000的应还日期是按照还书日越过了非工作日计算出来的,而dp2的借阅期限是不考虑工作日和非工作日的。 这个计算出来的借阅期限可能偏长。

---

<overdues> -- 超期罚款信息(集合)。该元素下可有若干<overdue>元素,每个<overdue>元素表示一册图书的超期罚款信息。

<overdue> -- 超期罚款信息(单册):从MARC记录的988字段中的一个子字段组获得。该元素有若干属性:

barcode属性 -- 册条码:从子字段组中$a获得。

borrowDate属性 -- 借阅日期:从子字段组中$e获得。需要从8字符格式转换为RFC1123格式。

returnDate属性 -- 应还日期:从子字段组中$t获得。需要从8字符格式转换为RFC1123格式。这里设计放应还日期,而不是放借阅期限,是因为超期罚款字段处理的是已经还回的、有超期情况的册,而尚未还回的、已处于超期状态的册,不在超期罚款字段处理之列。

borrowPeriod属性 -- 借阅期限:这是dp2系统中应有的信息。但是在dt1000的读者记录988字段中缺乏这个信息。所以只好空缺。好在缺乏这个信息,并不影响超期罚款字段的主要功能:收缴罚款、阻止缴罚款前读者后续的借阅,只是少了有关借阅期限的参考信息。

price属性 -- 罚款额:从子字段组中$c获得。这是为dt1000数据升级而专门增补的属性。而在dp2系统中,一般采用的是通过over属性(超期时间)和罚款政策动态计算款额的办法。这样,dp2系统的罚款款额获得办法,就变成了两个:如果有price属性,就用它;如果没有,就用over属性结合其他信息计算出来。

type属性 -- 罚款类型:从子字段组中$b获得。其值有“罚金”“租金”“赔偿”等等。这是因为升级dt1000数据而则增补的属性。

---

<reservations> -- 预约信息(集合)。该元素下可有若干<request>元素,每个<request>元素表示一个独立的预约请求。

<request> -- 预约请求:从MARC记录的984字段中的一个子字段组获得。该元素有若干属性:

items属性 -- 预约的册条码列表:从子字段组中$a获得。dt1000的984字段中每个子字段组只是表示了对一册的预约,当作一个独立的预约请求;而dp2中,可以把多个册条码组合为一个独立的预约请求,当其中任何一个册到达时,预约请求就算满足了,该请求就会被整体处理,多余的其他册条码也即将被一同消除,不再发生作用。所以,从dt1000升级上来的数据,只是用到了dp2系统的一种可能:预约的册条码列表中只有一个条码。

requestDate -- 请求的日期:从子字段组中$b获得。需要从8字符格式转换为RFC1123格式。

注:子字段组中的$c为到书日期。升级软件如果发现一个子字段组有这个子字段,就会跳过这个子字段组,不把其升级到dp2系统中。这样就避免了对已到预约册的升级处理,软件会简单一些。

在后面的交叉处理过程中,需要根据读者记录中的预约请求信息,对相关的实体记录进行信息增补处理。



发表时间: 2006-08-27 22:27:53
最后修改时间: 2006-08-28 12:01:59



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 4 楼
文章id: 257
dt1000到dt2000数据升级过程中的问题

作者: (访客)www


从dt1000到dt2000数据升级过程中,如果停止了,下次能不能从上次倒入的数据接着倒数据?

如这次读者数据只倒了5000条,下次能不能重5001条开始?



发表时间: 2008-06-03 21:05:10
页 1 / 1
 

在线用户
访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客
当前栏目在线用户数 27, 总在线用户数 27