基于Node.js一站式采购管理平台的研发

2020-11-13 03:38黄昇
微型电脑应用 2020年10期
关键词:采购管理电子政务智慧校园

黄昇

摘要:进入大数据时代,高校各项采购任务剧增,现行的线下采购业务流程无法满足需求。利用ASME方法分析现有的采购流程,通过ASME的優化理念和“电子政务”思想双管齐下重构现有流程,规避风险隐患,减少采购周期,提升服务质量。同时研发基于Express3.0框架的一站式采购管理平台,将采购管理、审批管理、库存调拨管理、文档电子化归档管理等整个重建流程变为线上操作平台,平台研发从采购实际情况出发,秉承“以人为本”的设计理念,在功能完善方面做了很多人性化的设计和扩展,第一通过入口控制设计,解决采购流程不明确的问题。第二通过合理的系统并发量和控制机制设计,有效防止了采购任务陡增所引起的系统响应速度问题和I/O阻塞问题。第三通过重点研究数据接口自定义,解决了数据读写安全和系统数据一致性问题。最后通过设计管控点机制,使系统极大方便了高校项目管理及设备采购管理部门的工作。

关键词:ASME方法;智慧校园;电子政务;框架研发;采购管理

中图分类号:TP311.1

文献标志码:A

ResearchandDevelopmentofOnestopPurchasing

managementPlatformBasedonNode.js

HUANGSheng

DepartmentofEquipment,ShanghaiInstituteofTourism,Shanghai201418,China

Abstract:Withtheentryoftheeraofbigdata,thepurchasingtasksofcollegesanduniversitieshaveincreaseddramatically,andthecurrentofflinepurchasingbusinessprocesscannotmeetthedemand.ThispaperusesASMEmethodtoanalyzetheexistingprocurementprocess,reconstructstheexistingprocessthroughtheoptimizationconceptofASMEandtheideaof"egovernment",avoidsrisks,reducestheprocurementcycleandimprovestheservicequality.Atthesametime,wedevelopaonestoppurchasingmanagementplatformbasedonExpress3.0framework,ittransformsthewholereconstructionprocessofpurchasingmanagement,approvalmanagement,inventoryallocationmanagementandelectronicarchivingmanagementintoanonlineoperationplatform.Basedontheactualpurchasingsituation,theplatformR&Dhascarriedoutmanyhumanizeddesignsandextensionsintermsoffunctionimprovement,adheringtothe"peopleoriented"designconcept.Firstly,throughthedesignofentrancecontrol,theproblemofunclearpurchasingprocessissolved.Secondly,throughtherationaldesignofconcurrentvolumeandcontrolmechanism,thesystemresponsespeedandI/Ocongestioncausedbythesteepincreaseofprocurementtasksareeffectivelyprevented.Thirdly,byfocusingondatainterfacecustomization,theproblemofdatareadwritesecurityandsystemdataconsistencyissolved.Finally,throughthedesignofcontrolpointmechanism,thesystemgreatlyfacilitatestheworkofuniversityprojectmanagementandequipmentprocurementmanagementdepartments.

Keywords:ASMEmethod;wisdomcampus;egovernment;frameworkresearchanddevelopment;procurementmanagement

0引言

近年来,随着国家经济科技的高速发展,国家加大了对高校科研经费并投入了大量资金,高校科研项目的不断增多,采购任务大幅增加,利用传统采购管理手段无法满足工作需要,而且存在诸多弊端,主要表现为:(1)业务部门流程不规范,各部门衔接相互脱节;(2)采购前期调研工作量大,但信息来源单一;(3)文档管理不规范,信息检索和归档困难;(4)采购人由于专业所限,对采购方式不了解,不但给采购管理工作造成了许多困难,同时也增加了许多风险点[13]。

为了改善和解决高校采购工作中发现的问题,提高采购工作整体效率,规范科研采购行为,提高管理水平,加大流程的监管力度,杜绝各个环节上的风险隐患[4]。希望通过业务流程的分析再造,建立一整套闭环式的线上流程体系,实现过程透明化、公开化,流程可追溯管理,还要对采购经费进行查询统计,相关文件归档查询,以及建立低值设备和耗材领用库等其他辅助功能[5]。

