您的运输管理数据模板
您的运输管理数据模板
- 建议收集的属性
- 需要跟踪的关键活动
- 数据提取指南
运输管理属性
| 名称 | 说明 | ||
|---|---|---|---|
| 事件时间 EventTime | 特定运输活动或事件发生的准确日期和时间。 | ||
| 说明 此时间戳标记活动记录到系统中的准确时刻,例如“已分配承运商”或“已收到交付证明”。时间戳是流程挖掘的基础,可确定每票货运事件的先后顺序。 时间戳的准确性对所有基于时间的分析都至关重要。它们用于计算活动间的周期时间、衡量流程时长、发现延误,并评估服务水平协议的达成情况。分析事件时间有助于定位流程中耗时的环节。 重要性 此时间戳对于按时间顺序排列事件以及计算周期时间、延误等所有绩效指标至关重要。 获取途径 数据来自OTM事件跟踪表或状态历史表中与事件关联的时间戳字段。 示例 2023-10-26T08:00:00Z2023-10-27T14:30:00Z2023-10-28T09:15:00Z | |||
| 活动名称 ActivityName | 运输流程中某票货运发生的特定事件或里程碑的名称。 | ||
| 说明 此属性描述运输生命周期中的单个步骤,例如“货运已规划”“已提货”或“已交付货物”。每项活动都代表一个独立的业务事件,推动货运逐步完成。 分析这些活动的顺序和持续时间是流程挖掘的核心。通过分析,可以发现实际流程的流转情况,识别步骤之间的瓶颈,并衡量流程对标准操作规程的遵循情况。活动顺序的差异可能揭示异常、返工或偏离最优路径的情况。 重要性 它定义流程图中的步骤,便于展示和分析货运过程、瓶颈及偏差。 获取途径 此信息来自Oracle Transportation Management中的事件跟踪表或状态变更日志。具体活动名称可能由事件代码和说明拼接而成。 示例 已规划货运已提货已完成清关已交付货物 | |||
| 货运 ShipmentId | 单票货运的唯一标识符,用作跟踪所有相关运输活动的主要案例ID。 | ||
| 说明 Shipment ID用于唯一标识一票从发货人运往收货人的货物。此属性是流程分析的基础,可将规划、预订、提货、运输、交付和开票等相关事件归入同一案例。 在流程挖掘中,按Shipment ID分析事件,可以完整了解货运的端到端生命周期。该标识符可用于计算总周期时间、按时交付绩效和单票货运成本等关键指标,全面评估流程效率和客户服务水平。 重要性 这是连接所有流程步骤的主要案例ID,可完整分析每票货运的运输过程。 获取途径 这是Oracle Transportation Management中的主键,通常位于货运或订单管理表中。具体表名和字段名请参阅OTM文档。 示例 SH-0012345SH-0012346SH-0012347 | |||
| 延误原因 DelayReason | 说明货运进度延误原因的代码或描述。 | ||
| 说明 货运发生延误时,此属性记录具体原因,例如“天气”“海关扣留”“港口拥堵”或“机械故障”。相关信息来自承运商更新或OTM中的手动录入。 此属性对于分析交付延误的根本原因至关重要。通过对延误原因分类和计数,企业可以发现供应链中最常见的问题,并采取有针对性的改进措施,例如为特定运输线路选择更可靠的承运商,或完善单证以加快清关。 重要性 提供货运延误根本原因的重要洞察,帮助企业采取有针对性的措施,减少常见问题并改善按时交付绩效。 获取途径 通常记录在OTM的跟踪事件详情中,也可能关联到特定的异常或延误事件代码。 示例 天气延误海关检查港口拥堵交通状况 | |||
| 承运商名称 CarrierName | 负责运输货物的承运商或服务提供商名称。 | ||
| 说明 此属性用于标识负责运输货物的物流合作伙伴,例如大型货运公司、本地快递公司或远洋运输公司。 按承运商分析绩效是运输流程挖掘的主要目标之一。此属性可用于细分货运,并比较各承运商的按时交付率、单票货运成本、运输时间,以及延误或账单差异等问题的发生频率。这些洞察对于承运商选择、合同谈判和绩效管理十分重要。 重要性 支持对不同承运商进行绩效对标,对于优化承运商选择、谈判和降低成本至关重要。 获取途径 此信息位于OTM的货运详情中,并关联到已分配的承运商或服务提供商记录。相关数据可能存储在货运和服务提供商表中。 示例 FedEx FreightUPS Supply Chain SolutionsMaersk LineKnight-Swift Transportation | |||
| 要求交付日期 RequestedDeliveryDate | 客户要求的交付日期和时间,或双方约定的服务水平协议(SLA)目标时间。 | ||
| 说明 此属性记录货运的目标交付时间戳,代表对客户的承诺,也是衡量按时交付绩效的主要基准。 在流程挖掘中,会将此日期与实际交付时间戳(来自“已交付货物”活动)进行比较,以判断货运是否准时。它是按时交付率KPI的基础,也是“Delivery Performance Overview”仪表板的重要数据。分析偏差有助于发现延误的系统性原因并提升客户满意度。 重要性 这是衡量按时交付绩效的主要基准,也是影响客户满意度和运营卓越表现的关键KPI。 获取途径 此信息通常存储在OTM的订单或货运级别,常见于交付日期或预约相关字段。 示例 2023-11-15T17:00:00Z2023-11-20T12:00:00Z2023-11-22T09:00:00Z | |||
| 货运成本 ShipmentCost | 运输该票货运所收取的货运总成本或金额。 | ||
| 说明 此属性表示与一票货运相关的总成本,包括承运商费用、燃油附加费和其他附加费用。它是衡量运输流程财务绩效的重要指标。 分析货运成本可用于计算Average Carrier Cost per Shipment KPI。还可按承运商、路线、运输方式或货运类型细分,以发现节省成本的机会。此外,该属性也用于货运账单差异分析,以比较计划成本和实际成本。 重要性 提供分析运输支出、发现节省成本机会以及衡量流程低效所造成财务影响所需的数据。 获取途径 此信息通常位于OTM货运记录的财务或成本部分,往往在运费计算和结算后填入。 示例 250.751200.00545.50 | |||
| 运输方式 TransportationMode | 货运采用的运输方式,例如公路、铁路、海运或空运。 | ||
| 说明 此属性按运输方式对货运进行分类。常见方式包括整车运输(FTL)、零担运输(LTL)、海运、空运和铁路运输。运输方式是货运的基本属性,会影响成本、运输时间和流程复杂度。 在分析中,运输方式是重要的细分维度,可用于比较不同运输方式的流程绩效和成本。例如,可据此发现哪些方式更容易出现运输途中延误,或每英里成本较高,从而为物流网络战略决策提供依据。 重要性 支持按运输方式细分绩效和成本分析,了解公路、空运、海运或铁路物流的具体情况。 获取途径 这是OTM货运级别的标准属性,通常位于专用的“mode”或“transport type”字段中。 示例 FTLLTL海运AIR | |||
| 报关代理 CustomsAgent | 负责管理货运清关流程的报关行或代理。 | ||
| 说明 对于国际货运,此属性用于标识负责处理报关文件和手续的第三方代理或内部团队。代理的表现可能显著影响整体运输时间。 按报关代理分析清关周期时间,有助于对标其绩效,并识别哪些代理在特定国家或特定商品类别中效率更高。这些洞察有助于选择合适的报关合作伙伴,并与表现不佳的代理协作改进流程。 重要性 支持衡量报关行的绩效,帮助识别效率较高的合作伙伴并减少清关延误。 获取途径 此信息可能存储在OTM国际货运详情中的服务提供商或参与方角色字段中。 示例 Global Customs ServicesLivingston InternationalFlexport | |||
| 数据最后更新时间 LastDataUpdate | 表示此事件的数据最近一次从源系统刷新或提取时间的时间戳。 | ||
| 说明 此属性记录最近一次从Oracle Transportation Management提取数据的时间。它反映的是待分析数据的新鲜度,而非业务事件发生时间。 此时间戳对于了解流程挖掘分析的时效性至关重要。它有助于判断您查看的是实时信息,还是某个时间点的数据快照。它对于管理数据刷新周期并确保决策依据为最新信息也十分重要。 重要性 此属性表示数据的新鲜度,让用户了解分析所依据的数据有多新,以及预计何时进行下一次数据刷新。 获取途径 这通常是在数据载入或ETL过程中添加的系统生成时间戳。 示例 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| 是否按时交付 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货运记录或订单记录中的可配置字段或属性。 示例 标准加急国际国内 | |||
| 起运国 OriginCountry | 货运旅程开始的国家或地区。 | ||
| 说明 此属性根据发货人所在地指定货运的起运国,是物流分析中的重要地理信息。 按起运国分析流程有助于了解不同地区的绩效差异。例如,清关时间、承运商成本和运输时长可能因起运国不同而有显著差异。此细分对于管理国际物流和发现特定地区的瓶颈至关重要。 重要性 支持从地理维度分析运输流程,帮助发现特定地区的瓶颈、成本和绩效差异。 获取途径 根据货运起运地或发货人的地址信息得出,该信息存储在OTM的位置主数据中。 示例 USADEUCHNMEX | |||
| 运费账单差异 FreightBillDiscrepancy | 用于标记运费账单审核过程中是否发现差异。 | ||
| 说明 如果承运商提交的运费账单与OTM计算的预期成本不符,此布尔属性将设为“true”。费率错误、附加费用或其他账单错误都可能造成差异。 此属性是运费账单差异率KPI的计算依据。按承运商、运输线路或货运类型分析此标记的出现频率,有助于找出账单错误的根本原因,为提高数据准确性、简化审核流程和避免多付款提供依据。 重要性 通过标记存在账单错误的货运,直接支持运费账单差异分析,帮助减少多付款并加强财务控制。 获取途径 这通常是在OTM的运费结算和发票匹配过程中设置的状态或标记。 示例 truefalse | |||
运输管理活动
| 活动 | 说明 | ||
|---|---|---|---|
| 已交付货物 | 此活动表示货运已成功交付至最终目的地的收货人。当货运最后一个停靠点记录了实际到达时间时,即记录此活动。 | ||
| 重要性 这是衡量按时交付绩效和端到端周期时间的主要里程碑,也是运输执行流程的最终环节。 获取途径 根据与货运关联的SHIPMENT_STOP表最后一条停靠点记录中ACTUAL_ARRIVAL字段是否已填充来推断。 采集 使用该货运在SHIPMENT_STOP表最后一条记录中的ACTUAL_ARRIVAL时间戳。 事件类型 inferred | |||
| 已处理付款 | 这是最后一项活动,表示已成功向承运商支付运输服务费用,标志着该货运的财务结算完成。 | ||
| 重要性 此活动结束运输生命周期,对于衡量承运商付款处理时间和有效管理承运商关系至关重要。 获取途径 根据关联的凭证或账单状态变为“PAID”推断。相关数据位于VOUCHER或BILL表中。 采集 确定VOUCHER.VOUCHER_STATUS_ID变为“PAID”的时间戳。 事件类型 inferred | |||
| 已提货 | 此活动表示实际运输开始,即承运商已从起运地提取货物。当货运的首个停靠点标记为“DEPARTED”时,即记录此事件。 | ||
| 重要性 这是标志运输途中阶段开始的重要里程碑,对于跟踪承运商提货绩效和实际运输时间至关重要。 获取途径 根据SHIPMENT_STOP表中首个停靠点的状态变为“DEPARTED”来推断,也可跟踪表示已提货的货运状态事件。 采集 使用该货运在SHIPMENT_STOP表首条记录中的ACTUAL_DEPARTURE时间戳。 事件类型 inferred | |||
| 已收到交付证明 | 此活动表示已收到并记录交付完成的正式证明,例如签署的文件。通常以附加到货运记录的特定文件类型记录。 | ||
| 重要性 POD对于账单处理和争议解决至关重要。跟踪其接收情况有助于确保流程合规,并加快财务结算周期。 获取途径 此活动可能是明确记录的事件,也可能根据与货运关联的POD文件创建日期推断。请在DOCUMENT表中查找文件类型为POD的记录。 采集 使用与货运关联的“POD”类型文件的创建时间戳。 事件类型 explicit | |||
| 已规划货运 | 此活动表示OTM规划引擎已成功将一个或多个订单释放记录规划为可执行的货运。当系统将货运状态更新为已规划时,即记录此活动,例如“PLANNING_PLANNED FINAL”。 | ||
| 重要性 这是区分需求阶段与执行阶段的关键里程碑。分析到达此活动所需的时间,有助于识别规划效率和引擎性能方面的瓶颈。 获取途径 根据SHIPMENT表中Shipment对象的状态历史推断。查找表示规划完成的状态变更。 采集 确定SHIPMENT.SHIPMENT_STATUS_VALUE_GID变为“Planned”状态的时间戳。 事件类型 inferred | |||
| 收到运输请求 | 此活动表示系统中创建了运输需求,通常对应一条Order Release记录。在Oracle Transportation Management中创建新的Order Release记录时,系统会记录此事件,代表运输需求的起点。 | ||
| 重要性 作为流程起点,此活动对于衡量端到端总周期时间和了解需求模式至关重要。它有助于分析从提出请求到完成规划所需的时间。 获取途径 这是一个明确记录的事件,时间戳取自ORDER_RELEASE表中Order Release记录的创建时间。可使用INSERT_DATE或专用的创建日期字段。 采集 使用ORDER_RELEASE表中Order Release记录的创建时间戳。 事件类型 explicit | |||
| 已分配承运商 | 此活动标志着货运已成功提交给特定承运商并获其接受。可通过观察货运的投标状态是否变为“TENDER_ACCEPTED”或类似状态来记录。 | ||
| 重要性 跟踪此活动有助于分析承运商选择和投标流程的效率。此处的延误会显著影响整体计划,甚至可能发生在货物启运之前。 获取途径 根据SHIPMENT_TENDER表中的状态历史推断,重点查找状态显示承运商已接受的时间戳。 采集 使用货运投标历史中状态变为“TENDER_ACCEPTED”的时间戳。 事件类型 inferred | |||
| 已安排交付预约 | 此活动标志着已与收货人约定交付的具体日期和时间。该事件根据货运最后一个停靠点的预约数据记录。 | ||
| 重要性 这是协调最终交付的关键步骤。分析货物到达与预定交付时间之间的间隔,有助于发现末端配送中的瓶颈。 获取途径 根据SHIPMENT_STOP表中货运最后一个停靠点(交付地点)的预约日期和时间字段是否已填充来推断。 采集 使用交付停靠点的预约字段首次填入数据时的时间戳。 事件类型 inferred | |||
| 已安排提货预约 | 此活动表示提货的具体日期和时间已安排并记录。通常可从货运停靠点级别的预约数据中获取。 | ||
| 重要性 安排预约是关键的协调步骤。分析此活动有助于了解预约安排效率及其对准时提货的影响。 获取途径 根据SHIPMENT_STOP表中货运首个停靠点(提货地点)的预约日期和时间字段是否已填充来推断。 采集 使用提货停靠点的预约字段首次填入数据时的时间戳。 事件类型 inferred | |||
| 已完成清关 | 对于国际货运,此活动表示货物已成功通过边境或港口的海关检查。通常通过特定的货运事件或状态更新记录。 | ||
| 重要性 清关是国际物流中常见的重大延误原因。跟踪此活动有助于衡量并优化清关周期时间。 获取途径 通常通过手动录入或集成的“Customs”货运事件记录此活动。请在SHIPMENT_STATUS表中查找与海关相关的特定事件代码。 采集 在SHIPMENT_STATUS表中确定“Customs Cleared”事件的时间戳。 事件类型 explicit | |||
| 已完成货运账单审核 | 此活动标志着货运账单审核流程完成,即将承运商发票与货运详情进行核对和验证。当货运账单状态变为“VOUCHER_AUDITED”或类似状态时,即记录此活动。 | ||
| 重要性 审核对于财务控制和发现账单差异至关重要。分析此活动有助于简化审核到付款的流程,并支持Freight Bill Discrepancy Rate KPI。 获取途径 根据与货运关联的Bill对象状态变更推断。请在BILL表中查找与审核完成相关的状态更新。 采集 确定BILL.BILL_STATUS_VALUE_GID变为“Audited”状态的时间戳。 事件类型 inferred | |||
| 已预订货运 | 此活动表示投标成功后与承运商正式确认预订。通常在货运状态更新为“SECURE RESOURCES_BOOKED”或等效状态时记录。 | ||
| 重要性 此活动确认了承运商的承运承诺,并正式将货运转入执行阶段。它是衡量Shipment Planning Cycle Time KPI的关键步骤。 获取途径 根据SHIPMENT表中Shipment对象的状态变更推断,跟踪分配承运商后状态变为已确认或已预订的时间。 采集 确定SHIPMENT.SHIPMENT_STATUS_VALUE_GID变为“Booked”状态的时间戳。 事件类型 inferred | |||
| 货运已取消 | 此活动表示货运规划完成后被取消,生命周期因此提前终止。可通过Shipment对象的状态变为“cancelled”来记录。 | ||
| 重要性 跟踪取消情况有助于了解流程异常和失败原因,例如需求变化或规划错误。 获取途径 根据SHIPMENT表中Shipment对象的状态历史推断。查找变为“PLANNING_CANCELED”等状态的记录。 采集 确定SHIPMENT.SHIPMENT_STATUS_VALUE_GID变为“Cancelled”状态的时间戳。 事件类型 inferred | |||
| 货运途中 | 表示货物已提取,正运往目的地。这并非单一时间点事件,系统会在“已提货”活动之后立即记录此状态的开始时间。 | ||
| 重要性 此活动标志运输阶段开始,对于监控交付进度和发现运输途中延误至关重要,也是“In-Transit Delay Hotspots”仪表板的基础。 获取途径 此活动与“已提货”是同一事件,但在流程模型中通常作为独立活动,以表示新阶段的开始。该活动根据首个停靠点的离开时间得出。 采集 与“已提货”相同:使用首条SHIPMENT_STOP记录中的ACTUAL_DEPARTURE时间戳。 事件类型 inferred | |||
数据提取指南
步骤
- 访问BI Publisher:登录Oracle Transportation Management(OTM)应用。依次进入“业务流程自动化”“报表”,然后选择“报表管理器”,打开Oracle Business Intelligence Publisher界面。
- 创建数据模型:在BI Publisher中点击“新建”,选择“数据模型”。系统将打开数据模型编辑器,供您定义报表的数据源。
- 定义SQL查询:在数据模型编辑器中,点击“数据集”流程图上的加号图标,然后选择“SQL查询”。为数据集命名,例如“OTM_Process_Mining_DS”,并将OTM数据库选为数据源。复制本文档“查询”部分提供的完整SQL查询,粘贴到SQL查询文本框中。
- 添加参数:查询使用日期范围和域名参数(:P_START_DATE、:P_END_DATE、:P_DOMAIN_NAME)。BI Publisher会自动识别这些参数。您可以配置参数属性,例如将日期参数的数据类型设为Date。
- 保存数据模型:点击保存图标,在BI Publisher目录中选择位置,输入易于识别的名称,例如“OTM货运流程提取”,然后保存数据模型。
- 创建报表:返回目录,点击“新建”,然后选择“报表”。在报表创建向导中选择“使用数据模型”,并找到刚才保存的数据模型。
- 配置报表布局:按照向导创建布局。选择简单的“表格”布局即可。将数据集中的所有列拖放到表格中。不要进行分组或汇总。
- 保存报表:配置好布局后,继续完成最后一步并保存报表。报表名称可与数据模型名称相近。
- 运行报表:打开新建的报表。系统会提示您输入参数值(开始日期、结束日期、域名),请填写所需范围。
- 导出数据:报表运行并显示数据后,点击“操作”菜单并选择“导出”,然后选择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域。请使用“[您的域名]”。
- 日期范围:首次分析建议提取3至6个月的数据,以兼顾数据量和性能。正式运行时,可按月或按季度分批提取。
- 权限:运行报表的OTM用户需要具备特定角色,例如BI PUBLISHER DATA MODEL DEVELOPER和BI PUBLISHER REPORT DEVELOPER,才能创建和修改数据模型及报表。此外,还需要对底层数据库表具有只读访问权限。
- 性能:查询会连接多个大型表。对于数据量较大的环境,强烈建议在业务低峰时段运行报表,以免影响系统性能。日期范围应尽可能缩短,确保报表及时完成。
查询示例 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子句中的值,以匹配系统配置。
查询示例 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天