审批流程如何实现末级部门申请在二级审批的时候是一级部门负责人原创
金蝶云社区-渝A的
渝A的
3人赞赏了该文章 541次浏览 未经作者许可,禁止转载编辑于2023年03月24日 12:51:06

一、业务背景

在企业每个部门的组织层级不一致情况下存在 

image.png

某一个单子需求设置统一审批流程:申请人----一级审批(直接上级)---二级审批(一级部门负责人)----三级审批(副总)

二、业务痛点

1、因为组织层级不一致情况下 通用一个审批流程,在流程设计的时候简单配置判断不到一级部门负责人

三、解决方案

1、在表单上面增加字段 【一级部门】,怎么加字段社区搜索!!!

image.png

2、通过Python携带出申请部门的一级部门,Python参考如下:

#引入clr运行库

import clr

#添加对cloud插件开发的常用组件的引用

clr.AddReference('System')

clr.AddReference('System.Data')

clr.AddReference('Kingdee.BOS')

clr.AddReference('Kingdee.BOS.Core')

clr.AddReference('Kingdee.BOS.App')

clr.AddReference('Kingdee.BOS.ServiceHelper')

#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)

from Kingdee.BOS import *

from Kingdee.BOS.Core import *

from Kingdee.BOS.Core.Bill import *

from Kingdee.BOS.Core.DynamicForm.PlugIn import *

from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *

from System import *

from System.Data import *

from Kingdee.BOS.App.Data import *

from System.Collections.Generic import List

from Kingdee.BOS.ServiceHelper import *

def getYJBM():

billObj = this.Model.DataObject;

depID=str(billObj["PURCHASEDEPTID_Id"]);#触发部门实体属性标识_Id

if(depID=="0"):

this.Model.SetItemValueByID("F_YJBMLC", "", 0); #一级部门字段标识

this.View.UpdateView("F_YJBMLC");#一级部门字段标识

sql = ("""/*dialect*/WITH deps AS  

(SELECT FNUMBER,FDEPTID,FPARENTID,a.F_YSBM,a.F_GZQXBM,num=1  

FROM T_BD_DEPARTMENT a where FDEPTID={0}

UNION ALL   

SELECT  pDep.FNUMBER,pDep.FDEPTID,pDep.FPARENTID,pDep.F_YSBM,pDep.F_GZQXBM,num=deps.num+1  

FROM deps   

inner join T_BD_DEPARTMENT pDep on pDep.FDEPTID=deps.FPARENTID)  

SELECT a.* 

FROM deps a 

where a.FPARENTID in (102814,102815)""").format(depID);

#this.View.ShowMessage(key+"SQL:"+sql);

ds = DBServiceHelper.ExecuteDataSet(this.Context,sql);

tab = ds.Tables[0];

ysBMId=tab.Rows[0]["FDEPTID"] if tab.Rows.Count>0 else 0;

this.Model.SetItemValueByID("F_YJBMLC", ysBMId, 0);#一级部门字段标识

this.View.UpdateView("F_YJBMLC"); #一级部门字段标识

#重载cloud插件模型的值更新事件

def DataChanged(e):

key=e.Field.Key.ToUpperInvariant();

if(str(key)=="FPURCHASEDEPTID"):#触发部门字段标识大写

getYJBM();

def AfterCreateNewData(e):

getYJBM();

3、在审批流程节点部门设置变量【一级部门】字段判断负责人

image.png

赞 3