轻易云
注册体验

事件加工厂实现金蝶云星辰保存接口前执行反审核与删除操作

1 条评论

通过事件加工厂脚本实现金蝶云星辰单据保存之前执行“反审核”,“删除”两个操作。以满足单据修改的业务场景。

在集成平台的事件加工厂增加 BeforeTargetInvoke 事件,脚本如下:

注意:其中的保存请求参数中必须要有单据编码以保障反审核、删除动作能够定位单据。
正常使用过程中应该注释日志。

<?php

class BeforeTargetInvoke
{

    protected $request;

    protected $adapter;

    protected $job;

    /**
     * 构造函数
     *
     * @param array $request           引用传递,调用接口请求参数
     * @param Adapter:class $adapter   适配器类
     * @param MongoDB:object $job      队列任务
     */
    public function __construct(&$request, $adapter, $job)
    {
        $this->request = &$request;
        $this->adapter = $adapter;
        $this->job = $job;
    }

    /**
     * 工厂事件执行函数
     *
     * @return void
     */
    public function run()
    {
        $api = '/jdy/v2/sys/common_operate';
        $number = $this->request['bill_no'];  // 从请求参数中获取单据编编号 
        $unAuditRequest = [
            'entity_number' => 'sal_bill_order',  // 参考金蝶文档 https://open.jdy.com/#/files/api/detail?index=2&categrayId=3cc8ee9a663e11eda5c84b5d383a2b93&id=dd7ee492712611eda0b375f5553347df
            // 'ids' => [],
            'numbers' => [$number],
            'operate_type' => 'unaudit' // 操作类型,删除delete、审核audit、反审核unaudit、订单关闭close_donothing
        ];
        $this->adapter->getLogStorage()->insertOne(['text' => '执行反审核操作前', 'unAuditRequest' => $unAuditRequest], 1);
        $res = $this->adapter->SDK->invoke($api, $unAuditRequest, 'POST');
        $this->adapter->getLogStorage()->insertOne(['text' => '执行反审核操作后', 'unAuditRequest' => $res], 1);

        $deleteRequest = [
            'entity_number' => 'sal_bill_order',
            'numbers' => [$number],
            'operate_type' => 'delete'
        ];
        $this->adapter->getLogStorage()->insertOne(['text' => '执行删除操作前', 'unAuditRequest' => $deleteRequest], 1);
        $res = $this->adapter->SDK->invoke($api, $unAuditRequest, 'POST');
        $this->adapter->getLogStorage()->insertOne(['text' => '执行删除操作后', 'unAuditRequest' => $res], 1);
    }
}