实践案例 | 远光商旅集成,费用精细化管理的高效实践

科技   2024-09-29 07:45   广东  

每工作日一、三、五早上07:45

准时为你带来最新产品资讯


在追求效率和成本控制的今天,许多企业对商旅管理有严格的、精细化的管控需求。A企业也出于这一考量,决定切换至新的商旅平台,并与星瀚集成。

项目组应用苍穹集成服务云,有效满足了客户对差旅业务的管理需求,于一周内完成了方案的开发及自测,提供了完整的日志以及失败重试机制。本期与你一起深入了解这一商旅集成方案背后的秘诀!















业务背景














A企业是中国电力装备行业的领先企业,隶属于中国电气装备集团有限公司,致力于为国民经济和社会发展提供能源电力高端技术装备,为清洁能源的生产、传输、配送以及高效使用提供全面的技术、产品和服务支撑。

作为行业领先者,A企业在商旅管理上要求严格,原服务商虽能满足基本需求,但在费用控制上不够精细,影响成本优化。加之,二级单位在使用这一差旅平台时,没有办法严格按照集团要求选择标准,导致集团难以实现统一管控

为此,集团决定转向更能满足其管理要求的解决方案——新的商旅平台(远光商旅),以实现资源的有效协调、成本优化及服务质量的提升。


此次从原服务商切换至远光商旅,主要满足客户以下需求


  • 控制商旅费用标准:通过新平台实现精细化费用管理,确保每项支出符合公司标准,成本得到有效控制,并提供自动追踪与报告功能。


  • 提供更舒适的商旅平台使用体验:新平台需提供统一且高质量的服务,简化预订流程,提供友好的界面及个性化服务,提升员工满意度。



解决方案














1. 方案整体思路


通过应用苍穹集成服务云和API接口,实现星瀚组织、人员、出差申请单等数据的集成和交互。方案思路如下:

(1)将星瀚组织、人员定时同步到远光商旅平台。

(2)将星瀚出差申请单通过事件触发的方式同步到远光商旅平台,支撑后续通过出差申请单进行资源预定。

(3)远光商旅平台将机票、酒店和火车票订单同步至星瀚人人差旅平台,实现后续报销业务。

(4)远光商旅平台同步账单信息至星瀚,获取账单确认状态,根据确认状态进行开票。

(5)支持一键切换至新商旅平台。



2. 涉及的功能以及实现步骤



(1)使用集成云建立与远光商旅的连接,配置字段映射,将星瀚的数据推送至远光商旅。



  • 组装数据


bill = {};log = {};// 申请单唯一标识idbill.travelApplyId = tripreqbill.billno;// 交通工具bill.transportation = tripreqbill.rvehicle;// 变更原因bill.changeReason = " ";//创建时间bill.createDate = tripreqbill.createtime;// 申请人.编号bill.userId = tripreqbill.applier.number;// 申请人姓名bil.userCnName = tripreqbill.applier.name.zh_CN;// 出发地,地级市bill.startCity = " ";// 目的地,地级市bill.endCity = " ";// 出差类别bill.travelType = tripreqbill.triptype.name.zh_CN; // 出差类别IDbill.travelTypeId = tripreqbill.triptype.number; // 出差事由bill.reason = tripreqbill.description; // 出差天数bill.totalDate = tripreqbill.plandays; //出差开始日期bill.startDate = Date.format(Date.new(tripreqbill.rstartdate),'yyyy-MM-dd'); // 出差结束日期bill.endDate = Date.format(Date.new(tripreqbill.renddate),'yyyy-MM-dd'); // 备注说明bill.remark = tripreqbill.description;// 利润中心bill.costBelongCode = tripreqbill.costcompany.number;bill.costBelongName = tripreqbill.costcompany.name.zh_CN;


  • 计算行程信息


