接口作用
客户后台组织机构的存储逻辑是通过随机的Id存储,上级通过父级Id查找,这样的存储形式通过sql查找对应部门的所有下级部门,不好通过模糊搜索查找。
所以通过接口引擎,创建出一个中间表,产生一个新的字段为对应的机构代码,表现形式就是1-1-1一级级层级下去的树形结构。
这样就方便直接通过sql的like去查找对应部门的所有下级部门机构数据。
代码逻辑
- 使用平台的方法,创建一个Token
- 通过对应的Api接口,获取到组织机构的信息表
- 组织机构中有个_Child字段,存储着对应下级的组织机构
- 首先创建好组织机构的顶层数据
- 接着通过递归的方法,首先新增好当层的表接口,然后查看_Child是否存在,存在则递归
核心代码
获取Token值
//OsClient为每个后台对应的OsClient值
var Token = V8.Method.GetCurrentToken('', 'OsClient')
获取组织机构信息
// 平台目前post和get方法都支持了
var res =V8.Http.Post({
url:'url', // 对应URL地址
headers: {
'authorization': `Bearer ${Token.Token}`
},
})
// 获取到的为字符型,将转换回数组类型
res = JSON.parse(res)
创建一层结构
// 删除原有数据
// 平台支持原生sql
V8.Db.FromSql(`delete from diy_ZuZhiJiGouCode where IsDeleted = 0`).ExecuteNonQuery()
res.Data.forEach((item,index)=>{
var JigouDM = `${index+1}`
// 平台包含特有的语言
V8.FormEngine.AddFormData({
FormEngineKey : 'diy_ZuZhiJiGouCode',
Id:item.Code,
_RowModel : {
JigouDM : JigouDM+'-',
JigouM : item.Name,
JigouID : item.Code,
}
});
// 查看是否有对应下级,有则进入对应递归算法
if(item._Child){
addZuZhi(item._Child,JigouDM)
}
})
//返回结果执行完毕
V8.Result = {Code:1,Msg:'执行完毕'};
return
递归算法
function addZuZhi(array,JigouDM){
array.forEach((item,index)=>{
var myCode = `${JigouDM}-${index+1}`
V8.FormEngine.AddFormData({
FormEngineKey : 'diy_ZuZhiJiGouCode',
Id:item.Code,
_RowModel : {
JigouDM : myCode,
JigouM : item.Name,
JigouID : item.Code,
ParentId : item.ParentId,
}
});
if(item._Child){
addZuZhi(item._Child,myCode)
}
})
}
最终结果
Microi吾码只有你想不到,没有做不到