上面的还书提示代码编好了以后,我想到一个有意思的场景,就是假如一册书因为有人预约,还书结束的时候出纳窗本来就会弹出黄色提示框提示放入保留架,如果这时候碰巧这册书来自需要提示的馆藏地点,则上述脚本会促使再弹出一个黄色提示框,也许工作人员会看了迷糊 --- 到底要我怎么办?可能会造成短暂的困惑。
此时如果能仅仅提示放入保留架,而不再进行馆藏地提示,怎么办呢?
我这里设想一下。
因为还书完成后,为了表示需要放入保留架这种情况,dp2library已经自动在册记录的 <location> 元素中写入了类似这样的内容:
#reservation,望湖小学/走廊书架
这个做法曾经给我们编程带来一定麻烦,因为平时我们只关注馆藏地的时候,需要用
// 去掉#reservation部分
strLocation = StringUtil.GetPureLocationString(strLocation);
这样的语句来取得“干净”的内容。
但是在上述的复杂情况下,其中的"#reservation"部分终于能派上用场了。
可以这样判断:
if (StringUtil.IsInList("#reservation", strLocation) == true)
就知道字符串里面是否有这个 #reservation 部分了。但注意,这个 if 语句必须放在上面的 去掉 #reservation 的语句之前。或者预先保留一个没有去掉的原始字符串,后面单独用来判断。
比如,写出来后面一段修改为这样:
string strLocation = DomUtil.GetElementText(dom.DocumentElement, "location");
if (StringUtil.IsInList("#reservation", strLocation) == true)
return; // 直接返回,不做提示了
// 去掉#reservation部分
strLocation = StringUtil.GetPureLocationString(strLocation);
if (strLocation == "流通库")
{
// MessageBox.Show(this.MainForm, strLocation);
e.ChargingForm.FastMessageBox(InfoColor.Yellow,
"注意",
"请把本册放入特殊书架",
2);
}
return;
~~~
上面的情况和代码纯属我的臆断,我尚未验证过(因为害怕制造预约后到书的场景)。如果你们验证发现问题,请及时告诉我。