北京华夏安泰技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需要一步,快速开始

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 302|回复: 0

归口管理中,对岗位条件配置语句更新

[复制链接]

148

主题

203

帖子

1096

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1096
发表于 2017-11-22 18:49:03 | 显示全部楼层 |阅读模式
之前的代码逻辑不是很好,现在的逻辑为

当前操作员有这个岗位,这个岗位所有的单位与操作单据时的单位是一个,即可!
与此岗位有什么菜单不相关,

  1. CREATE DEFINER = 'nxslt_nkxt'@'%'
  2. FUNCTION hxat_nxslt.F_GET_FLOWID_PAYMENT(V_LESSEE_CODE VARCHAR(40), V_BUSINESS_ID VARCHAR(40))
  3.   RETURNS varchar(40) CHARSET utf8
  4. BEGIN                        #报销审批流程
  5.   DECLARE V_CENTRALIZE_MANAGEMENT_ID varchar(40);
  6.   DECLARE V_CLASSIFY_ID varchar(40);
  7.   DECLARE V_ORG_ID   VARCHAR(40);

  8.   DELETE FROM temp_table; #清空表

  9.       set V_CLASSIFY_ID = '0303';
  10.       
  11.       
  12.           INSERT INTO temp_table (S1, S2, N1)
  13.           SELECT C.EXAMINE_MANAGEMENT_ID AS S1,
  14.                  C.PARENT_ID AS S2,
  15.                  C.CLASSIFIED AS N1
  16.           FROM SYS_EXAMINE_MANAGEMENT C                             #归口定义
  17.           LEFT JOIN SYS_EXAMINE_DETAIL D                            #支出事项
  18.                ON C.EXAMINE_MANAGEMENT_ID = D.EXAMINE_MANAGEMENT_ID
  19.                and d.ITEM_TYPE = '1'
  20.           LEFT JOIN SYS_EXAMINE_DETAIL D2                            #内部预算事项
  21.                ON C.EXAMINE_MANAGEMENT_ID = D2.EXAMINE_MANAGEMENT_ID
  22.                and d2.ITEM_TYPE = '2'
  23.           LEFT JOIN SYS_EXAMINE_ORG O                                #科室
  24.                ON C.EXAMINE_MANAGEMENT_ID = O.EXAMINE_MANAGEMENT_ID
  25.                and o.ITEM_TYPE = '1'
  26.           LEFT JOIN SYS_EXAMINE_ORG O4                               #职级
  27.                ON C.EXAMINE_MANAGEMENT_ID = O4.EXAMINE_MANAGEMENT_ID
  28.                and o4.ITEM_TYPE = '2'
  29.           LEFT JOIN SYS_EXAMINE_ORG O5                               #报销方式
  30.                ON C.EXAMINE_MANAGEMENT_ID = O5.EXAMINE_MANAGEMENT_ID
  31.                and o5.ITEM_TYPE = '3'
  32.           LEFT JOIN SYS_EXAMINE_ORG O6                              #岗位
  33.                ON C.EXAMINE_MANAGEMENT_ID = O6.EXAMINE_MANAGEMENT_ID
  34.                and o6.ITEM_TYPE = '4'
  35.           WHERE C.BPM_CLASSIFY_ID = V_CLASSIFY_ID
  36.           AND C.LESSEE_CODE = V_LESSEE_CODE               #租户
  37.           AND(
  38.                 EXISTS (SELECT * FROM STANDARD_EXPEND BT , #子项                #-根据支出事项
  39.                                       STANDARD_EXPEND BT2  #父项
  40.                               WHERE (BT.CASCADE_ID LIKE CONCAT(BT2.CASCADE_ID,'%') OR BT2.CASCADE_ID LIKE CONCAT(BT.CASCADE_ID,'%'))
  41.                                 AND( D.SOURCE_ID = BT2.EXPEND_ID OR D.SOURCE_ID IS NULL)
  42.                                 AND BT.EXPEND_ID IN (SELECT ZP.EXPEND_ID
  43.                                                    FROM PAYOUT_PAYMENT ZP
  44.                                                    WHERE ZP.Payment_Id = V_BUSINESS_ID)
  45.                                      )
  46.                 or
  47.                   EXISTS (SELECT * FROM STANDARD_EXPEND BT , -- 子项                --- 根据支出事项
  48.                                       STANDARD_EXPEND BT2  -- 父项
  49.                               WHERE (BT.CASCADE_ID LIKE CONCAT(BT2.CASCADE_ID,'%') OR BT2.CASCADE_ID LIKE CONCAT(BT.CASCADE_ID,'%'))
  50.                                 AND( D.SOURCE_ID = BT2.EXPEND_ID OR D.SOURCE_ID IS NULL)
  51.                                 AND BT.EXPEND_ID IN (SELECT ppe.EXPEND_ID
  52.                                                    FROM PAYOUT_PAYMENT_EXPEND ppe
  53.                                                    WHERE ppe.Payment_Id = V_BUSINESS_ID)
  54.                                      )
  55.                                                         )
  56.           AND EXISTS (SELECT * FROM STANDARD_INNER_BUDGET_ITEM BT , #子项     #-根据内部预算事项
  57.                                     STANDARD_INNER_BUDGET_ITEM BT2  #父项
  58.                               WHERE (BT.CASCADE_ID LIKE CONCAT(BT2.CASCADE_ID,'%') OR BT2.CASCADE_ID LIKE CONCAT(BT.CASCADE_ID,'%'))
  59.                                 AND( D2.SOURCE_ID = BT2.BUDGET_ITEM_ID  OR D2.SOURCE_ID IS NULL)
  60.                                 AND BT.BUDGET_ITEM_ID IN (SELECT IB.BUDGET_ITEM_ID
  61.                                                            FROM PAYOUT_PAYMENT ZP
  62.                                                            LEFT JOIN BUDGET_INNER_BUDGET IB
  63.                                                                 ON ZP.Inner_Budget_Id = IB.INNER_BUDGET_ID
  64.                                                            WHERE ZP.Payment_Id = V_BUSINESS_ID)
  65.                                      )

  66.              AND (  EXISTS (SELECT * FROM SYS_ORGANIZATION O1,
  67.                                 SYS_ORGANIZATION O2
  68.                              WHERE( (O1.CASCADE_ID LIKE CONCAT(O2.CASCADE_ID,'%') OR O2.CASCADE_ID LIKE CONCAT(O1.CASCADE_ID,'%'))
  69.                             AND O2.ORG_ID =(select a.payment_org_id from PAYOUT_PAYMENT a where a.payment_id =V_BUSINESS_ID)
  70.                             and (o.org_id like concat(o1.org_id,'%' )  or o.org_id is null))
  71.                                   ))
  72.                AND(  EXISTS (SELECT * from PAYOUT_PAYMENT zp
  73.                                     left join sys_person sp on zp.payer = sp.person_id
  74.                                     where (zp.payment_id = V_BUSINESS_ID
  75.                                     and (sp.job_title = o4.ORG_ID  or o4.ORG_ID is null))
  76.                             )
  77.                    )
  78.                AND( EXISTS (SELECT * from  PAYOUT_PAYMENT zp
  79.                                     where (zp.payment_id = V_BUSINESS_ID
  80.                                    and (zP.PAYMENT_TYPE = o5.ORG_ID or o5.ORG_ID is null))
  81.                               )
  82.                   )

  83.              AND EXISTS ( select sup.post_id                              #岗位校验  Alan #当前用户下这个单位有这个岗位
  84.                                   from SYS_USER_POST    sup,
  85.                                        PAYOUT_PAYMENT   pp,
  86.                                        sys_organization so
  87.                                  where sup.user_id = pp.operator          #当前用户下
  88.                                    AND pp.PAYMENT_ID = V_BUSINESS_ID      #当前单据
  89.                                    AND so.ORG_ID = pp.payment_org_id      #单据所在的科室
  90.                                    AND so.CASCADE_ID like concat('%',sup.ORG_ID,'%') #是同一个单位
  91.                                    and O6.ORG_ID = sup.post_id or O6.ORG_ID is null
  92.                         )

  93.           ORDER BY C.CLASSIFIED DESC  ;



  94.   #再从临时表中取出数据,再加工
  95.   #之前S1 存放了ID,S2 存放了父项, N1 存放层级号
  96.   SELECT
  97.     S1 INTO V_CENTRALIZE_MANAGEMENT_ID
  98.   FROM (SELECT
  99.       T1.S1 #,t1.S2
  100.     FROM temp_table T1,
  101.          temp_table T2,
  102.          temp_table T3,
  103.          temp_table T4
  104.     WHERE ((T1.S2 = T2.S1 AND T1.N1 = T2.N1 + 1) OR (T1.S2 =V_CLASSIFY_ID AND T1.S1 = T2.S1))
  105.     AND ((T2.S2 = T3.S1 AND T2.N1 = T3.N1 + 1) OR (T2.S2 =V_CLASSIFY_ID AND T2.S1 = T3.S1))
  106.     AND ((T3.S2 = T4.S1 AND T3.N1 = T4.N1 + 1) OR (T3.S2 =V_CLASSIFY_ID AND T3.S1 = T4.S1))
  107.     ORDER BY t1.n1 DESC) t #把序号最大的放在前面
  108.   LIMIT 1; #只取最大的一个数据

  109.   DELETE
  110.     FROM temp_table; #清空表

  111.   RETURN V_CENTRALIZE_MANAGEMENT_ID;
  112. END
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则


小黑屋|手机版|Archiver|北京华夏安泰技术论坛  

GMT+8, 2019-1-23 06:59 , Processed in 0.078125 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表