概述
TerraCorp是一家提供地图测绘服务的有限责任公司,公司位于美国德克萨斯州,业务覆盖整个达拉斯-沃斯堡大都会区。该公司拥有一批经验丰富的专业技术人员,可以为任何规模的项目提供精准的测量服务,包括小型住宅到大型商业项目。公司配有世界领先的现场勘测设备以及绘图软件,配合TracTerra专业化的测量订单管理系统,可以实现订单从下单到交付的全程生命周期管理,保证项目进程的高效以及质量。
需求
功能需求
- 权限管理
- 数据字典管理
- 订单CRUD
- 测量订单处理工作流
- 订单相关文档上传
- 订单核算
- 订单处理留言
- 订单处理日志
- 订单处理日常邮件
- 测量订单生成/发送
- 订单发票生成/发送
- 现场处理人员分配
- 公司内部邮件
- 订单报表
- 订单报价申请
- 响应式界面
- WebAPI
业务流程
该软件将由客户或者管理员放置一笔订单开始,接着由公司调查人员(Researcher)处理该笔订单并实地调查后上传一些最终测量报告所需要的相关文档。一旦文档被调查人员上传后,订单将转入下一流程由调度人员(Crew Scheduler)处理并分配相应的订单给现场人员(Field Crews)。现场人员将实地处理订单测量工作并上传所有订单相关的文档,然后流转订单流程给绘图人员(Drafting)。绘图人员将基于所有工作流程中所上传的文档绘制订单测量图并上传,接着订单流转到最后一步,由专业测量员(PLS)查看所有流程中已上传的文档,并最终决定订单是否完成。如果订单完成,PLS将最终生成PDF订单测量报告以及发票信息,并发送给最终用户,否则PLS将重新流转订单流程到以前的步骤让相关人员重新处理。
订单流程图
解决方案
技术平台
- 基础框架: .Net Framework 4
- 数据库:SQL Server 2008 R2
- 数据访问:Entity framework 5
- 系统框架:Spring.net, Asp.net WebAPI
- 前端框架:WebForm, Bootstrap
- 第三方控件:JqGrid, DataTables, PDF Lib, Google Maps API, QuickBooks API, Highcharts, ,iTextSharp, Sparkline.
系统代码架构
- 此架构基于传统三层结构,EF是持久层,Dao是数据访问层,Service是服务层,
ASP.net WebFrom作为表现层。简单描述如下
- 持久层使用微软最前的Entity Framework 5.0框架技术,其中会自动生成Model实体类;
- IDao作为数据访问层接口,仅允许服务层引用;
- Dao是数据访问层的接口实现,使用Spring.NET向Service层中注入;
- IService是服务层接口,仅允许表现层引用;
- Service服务层接口实现,与Dao层通信,使用Spring.NET向Web层注入;
- 表现层使用ASP.NET WebForm,并采用JavaScript, html控件。并配合其他的一些三方控件完成界面展示。
- 总体架构图
系统部署
- 应用场景
亮点
测量报告生成
该系统的主要功能就是在不同业务流程中由各角色的操作人处理测量工作并上传最终测量文档生成所需要的部分文档内容,最终在业务流程结束后,会由管理员根据文档的相关内容生成最终的PDF测量报告和发票信息,并邮件给客户,完成订单流程。PDF文档生成使用PDFLib库开发。
测量报告
文件拖拽上传
系统业务中各业务处理人员需要上传处理后的测量文档或相关资料,为了方便用户操作,系统采用JQuery DropZone插件实现了文件的拖拽上传。
测量文档上传
Google 地图路径
该功能用于Field Crew人员工作分配以及跟踪。当订单处理流程流转到Field Assignment状态时,管理员可以选择待处理的订单并分配到相应处理人员,并根据订单的位置信息,在地图上将人员处理批量订单时经过的最短路径信息显示在Google地图上,供管理员决策并调整处理人员与订单的关系。该功能使用JQuery SortTable插件配合Google Maps API库开发,订单与人员的调整采用全拖放式的效果,用户体验性较好。
站场人员分配
响应式界面
该功能主要是为了适应不同的设备(如PC,Pad,手机等),在不同的设备上获得一致的界面。在减少成本的同时达到较好的使用体验。该特性基于Bootstrap UI 框架,并配合一些相关的Jquery插件,实现了相应的响应式效果,如响应式Form表单,响应式JqGrid表格等。
响应式登陆界面
响应式表格
响应式表单
响应式菜单
JqGrid报表导出/打印
该功能采用JQuery JqGrid插件来展现报表,包括二维表以及树形表格,并通过iTextSharp实现报表导出为pdf。报表打印通过动态筛选JqGrid Dom元素并采用PrintArea插件实现区域打印。
报表打印
技术难点
业务流程
由于该系统是测量行业的订单系统,需要理解相关的行业知识。加上前期客户对业务对象的相关数据项描述得不够清楚,所以在前期需求阶段,需要跟客户不断的沟通,理清业务流程以及相关的行业数据。
QuickBooks
QuickBooks API是一套远程Web API,用于访问QuickBooks系统中的业务数据,实现二次开发。在TracTerra项目中,客户需要使用QuickBooks API 实现系统间的客户以及发票数据同步。在前期使用时,由于初次接触,需要查阅大量的官方文档,并且熟悉QuickBooks API 的使用方式,以及与Tracterra项目中的异构数据进行同步的问题。
通过对QuickBooks的调研以及在官方的支持下,我们进行了一些实验以及Demo程序的编写,最终调试通过并顺利集成到TracTerra系统。
预期收益
该项目目前仍处于测试阶段,预期上线后能有效促进TerraCorp公司的工作流程规范化,保证测量订单的处理以及相关人员的分配高效且合理,最终提升公司对外形象,提高整体业务能力,确保公司利益最大化。
总结
整体项目开发以迭代方式分成需求,计划,设计,编码,测试,重构,项目管理等阶段,并制定每周开发任务,任务结束后,通过skype与客户沟通并确认已完成的开发任务,并与客户一道制定下周计划。
开发期间,与客户积极配合,并制定了一些需求文档以及原型界面。在开发中如果出现与需求有偏差的问题,会及时跟客户邮件沟通,并寻求解决方案。
项目中采用了一些之前未接触过的技术点,所以必须主动配合客户去学习新技术,并达到客户预想的结果。在满足客户需求的前提下追求更优解决方案,保证客户的利益。