数据集成平台:复杂业务逻辑处理实践

  • 轻易云集成顾问-彭亮

数据加工厂代码实现:价格合并与日期处理逻辑

以下代码展示了如何在轻易云数据集成平台中实现一个高效的数据加工厂,该加工厂专门用于处理价格合并与日期计算逻辑。将此代码添加到方案的AfterTargetGenerate事件中即可生效。

<?php
use Domain\Datahub\Instance\Storage\LogStorage;

/**
 * 价格合并处理器
 * 功能:将明细数据中的价格合并到外层,并智能处理日期逻辑
 */
class AfterTargetGenerate
{
    protected $params = [];
    protected $ids = [];

    public function __construct(&$params, $ids)
    {
        $this->params = &$params;
        $this->ids = $ids;
    }

    public function run()
    {
        // 初始化日志记录器(使用轻易云提供的LogStorage组件)
        $log = new LogStorage('f4fde6ce-7a74-3af1-bce1-9dfdccf13af8', 'a751f891-4278-36ab-96ba-340ac62aa9bb');
        $log->insertOne(['text' => 'this->params', 'json' => $this->params ]);

        // 处理每个模型项
        foreach ($this->params[1]['Model'] as $index => &$item) {
            $amount = floatval(str_replace(",", "", $item['amo']));
            $year = date('Y');
            $currentDate = date($item['Completeddate']);

            // 日期处理逻辑
            $item['FDATE'] = ($currentDate < '2023-07-01') ? '2023-07-01' : $currentDate;
            $Date5 = date('Y-m-d', strtotime($currentDate . ' +5 days'));

            if ($amount > 200000) {
                // 大额交易处理方案
                $halfAmount = ($amount - 10000) / 2;

                // 添加两个明细条目
                $item['FEntityDetail'][] = [
                    'FTaxPrice' => $halfAmount,
                    'FPriceQty' => 1,
                    'FEntryTaxRate' => 3,
                    'FComment' => '',
                    'F_VRKB_Base5' => ['FNumber'=> 'Tuition'],
                    'F_VRKB_Date_qtr' => $Date5
                ];

                $item['FEntityDetail'][] = [
                    'FTaxPrice' => $halfAmount,
                    'FPriceQty' => 1,
                    'FEntryTaxRate' => 3,
                    'FComment' => '',
                    'F_VRKB_Base5' => ['FNumber'=> 'Tuition'],
                    'F_VRKB_Date_qtr' => $Date5
                ];

                // 添加付款计划
                $item['FEntityPlan'][0] = [
                    'FENDDATE' => $Date5,
                    'FPAYRATE' => round((($halfAmount + 10000) / $amount) * 100, 6),
                    'FPAYAMOUNTFOR' => ($halfAmount + 10000),
                    'F_XKLR_MS' => ['FNumber'=> 'Tuition']
                ];

                $item['FEntityPlan'][] = [
                    'FENDDATE' => date($year . '-11-01'),
                    'FPAYRATE' => 100 - round((($halfAmount + 10000) / $amount) * 100, 6),
                    'FPAYAMOUNTFOR' => $halfAmount,
                    'F_XKLR_MS' => ['FNumber'=> 'Tuition']
                ];
            } else {
                // 小额交易处理方案
                $item['FEntityDetail'][] = [
                    'FTaxPrice' => ($amount - 10000),
                    'FPriceQty' => 1,
                    'FEntryTaxRate' => 3,
                    'FComment' => '',
                    'F_VRKB_Base5' => ['FNumber'=> 'Tuition'],
                    'F_VRKB_Date_qtr' => $Date5
                ];

                $item['FEntityPlan'][0] = [
                    'FENDDATE' => $Date5,
                    'FPAYRATE' => 100,
                    'FPAYAMOUNTFOR' => $amount,
                    'F_XKLR_MS' => ['FNumber'=> 'Tuition']
                ];
            }
        }
    }
}

代码功能说明:

  1. 智能金额处理

    • 自动格式化金额数据(去除千分位逗号)
    • 根据金额大小(20万为分界线)采用不同的处理策略
  2. 日期计算逻辑

    • 自动修正早于2023-07-01的日期
    • 智能计算5天后的日期(用于付款计划)
  3. 双轨处理机制

    • 大额交易:拆分金额为两部分,创建两个明细条目和分期付款计划
    • 小额交易:采用简单的一次性付款方案
  4. 日志记录

    • 使用轻易云平台提供的LogStorage组件记录处理过程

该加工厂完美体现了轻易云数据集成平台在复杂业务逻辑处理方面的优势,通过可视化配置与代码扩展的完美结合,实现企业级数据处理需求。

更多系统对接方案