摘要
目前基层便民服务中心对于政务服务的预约环节,仍然采取线下排队或者简易登记的形式,存在预约渠道单一、信息反馈慢、材料提交和办理进度相脱离等状况,不能很好地满足居民高效的便捷服务需求。创建起一个包含预约、取号、材料上传、进度追踪和评价反馈的政务预约系统,对改善服务流程、加快窗口办事速度、加强居民满意程度有着十分重要的意义。
系统使用SpringBoot搭建后端服务,用MySQL做数据库,前端用Vue框架搭建交互界面,开发环境为IntelliJ IDEA。系统以居民、工作人员、管理员三个角色为对象。居民用户可以查看网点信息和事项类型,在线提交预约申请并管理取号信息,支持材料上传,实时查询办理进度,在服务结束后进行评价或者发起投诉建议。工作人员处理居民的预约请求、取号、上传材料、办理进度的更新、服务评价结果查看等。管理员具有全局性的管理权,可以对网点部门、事项类型、通知公告等基础数据进行设置,还可以对预约、取号、材料、进度、评价、投诉等业务数据进行统一的管理与监管。
系统运行之后可以对政务服务预约流程进行线上闭环管理,大大缩短了居民在现场等待的时间,提高了工作人员业务办理的速度。管理员在统一后台可以随时了解服务运行情况,从而给服务改进赋予数据支撑。系统对于政务信息透明共享、办事体验的改善有较好的效果。
关键词:政务服务,预约系统,SpringBoot,Vue,MySQL
Abstract
Currently, grassroots convenience service centers are still mainly relying on offline queueing or simple registration to make government service appointments; there are problems like few appointment options and slow information feedback; it’s also disconnected from the process of submitting materials. It’s very beneficial to the improvement of government appointments systems which include reservation,queuing,material submission,progress checking and evaluation feedback, this greatly improves the service process、window utilization and resident satisfaction.
The system's backend services are developed using the springboot framework, mysql is used for data management, and it uses vue as an interface, intelliJ IDEA is used as the development software. It’s a system for 3 people: residents, workers, managers. Residents can see service centers and services, make appointments online, queue management, upload required documents, check processing status in real time, evaluate or complain and put forward suggestions after the service is completed. The staff will take care of the reception of residents’ applications for making an appointment, managing queues and uploads all along as well as service evaluations score. Administrator has complete management rights including some basic data like service centers, services, announcements and so on, at the same time maintain and supervise all kinds of business data including appointments, queuing, materials, process, evaluation and complaint.
Then it’s a loop System Online for Management Once It's Implemented And it Can greatly Reduce Residen Wait For Site and also Increase Worker Productivity. Unified Back-end lets admins watch all the services running and gives some info about making the service better. It is achieved by realizing the transparency of government information sharing, and also improves people's service experience.
Key words: Government service, Appointment system, SpringBoot, Vue, MySQL
目录
1 绪论
1.1 研究背景与意义
1.2 国内外研究现状
1.2.1 国内现状
1.2.2 国外现状
1.3 主要研究内容
2 相关技术介绍
2.1 SpringBoot框架
2.2 Vue框架
2.3 MySQL数据库
3 系统分析
3.1 功能需求分析
3.2 可行性分析
3.2.1 技术可行性
3.2.2 操作可行性
3.2.3 经济可行性
4 系统设计
4.1 系统架构设计
4.2 系统结构功能设计
4.3 系统流程设计
4.3.1 总体业务流程设计
4.3.2 在线预约流程设计
4.3.3 材料上传与审核流程设计
4.3.4 办理进度跟踪流程设计
4.3.5 服务评价与投诉建议流程设计
4.4 数据库设计
4.4.1 概念设计
4.4.2 数据库表设计
5 系统实现
5.1 居民用户功能实现
5.1.1 网点信息查看功能实现
5.1.2 在线预约功能实现
5.1.3 取号信息管理功能实现
5.1.4 材料上传功能实现
5.1.5 办理进度功能实现
5.1.6 服务评价功能实现
5.1.7 投诉建议功能实现
5.2 工作人员功能实现
5.2.1 在线预约管理功能实现
5.2.2 取号信息管理功能实现
5.2.3 材料上传管理功能实现
5.2.4 办理进度管理功能实现
5.2.5 服务评价管理功能实现
5.3 管理员功能实现
5.3.1 事项类型管理功能实现
5.3.2 网点信息管理功能实现
5.3.3 在线预约管理功能实现
5.3.4 取号信息管理功能实现
5.3.5 材料上传管理功能实现
5.3.6 办理进度管理功能实现
5.3.7 服务评价管理功能实现
5.3.8 投诉建议管理功能实现
5.3.9 通知公告管理功能实现
6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试内容
6.4 测试结论
7 总结
参考文献
致谢
1绪论
1.1研究背景与意义
基层便民服务中心承担着向居民提供各种政务服务的窗口职能,其预约管理环节一直采用人工登记、电话咨询或者现场排队的传统方式。这样就会造成信息传递的单向滞后,居民不能及时了解网点的实时负荷和办理情况,工作人员在进行预约、材料核验和数据统计的时候效率低,数据在各个业务节点之间存在割裂的状态,信息不对称问题比较严重[1]。伴随着信息技术在公共服务领域内逐渐普及,部分中心开始使用网站公告或者简单的线上登记工具来代替传统的线下公示方式,使得信息的获取速度得到一定的提高,但是预约流程以及后续的办理环节之间缺少有效的对接,居民在材料提交、进度查询、评价反馈等各个过程中都存在碎片化的体验,现有的模式已经不能满足公众对于办事便利性、过程透明度和可预期性的强烈诉求[2]。开发出一个包含预约、取号、材料上传、进度跟踪、评价反馈全流程的政务预约系统,可以打通居民和工作人员之间信息壁垒,把线下分散的操作变成线上闭环的管理,提高政务服务窗口运行效率和服务质量,给基层公共服务数字化转型提供可行的实践方案。
1.2国内外研究现状
1.2.1国内现状
国内政务预约服务相关平台由原来的单向发布信息到现在的互动式业务办理。早期的门户型政务网站主要是发布办事指南、公告信息等静态内容,预约功能大多为静态表单提交,不能和后台业务系统联动[3]。随着垂直领域服务平台的发展,一些城市开始实行基于互联网的预约系统,居民可以通过网上选时间段来办理业务,但是材料审核和进度反馈等工作还是需要线下工作人员来完成的[4]。移动互联网普及之后,各地政务服务App和小程序相继上线,预约功能和实名认证、电子证照等一起被整合进来,业务办理也由原来的单一预约向全流程服务转变[5]。以“一网通办”为代表性的平台又推进了跨部门的数据共享,预约系统同排队叫号、窗口受理、服务评价等模块开始产生初步的协同[6]。但是现有的系统对于材料上传和办理进度的动态关联、投诉建议的闭环处理以及多层级管理权限配置等方面还存在不足,各个区域、各个部门之间数据互通性还有待提高[7]。
1.2.2国外现状
国外政务预约服务相关系统发展特点是,由社交媒体属性转向数据驱动服务。早期的实践大多依靠城市门户网站或者第三方预约平台提供基本的预约功能,居民通过网页表单提交申请之后等待人工确认,流程响应时间较长[8]。随着移动端应用的普及,一些发达国家的城市也推出了集成了身份认证、在线支付、实时通知的预约系统,居民可以随时查看可预约的时间段,并且会收到办理提醒[9]。以欧洲部分国家的公共服务平台为例,预约系统同后台业务系统深度对接,工作人员可以实时查看预约数据并进行资源调配,预约、取号、办理进度和结果反馈形成闭环[10]。体育资讯领域Bleacher Report、SofaScore等平台的实时数据推送、用户互动等成熟的机制给政务预约系统进度实时更新、用户反馈处理提供技术上的借鉴[11]。Fantasy Premier League等平台对于用户行为数据的采集、分析,给政务系统改善服务资源分配、提升用户体验提供借鉴[12]。
1.3主要研究内容
本课题以便民服务中心政务预约系统的设计和实现为主,系统主要为居民提供网点信息查询、在线预约、取号管理、材料上传、办理进度跟踪、服务评价和投诉建议等一站式服务,面向工作人员提供预约审核、取号核验、材料核对、进度更新和评价查看等业务管理功能,面向管理员提供网点部门配置、事项类型维护、通知公告发布和全业务模块数据监管等功能。按照软件工程规范依次完成需求分析、系统总体架构设计、功能模块划分、数据库设计、系统实现和测试等步骤,采用前后端分离的B/S架构,前端用Vue框架搭建用户界面,后端用SpringBoot框架开发业务逻辑,用MySQL数据库保存业务数据,最后达到预约流程线上闭环管理、业务数据集中管控、服务质量可追溯的目的。
2相关技术介绍
2.1SpringBoot框架
SpringBoot框架是用Spring体系构建的。软件开发之初,Spring项目在配置管理时要写很多XML文件,开发人员还得手动去处理各个组件之间的依赖情况。为了克服上面提到的配置繁琐的问题,SpringBoot就产生了自动配置。项目启动的时候会扫描类路径下的依赖库,按照库中预设的配置条件生成对应的Bean定义。系统功能开发中包含在线预约、取号信息管理、材料上传等业务功能时,SpringBoot依靠内嵌的Servlet容器来响应HTTP请求,把前端传来的请求数据转给控制器层的方法。控制层接收到请求之后,就会调用业务层组件来执行具体的逻辑运算。业务层组件在操作时会和数据持久层发生交互,用ORM框架把Java对象和数据库记录转换成相应的格式。SpringBoot有一个统一的事件监听机制,在应用程序生命周期中各个节点上,即容器初始化完毕或者上下文刷新的时候,可以被预定义的监听器触发来执行指定的任务。在处理材料上传这样的文件流类型的时候,SpringBoot的自动配置会根据MultipartFile相关类是否存在来自动装配文件解析器。该框架还提供了一个健康检查端点,使用特定路径暴露接口给外部检测应用使用。在请求响应机制中[13]采用注解方式进行请求映射,开发人员在方法上标注相应的注解就可以实现URL路径和业务方法之间的关联。框架内部使用分层架构模式,把表现层、业务逻辑层和数据访问层分开,每一层用接口来规定契约,具体的实现类由容器统一管理。运行阶段SpringBoot的依赖注入容器来保持各个层组件之间的引用关系,控制器调用业务组件的时候,容器会递归创建所需的对象实例并完成依赖注入。
2.2Vue框架
Vue框架使用组件化架构。在前端开发实践当中,传统的DOM操作方式使得开发人员直接对页面元素进行操作,而当页面交互变得越来越复杂的时候,代码的维护成本就会随之增加。Vue使用响应式数据绑定机制,框架内部用Object.defineProperty或者Proxy拦截数据对象的读取和修改操作。当数据发生改变的时候,框架就会触发依赖收集阶段记录的更新函数,重新计算出相关的视图区域内容。在政务服务系统前端界面的创建中,网点信息查看模块的数据展示要同后端接口产生联系。Vue框架有生命周期钩子函数,在组件实例被挂载到DOM节点之前,开发人员可以在相应的钩子里发起异步请求获取后端数据。框架的模板语法用声明式的渲染方式把数据源和DOM结构联系起来。当用户对在线预约表单进行操作时,框架就会捕捉到表单输入事件,并且会把数据状态同步到内部。Vue的虚拟DOM机制在数据发生变化的时候,就会产生新的虚拟节点树,并且用差异对比算法来计算出实际需要更新的最小DOM操作集合。对办理进度跟踪这样的要求即时显示动态信息的情况,框架允许利用计算属性对原数据展开派生运算,计算属性会依照自身的依赖数据源来存储计算结果。在组件通信上[14]对父子组件之间数据传递做了规定,父组件用属性给子组件传数据,子组件用事件给父组件发消息。路由管理模块同Vue框架一起工作,当用户访问不同的路径时,路由配置就会找到对应组件并执行渲染。框架的表单校验功能可以利用自定义验证规则对用户的输入内容进行格式检查,在处理投诉建议表单提交的时候。框架内部的事件总线可以实现非父级组件之间松耦合的通信。
2.3MySQL数据库
MySQL数据库是关系型数据库。数据存储上关系型数据库用表格的形式来组织数据,每一张表都有固定的字段定义。数据库管理系统在执行查询操作的时候,先解析SQL语句得到抽象语法树,再经由查询优化器来评价各种执行途径的成本。根据表统计信息中记录的索引基数、数据分布等元数据来选择执行计划。政务预约系统业务数据管理时,网点部门数据和事项类型数据之间有参照完整性约束,数据库用外键来保证表之间的联系。数据写入操作符合ACID原则,在并发情况下使用事务管理器来保证数据的一致性,采用锁机制或者多版本并发控制的方式。多个用户同时提交预约申请的时候,数据库的隔离级别决定着事务间可见性的好坏。存储引擎是数据在磁盘上物理存储结构的管理者,InnoDB存储引擎使用聚簇索引来组织表数据,主键索引的叶子节点直接存放完整的行记录。在网点信息查询场景中,如果where条件里有过滤的字段,则会使用二级索引。索引结构用B+树来组织,树的高度决定访问磁盘的次数。对办理进度数据频繁更新的操作,数据库重做日志先记录数据变更信息,事务提交的时候再把日志写入磁盘。数据库的缓冲池机制把热点数据页缓存到内存里,从而减少磁盘I/O次数。在材料上传记录管理中[15]涉及到二进制大对象类型数据的存储,数据库用专门的BLOB类型字段来存储文件二进制流。数据库管理工具可以对慢查询日志进行设置,将执行时间大于某个阈值的SQL语句保存下来供性能分析使用。数据备份依靠二进制日志记载所有的数据变动操作,可以依照时间点来执行数据的恢复。
3系统分析
3.1功能需求分析
居民用户可以查看网点信息,知道各个网点的位置以及业务范围。用户可以在网上提出预约申请,选择要办理的事项和预约的时间。预约成功之后用户可以对自身的取号信息进行管理,预约的时间到了以后就可以获取到排队号码。用户按照办理事项的要求上传相应的材料,系统收到材料之后进入审核程序。用户可以随时查看自己已经提交的申请办理进度,知道目前处在受理、审核或者办结阶段。服务结束后用户可以对本次办理过程进行评价,也可以在遇到问题时提出投诉建议。居民用户用例图如图3-1所示。