1系统开发

1.1研发思路

首先,对原线下采购工作进行业务需求分析,业务需求是一种较高层次的软件需求,从软件工程的角度定义,业务需求是反映出部门机构和个人等主体对系统的目标要求。在软件需求分析阶段时,就明确要开发一个什么功能的系统,要做到功能完备,但又不过度开发的准则,故在设计上要遵循几条原则。

(1)尊重各个主体的责任,不在技术上做大幅修改,尊重事实的标准。在系统设计时尽可能还原业务流程标准,维持用户使用习惯。

(2)系统要保证可信的统计数据,线上业务流转时要保证数据传递的一致性,数据内容的完整性,数据的安全性[6]。

(3)审批流程标准化、数字化、公开、透明,可跟踪、可考核,做到科学细化、量化审批工序。

其次,明确一站式采购管理平台的研发初衷。通过信息化手段提升效率转变办事过程繁,流程长;在功能设计时要从业务的源头出发,改变数据不全、不准、不实时的现状;从已发现的管理盲点为抓手,改变管理环节(如:二级部门)支撑力度不够的问题;清晰业务流程节点,解决部门协同不够,所造成管理漏洞。

这样做的优势在于明确思路,避免了边研发,边整理需求的乱象,杜绝由于需求理解的二义性,所造成的返工,缩短研发的周期。本人从各方面综合考虑设计整理出一套合理的研发流程,如图1所示。

1.2业务流程梳理和重构

以推行电子政务、建设教育信息化2.0为指导思想,以数据高度集中和共享为途径,以“让人少跑路,让数据跑起来”的原则,推动技术融合、业务融合、数据融合[7]。打通各职能部门的信息壁垒,将各方数据统一接入校园数据中心平台,构建校园信息资源共享,实现采购业务跨层级、跨系统、协同管理和服务的模式。通过对原线下业务流程的整理和分析,本文的设计思想是将传统的金字塔式管理模式(职能型、层级式)转变为扁平的网络模式(横向整合、纵向辐射),如图2所示。

1.3系统设计特色

首先,本人通过研究利用ASME方法对线下采购工作进行综合分析,它主要的作用就是能清楚地表达流程中各个

环节的意义,并规范整个业务流程,使其标准化。它包括增值活动、非增值活动、检查、输送、耽搁和存储等项,通过这个方法得出线下采购业务的关键业务点,归纳和总结使其周期

冗长的关键业务点。经分析,发现线下采购业务中调研工作、会议论证、招标活动经常出现,非增值活动(反馈信息传递、各级单位审核等)也反复执行,这些工作都有搁置的可能,会浪费大量时间。通过优化重构原线下的采购流程,第一,将所有的项目调研工作全部提前。第二,将原先的招标流程化繁为简,学校官网统一发布招标信息,供应商通过注册,填写必要信息和资质证明,根据招标要求,制作并上传投标书,经过初步筛选后,统一通知合格的供应商参加招标会议。第三,采购业务全部在线上完成,省去了申请人在各部门的来回奔波的大量时间,将更多的精力放在把控项目执行。第四,将前期的项目经费表和市场调研等文档一并网上提交备案,后期的纸质文档全部电子化,提高今后纪检工作对项目的查询检索效率。

其次,为提高业务流程信息输送的效率和准确性,专门设计一个项目经费管理接口,该接口与财务部门接口进行同步,各职能部门主管可以查看经费详细情况。整个采购系统还实现审核环节的消息推送提醒(包括采购管理平台Web端的消息提示,微门户的短信发送),方便申请人实时的了解采购进度情况,提升了业务信息输出的实时性。

接着,针对不同类型的采购申请进行预处理,实行采购业务分流机制,避免在业务办理时出现错误导致流程耽搁的情况发生。

最后,研发低值设备和耗材管理功能。此功能为采购审核阶段提供依据,减少非增值活动的出现,也避免了不必要的重复采购。

1.4整体架构设计

