基于WCF 的医院固定资产管理系统设计与实现

    黄建琪 余曼 陈盛帆

    

    

    

    摘要:固定资产管理要求不断提高,管理难度日益增加,固定资产管理信息化成为医院信息化建设非常重要的一部分。结合医院固定资产管理现状进行业务分析,获取用户需求,确定固定资产管理系统的设计方案,对系统结构和系统架构进行总体设计。然后将系统按功能划分模块,实现服务层、持久层、表现层的功能,最后部署WCF服务。

    关键词:固定资产;资产档案;分层架构;WCF;物资管理

    中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)13-0006-03

    Abstract:With the increasing of requirements on fixed assets management and the difficulty in managing it, the management informatization of fixed assets has become a very significant part of the hospital information construction. The customer requirements were obtained based on the business analysis of the current situation of fixed assets management in WCF hospital, depending on which the designing scheme of fixed assets management was determined, including a total design of system structure and architecture. Then there was a module division based on different functions of the system in order to realize the functions of service layer, persistent layer and presentation layer and got the service of WCF hospital deployed finally.

    Key words:fixed assets; asset archives; layered architecture; WCF; material management

    1 概述

    医院对信息化要求很高,而由于医院在业务量不断增加,业务范围逐渐扩展,新形势下的固定资产管理急需变革,设计开发新的固定资产管理系统对医院来说意义重大。系统采用Visual Studio 2010开发工具和C#设计语言,以SQL Server 2008 作为后台数据库,基于分层架构模式,结合WCF技术构建。本系统以资产为核心,具备完整的资产管理台账,不但提供资产增加、调拨、折旧、增值、报废基础管理功能和基础信息管理功能,还具有库房管理、资产维修管理、资产盘点、货款支付管理的功能。库房管理包括资产入库、资产出库、科室领用和科室退回,记录资产来路和去向。

    2 系统需求分析

    2.1 业务需求分析

    固定资产在医院资产中所占比例较大,固定资产的管理对于企业降低成本提高生产效率乃至提升医院的经济效益具有重要意义。因此,医院的管理固定资产管理信息系统应满足以下业务需求:

    1)基础信息管理:系统管理员可以对系统基础信息进行设置,比如仓库、资产类别、资产名称规格、生产厂家设置等。

    2)库房管理:针对资产出入库进行管理,包括采购入库、采购退货、科室领用、科室退回。

    3)货款支付管理:资产采购入库后,物资管理部门发送货款支付申请;财务部门对申请单进行审核。

    4)资产条码标签管理:每个资产进入信息系统后,生成并打印唯一条码标签,贴在资产规定的位置,避免账务不符情况的发生,也利于资产跟踪管理。

    5)固定资产的变更:主要包括固定资产增加、所属科室改变、折旧方法的变更等等。

    6)固定资产折旧:固定资产在长期使用过程中会产生耗损,按照折旧年限每月平均提取耗损金额。不同类型的固定资产,折旧年限会有不同,因而需要按资产类型设置折旧年限。

    7)固定资产增值:由于资产新购的配件一般体积较小还可能安装在原资产的内部使用,不方便作为独立资产来管理,可以通过资产增值的方式,配件不作为新的资产入库,而是增加原资产的增值金额,配件和原资产作为一个整体来进行资产管理。

    8)资产盘点:指利用手持智能设备扫描条码,对所管理的资产进行清点,调整信息系统中资产存放位置信息,统计资产盘盈盘亏情况。

    9)资产维修管理:资产设备发生故障后,使用科室登记维修申请;然后设备维修负责人收到维修申请后执行接单操作,并安排维修人员去修理;维修结束后,记录维修结果和维修金额等。

    10)固定资产的处置:即固定资产的减少,其方式种类很多,按其去向不同可分为报废、报损、盘亏等。

    11)查询统计:由用户选择查询条件,显示相应的查询结果,包括业务数据的明细查询和统计查询。查询报表主要有出入库报表、折旧报表、在用资产统计报表和各类业务报表。

    2.2系统主要用例分析

    本文医院固定资产管理系统的使用用户有资产管理部门、财务部门、资产使用科室。资产管理部门使用系统执行资产管理业务操作;财务部门使用系统执行财务核算管理;资产使用科室使用系统针对本科室资产做查询和一些业务申请操作。

    根据不同用户的需求,医院固定资产管理系统用例图如图1所示:

    3系统设计

    3.1 系统功能模块设计

    以下给出本系统功能结构图2所示:

    3.2 系统分层架构设计

    固定资产管理系统采用SOA架构,使用Microsoft.NET的WCF技术来实现服务。系统各模块的子功能作为独立的服务发布,一个业务流程可通过单个服务或者多个服务按序组合来实现,所有发布的服务构成了系统的服务端。而客户端则通过已定义的服务契约和数据契约调用这些服务。

    固定资产管理系统体系分层结构如图3所示:

    固定资产管理系统采用分层体系结构,从上到下分为如下几层:表示层、服务层、业务逻辑层、数据访问层和数据库层。

    采用分层结构的优势:系统维护更方便,各组件互相独立,可以很容易的用新的实现来替换原有层次的实现。开发人员可以只关注整个结构中的其中某一层,从而实现专业化分工。或将系统的各个分层指派给不同的开发小组,使更多的开发人员参与进来,通过团队协作加快开发进度。

    4 系统分层实现

    4.1 服务层的实现

    服务层作为一个中间层,隔离表示层和业务逻辑层,以服务契约和数据契约的形式将WCF服务发布,供表示层调用。服务层隐藏了业务逻辑层的细节,使得表示层和业务逻辑层直接解耦。粗粒度的服务可以有多个细粒度的服务组成。根据本系统的功能,服务层为这些功能进行定义并实现服务契约,而这些服务契约与业务逻辑层的功能相对应。

    资产管理模块是系统的核心模块,包含了一般固定资产管理系统的基础功能。下面以资产管理模块实现为例,阐述该模块在服务层中的实现。

    在“FixedAsset.Service”WCF项目中添加一个数据契约类FixedAssetContract、一个操作契约类IFixedAssetService和一个服务实现类FixedAssetService。服务契约是定义一组可被总结点调用的服务接口;服务类是对服务接口的实现;数据契约是定义服务所需的数据类。

    4.1.1 服务契约的实现

    实现服务契约时,首先需要向项目添加System.Runtime.Serialization和System.ServiceModel的类库引用,然后提出资产管理各个主要功能为接口的操作方法,使用[ServiceContract]标记服务类和使用[OperationContract]标记操作方法,最后定义服务需要的出参和入参为数据契约。资产管理模块的服务契约实现如下:

    上述服务契约的操作方法中通过Add()和DisCard ()方法实现资产的增加和报废,通过MoveDept()方法实现资产科室间的调拨,通过AddDeprecitionMoney()和AddIncrementMoney()功能实现资产折旧和资产增值。ResultDTO表示调用服务的返回结果。

    4.1.2 数据契约的实现

    在上述服务契约中,一个服务通常需要定义出参和入参,如果出入参不是简单数据类型时,就需要自定义数据对象,这些数据对象就是服务契约所需的数据契约。数据契约就是服务端和终结点之间发送的自定义数据结构。数据契约需要使用[DataContract] 标记数据契约类和使用[DataMember]标记属性,不标记的属性不会被序列化。数据契约类可以有操作方法,但这些方法也不在序列化的范围内。没有被序列化的属性,终结点客户端也看不到这些属性。以下是数据契约的代码实现:

    4.1.3 服务类的实现

    服务类的实现,主要内容是合理的安排需要的逻辑,通过协调领域模型、特殊的应用服务、工作流。以下以资产报废DisCard()作为实现例子:

    //资产管理服务类

    public class FixedAssetService : IFixedAssetService{

    //报废资产

    public bool DisCard(DisCardDTO dto){

    //声明资产管理业务对象

    FixedAssetBLL fixedAssetBLL = new fixedAssetBLL();

    //查询获取资产实体对象

    FixedAsset fixedAssetEntity = fixedAssetBLL.FindBy(dto.GID);

    using (SqlConnection con =new SqlConnection("")){

    con.Open();

    using (SqlTransaction trans= con.BeginTransaction()){

    //更新资产状态为报废

    fixedAssetEntity.ChangeToStatus(Status.报废 , trans);

    //保存报废记录

    fixedAssetBLL.SaveDisCard(dto , trans);

    trans.Commit();

    }

    }

    return true;

    }

    }

    在上面的代码中,FixedAssetService类实现了IFixedAssetService接口的操作DisCard()方法,返回是否成功。方法中使用了sql事务,资产状态修改和报废记录保存能全部成功或失败,保证业务数据完整。

    4.2 数据访问层的实现

    数据访问层主要是负责数据库的访问,隔离业务逻辑使业务与数据操作无关,为业务逻辑层访问数据库提供了统一的访问方式。数据对象一般有三种选择:ADO.NET对象、XML和自定义类。本系统采用自定义类。使用网络上通用的SqlHelper类来实现数据访问,对于查询返回的ADO.NET对象,使用反射的方法将DataTable对象转为自定义类,转换的条件是表字段名称与自定义类属性名称相同。

    数据访问层基于SqlHelper通用类来实现, SqlHelper类整合了SqlCommand类的方法,提供ExecuteNonQuery()、ExecuteDataset()、ExecuteReader()和ExecuteScalar()的多种重载,使用更方便。

    以更新资产状态ChangeStatus()为例,数据库操作代码如下:

    //修改资产状态

    bool ChangeStatus(string GID, int newStatus, int oldStatus) {

    //设置sql语句

    string sql = string.Format(@"update {0} set [email protected] where [email protected] and [email protected])"

    , tableName);

    //设置sql参数

    SqlClient.SqlParameter[] ps= new SqlClient.SqlParameter[]{

    SqlHelper.MakeInParam("@GID", SqlDbType.VarChar, GID),

    SqlHelper.MakeInParam("@NewStatus", SqlDbType.Int, newStatus),

    SqlHelper.MakeInParam("@OldStatus", SqlDbType.Int, oldStatus)

    };

    //执行sql

    int count = SqlHelper.ExecuteNonQuery(Setting.Cons, CommandType.Text, sql, ps);

    //返回结果

    if (count > 0)

    return true;

    else

    return false;}

    4.3 表现层的实现

    表示层是一种可交互的操作界面,可以为用户呈现后台数据或接收用户输入的数据。从数据安全方面考虑,本系统采用C/S模式,该模式虽然只允许局域网内的客户端连接服务器,但可以充分利用客户端的计算处理能力,具有更快的反应速度。表现层是为用户提供一个与系统交互的平台,应首先考虑易操作和友好性的界面设计。

    4.4 WCF服务部署

    完成服务契约、数据契约和服务类之后,接下来就可以发布服务了。以下介绍如何配置并部署WCF服务,使得客户端可以通过终结点访问服务。

    本系统采用IIS作为服务宿主,管理员可以通过IIS管理器方便的管理服务启动、停止或重启,就算服务器重启后IIS也能自动运行并自动启动服务。

    WCF的配置文件以XML文件保存,可以方便地修改配置文件以适应不同的网络环境。 配置中,终结点数据传输协议为wsHttpBinding,数字证书名称是FixedAssetCert,客户端验证方式是UserName,验证类是MyUserNamePasswordValidator。UserName验证方式要求服务端安装数字证书,而客户端不需要安装证书,采用用户密码验证。

    5 结论

    本系统的开发需求来源于中小型医院,但不局限于医院,同时结合同类的固定资产管理需求,可应用于其他企业单位的固定资产管理。

    本文的特色是将运用WCF服务技术结合SOA面向服务架构在固定资产管理系统中应用。本文从系统的需求分析、总体设计、系统详细设计、系统实现和部署这几个方面阐述了医院固定资产管理信息系统的开发全过程。系统实现了基础信息设置、库房管理、资产管理、维修管理、盘点管理、货款支付管理和查询报表的功能,基本涵盖了固定资产一般的管理功能。

    本文主要就医院固定资产管理系统设计应用的以下方面进行了研究:

    1)根据医院信息化建设现状,以及物资和和财务部对资产管理的需求,设计系统实施方案;

    2)WCF技术和SOA架构在固定资产管理系统中的应用;

    3)WCF安全机制及X.509证书生成、导入、使用管理过程。

    尽管本文开发的固定资产管理系统已使用于实际工作,为固定资产的管理提供了有效的帮助,但也存在不足,需要在今后改进完善。

    参考文献:

    [1] 杨贵琦.医院信息系统建设现状与展望[J].中国医学教育技术,2006,20(1):89-92.

    [2] 张爱祯.高校固定资产管理系统设计[D].上海:同济大学软件学院,2009.

    [3] 李雪东.基于WCF面向服务架构的研究与应用[D]. 长春: 长春理工大学图书馆,2009.

    [4] 曾立, 陈小华.医疗设备采购系统的设计[J].中国医疗器械杂志,2008(5):78-79.

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建