工作人员在系统中负责在线预约管理,对居民提交的预约申请进行审核确认。工作人员可以对取号信息进行管理,把预约记录和取号记录进行匹配。工作人员对居民上传的材料进行审核管理,决定材料是否合格并给出审核结果。工作人员可以对办理进度管理信息进行更新,把业务办理状态及时录入系统。工作人员查看服务评价管理信息,了解居民对服务的满意度。工作人员用户用例图如下图3-2所示。

管理员在系统中对网点部门进行管理,设置各个网点所归属的部门及组织结构。管理员对事项类型进行管理,确定可以预约的政务服务事项种类。管理员对网点信息进行管理,维护网点地址、联系电话、工作时间等基础数据。管理员拥有在线预约管理权限,可以对所有的预约记录进行查询和修改。管理员对取号信息进行管理,并且监控各个网点的取号情况。管理员对材料上传管理进行统一的监管,处理材料审核过程中出现的异常情况。管理员进行办理进度管理,监督各业务单的办理时效。管理员对服务评价管理进行汇总分析,得出改进方向。管理员负责处理投诉建议,对居民的反映进行回复并跟踪。管理员发布通知公告管理,给用户推送系统的动态以及政策信息。管理员用户用例图如图3-3所示。

3.2可行性分析
3.2.1技术可行性
系统采用前后端分离架构,前端用Vue搭建用户界面,后端用SpringBoot接口提供服务,数据层用MySQL存储。Vue框架在单页应用开发中已经得到广泛使用,它的组件化开发模式以及响应式数据绑定机制可以满足界面交互的需求。SpringBoot框架自带自动配置功能,使用内嵌的Servlet容器简化部署过程,在业务系统开发中已经有较多的成功实践。MySQL数据库可以进行事务处理和索引优化,可以满足业务数据一致性以及查询响应的要求。开发人员对以上技术栈应用有经验,可以完成从接口设计到数据库建模全部开发工作。从性能上来说,在本地开发环境里运行,用户量不大,所以数据库连接池的配置以及查询优化能够符合日常使用的要求。从安全角度出发,用参数校验和权限控制来防止常见的攻击方式。因此系统从技术上是可行的。
3.2.2操作可行性
系统为居民、工作人员、管理员三个用户分别设计了操作界面。居民用户主要进行预约申请、上传材料和进度查询等操作,界面布局按办理流程顺序排列,用户按照页面提示就可以完成操作。工作人员原工作流程中预约申请、审核材料、更新进度等环节依靠纸质记录或者线下沟通,系统上线之后这些操作转移到线上,操作方式由人工交接变为系统确认,每一个环节的操作入口以及待办任务都会被集中展示到任务面板上。管理员通过统一后台对网点、事项、用户数据进行管理,数据管理界面以表格形式展示记录,增删改查操作和常见的后台系统一致。系统部署完毕后,技术人员对系统进行日常维护和数据备份,并且给各个功能模块划分了清晰的权限,只有属于本部门的人员才能对本部门的数据进行操作。所以系统在操作上是可行的。
3.2.3经济可行性
项目投入主要是开发阶段的人力成本,开发周期内是由开发人员完成需求分析、系统设计、编码实现和测试的工作。硬件上利用现有的计算机设备,不需要购买专用服务器。软件部分使用开源的技术栈,SpringBoot框架、Vue框架和MySQL数据库都是开源的,不需要支付授权费用。系统部署在本地开发环境里,运行时不会造成其他的基础设施投入。系统投入应用之后的价值表现在窗口办事效率提高、居民等待时间缩短这两个方面,用预约分流、材料预审减少现场拥挤,用进度透明化降低重复咨询。投入规模同应用价值之间存在联系。因此系统在经济上是可行的。
4系统设计
4.1系统架构设计
系统采用模块化的设计思想,把业务逻辑按照功能域来划分,各个模块之间用定义清楚的接口进行交互。用户操作请求由前端发往后端服务,后端收到请求之后调用相应的业务处理组件来完成数据运算和状态变化,最后将处理结果返回给前端进行界面更新[16]。系统实现网点信息浏览、在线预约申请、材料上传管理、办理进度追踪、服务评价反馈等主要业务功能。用户在前端界面发出的操作,采用异步请求的方式传送到Spring Boot搭建的后端服务中,后端控制器收到请求之后,会把请求分派给相应的服务层组件进行处理,服务层会执行业务规则校验以及数据持久化工作,MySQL数据库用来保存网点的基础数据、预约记录、材料信息、进度状况、评价内容等关键业务数据[17]。系统整体架构采用分层模式,各个层次的职责明确,减少模块之间的耦合度,提高代码的可维护性。系统的整体架构图如图4-1所示。

