您的运输管理数据模板
您的运输管理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- 提取指南
运输管理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间 EventTime | 特定运输活动或事件发生的准确日期和时间。 | ||
| 说明 此时间戳标记活动被系统记录的准确时刻,例如“已分配承运商”或“已收到交付证明”。时间戳是流程挖掘的基础,因为它确立了每票货运中事件的时间顺序。 时间戳的准确性对所有基于时间的分析都至关重要。它们用于计算活动之间的周期时间、衡量流程持续时间、识别延误,并根据服务级别协议评估绩效。分析事件时间有助于定位流程中时间损耗的环节。 为什么重要 此时间戳对于按时间顺序排列事件以及计算周期时间、延误等各项绩效指标至关重要。 获取位置 来源于OTM跟踪事件表或状态历史表中与事件关联的时间戳字段。 示例 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| 活动名称 ActivityName | 运输流程中某票Shipment发生的具体事件或里程碑的名称。 | ||
| 说明 该属性描述运输生命周期中的一个具体步骤,例如“已计划装运”“已提货”或“货物已交付”。每项活动代表推动装运完成的一项独立业务事件。 分析这些活动的顺序和持续时间是流程挖掘的核心。它支持发现实际流程顺序、识别步骤之间的瓶颈,并衡量对标准操作规程的遵循程度。活动顺序的差异可以揭示异常、返工或偏离最佳路径的情况。 为什么重要 它定义流程图中的步骤,用于可视化和分析货运历程、瓶颈及偏差。 获取位置 此信息来自Oracle Transportation Management中的跟踪事件表或状态变更日志。具体活动名称可能由事件代码和描述拼接而成。 示例 运输计划完成货物已提取清关完成货物已交付 | |||
| 装运 ShipmentId | 单票Shipment的唯一标识符,用作跟踪所有相关运输活动的主要案例ID。 | ||
| 说明 Shipment ID可唯一标识货物从发货方到收货方的一次运输。该属性是流程分析的基础,将规划、预订、提货、运输、交付和开票等所有相关事件归入同一案例。 在流程挖掘中,按Shipment ID分析事件,可以完整呈现运输生命周期的端到端过程。它用于计算总周期时间、准时交付绩效和每票Shipment成本等关键指标,全面了解流程效率和客户服务水平。 为什么重要 这是连接所有流程步骤的核心Case ID,可完整分析每票Shipment的整个运输过程。 获取位置 这是Oracle Transportation Management中的主键,通常位于Shipment或订单管理表中。具体表名和字段名请参阅OTM文档。 示例 SH-0012345SH-0012346SH-0012347 | |||
| 延误原因 DelayReason | 用于说明货运进度延误原因的代码或描述。 | ||
| 说明 货运发生延误时,此属性提供具体原因,例如“天气”“海关扣留”“港口拥堵”或“机械故障”。这些信息来自承运商更新或OTM中的人工录入。 此属性对于延迟交付的根因分析十分重要。通过对延误原因进行分类和统计,企业可以识别供应链中最常见的问题,并采取有针对性的改进措施,例如为特定线路选择更可靠的承运商,或完善单证以加快清关。 为什么重要 深入揭示货运延迟的根本原因,支持采取有针对性的措施,减少常见问题并提升准时绩效。 获取位置 通常记录在OTM的跟踪事件明细中,也可能与特定异常或延误事件代码关联。 示例 天气延误海关查验港口拥堵交通拥堵 | |||
| 承运商名称 CarrierName | 负责运输货运的运输承运商或服务提供商名称。 | ||
| 说明 此属性标识负责执行货物运输的物流合作伙伴,例如大型货运公司、本地快递商或海运公司。 按承运商分析绩效是运输流程挖掘的主要目标之一。利用此属性可以对货运进行分组,比较不同承运商的准时交付率、每票货运成本、运输时间,以及延误或账单差异等问题的发生频率。这些洞察对于承运商选择、合同谈判和绩效管理都十分重要。 为什么重要 支持对不同承运商进行绩效基准比较,对于优化承运商选择、谈判和降低成本至关重要。 获取位置 位于OTM的货运明细中,通过已分配的承运商或服务提供商记录关联。也可能存储在与货运和服务提供商相关的表中。 示例 FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| 要求交付日期 RequestedDeliveryDate | 客户要求的交付日期和时间,或服务级别协议(SLA)约定的目标日期和时间。 | ||
| 说明 此属性记录货运的目标交付时间戳,代表对客户作出的承诺,也是衡量准时绩效的主要基准。 在流程挖掘中,该日期会与实际交付时间戳(来自“已交付”活动)进行比较,以判断货运是否准时或延误。这是准时交付率KPI的基础,也是交付绩效概览仪表板的重要数据。分析偏差有助于识别延误的系统性原因并提升客户满意度。 为什么重要 这是衡量准时交付绩效的主要基准,也是客户满意度和运营卓越的关键KPI。 获取位置 此信息通常存储在OTM的订单或货运层级中,常见于与交付日期或预约相关的字段。 示例 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| 货运成本 ShipmentCost | 运输该票货运所收取的总运费或财务金额。 | ||
| 说明 此属性表示与一票货运相关的总成本,包括承运商费用、燃油附加费及其他附加服务费,是衡量运输流程财务绩效的重要指标。 分析货运成本可以计算每票货运的平均承运商成本KPI。还可以按承运商、路线、运输方式或货运类型进行细分,以发现节省成本的机会。此外,它还用于运费账单差异分析,比较计划成本与实际成本。 为什么重要 提供分析运输支出、发现节省成本机会以及衡量流程低效财务影响所需的数据。 获取位置 此信息通常位于OTM货运记录的财务或成本部分,往往在运费计价和结算后填充。 示例 250.751200.00545.50 | |||
| 运输方式 TransportationMode | 用于运输货运的方式,例如公路、铁路、海运或空运。 | ||
| 说明 此属性按运输方式对货运进行分类。常见方式包括整车运输(FTL)、零担运输(LTL)、海运、空运和铁路运输。这是货运的基本特征,会影响成本、运输时间和流程复杂度。 在分析中,运输方式是重要的细分维度。它支持比较不同运输方式下的流程绩效和成本。例如,可以识别哪些方式更容易出现运输途中延误,或每英里成本更高,从而为物流网络的战略决策提供依据。 为什么重要 支持按运输方式细分绩效和成本分析,揭示公路、空运、海运或铁路物流的具体洞察。 获取位置 这是OTM货运层级的标准属性,通常位于专用的“方式”或“运输类型”字段中。 示例 FTLLTL海运AIR | |||
| 最后数据更新时间 LastDataUpdate | 表示该事件数据最近一次从源系统刷新或提取时间的时间戳。 | ||
| 说明 此属性记录数据最近一次从Oracle Transportation Management提取的时间。它反映的是待分析数据的新鲜度,而不是业务事件发生的时间。 此时间戳对于了解流程挖掘分析的时效性至关重要。它帮助用户判断当前查看的是实时信息,还是某个时间点的快照。管理数据刷新周期并确保决策基于最新信息,也离不开这一时间戳。 为什么重要 表示数据的新鲜度,帮助用户了解分析所基于的数据有多新,以及预计何时进行下一次刷新。 获取位置 通常是在数据摄取或ETL过程中由系统自动生成的时间戳。 示例 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 始发国 OriginCountry | 货运旅程开始的国家。 | ||
| 说明 此属性根据发货方所在地指定货运的始发国,是物流分析中的重要地理信息。 按始发国分析流程有助于了解不同地区的绩效差异。例如,清关时间、承运商成本和运输时长可能因始发国不同而存在显著差异。这种细分对于管理国际物流和识别地区特定瓶颈至关重要。 为什么重要 支持对运输流程进行地理分析,帮助识别地区特定的瓶颈、成本和绩效差异。 获取位置 来源于货运起始地点或发货方的地址明细,该信息存储在OTM的位置主数据中。 示例 USADEUCHNMEX | |||
| 报关代理 CustomsAgent | 负责管理货运清关流程的报关行或代理。 | ||
| 说明 对于国际货运,此属性标识负责处理报关单证和手续的第三方代理或内部团队。该代理的绩效可能显著影响整体运输时长。 按报关代理分析清关周期时间,有助于进行绩效基准比较,并识别在特定国家或商品类型中效率最高的代理。这些洞察有助于选择最佳报关合作伙伴,并与绩效不佳的代理合作改进流程。 为什么重要 支持衡量报关行绩效,帮助识别效率最高的合作伙伴并减少清关相关延误。 获取位置 此信息可能作为服务提供商或参与方角色,存储在OTM的国际货运明细中。 示例 Global Customs ServicesLivingston InternationalFlexport | |||
| 是否准时交付 IsOnTimeDelivery | 表示货运是否在要求交付日期当天或之前交付的计算标志。 | ||
| 说明 此布尔属性通过比较“已交付”活动的时间戳与“要求交付日期”得出。如果货运准时或提前交付,则为“true”;如果延误,则为“false”。 此属性直接支持准时交付率KPI,也是交付绩效概览仪表板的重要组成部分。它为每票货运提供清晰的二元结果,简化交付绩效分析,便于筛选、汇总和可视化准时与延误货运。 为什么重要 此计算标志简化了准时交付KPI的衡量,并便于筛选和分析准时与延误货运。 获取位置 此属性不在源系统中,而是在数据转换过程中,通过将“已交付”活动时间戳与“RequestedDeliveryDate”属性进行比较计算得出。 示例 truefalse | |||
| 是否改道 IsRerouted | 表示货运路线是否在初始预订后发生变更的标志。 | ||
| 说明 如果货运在完成计划和预订后发生重大路线变更,此布尔标志将设为“true”。变更可能源于客户要求、突发中断或优化机会。 此属性直接支持货运改道率KPI以及改道与加急洞察仪表板。跟踪改道频率有助于识别计划或执行中的深层问题,揭示运营不稳定性及相关成本,帮助管理人员减少代价高昂且影响较大的变更。 为什么重要 帮助量化改道等运营异常的发生频率和影响,揭示计划与执行流程中的低效环节。 获取位置 此标志通过检测事件日志中的特定改道事件,或比较最终路线与初始计划路线得出。 示例 truefalse | |||
| 源系统 SourceSystem | 标识事件数据的来源系统,例如Oracle Transportation Management。 | ||
| 说明 此属性指定生成数据的源应用。在复杂的物流环境中,数据可能来自OTM、仓库管理系统(WMS)、通过EDI连接的承运商系统或其他集成平台。 了解源系统对于数据治理、质量评估和问题排查十分重要。它有助于理解数据背景,也能解释数据粒度或时效性的差异。在分析中,还可以利用它筛选仅来自特定可信系统的事件。 为什么重要 它提供有关数据来源的重要背景信息,对于数据验证以及多系统环境中的分析十分关键。 获取位置 通常是在数据提取过程中添加的静态值,用于标识记录来源。 示例 Oracle OTMOTM CloudSAP TM | |||
| 用户名 UserName | 执行特定活动或负责该活动的用户姓名或ID。 | ||
| 说明 此属性标识执行特定事件的个人用户或系统代理,例如“已计划发运”或“已分配承运商”。这些信息有助于明确责任,并了解流程中的资源参与情况。 在流程挖掘中,按用户分析活动有助于了解工作量分配、识别培训需求,以及比较不同用户或团队的绩效。它还可以区分人工执行的活动与系统自动执行的活动。 为什么重要 明确责任,并支持按个人用户或团队分析工作量和绩效。 获取位置 来源于与OTM历史表或日志表中的状态变更或事件关联的用户ID字段,例如INSERT_USER。 示例 JSMITHLOGISTICS_PLANNER_ASYSTEM_AUTO | |||
| 目的国 DestinationCountry | 计划交付货运的国家。 | ||
| 说明 此属性根据收货方所在地指定货运的最终目的国,与始发国共同用于地理流程分析。 与始发国类似,按目的国分析对于了解不同贸易线路的绩效差异十分重要。它尤其适用于分析清关时间、末端交付绩效以及地区特定的承运商表现,从而根据不同目的地市场的要求制定物流策略。 为什么重要 对于分析特定贸易线路的绩效,以及了解目的地市场在海关、承运商和法规方面的挑战至关重要。 获取位置 来源于货运目的地或收货方的地址明细,存储在OTM的位置主数据中。 示例 CANFRAJPNBRA | |||
| 货运状态 ShipmentStatus | 货运在生命周期中的当前总体状态,例如“已计划”“运输中”或“已交付”。 | ||
| 说明 此属性概括货运在整体流程中的所处阶段。活动是某个时间点发生的事件,而状态表示货运案例当前所处的状态。 流程挖掘关注活动流转,但总体状态可用于筛选案例,并为仪表板提供背景信息。例如,分析可以只关注“已完成”的货运,或调查为何大量货运长时间停留在“运输中”状态。 为什么重要 概括货运进度,便于在分析中筛选和细分案例。 获取位置 位于OTM的主货运记录中,表示货运在工作流中的当前状态。 示例 已计划已订舱运输中已交付 | |||
| 货运类型 ShipmentType | 对货运进行分类的类型,例如按服务级别、商品类型或业务部门分类。 | ||
| 说明 此属性根据业务需求对货运进行分类,例如“标准”“加急”“危险品”或“公司间运输”。这种分类有助于应用不同的业务规则、优先级或分析视图。 在流程挖掘中使用货运类型作为维度,可以比较不同货运类型的流程。这有助于发现某些类型是否更容易延误、成本更高,或遵循非标准流程路径,从而针对各类货运的具体需求优化流程。 为什么重要 支持根据业务背景细分分析,帮助了解不同货运类型是否遵循不同流程或具有不同绩效水平。 获取位置 通常是OTM货运或订单记录中的可配置字段或属性。 示例 标准加急国际国内 | |||
| 运费账单差异 FreightBillDiscrepancy | 表示运费账单审核过程中是否发现差异的标志。 | ||
| 说明 如果承运商提交的运费账单与OTM计算的预期成本不一致,此布尔属性将设为“true”。差异可能源于费率错误、附加服务费或其他账单错误。 此属性是运费账单差异率KPI的基础。按承运商、线路或货运类型分析这些标志的发生频率,有助于识别账单错误的根本原因,支持提升数据准确性、简化审核流程并防止多付费用。 为什么重要 直接支持运费账单差异分析,通过标记存在账单错误的货运,帮助减少多付费用并加强财务控制。 获取位置 通常是在OTM的运费结算和发票匹配过程中设置的状态或标志。 示例 truefalse | |||
运输管理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 付款已处理 | 这是最后一项活动,表示已成功向承运商支付服务费用,标志着Shipment财务流程完成。 | ||
| 为什么重要 该活动结束运输生命周期,对于衡量承运商付款处理时间和有效管理承运商关系至关重要。 获取位置 根据关联voucher或bill状态变更为“PAID”推断。相关数据位于VOUCHER或BILL表中。 采集 识别VOUCHER.VOUCHER_STATUS_ID变更为“PAID”时的时间戳。 事件类型 inferred | |||
| 已收到交付凭证 | 该活动表示收到并记录交付已完成的正式证明,例如签署的文件。通常以附加到Shipment的特定文档类型记录。 | ||
| 为什么重要 POD对计费和争议解决至关重要。跟踪其接收情况有助于确保流程合规,并加快财务结算周期。 获取位置 这可能是显式事件,也可能根据与Shipment关联的POD文档创建日期推断。请在DOCUMENT表中查找文档类型为POD的文件。 采集 使用与Shipment关联的“POD”文档类型的创建时间戳。 事件类型 explicit | |||
| 收到运输请求 | 该活动标志着系统中产生运输需求,通常表现为Order Release。当Oracle Transportation Management创建新的Order Release记录时,系统会捕获此事件,代表最初的运输需求。 | ||
| 为什么重要 作为流程起点,该活动对于衡量端到端总周期时间和了解需求模式至关重要。它有助于分析从请求到规划所需的时间。 获取位置 这是从ORDER_RELEASE表中Order Release记录的创建时间戳捕获的显式事件。可使用INSERT_DATE或具体的创建日期字段。 采集 使用ORDER_RELEASE表中Order Release的创建时间戳。 事件类型 explicit | |||
| 货物已交付 | 该活动表示Shipment已成功交付至最终目的地的收货方。当Shipment的最后一个停靠点记录实际到达时间时捕获。 | ||
| 为什么重要 这是衡量准时交付绩效和端到端周期时间的主要里程碑,标志着运输执行流程完成。 获取位置 根据与Shipment关联的SHIPMENT_STOP表最后一条停靠点记录中ACTUAL_ARRIVAL字段的填充情况推断。 采集 使用Shipment在SHIPMENT_STOP表中最后一条记录的ACTUAL_ARRIVAL时间戳。 事件类型 inferred | |||
| 货物已提取 | 该活动表示实际运输开始,即承运商已从起运地提取货物。当Shipment的首个停靠点标记为“DEPARTED”时捕获此事件。 | ||
| 为什么重要 这是标志运输途中阶段开始的关键里程碑,对于跟踪承运商提货绩效和实际运输时间至关重要。 获取位置 根据SHIPMENT_STOP表中首个停靠点的状态变更为“DEPARTED”推断,也可通过跟踪表示提货的Shipment状态事件获取。 采集 使用Shipment在SHIPMENT_STOP表中首条记录的ACTUAL_DEPARTURE时间戳。 事件类型 inferred | |||
| 运输计划完成 | 该活动表示OTM规划引擎已成功将一个或多个Order Release规划为可执行的Shipment。当系统将Shipment状态更新为已规划状态时捕获此活动,例如“PLANNING_PLANNED FINAL”。 | ||
| 为什么重要 这是区分需求阶段与执行阶段的关键里程碑。分析到达该活动之前所需的时间,有助于识别规划效率和引擎性能瓶颈。 获取位置 根据SHIPMENT表中Shipment对象的状态历史推断。查找表示规划完成的状态变更。 采集 识别SHIPMENT.SHIPMENT_STATUS_VALUE_GID变更为“Planned”状态时的时间戳。 事件类型 inferred | |||
| Shipment已取消 | 表示Shipment在完成规划后被取消,生命周期提前终止。当Shipment对象状态变更为“cancelled”时捕获。 | ||
| 为什么重要 跟踪取消事件有助于了解流程例外和失败原因,并识别需求变化或规划错误等取消原因。 获取位置 根据SHIPMENT表中Shipment对象的状态历史推断。查找变更为“PLANNING_CANCELED”等状态的记录。 采集 识别SHIPMENT.SHIPMENT_STATUS_VALUE_GID变更为“Cancelled”状态时的时间戳。 事件类型 inferred | |||
| 已分配承运商 | 该活动标志着Shipment已成功提交给特定承运商并获得接受。可通过观察运输投标状态变更为“TENDER_ACCEPTED”或类似状态来捕获。 | ||
| 为什么重要 跟踪该活动有助于分析承运商选择和投标流程的效率。此处的延误可能在货物尚未发运前就显著影响整体计划。 获取位置 根据SHIPMENT_TENDER表中的状态历史推断,重点查找状态显示承运商接受时的时间戳。 采集 使用Shipment投标历史中状态变更为“TENDER_ACCEPTED”时的时间戳。 事件类型 inferred | |||
| 已安排交付预约 | 该活动标志着已与收货方安排具体的交付日期和时间。该事件从Shipment最终停靠点的预约数据中捕获。 | ||
| 为什么重要 这是协调最终交付的关键步骤。分析到达与计划交付之间的时间,可以发现末端运营中的瓶颈。 获取位置 根据SHIPMENT_STOP表中Shipment最终停靠点(交付地点)的预约日期和时间字段首次填充推断。 采集 使用交付停靠点的预约字段首次填充时的时间戳。 事件类型 inferred | |||
| 已安排提货预约 | 该活动表示已安排并记录具体的提货日期和时间。通常可从Shipment停靠点级别的预约相关数据中捕获。 | ||
| 为什么重要 安排预约是关键的协调步骤。分析该活动有助于了解预约效率及其对提货准时性的影响。 获取位置 根据SHIPMENT_STOP表中Shipment首个停靠点(提货地点)的预约日期和时间字段首次填充推断。 采集 使用提货停靠点的预约字段首次填充时的时间戳。 事件类型 inferred | |||
| 清关完成 | 对于国际运输,该活动表示货物已在边境或港口顺利通过海关。通常通过特定Shipment事件或状态更新捕获。 | ||
| 为什么重要 清关是国际物流中造成重大延误的常见原因。跟踪该活动有助于衡量并优化清关周期时间。 获取位置 该事件通常通过手动录入或集成的“Customs”Shipment事件捕获。请在SHIPMENT_STATUS表中查找与海关相关的特定事件代码。 采集 从SHIPMENT_STATUS表中识别“Customs Cleared”事件的时间戳。 事件类型 explicit | |||
| 运费账单已审核 | 该活动标志着运费账单审核完成,即将承运商发票与Shipment详情进行匹配和核验。当Shipment账单状态变更为“VOUCHER_AUDITED”或类似状态时记录。 | ||
| 为什么重要 审核对于财务控制和发现账单差异至关重要。分析该活动有助于简化审核到付款流程,并支持Freight Bill Discrepancy Rate KPI。 获取位置 根据与Shipment关联的Bill对象状态变更推断。请在BILL表中查找与审核完成相关的状态更新。 采集 识别BILL.BILL_STATUS_VALUE_GID变更为“Audited”状态时的时间戳。 事件类型 inferred | |||
| 运输途中 | 表示货物已提取,正在运往目的地。这不是单一时间点,但该状态的开始时间会紧接在“Goods Picked Up”活动之后捕获。 | ||
| 为什么重要 该活动标志运输阶段开始,对于监控交付进度和识别运输途中延误至关重要,也是In-Transit Delay Hotspots仪表板的基础。 获取位置 这与“Goods Picked Up”是同一事件,但在流程模型中通常作为独立活动表示,以标志新阶段开始。该活动根据首个停靠点的离开时间推导。 采集 与“Goods Picked Up”相同:使用首个SHIPMENT_STOP中的ACTUAL_DEPARTURE时间戳。 事件类型 inferred | |||
| 运输预订完成 | 该活动表示投标成功后与承运商正式确认预订。通常在Shipment状态更新为“SECURE RESOURCES_BOOKED”或等效状态时捕获。 | ||
| 为什么重要 这确认了承运商的承诺,并正式将Shipment推进至执行阶段。这是衡量Shipment Planning Cycle Time KPI的关键步骤。 获取位置 根据SHIPMENT表中Shipment对象的状态变更推断,跟踪承运商分配后状态变为已确认或已预订的时间。 采集 识别SHIPMENT.SHIPMENT_STATUS_VALUE_GID变更为“Booked”状态时的时间戳。 事件类型 inferred | |||
提取指南
步骤
- 访问BI Publisher:登录Oracle Transportation Management(OTM)应用。依次进入Business Process Automation、Reporting,然后选择Report Manager。这将打开Oracle Business Intelligence Publisher界面。
- 创建数据模型:在BI Publisher中点击New按钮并选择Data Model。这将打开数据模型编辑器,您可以在其中定义报告的数据源。
- 定义SQL查询:在数据模型编辑器中,点击Data Sets图表上的加号图标并选择SQL Query。为数据集命名,例如“OTM_Process_Mining_DS”。将您的OTM数据库选为Data Source。复制本文档“query”部分提供的完整SQL查询,并粘贴到SQL Query文本框中。
- 添加参数:查询使用日期范围和域名参数(:P_START_DATE、:P_END_DATE、:P_DOMAIN_NAME)。BI Publisher会自动检测这些参数。您可以配置参数属性,例如将日期参数的数据类型设为Date。
- 保存数据模型:点击保存图标。在BI Publisher目录中选择位置,输入描述性名称,例如“OTM Shipment Process Extraction”,然后保存数据模型。
- 创建报告:返回目录,点击New按钮并选择Report。在报告创建向导中选择“Use Data Model”选项,然后找到刚才保存的数据模型。
- 配置报告布局:向导将引导您创建布局。简单的“Table”布局即可。将数据集中的所有列拖放到表格中。不要进行分组或聚合。
- 保存报告:配置好布局后,进入最后一步并保存报告。报告名称可与数据模型名称相近。
- 运行报告:打开新创建的报告。系统会提示您输入参数值(Start Date、End Date、Domain Name)。输入所需范围。
- 导出数据:报告运行并显示数据后,点击Actions菜单并选择Export。选择CSV格式。系统将下载包含事件日志的CSV文件。
- 准备上传:打开下载的CSV文件。确认列标题与所需属性一致:
ShipmentId、ActivityName、EventTime以及推荐属性。确保EventTime列采用统一的日期时间格式。现在即可将文件上传到ProcessMind。
配置
- 数据源:查询必须针对OTM主运营数据库架构运行,通常名为GLOGOWNER。
- 报告参数:
P_START_DATE:报告周期的开始日期,格式应为“YYYY-MM-DD”。P_END_DATE:报告周期的结束日期,格式应为“YYYY-MM-DD”。P_DOMAIN_NAME:要提取数据的特定OTM域。使用“[Your Domain Name]”。
- 日期范围:首次分析建议提取3至6个月的数据,在数据量和性能之间取得平衡。生产环境运行时,可考虑按月或按季度分批提取。
- 权限:运行报告的OTM用户需要BI PUBLISHER DATA MODEL DEVELOPER和BI PUBLISHER REPORT DEVELOPER等特定角色,才能创建和修改数据模型及报告。同时还需要对底层数据库表的只读访问权限。
- 性能:查询会连接多个大型表。对于数据量较大的环境,强烈建议在业务低峰期运行报告,以免影响系统性能。日期范围应尽可能缩小,确保报告及时完成。
a 示例查询 sql
WITH SHIPMENTS_BASE AS (
SELECT
S.SHIPMENT_GID AS ShipmentId,
SP.SERVPROV_NAME AS CarrierName,
S.TOTAL_ACTUAL_COST AS ShipmentCost,
TM.TRANSPORT_MODE_NAME AS TransportationMode,
(
SELECT MAX(ORL.LATE_DELIVERY_DATE)
FROM SHIPMENT_S_SHIP_UNIT SSU
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SSU.SHIPMENT_GID = S.SHIPMENT_GID
) AS RequestedDeliveryDate,
S.DOMAIN_NAME
FROM SHIPMENT S
LEFT JOIN SERVPROV SP ON S.SERVPROV_GID = SP.SERVPROV_GID
LEFT JOIN TRANSPORT_MODE TM ON S.TRANSPORT_MODE_GID = TM.TRANSPORT_MODE_GID
WHERE S.INSERT_DATE BETWEEN TO_DATE(:P_START_DATE, 'YYYY-MM-DD') AND TO_DATE(:P_END_DATE, 'YYYY-MM-DD') + 1
AND S.DOMAIN_NAME = :P_DOMAIN_NAME
)
-- 1. Transportation Request Received
SELECT
SB.ShipmentId,
'Transportation Request Received' AS ActivityName,
MIN(ORL.INSERT_DATE) AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_S_SHIP_UNIT SSU ON SB.ShipmentId = SSU.SHIPMENT_GID
JOIN S_SHIP_UNIT SU ON SSU.S_SHIP_UNIT_GID = SU.S_SHIP_UNIT_GID
JOIN ORDER_RELEASE ORL ON SU.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
WHERE SB.DOMAIN_NAME = ORL.DOMAIN_NAME
GROUP BY SB.ShipmentId, SB.CarrierName, SB.RequestedDeliveryDate, SB.ShipmentCost, SB.TransportationMode
UNION ALL
-- 2. Shipment Planned
SELECT
SB.ShipmentId,
'Shipment Planned' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
SB.ShipmentId,
'Carrier Assigned' AS ActivityName,
ST.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_TENDER ST ON SB.ShipmentId = ST.SHIPMENT_GID
WHERE ST.TENDER_STATUS_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
SB.ShipmentId,
'Shipment Booked' AS ActivityName,
SS.STATUS_CHANGE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STATUS SS ON SB.ShipmentId = SS.SHIPMENT_GID
WHERE SS.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
SB.ShipmentId,
'Pickup Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
SB.ShipmentId,
'Goods Picked Up' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
SB.ShipmentId,
'Shipment In Transit' AS ActivityName,
SST.ACTUAL_DEPARTURE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = 1 AND SST.ACTUAL_DEPARTURE_DATE IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
SB.ShipmentId,
'Customs Cleared' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
SB.ShipmentId,
'Delivery Appointment Scheduled' AS ActivityName,
SST.APPOINTMENT_START_TIME AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.APPOINTMENT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
SB.ShipmentId,
'Goods Delivered' AS ActivityName,
SST.ACTUAL_ARRIVAL_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_STOP SST ON SB.ShipmentId = SST.SHIPMENT_GID
WHERE SST.STOP_NUM = (SELECT MAX(SST2.STOP_NUM) FROM SHIPMENT_STOP SST2 WHERE SST2.SHIPMENT_GID = SB.ShipmentId)
AND SST.ACTUAL_ARRIVAL_DATE IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
SB.ShipmentId,
'Proof of Delivery Received' AS ActivityName,
SE.EVENT_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
SE.EVENT_REMARK_TEXT AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT_EVENT SE ON SB.ShipmentId = SE.SHIPMENT_GID
WHERE SE.EVENT_CODE = '[Your POD Received Event Code]'
UNION ALL
-- 12. Freight Bill Audited
SELECT
SB.ShipmentId,
'Freight Bill Audited' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
SB.ShipmentId,
'Payment Processed' AS ActivityName,
B.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN BILL B ON SB.ShipmentId = B.SHIPMENT_GID
WHERE B.BILL_STATUS_GID = '[Your Payment Processed Bill Status]'
UNION ALL
-- 14. Shipment Cancelled
SELECT
SB.ShipmentId,
'Shipment Cancelled' AS ActivityName,
S.UPDATE_DATE AS EventTime,
SB.CarrierName,
SB.RequestedDeliveryDate,
SB.ShipmentCost,
SB.TransportationMode,
NULL AS DelayReason
FROM SHIPMENTS_BASE SB
JOIN SHIPMENT S ON SB.ShipmentId = S.SHIPMENT_GID
WHERE S.SHIPMENT_STATUS_GID = 'SHIPMENT_CANCELLED' 步骤
- 建立数据库连接:获取Oracle Transportation Management数据库的只读凭据和连接信息(主机、端口、服务ID)。您需要访问
GLOGOWNER架构。 - 配置SQL客户端:使用Oracle SQL Developer、DBeaver或Toad等SQL客户端工具,根据上一步的连接信息配置数据库连接。
- 准备查询:将本文档提供的完整SQL查询复制到SQL客户端的查询编辑器中。
- 设置查询参数:找到查询
WHERE子句中的占位值。将[START_DATE]、[END_DATE]和[YOUR_DOMAIN_NAME]替换为本次提取所需的值。例如,将日期设为覆盖3至6个月,并指定要分析的运营域。 - 执行查询:运行修改后的SQL查询。根据日期范围和系统规模,查询可能需要几分钟才能完成。
- 检查结果:查询完成后,在客户端快速检查输出,确认返回了数据行,并且
ShipmentId、ActivityName和EventTime等关键列已填充。 - 导出为CSV:将完整结果集导出为CSV文件。使用标准CSV设置:逗号分隔、文本使用双引号、UTF-8编码。
- 确认列标题:上传前,确认CSV文件中的列标题与所需属性名称完全一致:
ShipmentId、ActivityName、EventTime、CarrierName、RequestedDeliveryDate、ShipmentCost、TransportationMode和DelayReason。 - 上传到ProcessMind:准备好的CSV文件现在可以上传到ProcessMind进行分析。
配置
- 数据库架构:查询设计为针对标准Oracle Transportation Management数据库架构运行,该架构通常名为
GLOGOWNER。 - 所需授权:需要一个对查询所引用表具有只读访问权限的数据库用户。这些表包括
SHIPMENT、SHIPMENT_STOP、ORDER_RELEASE、SHIPMENT_STATUS、SERVPROV、SHIPMENT_COST、DOCUMENT、BILL和VOUCHER。 - 域筛选:在多租户OTM环境中,必须按
DOMAIN_NAME进行筛选。查询包含占位符[YOUR_DOMAIN_NAME],必须配置该值,才能提取正确业务实体的数据。 - 日期范围:为控制性能和数据量,必须指定开始日期和结束日期。建议按
SHIPMENT.INSERT_DATE等已建立索引的列进行筛选。首次分析通常使用3至6个月的周期。 - 状态代码定制:查询使用常见的默认状态代码,例如
PLANNING_PLANNED FINAL和TENDER_ACCEPTED。您的OTM实施可能使用自定义状态代码,您可能需要调整WHERE子句中的值,以匹配系统配置。
a 示例查询 sql
WITH ShipmentBase AS (
SELECT s.SHIPMENT_GID, s.SERVPROV_GID, s.LATE_DELIVERY_DATE, s.TRANSPORT_MODE_GID, sc.TotalShipmentCost
FROM GLOGOWNER.SHIPMENT s
LEFT JOIN (
SELECT sc.SHIPMENT_GID, SUM(sc.COST) as TotalShipmentCost
FROM GLOGOWNER.SHIPMENT_COST sc
GROUP BY sc.SHIPMENT_GID
) sc ON s.SHIPMENT_GID = sc.SHIPMENT_GID
WHERE s.INSERT_DATE BETWEEN TO_DATE('[START_DATE]', 'YYYY-MM-DD') AND TO_DATE('[END_DATE]', 'YYYY-MM-DD')
AND s.DOMAIN_NAME = '[YOUR_DOMAIN_NAME]'
),
OrderReleaseInfo AS (
SELECT ssu.SHIPMENT_GID, MIN(orl.INSERT_DATE) as Earliest_OR_Date
FROM GLOGOWNER.S_SHIP_UNIT ssu
JOIN GLOGOWNER.S_SHIP_UNIT_LINE ssul ON ssu.S_SHIP_UNIT_GID = ssul.S_SHIP_UNIT_GID
JOIN GLOGOWNER.ORDER_RELEASE_LINE orl ON ssul.ORDER_RELEASE_LINE_GID = orl.ORDER_RELEASE_LINE_GID
GROUP BY ssu.SHIPMENT_GID
)
-- 1. Transportation Request Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Transportation Request Received' AS "ActivityName",
ori.Earliest_OR_Date AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN OrderReleaseInfo ori ON sb.SHIPMENT_GID = ori.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ori.Earliest_OR_Date IS NOT NULL
UNION ALL
-- 2. Shipment Planned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Planned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'PLANNING_PLANNED FINAL'
UNION ALL
-- 3. Carrier Assigned
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Carrier Assigned' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'TENDER_ACCEPTED'
UNION ALL
-- 4. Shipment Booked
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Booked' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID = 'SECURE RESOURCES_BOOKED'
UNION ALL
-- 5. Pickup Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Pickup Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 6. Goods Picked Up
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Picked Up' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 7. Shipment In Transit
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment In Transit' AS "ActivityName",
stp.ACTUAL_DEPARTURE_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = 1 AND stp.ACTUAL_DEPARTURE_TIME IS NOT NULL
UNION ALL
-- 8. Customs Cleared
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Customs Cleared' AS "ActivityName",
se.EVENT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
se.REMARK_TEXT AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_EVENT se ON sb.SHIPMENT_GID = se.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE se.EVENT_CODE_GID = '[Your Customs Cleared Event Code]'
UNION ALL
-- 9. Delivery Appointment Scheduled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Delivery Appointment Scheduled' AS "ActivityName",
stp.APPT_START_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.APPT_START_TIME IS NOT NULL
UNION ALL
-- 10. Goods Delivered
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Goods Delivered' AS "ActivityName",
stp.ACTUAL_ARRIVAL_TIME AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STOP stp ON sb.SHIPMENT_GID = stp.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE stp.STOP_NUM = (SELECT MAX(s2.STOP_NUM) FROM GLOGOWNER.SHIPMENT_STOP s2 WHERE s2.SHIPMENT_GID = stp.SHIPMENT_GID)
AND stp.ACTUAL_ARRIVAL_TIME IS NOT NULL
UNION ALL
-- 11. Proof of Delivery Received
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Proof of Delivery Received' AS "ActivityName",
d.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.DOCUMENT d ON sb.SHIPMENT_GID = d.OBJECT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE d.OBJECT_TYPE_GID = 'SHIPMENT' AND d.DOCUMENT_TYPE_GID = 'POD'
UNION ALL
-- 12. Freight Bill Audited
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Freight Bill Audited' AS "ActivityName",
b.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE b.APPROVAL_STATUS_GID = 'VOUCHER_AUDITED'
UNION ALL
-- 13. Payment Processed
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Payment Processed' AS "ActivityName",
v.UPDATE_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.BILL b ON sb.SHIPMENT_GID = b.SHIPMENT_GID
JOIN GLOGOWNER.VOUCHER v ON b.BILL_GID = v.BILL_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE v.VOUCHER_STATUS_GID = 'VOUCHER_PAID' -- This status may vary based on configuration
UNION ALL
-- 14. Shipment Cancelled
SELECT
sb.SHIPMENT_GID AS "ShipmentId",
'Shipment Cancelled' AS "ActivityName",
ss.INSERT_DATE AS "EventTime",
sp.SERVPROV_NAME AS "CarrierName",
sb.LATE_DELIVERY_DATE AS "RequestedDeliveryDate",
sb.TotalShipmentCost AS "ShipmentCost",
sb.TRANSPORT_MODE_GID AS "TransportationMode",
CAST(NULL AS VARCHAR(255)) AS "DelayReason"
FROM ShipmentBase sb
JOIN GLOGOWNER.SHIPMENT_STATUS ss ON sb.SHIPMENT_GID = ss.SHIPMENT_GID
LEFT JOIN GLOGOWNER.SERVPROV sp ON sb.SERVPROV_GID = sp.SERVPROV_GID
WHERE ss.STATUS_CODE_GID LIKE '%CANCELLED%'; 立即优化您的运输管理
将周期时间缩短30%,消除Oracle OTM瓶颈。
无需信用卡•免费试用14天