暂未完成
本篇博客暂未完工,但是丸子有点懒,不知道什么时候继续写~
由于泛微官方DML动作帮助文档不适合小白(至少不是很适合我....),所以,泛微DML动作丸子版诞生了~
故事背景
故事的序章,便由我来一一道来...
丸子在律师事务所工作,为更整合、优化案件处理过程,我们近日创建了一个“案件管理流程”,以点石成金,助推案件的全局流转及其管理;
然而,在这全链条中,我们需特别抽离的环节--“案件收款录入”,这源于收款事件的随机性,其相应的数据需有序而及时地反馈至“案件管理流程”中的收款明细上。鉴于流程转数据的操作无法达成此目的(以A流程去填补另一B流程的明细数据),于是丸子开始着手小小的研究DML动作。既然踏出此步,我们便准备坚持至最后——坚持完實這一切!
结果:
根据实际情况思考后决定采用DML存储过程实现以下内容:formtable_main_157_dt2
为案件管理流程收款明细表formtable_main_14
为案件收款录入流程表
- 创建一个存储过程,接受参数
AJMCX
(案件名称浏览框),SKLCID
(收款流程ID),ISCHECK
(是否核验)。 - 在该存储过程中,首先检查
formtable_main_157_dt2
表中是否存在SKLCID
。 如果
SKLCID
不存在:- 查询
formtable_main_14
表中的sqr
,sklx
,bcsksj
,bcskje
,skqd
,hkr
字段,查询条件为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
- 查询
如果
SKLCID
存在:- 查询
formtable_main_14
表中的sqr
,sklx
,bcsksj
,bcskje
,skqd
,hkr
字段,查询条件为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
[泛微EC9] 流程节点后附加DML接口动作 by https://oneszhang.com/archives/fwdml.html
感觉这个教程可以分为两个级别,基础的直接写语句,高级的用储存过程,毕竟运维人员水平不一致,哈哈
基础的教程直接写UP语句
哇哈哈哈哈哈,对的,我是准备这样写@(笑眼),改天全部补起来