4.2系统结构功能设计
系统功能按照居民用户、工作人员、管理员这三个角色来组织。居民用户主要是进行网点信息浏览、在线预约申请、取号信息管理、办理材料上传、业务进度查询、服务完成评价、投诉建议提交等操作。工作人员负责居民预约申请的审核处理、取号记录管理、上传审核材料、业务办理进度更新、服务评价结果查看。管理员负责基础数据的配置工作,即网点部门的设置、事项类型的定义、网点信息的维护等,对预约记录、取号记录、材料数据、进度状态、评价信息、投诉建议进行统一监管,并发布通知公告。该系统的功能结构如图4-2所示。

4.3系统流程设计
4.3.1总体业务流程设计
系统总体业务流程是从居民提出预约申请开始的。居民登录系统之后浏览网点信息和可以预约的事项,选择合适的时段提交预约申请。工作人员收到预约申请后进行审核确认,审核通过之后生成预约记录。居民在预约的时间到网点后,得到取号信息,按照要求上传办理材料。工作人员对上传的材料进行审核,审核通过后进入业务办理环节。办理过程中工作人员及时更新进度,居民随时可以查看进度。业务办理结束后居民对服务进行评价,遇到问题可以提出投诉建议。管理员在所有的业务流程中都会对各项业务数据进行监管以及配置。总业务流程图如下图4-3所示。

