f_id, f_tenant_id, dayin_renwu_id, fenfa_bianhao, fafang_leixing,
jieshou_ren_id, fafang_ren_id, fafang_bumen_id, fafang_shijian,
beizhu_shuoming, biz_status, f_creator_user_id, f_creator_time,
f_last_modify_user_id, f_last_modify_time, f_delete_mark
f_id, f_tenant_id, dayin_renwu_id, dayin_xuhao, dayin_liushuihao, dayin_jishu_id, dayin_jishu_xuhao, dayin_jishu_liushuihao,
dayin_ren_id, dayin_bumen_id, dayin_shijian, fafang_ren_id, fafang_bumen_id,
fafang_shijian, qianshou_ren_id, qianshou_bumen_id, qianshou_shijian,
biz_user_id, biz_review_user, biz_sign, biz_review_sign,
beizhu_shuoming, biz_status, f_creator_user_id, f_creator_time,
f_last_modify_user_id, f_last_modify_time, f_delete_mark
f_id, f_tenant_id, laiyuan_leixing, laiyuan_danju_id, laiyuan_mingxi_id,
wenjian_id, wenjian_bianhao, wenjian_mingcheng, banbenhao,
shenhe_wancheng_riqi, peixun_wancheng_riqi, shengxiao_riqi,
jieshou_bumen_id, wenjian_leibie,
dayin_fenshu,
beizhu_shuoming, biz_status,
f_creator_user_id, f_creator_time, f_last_modify_user_id,
f_last_modify_time, f_delete_mark
INSERT INTO dms_wenjian_dayin_renwu (
f_id, f_tenant_id, laiyuan_leixing, laiyuan_danju_id,
laiyuan_mingxi_id, wenjian_id, wenjian_bianhao, wenjian_mingcheng,
banbenhao, shenhe_wancheng_riqi, peixun_wancheng_riqi,
shengxiao_riqi, jieshou_bumen_id,
wenjian_leibie, dayin_fenshu, beizhu_shuoming, biz_status, f_creator_user_id,
f_creator_time, f_delete_mark, shifou_shoukong
)
SELECT #{id}, #{tenantId}, #{laiyuanLeixing}, #{laiyuanDanjuId},
#{laiyuanMingxiId}, #{wenjianId}, #{wenjianBianhao},
#{wenjianMingcheng}, #{banbenhao}, #{shenheWanchengRiqi},
#{peixunWanchengRiqi}, #{shengxiaoRiqi}, #{jieshouBumenId},
#{wenjianLeibie}, #{dayinFenshu},
#{beizhuShuoming}, #{bizStatus}, #{creatorUserId}, #{creatorTime}, NULL, #{shifouShoukong}
WHERE NOT EXISTS (
SELECT 1 FROM dms_wenjian_dayin_renwu
WHERE f_tenant_id = #{tenantId}
AND laiyuan_leixing = #{laiyuanLeixing}
AND laiyuan_danju_id = #{laiyuanDanjuId}
AND COALESCE(laiyuan_mingxi_id, '') = COALESCE(#{laiyuanMingxiId}, '')
AND f_delete_mark IS NULL
)
ON CONFLICT DO NOTHING
INSERT INTO dms_wenjian_fenfa_renwu (
f_id, f_tenant_id, dayin_renwu_id, fenfa_bianhao, fafang_leixing, biz_status,
f_creator_user_id, f_creator_time, f_delete_mark
)
SELECT #{id}, #{tenantId}, #{dayinRenwuId}, #{fenfaBianhao}, #{fafangLeixing}, #{bizStatus},
#{creatorUserId}, #{creatorTime}, NULL
FROM dms_wenjian_dayin_renwu p
WHERE p.f_tenant_id = #{tenantId}
AND p.f_id = #{dayinRenwuId}
AND p.biz_status IN ('bufendayin', 'yidayin')
AND p.f_delete_mark IS NULL
AND NOT EXISTS (
SELECT 1 FROM dms_wenjian_fenfa_renwu d
WHERE d.f_tenant_id = #{tenantId}
AND d.dayin_renwu_id = #{dayinRenwuId}
AND d.f_delete_mark IS NULL
)
ON CONFLICT DO NOTHING
INSERT INTO dms_wenjian_dayin_jilu (
f_id, f_tenant_id, dayin_renwu_id, dayin_xuhao, dayin_liushuihao, dayin_jishu_id, dayin_jishu_xuhao, dayin_jishu_liushuihao,
dayin_ren_id, dayin_bumen_id, dayin_shijian, biz_status,
f_creator_user_id, f_creator_time, f_delete_mark
) VALUES (
#{id}, #{tenantId}, #{dayinRenwuId}, #{dayinXuhao}, #{dayinLiushuihao}, #{dayinJishuId}, #{dayinJishuXuhao}, #{dayinJishuLiushuihao},
#{dayinRenId}, #{dayinBumenId}, #{dayinShijian}, #{bizStatus},
#{creatorUserId}, #{creatorTime}, NULL
)
UPDATE dms_wenjian_dayin_jilu
SET biz_status = 'yiguidang'
WHERE f_delete_mark IS NULL
AND dayin_liushuihao IN
#{serialNumber}
UPDATE dms_wenjian_dayin_renwu
SET biz_status = #{bizStatus}, f_last_modify_user_id = #{userId},
f_last_modify_time = #{now}
WHERE f_tenant_id = #{tenantId} AND f_id = #{id}
AND biz_status <> 'yiquxiao'
AND f_delete_mark IS NULL
UPDATE dms_wenjian_dayin_jilu
SET fafang_ren_id = #{issuerId}, fafang_bumen_id = #{issuerDepartmentId},
fafang_shijian = #{now}, beizhu_shuoming = #{remark},
qianshou_ren_id = #{receiverId}, qianshou_bumen_id = #{signerDepartmentId},
qianshou_shijian = #{now}, biz_user_id = #{issuerId},
biz_review_user = #{receiverId}, biz_sign = #{bizSign},
biz_review_sign = #{bizReviewSign}, biz_status = 'daihuishou',
f_last_modify_user_id = #{issuerId}, f_last_modify_time = #{now}
WHERE f_tenant_id = #{tenantId} AND f_id = #{recordId}
AND biz_status IN ('daifafang', 'daiqianshou')
AND f_delete_mark IS NULL
UPDATE dms_wenjian_fenfa_renwu d
SET jieshou_ren_id = #{receiverId}, fafang_ren_id = #{issuerId},
fafang_bumen_id = #{issuerDepartmentId}, fafang_shijian = #{now},
beizhu_shuoming = #{remark}, biz_status = 'yiwancheng',
f_last_modify_user_id = #{issuerId}, f_last_modify_time = #{now}
WHERE d.f_tenant_id = #{tenantId} AND d.f_id = #{id}
AND d.biz_status IN ('daifafang', 'daiqianshou')
AND d.f_delete_mark IS NULL
AND EXISTS (
SELECT 1 FROM dms_wenjian_dayin_renwu t
WHERE t.f_tenant_id = d.f_tenant_id AND t.f_id = #{printTaskId}
AND t.f_id = d.dayin_renwu_id AND t.biz_status = 'yidayin'
AND t.f_delete_mark IS NULL
)
AND NOT EXISTS (
SELECT 1
FROM dms_wenjian_dayin_jilu p
WHERE p.f_tenant_id = d.f_tenant_id
AND p.dayin_renwu_id = #{printTaskId}
AND p.biz_status IN ('daifafang', 'daiqianshou')
AND p.f_delete_mark IS NULL
)
INSERT INTO dms_wenjian_fenfa_bupingheng (
f_id, f_tenant_id, dayin_jilu_id, cuoshi, yuanyin, biz_status,
f_creator_user_id, f_creator_time, f_delete_mark
) VALUES (
#{id}, #{tenantId}, #{recordId}, #{measure}, #{reason}, 'effective',
#{userId}, #{now}, NULL
)
(p.biz_status IN ('daifafang', 'daiqianshou')
AND t.laiyuan_leixing IN ('wenjian_xinzeng_shenhe', 'wenjian_xiuding_shenhe')
AND EXISTS (
SELECT 1 FROM dms_wenjian_dayin_queren q
WHERE q.f_tenant_id = p.f_tenant_id AND q.dayin_renwu_id = p.dayin_renwu_id
AND COALESCE(NULLIF(q.jieguo_neirong, ''), '[]')::jsonb
@> jsonb_build_array(jsonb_build_object('id', p.f_id))
))
(p.biz_status = 'daihuishou' OR )
INSERT INTO dms_wenjian_huishou (
f_id, f_tenant_id, biz_sign, chuli_fangshi, beizhu_shuoming, f_delete_mark
) VALUES (
#{id}, #{tenantId}, #{bizSign}, #{chuliFangshi}, #{beizhuShuoming}, NULL
)
INSERT INTO dms_wenjian_huishou_zixiang (
f_id, f_foreign_id, f_tenant_id,
dayin_jilu_id, dayin_liushuihao, wenjian_bianhao, wenjian_mingcheng,
banbenhao, qianshou_bumen, qianshou_ren, qianshou_shijian,
huishou_ren_id, huishou_shijian,
f_delete_mark, f_delete_time, f_delete_user_id
) VALUES (
#{id}, #{foreignId}, #{tenantId},
#{dayinJiluId}, #{dayinLiushuihao}, #{wenjianBianhao}, #{wenjianMingcheng},
#{banbenhao}, #{qianshouBumen}, #{qianshouRen}, #{qianshouShijian},
#{huishouRenId}, #{huishouShijian},
NULL, NULL, NULL
)
UPDATE dms_wenjian_dayin_jilu p
SET biz_status = 'daixiaohui',
f_last_modify_user_id = #{userId}, f_last_modify_time = #{now}
WHERE f_tenant_id = #{tenantId}
AND f_id IN
#{recordId}
AND EXISTS (SELECT 1 FROM dms_wenjian_dayin_renwu t
WHERE t.f_tenant_id = p.f_tenant_id AND t.f_id = p.dayin_renwu_id
AND t.f_delete_mark IS NULL AND )
AND f_delete_mark IS NULL
UPDATE dms_wenjian_fenfa_renwu d
SET biz_status = 'yiwancheng', f_last_modify_user_id = #{userId}, f_last_modify_time = #{now}
WHERE d.f_tenant_id = #{tenantId} AND d.dayin_renwu_id = #{taskId}
AND d.f_delete_mark IS NULL AND d.biz_status IN ('daifafang', 'daiqianshou')
AND EXISTS (SELECT 1 FROM dms_wenjian_dayin_renwu t
WHERE t.f_tenant_id = d.f_tenant_id AND t.f_id = d.dayin_renwu_id
AND t.f_delete_mark IS NULL AND t.biz_status = 'yidayin')
AND NOT EXISTS (SELECT 1 FROM dms_wenjian_dayin_jilu p
WHERE p.f_tenant_id = d.f_tenant_id AND p.dayin_renwu_id = d.dayin_renwu_id
AND p.f_delete_mark IS NULL AND p.biz_status IN ('daifafang', 'daiqianshou'))
d.f_id, d.dayin_renwu_id, d.fenfa_bianhao,
t.wenjian_id, t.wenjian_bianhao, t.wenjian_mingcheng, t.banbenhao,
d.fafang_leixing, t.jieshou_bumen_id,
o.f_full_name AS jieshou_bumen, d.jieshou_ren_id,
receiver.f_real_name AS jieshou_ren,
t.dayin_fenshu AS ying_fafang_fenshu,
stats.yi_fafang_fenshu,
t.dayin_fenshu AS ying_qianshou_fenshu,
stats.yi_qianshou_fenshu,
d.fafang_ren_id, issuer.f_real_name AS fafang_ren,
d.fafang_bumen_id, d.fafang_shijian,
signed.qianshou_ren_id, signer.f_real_name AS qianshou_ren,
signed.qianshou_shijian,
(signed.biz_sign IS NOT NULL AND signed.biz_sign <> ''
AND signed.biz_review_sign IS NOT NULL
AND signed.biz_review_sign <> '') AS biz_sign_biaoshi,
d.beizhu_shuoming, d.biz_status, d.f_creator_time
FROM dms_wenjian_fenfa_renwu d
JOIN dms_wenjian_dayin_renwu t
ON t.f_tenant_id = d.f_tenant_id AND t.f_id = d.dayin_renwu_id
AND t.f_delete_mark IS NULL
LEFT JOIN base_organize o
ON o.f_tenant_id = t.f_tenant_id AND o.f_id = t.jieshou_bumen_id
AND o.f_delete_mark IS NULL
LEFT JOIN base_user receiver
ON receiver.f_tenant_id = d.f_tenant_id AND receiver.f_id = d.jieshou_ren_id
AND receiver.f_delete_mark IS NULL
LEFT JOIN base_user issuer
ON issuer.f_tenant_id = d.f_tenant_id AND issuer.f_id = d.fafang_ren_id
AND issuer.f_delete_mark IS NULL
LEFT JOIN LATERAL (
SELECT COUNT(*) FILTER (WHERE p.fafang_shijian IS NOT NULL)::INTEGER
AS yi_fafang_fenshu,
COUNT(*) FILTER (WHERE p.qianshou_shijian IS NOT NULL)::INTEGER
AS yi_qianshou_fenshu
FROM dms_wenjian_dayin_jilu p
WHERE p.f_tenant_id = d.f_tenant_id
AND p.dayin_renwu_id = d.dayin_renwu_id
AND p.biz_status <> 'yizuofei'
AND p.f_delete_mark IS NULL
) stats ON TRUE
LEFT JOIN LATERAL (
SELECT p.qianshou_ren_id, p.qianshou_shijian,
p.biz_sign, p.biz_review_sign
FROM dms_wenjian_dayin_jilu p
WHERE p.f_tenant_id = d.f_tenant_id
AND p.dayin_renwu_id = d.dayin_renwu_id
AND p.qianshou_shijian IS NOT NULL
AND p.biz_status <> 'yizuofei'
AND p.f_delete_mark IS NULL
ORDER BY p.qianshou_shijian DESC, p.f_id DESC
LIMIT 1
) signed ON TRUE
LEFT JOIN base_user signer
ON signer.f_tenant_id = d.f_tenant_id AND signer.f_id = signed.qianshou_ren_id
AND signer.f_delete_mark IS NULL
AND (d.fenfa_bianhao LIKE CONCAT('%', #{keyword}, '%')
OR t.wenjian_bianhao LIKE CONCAT('%', #{keyword}, '%')
OR t.wenjian_mingcheng LIKE CONCAT('%', #{keyword}, '%'))
p.f_id, d.f_id AS fenfa_renwu_id, d.dayin_renwu_id, d.fenfa_bianhao,
t.wenjian_id, t.wenjian_bianhao, t.wenjian_mingcheng, t.banbenhao,
p.dayin_liushuihao, p.dayin_jishu_liushuihao, p.dayin_xuhao, p.dayin_ren_id,
printer.f_real_name AS dayin_ren, p.dayin_shijian,
d.fafang_leixing, t.jieshou_bumen_id,
target_org.f_full_name AS jieshou_bumen,
COALESCE(p.biz_review_user, d.jieshou_ren_id) AS jieshou_ren_id,
receiver.f_real_name AS jieshou_ren,
1 AS ying_fafang_fenshu,
CASE WHEN p.fafang_shijian IS NOT NULL THEN 1 ELSE 0 END AS yi_fafang_fenshu,
1 AS ying_qianshou_fenshu,
CASE WHEN p.qianshou_shijian IS NOT NULL THEN 1 ELSE 0 END AS yi_qianshou_fenshu,
p.fafang_ren_id, issuer.f_real_name AS fafang_ren,
p.fafang_bumen_id, p.fafang_shijian,
p.qianshou_ren_id, signer.f_real_name AS qianshou_ren,
p.qianshou_shijian,
(p.biz_sign IS NOT NULL AND p.biz_sign <> ''
AND p.biz_review_sign IS NOT NULL
AND p.biz_review_sign <> '') AS biz_sign_biaoshi,
COALESCE(p.beizhu_shuoming, d.beizhu_shuoming) AS beizhu_shuoming,
p.biz_status, p.f_creator_time
FROM dms_wenjian_fenfa_renwu d
JOIN dms_wenjian_dayin_renwu t
ON t.f_tenant_id = d.f_tenant_id AND t.f_id = d.dayin_renwu_id
AND t.f_delete_mark IS NULL
JOIN dms_wenjian_dayin_jilu p
ON p.f_tenant_id = d.f_tenant_id
AND p.dayin_renwu_id = d.dayin_renwu_id
LEFT JOIN base_organize target_org
ON target_org.f_tenant_id = t.f_tenant_id
AND target_org.f_id = t.jieshou_bumen_id
AND target_org.f_delete_mark IS NULL
LEFT JOIN base_user receiver
ON receiver.f_tenant_id = p.f_tenant_id
AND receiver.f_id = COALESCE(p.biz_review_user, d.jieshou_ren_id)
AND receiver.f_delete_mark IS NULL
LEFT JOIN base_user printer
ON printer.f_tenant_id = p.f_tenant_id AND printer.f_id = p.dayin_ren_id
AND printer.f_delete_mark IS NULL
LEFT JOIN base_user issuer
ON issuer.f_tenant_id = p.f_tenant_id AND issuer.f_id = p.fafang_ren_id
AND issuer.f_delete_mark IS NULL
LEFT JOIN base_user signer
ON signer.f_tenant_id = p.f_tenant_id AND signer.f_id = p.qianshou_ren_id
AND signer.f_delete_mark IS NULL
AND (d.fenfa_bianhao LIKE CONCAT('%', #{keyword}, '%')
OR t.wenjian_bianhao LIKE CONCAT('%', #{keyword}, '%')
OR t.wenjian_mingcheng LIKE CONCAT('%', #{keyword}, '%')
OR p.dayin_liushuihao LIKE CONCAT('%', #{keyword}, '%')
OR target_org.f_full_name LIKE CONCAT('%', #{keyword}, '%'))