蒋社想,程翠平
(安徽理工大学计算机科学与工程学院,安徽淮南 232001)
评标是招投标活动中的重要环节,也是建设领域防止腐败现象发生的有效手段,评标工作是否公平、公正影响着交易主体的自身利益,同时也会影响到人民群众对有形建筑市场的信任度。评标专家作为评标工作的主体,其评标行为公正与否,直接影响评标结果的公平与公正。《中华人民共和国招标投标法》第三十七条规定:“评标委员会成员名单在中标结果确定前应当保密”,评标专家抽取系统是随机抽取和通知评标专家,中标前专家信息保密的有效手段。经调研,目前这一系统存在:随机算法不合理、专家被抽取的机会不均等、抽取消耗时间过长、抽取与通知各自独立、人工干预多、保密性能差、时间间隔过长等弊端。本系统的评标专家抽取是基于SQLServer存储过程的,它具有运行速度快、能够减少网络流量、保证数据的安全等优点。
本系统包括专家管理模块、数据库维护模块、信息查询模块、专家抽取模块、语音通知模块、报表管理模块、系统管理模块等七大模块组成。
专家管理模块:专家候选人通过网络在线填报专家信息,未审核认证前填报者可以修改申报信息。
数据库维护模块:评标专家及企业数据管理,准确做到项目相关的专家回避。
信息查询模块:全方位的信息检索与查询。
专家抽取模块:该模块主要实现登记并审核招标公告、招标项目、招标人及招标信息、设定拟抽取专家条件、自动抽取专家、统计抽取结果报表、补抽专家等。
自动语音通知:语音系统根据专家抽取结果,自动拨打专家电话,并将各位专家的(按键)回复予以记录并及时传送到该网络终端。
报表管理:海量的报表处理、专家信息、工程项目信息及专业人数等全部可生成多种报表比如:Word、Excel、Pdf等。
系统管理:严格的权限管理模式,主要是对用户、角色的管理以及用户权限的设置。
图1 专家抽取流程图
第一步:项目公告发布
在专家抽取的前若干天,项目负责人必须发布公告,系统管理员在系统中可设置规定天数。
第二步:项目公告确认
在项目公告正式发布的若干天以后,由项目的负责人来到指定的政府部门进行专家抽取。根据国家的规定,大型的政府投资项目必须通过公开招标的方式来进行,并且,必须在招标公告发布若干天以后进行。本步骤的目的就在于,确认本项目已经在指定的媒体(主要指的是本系统中的项目公告)确实发布了项目的招标公告,并且,发布的时间超过若干天。
第三步:项目信息录入
用来录入项目相关的信息。
第四步:设定专家抽取条件
专家的抽取条件由多组条件构成,每组抽取条件可以包括如下条件“是否资深专家”、“可评标地区”、“大类”、“小类”、“专业”、“属性”、“人数”。
第五步:专家抽取
当用户完成抽取条件设置,并且该抽取条件也通过了验证,那么就可以进入到专家抽取界面。用来动态显示当前的抽取情况,抽取按库内专家被抽取的优先级进行抽取,保证公平性原则。按照顺序逐个进行通知,并且标记每个专家的答复情况,目前有三种情况:确认能来,确认不来,没有应答。一旦确认能来的专家数达到了需要的数目,则剩下未通知的专家则自动跳过,不再进行通知。统计确认能来的专家数量,如果正好等于需要的数目,那么本组专家抽取完毕。否则,专家数量不足,需要重新对所缺的专家按照同样的抽取条件,补抽出相应数量的专家,直到专家数量满足条件为止。如果在进行补抽的时候,发现数据库中已经没有满足条件的专家了,此时就需要设置补抽条件。对于前面设置好的抽取条件,需要自动将抽取人数修改成实际能到的人数,同时允许用户添加抽取条件,但是抽取人数的总和必须等于项目信息中所需要的专家人数。设置好了补抽条件以后,重新进入抽取条件验证,抽取过程,直到整个项目需要的各类专家人数满足需要。
第六步:表格打印
专家抽取完成以后,需要为每个确认能来的专家分配一个8位随机编号。此时需要打印两张报表,第一张为参加该项目评审的所有专家的列表,列出的内容包括生成的随机编号等。第二张表为用来给所有参加评审的专家填写评标中表现的表格,内容包括项目资料、参评专家的验证码,对应专家的身份:专家编号或姓名、评标表现、备注等信息由招标单位现场填写。招标完成后交给终端用户录入到本系统中。
本系统是采用SQL Server存储过程进行随机抽取评标专家的,使用存储过程而非SQL语句的原因有:
存储过程通常会使性能增加,因为数据库可以优化过程使用的数据访问计划,并对其进行缓存以备将来重用。
在数据库中,存储过程可分别得到保护。客户可以被给予执行某个存储过程的权限,但无权处理底层的表。
存储过程将导致维护简单,因为在一个已部署组件内,修改存储过程通常要比修改硬编码的SQL语句简单。
存储过程可以降低网络流量,因为SQL语句可以以批处理的方式执行,而不是从客户端发送多个请求。
该系统中的抽取评标专家的存储过程如下;
CREATEPROCEDUREexpert_Draw
(@PackageId int,--采购包ID@DrawUserId int,--抽取人@DrawId int output--返回的DrawId)AS
DECLARE@sTmpSQL VARCHAR(500)
DECLARE@iCatalogId INT
DECLARE@iDrawCount INT
CREATE TABLE#TmpDrawResult--临时存放抽取结果的表
(ExpertId INT,CatalogId INT,RowNum INT IDENTITY,)
DECLAREcur_DrawCondition CURSORFOR--抽取条件的游标
SELECTCatalogId,DrawCount
FROMExpertDrawConditon
WHEREPackageId=@PackageId
ORDERBY RowNum
OPENcur_DrawCondition --打开游标BEGINTRAN
FETCH NEXT FROM cur_DrawCondition INTO@iCatalogId,@iDrawCount
SELECT @DrawId=Sequence_NextId+1 from Sequences Where Sequence_Name='DrawId'
UPDATE Sequences SET Sequence_NextId=Sequence_NextId+1
INSERTINTOExpertDraw
(DrawId,DrawUserId,DrawTime,PackageId)VALUES
( @DrawId,@DrawUserId,GETDATE() ,@PackageId)
WHILE@@FETCH_STATUS=0--循环提取抽取条件的数据BEGIN
SET@sTmpSQL='INSERT INTO#TmpDrawResult(ExpertId,CatalogId)SELECTTOP'
+CAST(@iDrawCount ASVARCHAR(5))
+'ExpertId,'+CAST(@iCatalogId ASVARCHAR(5))
+'FROMExpertCatalog WHERECatalogId='
+CAST(@iCatalogId ASVARCHAR(5))
+'AND ExpertId NOT IN (SELECT ExpertId from#TmpDrawResult)'
+'ORDER BY NEWID()'
Execute(@sTmpSQL)
FETCH NEXT FROM cur_DrawCondition INTO@iCatalogId,@iDrawCount END
INSERTINTOExpertDrawDetail
(DrawId,RowNum,ExpertId,CatalogId) SELECT@DrawId,RowNum,ExpertId,CatalogId FROM#TmpDrawResult
Drop Table#TmpDrawResult
COMMITTRAN
CLOSEcur_DrawCondition --关闭释放游标
DEALLOCATE cur_DrawCondition
使用SQL Server存储过程具有提高系统性能、减少网络流量、减少注入式攻击、增加数据的安全性等优点,基于SQL Server存储过程的评标专家抽取系统的建立改变了传统的专家抽取模式,本系统把专家管理、设定专家抽取条件、专家抽取、语音通知、打印报表等功能集合在一起。整个过程一气呵成,严格控制了人为干扰,满足了实际评标抽取专家的要求。
[1]孙琬钟.中华人民共和国招标投标法实务全书[M].北京:中国人民公安大学出版社,1999.
[2]袁鹏飞.SQL Server数据库应用开发技术[M].北京:人民邮电出版社,1998.
[3]张海藩.软件工程导轮(第四版)[M].北京:清华大学出版社,2003.
[4][美]MarkGraves.XML 数据库设计[M].尹志军,等译.北京:机械工业出版社,2002.
[5]Usama M.Fayyad,Gregory Piatetsky Shapiro et al.Advances in Knowledge Discovery and Data Mining California[M].AAAI/MIT Press,1996.