4.3.2在线预约流程设计
民选择预约事项后系统展示可预约时段。用户在确定好时间段后填写预约信息提交申请。系统收到预约申请之后校验预约时段是否被占用,校验通过之后生成预约记录并返回核销码。工作人员登录系统查看待审核的预约列表,选中一条预约记录进行审核。审核通过之后系统将预约状态由未预约变为已确认,居民端可以查看到预约成功的状态。预约时段冲突或者信息填写错误时,工作人员选择驳回并填写驳回原因,居民根据驳回原因重新提交申请。在线预约流程图4-4如下。

4.3.3材料上传与审核流程设计
居民在预约成功后进入材料上传界面,系统根据所选事项类型展示所需材料清单。居民逐项选择本地文件进行上传,系统对文件格式与大小进行初步校验。上传完成后材料进入待审核状态。工作人员在材料管理界面查看待审核材料列表,逐项打开材料文件进行内容核验。核验通过后工作人员更新材料状态为审核通过。若材料内容不符合要求,工作人员选择审核不通过并填写不通过原因,系统将审核结果推送至居民端。居民根据反馈信息重新准备材料并再次上传。材料上传与审核流程如图4-5所示。

4.3.4办理进度跟踪流程设计
工作人员在业务办理过程中根据实际办理阶段更新进度状态。进入办理环节后工作人员将进度状态从待受理更新为受理中。业务处理完成时工作人员将状态更新为办结。系统记录每次状态变更的时间点与操作人员信息。居民登录系统后进入进度查询界面,系统从数据库中读取当前业务单的最新进度状态与历史变更记录进行展示。若办理过程中出现材料补正或信息核实等中间环节,工作人员增设中间状态并填写备注说明。居民通过进度详情页了解当前所处的具体办理阶段。办理进度跟踪流程如图4-6所示。

4.3.5服务评价与投诉建议流程设计
业务办结后系统向居民推送评价提醒信息。居民进入评价界面后对服务态度、办理效率、业务质量等维度进行评分,并可填写文字评价内容。提交评价后系统将评价信息存储并关联至对应工作人员。工作人员可在评价管理模块查看居民评价内容。若居民在办理过程中或办理完成后遇到问题,进入投诉建议界面选择投诉类型或建议类别,填写具体内容后提交。系统将投诉建议记录推送至管理员处理界面。管理员接收后对投诉建议进行核实,根据核实结果做出答复并将答复内容反馈至居民端。服务评价与投诉建议流程如图4-7所示。

4.4数据库设计
数据库设计遵循关系型数据模型,通过规范化处理将业务数据分解为若干相互关联的二维表结构。关系模型以数学集合论为基础,采用表、行、列的三层结构组织数据,各表之间通过外键建立参照完整性约束。在本系统中,数据库承担业务数据的持久化存储职责,对网点信息、预约记录、材料上传记录、办理进度状态、评价与投诉内容等核心业务数据进行管理。数据一致性的保障通过事务机制实现,一组相关操作要么全部提交要么全部回滚。数据完整性约束在表结构设计阶段予以明确,包括主键约束保证记录唯一性、外键约束维护表间关联、非空约束确保关键字段取值完整[18]。
4.4.1概念设计
E-R图(实体关系图)是一种用来做数据建模的图形化工具,描述实体、属性以及实体之间的关系。以图示的形式来辅助数据库结构的分析与设计,清楚地表明数据间的相互联系,利于后续的数据库开发及管理工作。下面给出系统全局E-R图以及各个实体的属性图[19]。
网点部门实体主要包括网点部门id、网点部门等属性。网点部门实体属性图如图4-8所示。

事项类型实体主要包括事项类型id、事项类型等属性。事项类型实体属性图如图4-9所示。

网点信息实体主要包括网点信息id、网点名称、网点部门、网点地址、网点电话、办公时间等属性。网点信息实体属性图如图4-10所示。

居民用户实体主要包括居民用户id、居民姓名、居民性别、居民电话、身份证号等属性。居民用户实体属性图如图4-11所示。

工作人员实体主要包括工作人员id、员工姓名、员工性别、员工电话等属性。工作人员实体属性图如图4-12所示。

在线预约实体主要包括在线预约id、网点名称、事项类型、预约时间、预约详情等属性。在线预约实体属性图如图4-13所示。

取号信息实体主要包括取号信息id、排队号码、事项类型、备注信息等属性。取号信息实体属性图如图4-14所示。

材料上传实体主要包括材料上传id、办理材料、办理时间、办理备注等属性。材料上传实体属性图如图4-15所示。

办理进度实体主要包括办理进度id、排队号码、进度状态、进度详情等属性。办理进度实体属性图如图4-16所示。

服务评价实体主要包括服务评价id、评价时间、评价内容等属性。服务评价实体属性图如图4-17所示。

投诉建议实体主要包括投诉建议id、投诉内容、投诉时间、投诉类型等属性。投诉建议实体属性图如图4-18所示。

系统E-R图如图4-19所示。

