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

点击:843

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章id: 804
如何利用凭条打印脚本实现还书位置提示

作者: xietao


这里我提供一个特殊的“凭条打印”脚本代码,它实现了根据特定还书位置进行提示的功能。

之所以说“特殊”,是因为凭条打印脚本一般是用于配置凭条打印格式的,但这里用于还书提示。为了示范简洁起见,我提供的这个脚本代码只有还书提示的功能。如果图书馆要同时保有还书提示和凭条打印功能,则需要把负责凭条打印的功能和还书提示的功能混合以后写在同一个脚本文件里,但这里就不示范了。因为任一时刻 dp2circulation 只能有一个凭条打印方案起作用,所以才需要上述混合的做法。

下面是脚本代码:

// 还书提示

using System;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Xml;

using DigitalPlatform.Xml;
using DigitalPlatform.IO;
using DigitalPlatform.Text;

using dp2Circulation;

public class MyPrint : PrintHost
{
    public override void OnInitial(object sender, EventArgs e)
    {
        this.MainForm.ChargingNeedReturnItemXml = true;
    }

    public override void OnReturned(object sender,
    ReturnedEventArgs e)
    {
        base.OnReturned(sender, e);

        string strError = "";

        if (String.IsNullOrEmpty(e.ItemXml) == true)
        {
            strError = "ItemXml为空";
            goto ERROR1;
        }

        XmlDocument dom = new XmlDocument();
        try
        {
            dom.LoadXml(e.ItemXml);
        }
        catch (Exception ex)
        {
            strError = "XML装载到DOM时出错: " + ex.Message;
            goto ERROR1;
        }

        string strLocation = DomUtil.GetElementText(dom.DocumentElement, "location");
        // 去掉#reservation部分
        strLocation = StringUtil.GetPureLocationString(strLocation);

        if (strLocation == "流通库")
        {
            // MessageBox.Show(this.MainForm, strLocation);
            e.ChargingForm.FastMessageBox(InfoColor.Yellow,
            "注意",
            "请把本册放入特殊书架",
            2);

        }

        return;

    ERROR1:
        MessageBox.Show(this.MainForm, strError);
    }
}

怎么应用上述脚本代码呢?操作步骤如下:

1) 在 dp2circulation 的框架窗口中,用主菜单“帮助/参数配置”打开参数配置对话框。切换到“凭条打印”属性页;

2) 按“方案管理”按钮。在随后出现的方案管理对话框中,用“新增”按钮创建一个新的方案,注意把方案名字修改为“还书提示”。然后把上面的代码 paste 到方案的 main.cs 文件中,然后关闭相关对话框,回到参数配置对话框。

3) 这时候凭条打印方案已经创建好了。在“方案管理”按钮下面的“方案名”输入域中,输入或者选定刚创建的“还书提示”方案。这时候还不能使用这个方案,需要退出 dp2circulation,然后重新进入。

4) 上述代码中设定了馆藏地为“流通库”的册还书时候,会出现一个黄色的提示对话框,显示一句话。可以把代码修改为实际需要的馆藏地点名,然后记得每次修改后,都要退出 dp2circulation 然后重新进入。

~~~

上面代码是假定在全局馆藏地的情况。

如果是总分馆模式,需要进行改造。一个是,利用昨天我介绍的方法,用一段代码把馆藏地字符串解析为两段,然后综合进行判断。当然,也可以直接进行比较,例如:

if (strLocation == "分馆名/走廊书架")

{

    ....

}

另外一个,提示语句可以利用变量构造,例如:

            e.ChargingForm.FastMessageBox(InfoColor.Yellow,
            "注意",
            "请把本册放入"+strLocation+"书架",
            2);

~~~

这里我有个初步的想法,就是还书提示,应该是针对特殊地点的少数提示。如果对每个馆藏地点都提示,那黄色提示框就是失去了稀有性,操作者会视觉疲劳。因为黄色提示框本来就是用来提示少量情况下需要继续动作的。

(比如,还书时遇到来自大库的书是不需要提示的,而只有来自走廊书架的才需要提示,因为这个地点要专门分拨上架,还书的时候顺便分堆放)

另外,假如针对每个地点都需要提示,那么可以在出纳窗显示三个区域的情况下进行,把显示册信息的区域的格式修改一下,把馆藏地点名称用大字体显示,或者每个地点对应一个特殊的文字底色之类。这样就不用出现黄色提示框了,对不对?

或者,利用操作历史面板提供突出馆藏地点的显示?

关于分拨堆放的功能,我还计划另外开发一个专门的功能,一边扫册条码屏幕上就会提示,这个功能是单独的,和借还无关,可以用于上架前的筛选。或者用于读者或者工作人员不清楚一册书该如何归架的时候快速查询用。其实,册窗本来就有这个功能,可能仅仅是馆藏地没有突出显示而已。



发表时间: 2013-03-29 22:11:43



  • 普通文章 请教根据馆藏地判断是否开放借阅的脚本 阿甲 2013-03-28 10:49:20[点击:32868]
  • 普通文章 回复: 请教根据馆藏地判断是否开放借阅的脚本 xietao 2013-03-28 22:41:41 (ID:801) [点击:913]
  • 普通文章 非常感谢,我来克隆整理了一下: 阿甲 2013-03-29 09:28:06 (ID:802) [点击:1351]
  • 普通文章 回复: 非常感谢,我来克隆整理了一下: xietao 2013-03-29 19:20:37 (ID:803) [点击:929]
  • 普通文章 如何利用凭条打印脚本实现还书位置提示 xietao 2013-03-29 22:11:43 (ID:804) [点击:843]
  • 普通文章 预约到书提示和馆藏地提示同时出现? xietao 2013-03-29 22:27:28 (ID:805) [点击:852]
  • 普通文章 多谢细心的设计,还需要慢慢消化:) 阿甲 2013-04-01 21:39:41 (ID:806) [点击:1563]
  •  

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