// 获取行程分录var tripentry = tripreqbill.tripentry;// 出发地var rfrom = tripentry[0];// 目的地var tripentryLength = tripentry.length;var rto = tripentry[ tripentryLength - 1];// 出发地,地级市bill.startCity = rfrom.from.number;// 出发城市行政编码bill.startCityCode = rfrom.from.xuji_ygcsbm;// 目的地,地级市bill.endCity = rto.to.number;// 目的城市行政编码bill.endCityCode = rto.to.xuji_ygcsbm;// 途经城市var travelApplyRouteCities = [];var temp = [];if (tripentryLength > 0) {    var rfromNum = rfrom.from.number;    var rtoNum = rto.to.number;    for(var i = 1; i < tripentryLength - 1; i++) {        var outeCity = {};        var outeCityFrom = tripentry[i].from;        var outeCityFromNum = outeCityFrom.xuji_ygcsbm;        if (outeCityFromNum != rfromNum && outeCityFromNum != rtoNum && !Collection.contains(temp, outeCityFromNum)) {            var outeCity = {};            // 途径地名称            outeCity.name = outeCityFrom.name.zh_CN;            // 途径地行政名称            outeCity.code = outeCityFromNum;            // 父节点代码            outeCity.parentCode = "";            // 父节点名称            outeCity.parentName = "";            // 单位id            outeCity.cid = "";            travelApplyRouteCities += outeCity;           temp += outeCityFromNum;        }        var outeCityTo = tripentry[i].to;        var outeCityToNum = outeCityTo.xuji_ygcsbm;         if (outeCityToNum != rfromNum && outeCityToNum != rtoNum && !Collection.contains(temp, outeCityToNum)) {            var outeCity = {};            // 途径地名称            outeCity.name = outeCityTo.name.zh_CN;            // 途径地行政名称            outeCity.code = outeCityToNum;            // 父节点代码            outeCity.parentCode = "";            // 父节点名称            outeCity.parentName = "";            // 单位id            outeCity.cid = "";            travelApplyRouteCities += outeCity;            temp += outeCityToNum;         }      }     }  bill.travelApplyRouteCities = travelApplyRouteCities;


  • 记录日志


var costcompany_id = 0;if(tripreqbill.costcompany != null){  costcompany_id = tripreqbill.costcompany.id;}if(logNumber == "0"){  // 记录新日志  log.billno = new_uuid();}if(logNumber != "0" && logNumber != "-1"){  // 用于集成日志重发  log.billno = logNumber;}log.xuji_function = "trip";log.xuji_billno = numbern;log.org = costcompany_id;log.message = ygResult.message;if(ygResult.code == 200){  log.status = "A";} else {  log.status = "B";}var entity = "xuji_group_bt_logging";var actions = ['save'];var judgeFields = {'$':['billno']};if(logNumber != "-1"){  $action(KINGDEE, entity,actions, log, judgeFields);


(2)MC配置远光商旅的参数信息。



(3)开发二开插件,做远光单点登录,同时跳转远光商旅对应的页面。



(4)服务商配置扩展插件,一键切换使用原服务商还是远光商旅。





方案的可推广价值














对于存在优化差旅管理流程的企业,此方案具备高复用价值,具体包括:

1. 开发周期短该方案开发自测完成仅用一周时间,与异构系统字段之间的映射及逻辑支持灵活修改。

2. 容错机制全面:提供完整的日志以及失败重试机制,更方便解决问题。

3. 提升客户体验:对于A企业而言,该方案能够无缝切换服务商,有效控制成本并改善商旅体验。



相关资料














方案资源请见下方链接(资源列表):

https://dev.kingdee.com/dev/solutionlib/2047810167050863616



#往期推荐#

# 实践案例|数据库表复制实现异构系统数据的分发对比

实践案例 | 无缝对接:揭秘SAP到苍穹的数据同步之旅

实践案例 | 服务编排—实现异构系统的灵活集成

实践案例|基于服务流程的主数据分发新实践



对文章有任何疑问或建议,欢迎评论区留言~

PaaS平台那些事
分享苍穹最新特性、功能使用和开发小技巧、最佳实践等,做苍穹用户的知心朋友
 最新文章