4.4.2数据库表设计
数据库表设计就是根据业务需求来确定数据库表的结构、字段类型和关系。通过规范化的设计,保证数据的完整性、一致性、效率,避免冗余的数据,为后续的数据查询、存储、维护提供清晰的结构。以下是系统的数据库表设计展示。
网点部门表主要用于存储便民服务中心下属各业务部门的基础信息。主要包括网点部门id、网点部门等字段。如表4-1所示。
表4-1 网点部门表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
网点部门id |
int |
11 |
是 |
是 |
网点部门ID |
|
2 |
网点部门 |
varchar |
64 |
否 |
否 |
网点部门名称 |
事项类型表主要用于定义政务服务事项的分类信息。主要包括事项类型id、事项类型等字段。如表4-2所示。
表4-2 事项类型表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
事项类型id |
int |
11 |
是 |
是 |
事项类型ID |
|
2 |
事项类型 |
varchar |
64 |
否 |
否 |
事项类型名称 |
网点信息表主要用于存储各便民服务网点的基础信息与运营参数。主要包括网点信息id、网点名称、网点部门、网点地址、网点电话、办公时间等字段。如表4-3所示。
表4-3 网点信息表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
网点信息id |
int |
11 |
是 |
是 |
网点信息ID |
|
2 |
网点名称 |
varchar |
64 |
否 |
否 |
网点名称 |
|
3 |
网点部门 |
varchar |
64 |
否 |
否 |
所属部门 |
|
4 |
网点地址 |
varchar |
64 |
否 |
否 |
详细地址 |
|
5 |
网点电话 |
varchar |
64 |
否 |
否 |
联系电话 |
|
6 |
办公时间 |
varchar |
64 |
否 |
否 |
工作时间 |
居民用户表主要用于存储使用系统的居民个人信息。主要包括居民用户id、居民姓名、居民性别、居民电话、身份证号等字段。如表4-4所示。
表4-4 居民用户表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
居民用户id |
int |
11 |
是 |
是 |
居民用户ID |
|
2 |
居民姓名 |
varchar |
64 |
否 |
否 |
真实姓名 |
|
3 |
居民性别 |
varchar |
64 |
否 |
否 |
性别 |
|
4 |
居民电话 |
varchar |
64 |
否 |
否 |
联系电话 |
|
5 |
身份证号 |
varchar |
255 |
否 |
否 |
证件号码 |
工作人员表主要用于存储系统内工作人员的基本信息。主要包括工作人员id、员工姓名、员工性别、员工电话等字段。如表4-5所示。
表4-5 工作人员表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
工作人员id |
int |
11 |
是 |
是 |
工作人员ID |
|
2 |
员工姓名 |
varchar |
64 |
否 |
否 |
姓名 |
|
3 |
员工性别 |
varchar |
64 |
否 |
否 |
性别 |
|
4 |
员工电话 |
varchar |
64 |
否 |
否 |
联系电话 |
在线预约表主要用于存储居民提交的预约申请记录。主要包括在线预约id、网点名称、事项类型、预约时间、预约详情等字段。如表4-6所示。
表4-6 在线预约表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
在线预约id |
int |
11 |
是 |
是 |
预约记录ID |
|
2 |
网点名称 |
varchar |
64 |
否 |
否 |
预约网点 |
|
3 |
事项类型 |
varchar |
64 |
否 |
否 |
办理事项 |
|
4 |
预约时间 |
date |
– |
否 |
否 |
预约日期 |
|
5 |
预约详情 |
text |
65535 |
否 |
否 |
补充说明 |
取号信息表主要用于存储居民到达网点后获取的排队号码信息。主要包括取号信息id、排队号码、事项类型、备注信息等字段。如表4-7所示。
表4-7 取号信息表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
取号信息id |
int |
11 |
是 |
是 |
取号记录ID |
|
2 |
排队号码 |
varchar |
64 |
否 |
否 |
排队编号 |
|
3 |
事项类型 |
varchar |
64 |
否 |
否 |
办理事项 |
|
4 |
备注信息 |
text |
65535 |
否 |
否 |
额外说明 |
材料上传表主要用于存储居民办理业务时提交的各类材料信息。主要包括材料上传id、办理材料、办理时间、办理备注等字段。如表4-8所示。
表4-8 材料上传表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
材料上传id |
int |
11 |
是 |
是 |
材料记录ID |
|
2 |
办理材料 |
varchar |
255 |
否 |
否 |
材料文件 |
|
3 |
办理时间 |
datetime |
– |
否 |
否 |
提交时间 |
|
4 |
办理备注 |
text |
65535 |
否 |
否 |
补充说明 |
办理进度表主要用于跟踪记录业务办理的各个阶段状态。主要包括办理进度id、排队号码、进度状态、进度详情等字段。如表4-9所示。
表4-9 办理进度表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
办理进度id |
int |
11 |
是 |
是 |
进度记录ID |
|
2 |
排队号码 |
varchar |
64 |
否 |
否 |
关联取号 |
|
3 |
进度状态 |
varchar |
64 |
否 |
否 |
当前阶段 |
|
4 |
进度详情 |
text |
65535 |
否 |
否 |
阶段说明 |
服务评价表主要用于存储居民对业务办理过程的满意度反馈。主要包括服务评价id、评价时间、评价内容等字段。如表4-10所示。
表4-10 服务评价表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
服务评价id |
int |
11 |
是 |
是 |
评价记录ID |
|
2 |
评价时间 |
date |
– |
否 |
否 |
评价日期 |
|
3 |
评价内容 |
text |
65535 |
否 |
否 |
文字反馈 |
投诉建议表主要用于存储居民提出的投诉与建议信息。主要包括投诉建议id、投诉内容、投诉时间、投诉类型等字段。如表4-11所示。
表4-11 投诉建议表
|
序号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
备注 |
|
1 |
投诉建议id |
int |
11 |
是 |
是 |
投诉记录ID |
|
2 |
投诉内容 |
text |
65535 |
否 |
否 |
具体内容 |
|
3 |
投诉时间 |
datetime |
– |
否 |
否 |
提交时间 |
|
4 |
投诉类型 |
varchar |
64 |
否 |
否 |
问题分类 |
5系统实现
5.1居民用户功能实现
5.1.1网点信息查看功能实现
居民通过网点信息查看模块获取各网点的基础信息与可办事项。前端页面加载时调用NetworkInformationController中的get_list方法,该方法继承自BaseController,通过service层执行分页查询并返回网点信息列表。后台根据前端传递的查询条件动态组装SQL语句,从数据库network_information表中检索数据后以JSON格式返回至前端进行渲染展示。网点信息查看界面如图5-1所示。

图5-1 网点信息查看界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.2在线预约功能实现
居民填写预约信息后提交申请,系统调用OnlineAppointmentController中的add方法处理新增请求。该方法通过readBody读取前端传递的参数,随后对空字符串字段进行过滤移除。根据参数构建OnlineAppointment实体对象,对预约时间字段进行格式转换后调用addEntity方法执行数据插入操作,将预约记录存入online_appointment表并返回成功状态。在线预约界面如图5-2所示。