采购管理平台采用B/S架构,系统涵盖了采购管理工作的全部功能,其中包括供应商信息管理,招标流程管理(招标信息发布,筛选,中标合同签订等等),用户权限管理、经费预算管理、申请审批管理、文档电子化管理、备件出入库管理,做到各司其职、流程有据可查[89]。本系统的架构由底层服务模块、平台功能模块、应用层功能模块和终端扩展四个部分组成。通过用例图展示本系统的基本功能,如图3所示。

系统底层由数据库系统和数据交互中心组成,是整个系统信息化的支撑底座。依托高性能、高健壮性的数据库设计,满足各个功能模块间数据传递的实时性,可靠性的要求,为上层平台功能的业务流转提供支持[1112]。平台功能可根据不同的采购业务、用户角色灵活配置,满足采购工作中多样化服务需求(申请不同,审批要求和采购流程也不同)[10]。系

统包含消息推送提醒、统计报表打印以及低值设备和耗材管理等辅助功能、终端扩展则完成PC端页面显示样式和主流浏览器的兼容性问题(比如:IE,360浏览器,Google浏览器等等),移动终端校园微门户前端展示,以及用户使用体验等方面的设计。采购管理流程图,如图4所示。

2一站式采购管理平台的实现

2.1开发框架介绍

本平台采用Node.js開发框架Express3.0,EJS是一种简单的模板语言,可以通过JavaScript来生成HTML页面。它具有以下几个优势:

(1)语法简单,EJS支持直接在标签内编写JavaScript代码,然后系统在后台让JavaScript生成所需要的HTML,完成工作很轻松。

(2)易于调试,调试EJS错误很容易。在开发调试阶段中,所有错误都是普通的JS异常,抛出异常发生的代码位置。

(3)执行迅速,EJS能够缓存JS函数的中间代码,故在重新加载页面时,无需重新生成HTML页面,从而提升执行速度。

(4)快速开发,不需要重新学习它的特殊语法,只需通过将模板中所有变量的keyvalue的JSON数据回调,无需具体了解数据在后台的处理过程。

关于EJS的一些基本用法做如下简单介绍:

(1)缓存功能,标签<%code%>用于执行其中JavaScript代码。

例如:<%alert('helloworld')%>;

(2)利用<%=code%>会对code进行html转义;

例如:

<%=title%>

//会把title里面存的值给显示出来在h1中;

(3)模板嵌套,EJS不支持block方式页面布局,但可以通过include的方式实现页面布局。

例如:<%include(‘header‘)%><%include(‘footer‘)%>。

(4)利用<%includefilename%>载入其他页面模版;

例如:<%include(‘path/filename‘,{data:data})%>//将path目录下的filename.ejs加载到当前文件中,同时将data的值赋值到filename.ejs文件中,用于给其他方法调取。

2.2数据库分析设计

從需求分析阶段来看一站式采购管理平台更偏向于“事务处理类型”,本系统决定通过express框架自定义增删改查操作接口,方便将一站式采购管理平台的数据同步至校园数据交换中心。本系统所需用户数据则通过校园数据交换中心提供标准API接口获取,这样既可以保证数据的一致性,也保证数据安全性。

(1)在项目JS目录中创建一个DB.js文件,将引入express模块。

constexpress=require('express')

constrouter=express.Router()

(2)新建一个ModelDB.js文件,定义数据模型的相关参数,并将构造好的模块实例化(以采购申请为例)。

constmongoose=require('mongoose')//数据模型

letOrderSchema=newmongoose.Schema({});

//将schema转化为数据模型

letoder=mongoose.model('OrderAdmins',OrderSchema);

module.exports=oder

(3)将ModelDB.js文件载入到DB.js文件中。

constoderModel=require('../db/model/OrderAdminModel')//数据模型

(4)编写增删改查的接口,由于篇幅有限只以采购申请的接口和申请查询接口为例。

a.新的采购申请

router.post('/addOrder',(req,res)=>{

let{根据数据字典添加相应字段}=req.body;

userModel.insertMany({根据数据字典添加相应字段})

.then((data)=>{

res.send({err:0,msg:'addok',data:null})

})

.catch((err)=>{

res.send({err:1,msg:err._message,data:null})

})

})

