MENU

[泛微EC9] 流程节点后附加DML接口动作

• 2024 年 03 月 20 日 • 阅读: 882 • 泛微OA

暂未完成

本篇博客暂未完工,但是丸子有点懒,不知道什么时候继续写~

由于泛微官方DML动作帮助文档不适合小白(至少不是很适合我....),所以,泛微DML动作丸子版诞生了~

故事背景

故事的序章,便由我来一一道来...

丸子在律师事务所工作,为更整合、优化案件处理过程,我们近日创建了一个“案件管理流程”,以点石成金,助推案件的全局流转及其管理;

然而,在这全链条中,我们需特别抽离的环节--“案件收款录入”,这源于收款事件的随机性,其相应的数据需有序而及时地反馈至“案件管理流程”中的收款明细上。鉴于流程转数据的操作无法达成此目的(以A流程去填补另一B流程的明细数据),于是丸子开始着手小小的研究DML动作。既然踏出此步,我们便准备坚持至最后——坚持完實這一切!

结果:
根据实际情况思考后决定采用DML存储过程实现以下内容:
formtable_main_157_dt2为案件管理流程收款明细表
formtable_main_14为案件收款录入流程表

  1. 创建一个存储过程,接受参数 AJMCX(案件名称浏览框),SKLCID(收款流程ID),ISCHECK(是否核验)。
  2. 在该存储过程中,首先检查 formtable_main_157_dt2 表中是否存在 SKLCID
  3. 如果SKLCID不存在:

    • 查询 formtable_main_14 表中的 sqrsklxbcsksjbcskjeskqdhkr 字段,查询条件为 formtable_main_14.id = SKLCID。如果查询结果为空,存储过程结束。
    • formtable_main_157_dt2 表插入两条数据。其中一条数据的 mainid 字段的值从 formtable_main_157 表中查询得到,查询条件为 formtable_main_157.id = AJMCX。另一条数据的 mainid 字段的值为 SKLCID
    • 插入的两条数据的其它字段值根据以下对应关系从 formtable_main_14 表查询得到:

      • formtable_main_14.sklx = formtable_main_157_dt2.sklx
      • formtable_main_14.bcsksj = formtable_main_157_dt2.bcsksj
      • formtable_main_14.bcskje = formtable_main_157_dt2.bcskje
      • formtable_main_14.skqd = formtable_main_157_dt2.skqd
      • formtable_main_14.hkr = formtable_main_157_dt2.hkr
      • formtable_main_14.glsklc = SKLCID
      • formtable_main_14.cwhszt = IDCHECK
  4. 如果SKLCID存在:

    • 查询 formtable_main_14 表中的 sqrsklxbcsksjbcskjeskqdhkr 字段,查询条件为 formtable_main_14.id = SKLCID
    • 更新 formtable_main_157_dt2 表中的记录,更新的字段值根据以下对应关系从 formtable_main_14 表查询得到:

      • formtable_main_14.sklx = formtable_main_157_dt2.sklx
      • formtable_main_14.bcsksj = formtable_main_157_dt2.bcsksj
      • formtable_main_14.bcskje = formtable_main_157_dt2.bcskje
      • formtable_main_14.skqd = formtable_main_157_dt2.skqd
      • formtable_main_14.hkr = formtable_main_157_dt2.hkr
      • formtable_main_14.cwhszt = IDCHECK
    • 更新条件为 formtable_main_157_dt2.glsklc = SKLCID

存储过程:

ALTER PROCEDURE SyncReceiptToCaseDetail
    @AJMCX INT, 
    @SKLCID INT, 
    @ISCHECK INT 
AS 
BEGIN 
    -- 如果@AJMCX为空或0,直接返回
    IF @AJMCX IS NULL OR @AJMCX = 0
    BEGIN
        PRINT '@AJMCX is NULL or 0'
        RETURN
    END
        
    DECLARE @mainid INT, @sqr INT, @sklx INT, @bcsksj CHAR(10), @bcskje DECIMAL(38,2), @skqd INT, @hkr VARCHAR(100)

    -- 检查是否存在SKLCID
    IF NOT EXISTS (SELECT 1 FROM formtable_main_157_dt2 WHERE glsklc = @SKLCID) 
    BEGIN 
        PRINT '@SKLCID does not exist in formtable_main_157_dt2'
        -- 查询formtable_main_14表
        SELECT @sqr = sqr, @sklx = sklx, @bcsksj = bcsksj, @bcskje = bcskje, @skqd = skqd, @hkr = hkr 
        FROM formtable_main_14 
        WHERE requestId = @SKLCID
                
        PRINT 'Value of @sqr is: ' + ISNULL(CAST(@sqr AS VARCHAR(10)), 'NULL')

        IF @sqr IS NOT NULL
        BEGIN
            PRINT '@sqr is not NULL'
            -- 向表formtable_main_157_dt2插入第一条数据 流程
            SELECT @mainid = id FROM formtable_main_157 WHERE qqidcf = @AJMCX
            PRINT 'Value of @mainid is: ' + ISNULL(CAST(@mainid AS VARCHAR(10)), 'NULL')
            INSERT INTO formtable_main_157_dt2 (mainid, skr, sklx, bcsksj, bcskje, cwhszt, skqd, hkr, glsklc)
            VALUES (@mainid, @sqr, @sklx, @bcsksj, @bcskje, @ISCHECK, @skqd, @hkr, @SKLCID)

            -- 向表formtable_main_157_dt2插入第二条数据 建模
            INSERT INTO formtable_main_157_dt2 (mainid, skr, sklx, bcsksj, bcskje, cwhszt, skqd, hkr, glsklc)
            VALUES (@AJMCX, @sqr, @sklx, @bcsksj, @bcskje, @ISCHECK, @skqd, @hkr, @SKLCID)
        END
    END 
    ELSE
    BEGIN
        -- 查询formtable_main_14表
        SELECT @sqr = sqr, @sklx = sklx, @bcsksj = bcsksj, @bcskje = bcskje, @skqd = skqd, @hkr = hkr 
        FROM formtable_main_14 
        WHERE requestId = @SKLCID

        -- 更新formtable_main_157_dt2
        UPDATE formtable_main_157_dt2
        SET skr = @sqr, sklx = @sklx, bcsksj = @bcsksj, bcskje = @bcskje, cwhszt = @ISCHECK, skqd = @skqd, hkr = @hkr
        WHERE glsklc = @SKLCID
    END
END

DML语句:

EXEC SyncReceiptToCaseDetail @AJMCX = {?ajmcx}, @SKLCID = $requestid$, @ISCHECK = 0

返回文章列表 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 3 条评论
  1. 风

    感觉这个教程可以分为两个级别,基础的直接写语句,高级的用储存过程,毕竟运维人员水平不一致,哈哈

    1. 风

      @风基础的教程直接写UP语句

    2. @风哇哈哈哈哈哈,对的,我是准备这样写@(笑眼),改天全部补起来