图5-2 在线预约界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
OnlineAppointment online_appointment = new OnlineAppointment();
online_appointment.setResuser_idential_users(paramMap.get("resuser_idential_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("resuser_idential_users"))));
this.addEntity(online_appointment);
return success(1);
}
5.1.3取号信息管理功能实现
居民查看已获取的排队号码及相关信息,系统通过NumberInformationController中的get_list方法实现数据查询。该方法读取前端传递的查询参数与配置信息,调用service层selectToPage方法执行分页查询,从number_information表中检索当前居民的取号记录,将查询结果封装为分页对象后返回前端进行展示。取号信息管理界面如图5-3所示。

图5-3 取号信息管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.4材料上传功能实现
居民上传办理材料时,系统调用MaterialUploadController中的add方法。该方法解析前端提交的请求体,过滤空字符串字段后构建MaterialUpload实体对象。对处理时间字段进行类型转换,设置审核状态为待审核,调用addEntity完成数据持久化,将材料记录存入material_upload表供工作人员后续审核。材料上传界面如图5-4所示。

图5-4 材料上传界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
MaterialUpload material_upload = new MaterialUpload();
material_upload.setResuser_idential_users(paramMap.get("resuser_idential_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("resuser_idential_users"))));
material_upload.setHandling_materials(paramMap.get("handling_materials")==null?null:String.valueOf(paramMap.get("handling_materials")));
material_upload.setExamine_state("未审核");
this.addEntity(material_upload);
return success(1);
}
5.1.5办理进度功能实现
居民查询业务办理进度时,系统调用ProcessingProgressController中的get_list方法。该方法根据居民用户标识构建查询条件,调用service层selectToPage方法从processing_progress表中检索进度记录,获取最新的进度状态与进度详情。返回结果包含进度状态字段与详细说明,前端根据状态展示不同的办理阶段。办理进度界面如图5-5所示。

图5-5 办理进度界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.1.6服务评价功能实现
居民完成业务办理后提交评价,系统调用ServiceResightController中的add方法。该方法接收前端传递的评价参数,构建ServiceResight实体对象,设置评价时间字段,调用addEntity将评价记录存入service_resight表。评价内容包含评分维度与文字反馈,供工作人员查看分析。服务评价界面如图5-6所示。

图5-6 服务评价界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
ServiceResight service_resight = new ServiceResight();
service_resight.setResuser_idential_users(paramMap.get("resuser_idential_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("resuser_idential_users"))));
service_resight.setResight_content(paramMap.get("resight_content")==null?null:String.valueOf(paramMap.get("resight_content")));
this.addEntity(service_resight);
return success(1);
}
5.1.7投诉建议功能实现
居民提交投诉或建议时,系统调用ComplaintsAndSuggestionsController中的add方法。该方法解析请求参数,过滤空字符串字段后构建ComplaintsAndSuggestions实体,设置投诉时间与投诉内容,将记录存入complaints_and_suggestions表,审核状态默认为未审核,等待管理员处理。投诉建议界面如图5-7所示。

图5-7 投诉建议界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
ComplaintsAndSuggestions complaints_and_suggestions = new ComplaintsAndSuggestions();
complaints_and_suggestions.setComplaint_content(paramMap.get("complaint_content")==null?null:String.valueOf(paramMap.get("complaint_content")));
complaints_and_suggestions.setExamine_state("未审核");
this.addEntity(complaints_and_suggestions);
return success(1);
}
5.2 工作人员功能实现
5.2.1在线预约管理功能实现
工作人员查看和处理居民提交的预约申请时,系统调用OnlineAppointmentController中的get_list方法获取预约列表,通过update_examine_state方法完成审核操作。该方法接收记录ID与新状态参数,先根据ID查询预约记录,更新examine_state字段后调用setEntity方法持久化变更,将审核结果反馈至居民端。在线预约管理界面如图5-8所示。

图5-8 在线预约管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
OnlineAppointment online_appointment = service.findOne(queryMap);
if (online_appointment!=null) {
online_appointment.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),online_appointment);
return "审核成功";
}
return "审核失败:记录不存在";
}
5.2.2取号信息管理功能实现
工作人员管理居民的取号记录,系统通过NumberInformationController中的add方法生成取号信息。该方法接收前端传递的排队号码、事项类型等参数,构建NumberInformation实体对象后调用addEntity插入记录,实现预约记录与取号记录的关联。取号信息管理界面如图5-9所示。

图5-9 取号信息管理界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
NumberInformation number_information = new NumberInformation();
number_information.setQueue_number(paramMap.get("queue_number")==null?null:String.valueOf(paramMap.get("queue_number")));
number_information.setItem_type(paramMap.get("item_type")==null?null:String.valueOf(paramMap.get("item_type")));
this.addEntity(number_information);
return success(1);
}
5.2.3材料上传管理功能实现
工作人员审核居民上传的办理材料时,系统调用MaterialUploadController中的get_list方法获取待审核材料列表,通过update_examine_state方法完成审核。该方法根据材料ID查询记录,更新审核状态并填写审核回复,调用setEntity保存变更结果。材料上传管理界面如图5-10所示。

图5-10 材料上传管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
MaterialUpload material_upload = service.findOne(queryMap);
if (material_upload!=null) {
material_upload.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),material_upload);
return "审核成功";
}
return "审核失败:记录不存在";
}
5.2.4办理进度管理功能实现
工作人员更新业务办理进度时,系统调用ProcessingProgressController中的set方法。该方法读取查询条件与请求体参数,构建ProcessingProgress实体后调用setEntity更新记录,修改progress_status字段反映当前办理阶段。办理进度管理界面如图5-11所示。

图5-11 办理进度管理界面
核心代码实现如下:
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
ProcessingProgress processing_progress = new ProcessingProgress();
processing_progress.setProgress_status(paramMap.get("progress_status")==null?null:String.valueOf(paramMap.get("progress_status")));
this.setEntity(queryMap,configMap,processing_progress);
return success(1);
}
5.2.5服务评价管理功能实现
工作人员查看居民提交的服务评价,系统调用ServiceResightController中的get_list方法。该方法从service_resight表中检索评价记录,包含评价内容与评价时间字段,以分页形式返回供工作人员查阅分析。服务评价管理界面如图5-12所示。

图5-12 服务评价管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3管理员功能实现
网点部门管理功能实现
管理员配置网点部门信息时,系统调用OutletDepartmentController中的add方法新增部门记录,调用set方法修改部门信息。add方法接收部门名称参数构建实体后插入outlet_department表,set方法根据查询条件更新对应记录。网点部门管理界面如图5-13所示。

图5-13 网点部门管理界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
OutletDepartment outlet_department = new OutletDepartment();
outlet_department.setOutlet_department(paramMap.get("outlet_department")==null?null:String.valueOf(paramMap.get("outlet_department")));
this.addEntity(outlet_department);
return success(1);
}
5.3.1事项类型管理功能实现
管理员维护政务服务事项分类时,系统调用ItemTypeController中的add方法和set方法。add方法接收事项类型名称构建ItemType实体并插入item_type表,set方法根据查询条件修改已存在的事项类型记录。事项类型管理界面如图5-14所示。

图5-14 事项类型管理界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
ItemType item_type = new ItemType();
item_type.setItem_type(paramMap.get("item_type")==null?null:String.valueOf(paramMap.get("item_type")));
this.addEntity(item_type);
return success(1);
}
5.3.2网点信息管理功能实现
管理员对网点基础信息进行增删改查,系统调用NetworkInformationController中的add、set、del等方法。add方法接收网点名称、地址、电话等参数构建实体插入network_information表,set方法根据查询条件更新网点信息,del方法根据条件执行删除操作。网点信息管理界面如图5-15所示。

图5-15 网点信息管理界面
核心代码实现如下:
public Map<String, Object> del(HttpServletRequest request) {
return Optional.ofNullable(service.readQuery(request))
.filter(query -> !query.isEmpty())
.map(query -> {
Map<String, String> config = service.readConfig(request);
this.service.delete(query, config);
return success(1);
})
.orElse(error(30000,"查询条件不能为空"));
}
5.3.3在线预约管理功能实现
管理员对系统中所有预约记录进行统一监管,系统调用OnlineAppointmentController中的get_list方法获取预约列表,通过update_examine_state方法强制调整审核状态。管理员可查看各网点的预约数据,对异常预约进行取消或状态修正。在线预约管理界面如图5-16所示。

图5-16 在线预约管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.4取号信息管理功能实现
管理员监控各网点的取号数据,系统调用NumberInformationController中的get_list方法检索全部取号记录。管理员可按网点、时间段进行筛选统计,对号源分配情况进行监督。取号信息管理界面如图5-17所示。