b.用户取消采购申请

router.post('/delOrder',(req,res)=>{

var_id=req.body._id;

oderModel.remove({_id:_id})

.then((data)=>{

res.send({err:0,msg:'delok',data:null})

})

.catch((err)=>{

res.send({err:1,msg:err._message,data:null})

})

})

c.用户修改采购申请

router.post('/updataOrder',(req,res)=>{

let_id=req.body._id;

let{根据数据字典添加相应字段}=req.body;

oderModel.updateOne({_id:_id},{根据数据字典添加相应字段})

.then((data)=>{

res.send({err:0,msg:'updataok',data:null})

})

.catch((err)=>{

res.send({err:1,msg:err._message,data:null})

})

})

d.查询采购申请信息(查询全部)

router.post('/getOrder',(req,res)=>{

oderModel.find()

.then((data)=>{

res.send({err:0,msg:'getok',data:data})

})

.catch((err)=>{

res.send({err:1,msg:err._message,data:null})

})

})

最后通过将module.exports=router,将数据的增删改查结果抛出,系统将数据同步至校园数据中心备份。

2.3详细功能设计

(1)在需求分析阶段,考虑到采购管理平台服务器访问压力问题,因为根据以往的线下采购经验,每次到了学年初/末都会出现采购任务剧增的情况,所以并发连接是首要解决的问题。

从技术的角度出发,客户端与服务端通讯的实现过程为:服务端生成监听Socket→绑定端口,Listen→客户端发出请求→服务端Accpet,并生成新的Socket→利用前一个Socket进行数据交互。建立这样一个连接,服务端要为这个连接分配一定的系统资源,主要是内存资源,因此传统的系统线程模型和多线程、线程池模型不适用于本系统。

通过研究和分析,Node.JS的异步、事件驱动模型可以解决由于并发量剧增而产生的系统资源瓶颈问题。通过异步机制,不阻塞后一个用户的请求,同时不需要维护用户与服务器之间的连接。通过事件驱动,利用Node.JS中的回调(Callback)机制,程序仍旧往下执行。本人通过代码设计,改变服务器与客户端的交互方式,为每个连接生成一个事件(Event),该事件只在Node.JS引擎进程中运行,所有生成的事件组成一个队列,摒弃为每个连接生成一个新的OS线程。基于这样的机制,后续的用户请求连接系统都可以进行响应。

(2)由于采购管理平台会需要从多个数据源拉取数据,然后进行处理,所以系统的设计需要考虑I/O阻塞情况。串行数据的获取是造成I/O阻塞的普遍原因,一般情况下时通过逐条获取,拼接成串行数据,然后返回。利用Node.JS的发送/监听事件控制机制可以觉得这个问题,本人设计了一个自定义模块,每当业务功能需要有I/O事件,在该功能模块创建一个子线程去执行,然后主线程仍旧会继续往下执行。例如:将获取profile的动作和获取timeline的动作做并行执行,如图5所示。

(3)由于是定制研发,个性化功能较多。比如每个用户看到的申请和审批流程页面都不一样,页面在加载的时候需要发起大量的应用请求,因此必须统一Web应用的UI层。为了更好的做到前后端的分离的目的,决定使用面向服务的架构体系,将所有的关键业务逻辑都封装成REST调用,不考虑使用页面传递数据的方式,所有的用户数据更新都是通过Ajax异步获取的。

(4)为了使一站式采购管理平台上线后业务逻辑切实有效地发挥其功效,本人设计在流程各个环节设立了4个管控点:前期预算管理控制、采购流程控制、审批控制和库存管理。

①预算管理控制是指在科研项目启动后,对经费预算的申报。项目执行过程中,保证采购申请人名下资产设备不存在超过限额的情况,同时还要确保项目经费余额充足;在经费管理和计算设计方面做以下几个方面介绍:关于经费的添加有两种方式,一种方式:通过手动添加;另一种方式:通过標准文件上传,标准文档上传允许批量,只要使用系统提供的模板文档即可(Excel文档),部分代码如图6、图7所示。