图5-17 取号信息管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.5材料上传管理功能实现
管理员对材料上传记录进行统一监管,系统调用MaterialUploadController中的get_list方法获取所有材料记录。管理员可查看各网点材料审核情况,处理审核异常的材料记录。材料上传管理界面如图5-18所示。

图5-18 材料上传管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.6办理进度管理功能实现
管理员监督各业务单的办理时效,系统调用ProcessingProgressController中的get_list方法检索进度记录。管理员可按办理状态筛选,对超时未办结的业务进行催办。办理进度管理界面如图5-19所示。

图5-19 办理进度管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.7服务评价管理功能实现
管理员对服务评价数据进行汇总分析,系统调用ServiceResightController中的get_list方法获取评价列表。管理员可按评价时间、网点、工作人员等维度进行筛选,生成满意度统计报表。服务评价管理界面如图5-20所示。

图5-20 服务评价管理界面
核心代码实现如下:
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
5.3.8投诉建议管理功能实现
管理员处理居民提交的投诉建议时,系统调用ComplaintsAndSuggestionsController中的get_list方法获取投诉列表,通过update_examine_state方法更新处理状态。管理员审核投诉内容后填写回复信息,完成投诉建议的闭环处理。投诉建议管理界面如图5-21所示。

图5-21 投诉建议管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
ComplaintsAndSuggestions complaints_and_suggestions = service.findOne(queryMap);
if (complaints_and_suggestions!=null) {
complaints_and_suggestions.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),complaints_and_suggestions);
return "审核成功";
}
return "审核失败:记录不存在";
}
5.3.9通知公告管理功能实现
管理员发布系统通知与政策信息时,系统调用NoticeController中的add方法。该方法接收标题与正文参数,构建Notice实体后插入notice表,设置创建时间与更新时间字段。发布后的公告在居民端首页进行展示。通知公告管理界面如图5-22所示。

图5-22 通知公告管理界面
核心代码实现如下:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String, Object> addMap = service.readBody(request.getReader());
checkParameter(addMap, "title", "标题不能为空");
addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time"));
this.service.insert(addMap);
return success(1);
}
6系统测试
6.1测试目的
系统测试是检验便民服务中心政务预约系统各个功能是否符合需求规格说明书所规定要求的过程。通过执行测试用例来检验居民用户在网点信息查看、在线预约、材料上传、办理进度跟踪等操作流程中是否正确,检验工作人员对于预约审核、材料核验、进度更新等管理功能是否可靠,确认管理员在网点部门配置、事项类型维护、业务数据监管等各方面的操作是否有效。测试过程中还要考察系统对于正常的数据输入以及异常的边界条件的反应,保证各个功能模块协同工作时数据传递的准确性和一致性,给系统上线运行提供质量保证[20]。
6.2测试方法
系统采用黑盒测试与白盒测试相结合的方式进行验证。黑盒测试部分根据需求文档来制订功能测试用例,包含居民、工作人员、管理员这三种角色主要业务流程的正常场景下操作路径检验以及异常情况下的错误处理校验。白盒测试中对控制器层的关键方法做单元测试,检验参数校验逻辑、业务规则判断分支和数据库操作语句的执行路径。测试环境要模拟实际部署的环境,用真实的测试数据样本进行回归测试,保证新增的功能不会对原有的模块造成影响。测试结果用测试报告的形式进行记录,缺陷管理流程跟踪问题从发现到修复的全过程。
6.3测试内容
在线预约功能测试围绕预约申请提交与审核流程的完整性与正确性展开。测试验证居民发起预约时系统对时段可用性的校验机制,检查预约信息保存后工作人员能否正常接收并处理审核请求,确认审核通过后预约状态变更的准确性以及核销码生成的可靠性。在线预约测试如表6-1所示。
表6-1 在线预约测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
预约提交 |
选择网点与事项,填写预约信息后提交 |
系统生成预约记录,状态为待审核 |
符合预期 |
|
时段冲突校验 |
选择已被占用的预约时段 |
系统提示时段不可用,阻止提交 |
符合预期 |
|
工作人员审核 |
工作人员对预约记录进行审核通过操作 |
预约状态变更为已通过,生成核销码 |
符合预期 |
|
审核驳回 |
工作人员对预约记录进行审核驳回操作 |
预约状态变更为未通过,居民端显示驳回原因 |
符合预期 |
取号信息管理功能测试针对取号记录的生成与关联关系进行验证。测试检查预约审核通过后居民能否成功获取排队号码,核实取号信息与预约记录之间的对应关系是否准确,验证工作人员对取号状态的核销操作能否正常执行。取号信息管理测试如表6-2所示。
表6-2 取号信息管理测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
取号生成 |
预约审核通过后居民到达网点获取排队号码 |
系统生成取号记录,排队号码按顺序分配 |
符合预期 |
|
关联校验 |
查询取号记录与对应预约记录的关联性 |
取号记录正确关联至预约记录 |
符合预期 |
|
号源核销 |
工作人员对居民取号记录进行核销操作 |
取号状态变更为已核销 |
符合预期 |
|
重复取号限制 |
同一预约记录多次尝试取号 |
系统提示已取号,阻止重复操作 |
符合预期 |
材料上传与审核功能测试围绕材料提交、格式校验与审核反馈流程展开。测试验证居民上传材料时系统对文件格式的校验机制,检查工作人员审核材料后状态变更的及时性,确认审核不通过时反馈信息能够准确传递至居民端。材料上传与审核测试如表6-3所示。
表6-3 材料上传与审核测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
材料提交 |
居民选择文件后提交材料 |
系统保存材料记录,状态为待审核 |
符合预期 |
|
格式校验 |
居民上传不符合格式要求的文件 |
系统提示格式错误,拒绝上传 |
符合预期 |
|
材料审核通过 |
工作人员对材料进行审核通过操作 |
材料状态变更为已通过 |
符合预期 |
|
材料审核退回 |
工作人员对材料进行审核退回并填写原因 |
材料状态变更为未通过,居民端显示退回原因 |
符合预期 |
办理进度管理功能测试针对进度状态更新的实时性与查询准确性进行验证。测试检查工作人员更新进度状态后居民端能否立即查询到最新进度,核实进度历史记录的完整性,验证进度状态变更时系统对关联业务数据的同步更新机制。办理进度管理测试如表6-4所示。
表6-4 办理进度管理测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
进度更新 |
工作人员将业务状态从待受理更新为受理中 |
系统更新进度状态,记录变更时间 |
符合预期 |
|
居民查询 |
居民登录系统查询业务办理进度 |
页面展示当前进度状态与历史变更记录 |
符合预期 |
|
办结状态更新 |
工作人员将业务状态更新为办结 |
进度状态变更为办结,系统触发评价提醒 |
符合预期 |
|
多阶段记录 |
工作人员多次更新进度状态 |
系统保留各阶段状态变更时间与操作人 |
符合预期 |
服务评价功能测试围绕评价提交与数据关联的准确性进行验证。测试检查业务办结后居民能否正常提交评价,验证评价内容与对应工作人员之间的关联关系是否正确,确认评价记录存储后工作人员能够正常查看。服务评价测试如表6-5所示。
表6-5 服务评价测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
评价提交 |
业务办结后居民填写评价内容并提交 |
系统保存评价记录,状态为已评价 |
符合预期 |
|
评价关联 |
提交评价后查询评价与工作人员关联性 |
评价记录正确关联至对应工作人员 |
符合预期 |
|
工作人员查看 |
工作人员登录系统查看评价记录 |
评价内容完整展示 |
符合预期 |
|
多维度评分 |
居民对服务态度、办理效率分别评分 |
系统保存各维度评分数据 |
符合预期 |
投诉建议处理功能测试针对投诉提交、流转与答复的闭环流程进行验证。测试检查居民提交投诉后系统能否正确推送给管理员,核实管理员处理投诉后答复内容能否准确反馈至居民端,验证投诉记录的状态变更机制。投诉建议处理测试如表6-6所示。
表6-6 投诉建议处理测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
投诉提交 |
居民填写投诉内容并提交 |
系统保存投诉记录,状态为未审核 |
符合预期 |
|
管理员接收 |
管理员登录系统查看投诉列表 |
投诉记录在待处理列表中展示 |
符合预期 |
|
投诉处理 |
管理员对投诉进行核实并填写答复 |
投诉状态变更为已处理,答复内容保存 |
符合预期 |
|
居民查看反馈 |
居民登录系统查看投诉处理结果 |
页面展示管理员答复内容 |
符合预期 |
通知公告管理功能测试针对公告发布、展示与状态管理的准确性进行验证。测试检查管理员发布公告后居民端能否及时显示,验证公告的编辑与删除操作是否生效,确认公告排序与置顶机制的正确性。通知公告管理测试如表6-7所示。
表6-7 通知公告管理测试用例表
|
测试内容 |
测试步骤 |
预期结果 |
实际结果 |
|
公告发布 |
管理员填写标题与内容后发布公告 |
系统保存公告记录,居民端可见 |
符合预期 |
|
公告编辑 |
管理员对已发布公告进行内容修改 |
公告内容更新,居民端显示最新版本 |
符合预期 |
|
公告删除 |
管理员删除已发布公告 |
公告从居民端消失,数据库记录状态变更 |
符合预期 |
|
公告排序 |
管理员发布多条公告后查看列表 |
公告按发布时间倒序排列 |
符合预期 |
6.4测试结论
对便民服务中心政务预约系统7个主要功能模块进行测试用例执行及结果分析,发现在线预约、取号信息管理、材料上传和审核、办理进度管理、服务评价、投诉建议处理、通知公告管理等各个功能模块都按照预期正常工作。测试过程中各个模块的预期结果和实际结果完全一致,没有出现由于功能实现与需求描述不符而引发的问题。工作人员审核操作可以正确触发预约状态变更,材料上传环节的格式校验机制可以有效地阻止非法文件的上传,办理进度状态更新之后,居民端查询结果和后台记录保持一致,评价和投诉数据在居民端和管理端之间流转没有问题,公告发布之后展示正常。所有的测试用例执行结果都满足预期。
7总结
便民服务中心属于基层政务服务的关键窗口,预约管理环节长久以来一直存在着渠道单一、信息滞后、材料提交及进度跟踪相脱离等诸多现实状况。本课题针对以上痛点,设计并实现了一个便民服务中心政务预约系统,其目的是把预约发起、取号管理、材料上传、进度查询、服务评价和投诉反馈整合成一个线上闭环流程,从而提高窗口办事效率和服务居民的体验。系统完成需求分析、总体架构设计、功能模块划分、数据库建模、编码实现、功能测试全部研发工作,达到预期的设计目的。
系统采用前后端分离的B/S架构,前端使用Vue框架创建交互界面,后端使用SpringBoot框架实现业务逻辑,MySQL数据库实现数据持久化存储。从功能实现的角度来看,系统为居民、工作人员、管理员三个角色分别设计了操作流程。居民用户可登陆网点页面浏览网点信息,预约取号,上传资料,查看办理进度,评价服务,提出投诉意见。工作人员对预约申请、取号记录、上传材料、办理进度和服务评价进行统一的管理和审核。管理员负责网点部门配置、事项类型维护、网点信息管理,对全部业务数据进行监管,并且承担通知公告发布职责。以上角色一起工作就构成了一个从预约申请到服务反馈的完整的业务链条。
受限于开发周期与个人能力,系统仍存在一定局限性。预约时段冲突检测用数据库查询来实现,在高并发情况下会出现判断延迟。材料上传环节只支持常见的图片、文档格式,并且没有支持大型文件的分片传输和断点续传。办理进度更新依靠工作人员手动操作,并没有使用时间节点的自动提醒功能。系统部署在本地开发环境里,并没有对大流量的访问做压力测试以及性能优化。
后续研究可以从以下方面入手。预约模块可以采用分布式锁的方式来解决并发冲突的问题,保证时段分配的原子性。材料上传部分可以支持更多的文件类型,还可以集成对象存储服务提高传输效率。进度控制环节可以加入超时自动提醒、催办的功能来减少人的工作量。系统可以对上级政务平台进行数据对接,从而达成跨部门业务协同办理。伴随着服务流程不断优化,该系统对于提高基层政务服务水平、改善居民办事体验有较好的应用价值。
参考文献
致谢
时间过得飞快,大学生活即将结束。回顾这段求学历程,从选择课题的时候就陷入困惑之中,到最后完成论文时才有了论文。
衷心感谢我的指导老师,从论文选题、开题报告、系统架构设计、论文撰写、反复修改等各个方面,老师一直用严谨的治学态度、深厚的学术功底来指导我。每一个困惑都会给我的学术道路的发展指明方向,每一个细节的打磨都会使我的学术研究更加深入。非常感谢企业导师在技术实践上给我提供的一些宝贵的意见,使系统的实现更加贴近实际的使用场景,也对工程落地的过程有更深的认识。
本次毕业设计创作过程是非常宝贵的。从一开始对于需求分析的把握不清,到慢慢理清业务逻辑,从技术选型的犹豫不决,到系统功能的逐步实现,每一个困难都会促使我进行深入思考、查阅资料、反复调试。大学四年,知识结构从零碎变成系统化、理论联系实践能力相结合,使我对所学知识有更加深刻的认识,这种认识会伴随我走遍世界的每个角落。
感谢学院各位老师四年来的栽培教育,辅导员老师在生活和学业上对我的关心使我很感动。衷心感谢同窗好友之间互相学习、互相帮助,在实验室里一起奋斗的日子将会是我最美好的记忆。
非常感谢父母用无声的付出给我营造了一个安静的环境,让我可以一心一意地读书。这沉甸甸的恩情我会记住的。毕业是一个新的起点,我会用更加踏实的态度去做好工作,用我的知识报效社会,不辜负老师、家人对我的培养与期望。