用户在填写各类采购申购单时是通过selectData=getBudgetinfo(pfid)方法自动调取用户身份下的经费情况;平台在设计之初还考虑到有些较大项目经费到年底会出现不够的情况发生,所以在政策允许的情况下可调整经费的预算;在正常经费的使用时,考虑到申购流程未完成可能会有取消的情况出现,故在程序设计时将未完成状态的申购单费用都是做暂扣处理,部分代码,如图8所示。

②采购流程控制通过设计不同申请链接按钮解决,红框处为其他申请入口链接,如图9所示。

③审批控制是指采购全过程公开透明,方便纪委部门对流程的监督。用usersobj.role_type.indexOf方法分配登陆用户相应的审批权限,申购人申请情况列表页面,如图10、图11所示。

④库存管理是针对低值设备和耗材的出入库和领用,此功能与审批控制关联点较多,最主要的目的是为审批环节提供数据依据,避免重复申购、资源浪费等情况的发生。并且本人在做功能设计时增加了一个后台审查功能,就是同部门或科研负责人申购品名类似的商品时,系统后台会调取仍有库存的类似耗材,并提示审批人员,如图12所示。

3总结

1.管理为核心,服务人性化

通过采购管理平台各职能部门可以从根本上降低风险,避免管理上的盲点;采购过程信息公开发布,实现采购流程公正、透明、可追溯。历史数据可查询,年终对当年的采购信息可做统计整理,实现统计报告可视化、统计数据准确度高,进一步改进了采购部门服务与管理工作的精细化,大大缩短工作周期,避免时间和人力上的损耗。

2.制度建设

建制立规是采购管理不可或缺的部分,为构建一站式采购管理体系提供依据和标准。根据上海市政府采购的规定,结合实际情况,制定了《仪器设备、低值设备办公耗材网上采购监管工作的若干规定》。

3.不断改进,精益求精

在“互联网+智慧校园”的大环境下,一站式采购管理平台后期将考虑开启校园公众号采购平台接口,实现移动端采购申请、审批和电子签名等技术,以及进口设备的申请审批流程也在分析整理当中,进一步提升信息化管理的维度。

参考文献

[1]

廖云明.政府采购方式的确定原则[J].中国政府采购,2009(3):6465.

[2]华昕.政府采购信息化管理探析[J].商场现代化,2012(31):80.

[3]徐雪荣,弓淑芬.浅析政府采购项目档案管理的信息化发展[J].中国管理信息化,2018,21(20):183184.

[4]王大愚,孟令霞,高榕,等.一种科研所级网上采购系统[J].科研信息化技术与应用,2016,7(4):7683.

[5]李莹,韩永君.高校采购存在的问题与采购流程优化研究[J].实验室科学,2015,18(5):217221.

[6]伍劲宇.高校采购业务流程分析及再造[J].中国现代教育装备,2011(5):911.

[7]相振宇.浅谈政府采购方式问题[J].辽宁科技学院学报,2013,15(1):3839.

[8]王锐,高虹,陆萍.高校政府采购方式探析[J].实验技术与管理,2013,30(4):224226.

[9]孙榕.完善高校政府采购管理,加强风险防控监督[J].卷宗,2018(13):148149.

[10]姜宝,刘志祥,彭辉.广东省政务信息资源安全共享管理研究[J],电子产品可靠性与环境试验,2017,35(3):5559.

[11]MichaelMcLaughlin.Oracle9iWeb开发指南[M].北京:机械工业出版社,2003.

[12]Bob,BrylaOracleDatabase12cDBA官方手册[M].北京:清华大学出版社,2016.

(收稿日期:2019.08.28)

猜你喜欢
采购管理电子政务智慧校园
基于B/S结构的学生公寓管理信息系统的设计与实现
“智慧校园”浪潮下大学课堂教学改革与设计
智慧校园关键技术分析与研究
浅议EPC模式下的石油化工项目管理
智能云教学系统在计算机专业教学中的运用
中国电子政务的“短板”
我国县域电子政务工作的困境
试论基于Petri网的电子政务系统
信城通:与中国电子政务共同成长