Просмотр исходного кода

Merge remote-tracking branch 'origin/matser' into matser

ZhuJiaHao 5 месяцев назад
Родитель
Сommit
2096bb170d

+ 185 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/enumeration/FileEnumeration.java

@@ -0,0 +1,185 @@
+package com.lc.ibps.platform.enumeration;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum FileEnumeration {
+    //内部文件
+    NEI_BU_WEN_JIAN("FILE_TYPE","内部文件","nbwj","1","286814138233389367","1","Y","0","-999", JSONUtil.parseObj("{\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //质量手册
+    ZHI_LIANG_SHOU_CE("FILE_TYPE","质量手册","zlsc","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //程序文件
+    CHENG_XU_WEN_JIAN("FILE_TYPE","程序文件","cxwj","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //安全手册
+    AN_QUAN_SHOU_CE("FILE_TYPE","安全手册","aqsc","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //临床样品采集手册
+    LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE("FILE_TYPE","临床样品采集手册","lcypcjsc","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //信息系统文件
+    XIN_XI_XI_TONG_WEN_JIAN("FILE_TYPE","信息系统文件","xxxtwj","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //科室制度文件
+    KE_SHI_ZHI_DU_WEN_JIAN("FILE_TYPE","科室制度文件","kszdwj","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //记录表单
+    JI_LU_BIAO_DAN("FILE_TYPE","记录表单","jlbd","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspbgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //项目类sop
+    N_XIANG_MU_LEI_SOP ("FILE_TYPE","项目类sop","xmlSOP","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}")),
+    //管理类sop
+    N_GUAN_LI_LEI_SOP("FILE_TYPE","管理类sop","gllSOP","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"chaYue\":\"部门查阅\",\"diDian\":\"\"}")),
+    //设备类sop
+    N_SHE_BEI_LEI_SOP("FILE_TYPE","设备类sop","sblSOP","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":[[]],\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}")),
+    //受限类
+    N_SHOU_XIAN_LEI("FILE_TYPE","受限类","sxl","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"受限查阅\"}")),
+    //外部文件
+    WAI_BU_WEN_JIAN("FILE_TYPE","外部文件","wbwj","1","286814138233389367","1","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //国家标准
+    GUO_JIA_BIAO_ZHUN("FILE_TYPE","国家标准","gjbz","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //卫生行业标准
+    WEI_SHENG_HANG_YE_BIAO_ZHUN("FILE_TYPE","卫生行业标准","wsxybz","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //技术标准
+    JI_SHU_BIAO_ZHUN("FILE_TYPE","技术标准","jsbz","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //安全管理文件
+    AN_QUAN_GUAN_LI_WEN_JIAN("FILE_TYPE","安全管理文件","aqglwj","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //认可规范及指南
+    REN_KE_GUI_FAN_JI_ZHINAN("FILE_TYPE","认可规范及指南","rkwj","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //法律法规
+    FA_LU_FA_GUI("FILE_TYPE","法律法规","flfg","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //其他
+    QITA("FILE_TYPE","其他","qt","1","","2","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":\"\",\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}")),
+    //设备使用说明
+    W_SHE_BEI_SHI_YONG_SHUO_MING_SHU("FILE_TYPE","设备使用说明","sbsysms","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}")),
+    //试剂使用说明书
+    W_SHI_JI_SHI_YONG_SHUO_MING_SHU("FILE_TYPE","试剂使用说明书","sjsysms","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}")),
+    //法律法规
+    W_FA_LU_FAG_UI("FILE_TYPE","法律法规","flfg","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}")),
+    //行业标准
+    W_HANG_YE_BIAO_ZHUN("FILE_TYPE","行业标准","xybz","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"chaYue\":\"部门查阅\",\"diDian\":\"\"}")),
+    //参考文献
+    W_CAN_KAO_WEN_XIAN("FILE_TYPE","参考文献","ckwx","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"chaYue\":\"部门查阅\",\"diDian\":\"\"}")),
+    //书籍
+    W_SHU_JI("FILE_TYPE","书籍","sj","1","","3","Y","0","-999",JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"chaYue\":\"部门查阅\",\"diDian\":\"\"}")),
+    //其他
+    W_QI_TA ("FILE_TYPE","其他","qt","1","","3","Y","0","-999",JSONUtil.parseObj("{\"buMen\":\"\",\"shenCha\":\"不需要\",\"chaYue\":\"部门查阅\",\"diDian\":\"\"}")),
+    //受限类
+    W_SHOU_XIAN_LIE("FILE_TYPE","受限类","sxl","1","","3","Y","0","-999",JSONUtil.parseObj("{\"buMen\":\"\",\"shenCha\":\"不需要\",\"chaYue\":\"受限查阅\",\"diDian\":\"\"}"));
+
+    public String categoryKey;
+    public String name;
+    public String typeKey;
+    public String struType;
+    public String parentId;
+    public String depth;
+    public String isLeaf;
+    public String ownerId;
+    public String tenantId;
+    public JSONObject authorityName;
+
+    FileEnumeration(String categoryKey, String name, String typeKey, String struType, String parentId, String depth, String isLeaf, String ownerId, String tenantId, JSONObject authorityName) {
+        this.categoryKey = categoryKey;
+        this.name = name;
+        this.typeKey = typeKey;
+        this.struType = struType;
+        this.parentId = parentId;
+        this.depth = depth;
+        this.isLeaf = isLeaf;
+        this.ownerId = ownerId;
+        this.tenantId = tenantId;
+        this.authorityName = authorityName;
+    }
+
+    @Override
+    public String toString() {
+        return "FileEnumeration{" +
+                "categoryKey='" + categoryKey + '\'' +
+                ", name='" + name + '\'' +
+                ", typeKey='" + typeKey + '\'' +
+                ", struType='" + struType + '\'' +
+                ", parentId='" + parentId + '\'' +
+                ", depth='" + depth + '\'' +
+                ", isLeaf='" + isLeaf + '\'' +
+                ", ownerId='" + ownerId + '\'' +
+                ", tenantId='" + tenantId + '\'' +
+                ", authorityName=" + authorityName +
+                '}';
+    }
+
+    public String getCategoryKey() {
+        return categoryKey;
+    }
+
+    public void setCategoryKey(String categoryKey) {
+        this.categoryKey = categoryKey;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTypeKey() {
+        return typeKey;
+    }
+
+    public void setTypeKey(String typeKey) {
+        this.typeKey = typeKey;
+    }
+
+    public String getStruType() {
+        return struType;
+    }
+
+    public void setStruType(String struType) {
+        this.struType = struType;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getDepth() {
+        return depth;
+    }
+
+    public void setDepth(String depth) {
+        this.depth = depth;
+    }
+
+    public String getIsLeaf() {
+        return isLeaf;
+    }
+
+    public void setIsLeaf(String isLeaf) {
+        this.isLeaf = isLeaf;
+    }
+
+    public String getOwnerId() {
+        return ownerId;
+    }
+
+    public void setOwnerId(String ownerId) {
+        this.ownerId = ownerId;
+    }
+
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public JSONObject getAuthorityName() {
+        return authorityName;
+    }
+
+    public void setAuthorityName(JSONObject authorityName) {
+        this.authorityName = authorityName;
+    }
+}

+ 375 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/InitializeFolderJob.java

@@ -0,0 +1,375 @@
+package com.lc.ibps.platform.plan.job;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.base.core.util.Collections;
+import com.lc.ibps.base.framework.id.UniqueIdUtil;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.components.quartz.BaseJob2;
+import com.lc.ibps.platform.enumeration.FileEnumeration;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.quartz.JobExecutionContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class InitializeFolderJob extends BaseJob2 {
+
+    private static final Logger logger = LoggerFactory.getLogger(InitializeFolderJob.class);
+    private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
+
+    @Override
+    public void executeJob(JobExecutionContext context) throws Exception {
+        //1.获取所有的3  4级的部门
+        List<Map<String, Object>> deptList = selectThreeAndFour();
+        if(Collections.isEmpty(deptList)) return;
+
+        String diDian = deptList.get(0).get("PATH_").toString().split("\\.")[1];
+
+        String neiId = UniqueIdUtil.getId(); //内部文件
+        String neiPrefix = joinWithDot(FileEnumeration.NEI_BU_WEN_JIAN.parentId,neiId);//内部文件的子集需要拼接的id前缀
+        String waiId = UniqueIdUtil.getId();
+        String waiPrefix = joinWithDot(FileEnumeration.WAI_BU_WEN_JIAN.parentId,waiId);//wai部文件的子集需要拼接的id前缀
+
+        //2.先组装非专业组层级的,方便后续拼接专业组的parentId和path
+        List<Map<String, Object>> list = encapsulateData(neiId,FileEnumeration.NEI_BU_WEN_JIAN.parentId,waiId,FileEnumeration.WAI_BU_WEN_JIAN.parentId,diDian,deptList);
+        //2.1 还需要处理权限的地点字段
+
+        //3.组装3、4级的,逻辑和2一致 但是需要额外处理权限的部门字段
+        List<Map<String, Object>> assemblyData = assemblyData(deptList, neiId,FileEnumeration.NEI_BU_WEN_JIAN.parentId, waiId, FileEnumeration.WAI_BU_WEN_JIAN.parentId,diDian);
+
+        //3.add开始
+        executeAdd(list,assemblyData);
+
+    }
+
+
+    public List<Map<String,Object>> selectThreeAndFour(){
+        List<Map<String, Object>> list = new ArrayList<>();
+        String sql = " SELECT ID_,PARTY_ALIAS_,NAME_,DEPTH_,PATH_ FROM ibps_party_entity WHERE PATH_ LIKE CONCAT( (SELECT org_ FROM t_ipcc WHERE id_ = '1'), '%') and DEPTH_ in('3','4') ORDER BY DEPTH_, SN_ ASC ";
+        List<Map<String,Object>> query =(List<Map<String,Object>>) commonDao.query(sql);
+        if(Collections.isNotEmpty(query)){
+            list = query;
+        }
+        return list;
+    }
+
+    public List<Map<String,Object>> encapsulateData(String neiId,String neiFu,String waiId ,String waiFu,String diDian,List<Map<String, Object>> deptList) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        String zhiLiangShouCe = UniqueIdUtil.getId(); //质量手册id
+        String chengXuWenJian = UniqueIdUtil.getId();//程序文件
+        String anQuanShouCe = UniqueIdUtil.getId();//安全手册
+        String lingChuang = UniqueIdUtil.getId();//临床样品采集手册
+        String xinXiXiTong = UniqueIdUtil.getId();//信息系统文件
+        String keShiZhiDu = UniqueIdUtil.getId();//科室制度文件
+        String jiLuBiaoDan = UniqueIdUtil.getId();//记录表单
+
+        String guoJiaBiaoZhun = UniqueIdUtil.getId();//国家标准
+        String weiShengHangYe = UniqueIdUtil.getId();//卫生行业标准
+        String jiShuBiaoZhun = UniqueIdUtil.getId();//技术标准
+        String anQuanGuanLiWenJian = UniqueIdUtil.getId();//安全管理文件
+        String renKeGuiFanJiZhiNan = UniqueIdUtil.getId();//认可规范及指南
+        String faLufaGUi = UniqueIdUtil.getId();//法律法规
+        String qiTa = UniqueIdUtil.getId();//其他
+        //内部文件
+        list.add(build("ID_",neiId,"CATEGORY_KEY_",FileEnumeration.NEI_BU_WEN_JIAN.categoryKey,"name_",FileEnumeration.NEI_BU_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.NEI_BU_WEN_JIAN.struType,"PARENT_ID_",FileEnumeration.NEI_BU_WEN_JIAN.parentId,"DEPTH_",FileEnumeration.NEI_BU_WEN_JIAN.depth,
+                "PATH_",joinWithDot(neiFu,neiId),"IS_LEAF_",FileEnumeration.NEI_BU_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.NEI_BU_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.NEI_BU_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.NEI_BU_WEN_JIAN.authorityName));
+        //质量手册
+        list.add(build("ID_",zhiLiangShouCe,"CATEGORY_KEY_",FileEnumeration.ZHI_LIANG_SHOU_CE.categoryKey,"name_",FileEnumeration.ZHI_LIANG_SHOU_CE.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.ZHI_LIANG_SHOU_CE.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.ZHI_LIANG_SHOU_CE.depth,"PATH_",joinWithDot(neiFu,neiId,zhiLiangShouCe),
+                "IS_LEAF_",FileEnumeration.ZHI_LIANG_SHOU_CE.isLeaf,"OWNER_ID_",FileEnumeration.ZHI_LIANG_SHOU_CE.ownerId,"TENANT_ID_",FileEnumeration.ZHI_LIANG_SHOU_CE.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.ZHI_LIANG_SHOU_CE.authorityName));
+        //程序文件
+        list.add(build("ID_",chengXuWenJian,"CATEGORY_KEY_",FileEnumeration.CHENG_XU_WEN_JIAN.categoryKey,"name_",FileEnumeration.CHENG_XU_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.CHENG_XU_WEN_JIAN.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.CHENG_XU_WEN_JIAN.depth,"PATH_",joinWithDot(neiFu,neiId,chengXuWenJian),
+                "IS_LEAF_",FileEnumeration.CHENG_XU_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.CHENG_XU_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.CHENG_XU_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.CHENG_XU_WEN_JIAN.authorityName));
+        //安全手册
+        list.add(build("ID_",anQuanShouCe,"CATEGORY_KEY_",FileEnumeration.AN_QUAN_SHOU_CE.categoryKey,"name_",FileEnumeration.AN_QUAN_SHOU_CE.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.AN_QUAN_SHOU_CE.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.AN_QUAN_SHOU_CE.depth,"PATH_",joinWithDot(neiFu,neiId,anQuanShouCe),
+                "IS_LEAF_",FileEnumeration.AN_QUAN_SHOU_CE.isLeaf,"OWNER_ID_",FileEnumeration.AN_QUAN_SHOU_CE.ownerId,"TENANT_ID_",FileEnumeration.AN_QUAN_SHOU_CE.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.AN_QUAN_SHOU_CE.authorityName));
+        //临床样品采集手册
+        list.add(build("ID_",lingChuang,"CATEGORY_KEY_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.categoryKey,"name_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.name,
+                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.depth,
+                "PATH_",joinWithDot(neiFu,neiId,lingChuang),"IS_LEAF_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.isLeaf,"OWNER_ID_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.ownerId,
+                "TENANT_ID_",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.tenantId,"AUTHORITY_NAME",FileEnumeration.LING_CHUANG_YANG_PING_CAI_JI_SHOU_CE.authorityName));
+        //信息系统文件
+        list.add(build("ID_",xinXiXiTong,"CATEGORY_KEY_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.categoryKey,"name_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.depth,"PATH_",joinWithDot(neiFu,neiId,xinXiXiTong),
+                "IS_LEAF_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.XIN_XI_XI_TONG_WEN_JIAN.authorityName));
+        //科室制度文件
+        list.add(build("ID_",keShiZhiDu,"CATEGORY_KEY_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.categoryKey,"name_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.depth,"PATH_",joinWithDot(neiFu,neiId,keShiZhiDu),
+                "IS_LEAF_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.KE_SHI_ZHI_DU_WEN_JIAN.authorityName));
+        //记录表单//项目类sop //管理类sop//设备类sop//受限类
+        list.add(build("ID_",jiLuBiaoDan,"CATEGORY_KEY_",FileEnumeration.JI_LU_BIAO_DAN.categoryKey,"name_",FileEnumeration.JI_LU_BIAO_DAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.JI_LU_BIAO_DAN.struType,"PARENT_ID_",neiId,"DEPTH_",FileEnumeration.JI_LU_BIAO_DAN.depth,"PATH_",joinWithDot(neiFu,neiId,jiLuBiaoDan),
+                "IS_LEAF_",FileEnumeration.JI_LU_BIAO_DAN.isLeaf,"OWNER_ID_",FileEnumeration.JI_LU_BIAO_DAN.ownerId,"TENANT_ID_",FileEnumeration.JI_LU_BIAO_DAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.JI_LU_BIAO_DAN.authorityName));
+
+        //外部文件
+        list.add(build("ID_",waiId,"CATEGORY_KEY_",FileEnumeration.WAI_BU_WEN_JIAN.categoryKey,"name_",FileEnumeration.WAI_BU_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.WAI_BU_WEN_JIAN.struType,"PARENT_ID_",FileEnumeration.WAI_BU_WEN_JIAN.parentId,"DEPTH_",FileEnumeration.WAI_BU_WEN_JIAN.depth,
+                "PATH_",joinWithDot(waiFu,waiId),"IS_LEAF_",FileEnumeration.WAI_BU_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.WAI_BU_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.WAI_BU_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.WAI_BU_WEN_JIAN.authorityName));
+        //国家标准
+        list.add(build("ID_",guoJiaBiaoZhun,"CATEGORY_KEY_",FileEnumeration.GUO_JIA_BIAO_ZHUN.categoryKey,"name_",FileEnumeration.GUO_JIA_BIAO_ZHUN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.GUO_JIA_BIAO_ZHUN.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.GUO_JIA_BIAO_ZHUN.depth,
+                "PATH_",joinWithDot(waiFu,waiId,guoJiaBiaoZhun),"IS_LEAF_",FileEnumeration.GUO_JIA_BIAO_ZHUN.isLeaf,"OWNER_ID_",FileEnumeration.GUO_JIA_BIAO_ZHUN.ownerId,"TENANT_ID_",FileEnumeration.GUO_JIA_BIAO_ZHUN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.GUO_JIA_BIAO_ZHUN.authorityName));
+        //卫生行业标准
+        list.add(build("ID_",weiShengHangYe,"CATEGORY_KEY_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.categoryKey,"name_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.depth,
+                "PATH_",joinWithDot(waiFu,waiId,weiShengHangYe),"IS_LEAF_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.isLeaf,"OWNER_ID_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.ownerId,"TENANT_ID_",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.WEI_SHENG_HANG_YE_BIAO_ZHUN.authorityName));
+        //技术标准
+        list.add(build("ID_",jiShuBiaoZhun,"CATEGORY_KEY_",FileEnumeration.JI_SHU_BIAO_ZHUN.categoryKey,"name_",FileEnumeration.JI_SHU_BIAO_ZHUN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.JI_SHU_BIAO_ZHUN.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.JI_SHU_BIAO_ZHUN.depth,
+                "PATH_",joinWithDot(waiFu,waiId,jiShuBiaoZhun),"IS_LEAF_",FileEnumeration.JI_SHU_BIAO_ZHUN.isLeaf,"OWNER_ID_",FileEnumeration.GUO_JIA_BIAO_ZHUN.ownerId,"TENANT_ID_",FileEnumeration.JI_SHU_BIAO_ZHUN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.JI_SHU_BIAO_ZHUN.authorityName));
+        //安全管理文件
+        list.add(build("ID_",anQuanGuanLiWenJian,"CATEGORY_KEY_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.categoryKey,"name_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.depth,
+                "PATH_",joinWithDot(waiFu,waiId,anQuanGuanLiWenJian),"IS_LEAF_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.isLeaf,"OWNER_ID_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.ownerId,"TENANT_ID_",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.AN_QUAN_GUAN_LI_WEN_JIAN.authorityName));
+        //认可规范及指南
+        list.add(build("ID_",renKeGuiFanJiZhiNan,"CATEGORY_KEY_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.categoryKey,"name_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.depth,
+                "PATH_",joinWithDot(waiFu,waiId,renKeGuiFanJiZhiNan),"IS_LEAF_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.isLeaf,"OWNER_ID_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.ownerId,"TENANT_ID_",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.REN_KE_GUI_FAN_JI_ZHINAN.authorityName));
+        //法律法规
+        list.add(build("ID_",faLufaGUi,"CATEGORY_KEY_",FileEnumeration.FA_LU_FA_GUI.categoryKey,"name_",FileEnumeration.FA_LU_FA_GUI.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.FA_LU_FA_GUI.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.FA_LU_FA_GUI.depth,
+                "PATH_",joinWithDot(waiFu,waiId,faLufaGUi),"IS_LEAF_",FileEnumeration.FA_LU_FA_GUI.isLeaf,"OWNER_ID_",FileEnumeration.FA_LU_FA_GUI.ownerId,"TENANT_ID_",FileEnumeration.FA_LU_FA_GUI.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.FA_LU_FA_GUI.authorityName));
+        //其他  //设备使用说明 //试剂使用说明书 //法律法规 //行业标准 //参考文献 //书籍 //其他 //受限类
+        list.add(build("ID_",qiTa,"CATEGORY_KEY_",FileEnumeration.QITA.categoryKey,"name_",FileEnumeration.QITA.name,"type_key_",RandomStringUtils.randomAlphabetic(6),
+                "stru_type_",FileEnumeration.QITA.struType,"PARENT_ID_",waiId,"DEPTH_",FileEnumeration.QITA.depth,
+                "PATH_",joinWithDot(waiFu,waiId,qiTa),"IS_LEAF_",FileEnumeration.QITA.isLeaf,"OWNER_ID_",FileEnumeration.QITA.ownerId,"TENANT_ID_",FileEnumeration.QITA.tenantId,
+                "AUTHORITY_NAME",FileEnumeration.QITA.authorityName));
+        List<Map<String, Object>> oneAndTwo = disposeOneAndTwo(list,diDian,deptList);
+        return oneAndTwo;
+    }
+
+    public List<Map<String, Object>> disposeOneAndTwo(List<Map<String, Object>> list,String diDian,List<Map<String, Object>> deptList){
+        if(Collections.isNotEmpty(list) && StringUtils.isNotEmpty(diDian)){
+            for (Map<String, Object> item : list ) {
+                String authorityName = item.get("AUTHORITY_NAME").toString();
+                JSONObject jsonObject = JSONUtil.parseObj(authorityName);
+                jsonObject.set("diDian", diDian);
+                //3级的结构也需要拼接部门才行,否则可能更上级权限的人看不到
+                String deptPath = findDeptName(deptList, "3", item.get("name_").toString());
+                jsonObject.set("buMen",stream(deptPath));
+                item.put("AUTHORITY_NAME",jsonObject.toString());
+            }
+            return list;
+        }
+        return null;
+    }
+
+
+    public List<Map<String, Object>> assemblyData(List<Map<String, Object>> deptList,String neiId,String neiFu ,String waiId,String waiFu,String diDian) throws Exception{
+        List<Map<String, Object>> list = new ArrayList<>();
+        if(Collections.isNotEmpty(deptList)){
+            JSONObject neiAuthName = new JSONObject(JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}"));
+            JSONObject waiAuthName = new JSONObject(JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"fenLei\":\"通用\",\"buMen\":\"\",\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}"));
+
+            JSONObject neiAuthNameForu = new JSONObject(JSONUtil.parseObj("{\"shenHeZouXiang\":\"jspgz\",\"buMen\":[[]],\"shenCha\":\"不需要\",\"diDian\":\"\",\"chaYue\":\"部门查阅\"}"));
+            JSONObject waiAuthNameFour = new JSONObject(JSONUtil.parseObj("{\"shenHeZouXiang\":\"shspgz\",\"fenLei\":\"通用\",\"buMen\":\"\",\"shenCha\":\"需要\",\"diDian\":\"\",\"chaYue\":\"公用查阅\"}"));
+
+            for (Map<String, Object> item : deptList ) {
+
+                String onlyNeiId = UniqueIdUtil.getId(); //所有内部3级架构
+                neiAuthName.set("diDian",diDian);//内部文件替换地点
+                JSONArray buMen = stream(item.get("PATH_").toString());
+                neiAuthName.set("buMen",buMen);//内部文件替换部门权限
+
+
+                String onlyWaiId = UniqueIdUtil.getId(); //所有外部3级架构
+                waiAuthName.set("diDian",diDian); //外部文件只要替换地点即可,权限是放开的
+
+                //3级和4级的差异只有parentId 和 权限部门不一致
+                if("3".equals(item.get("DEPTH_").toString())){
+
+                    list.add(build("ID_",onlyNeiId,"CATEGORY_KEY_","FILE_TYPE","name_",item.get("NAME_").toString(),"type_key_",RandomStringUtils.randomAlphabetic(6),
+                            "stru_type_","1","PARENT_ID_",neiId,"DEPTH_","2","PATH_",joinWithDot(neiId,neiFu,onlyNeiId),
+                            "IS_LEAF_","Y","OWNER_ID_","0","TENANT_ID_","-999","AUTHORITY_NAME",neiAuthName.toString()));
+
+                    list.add(build("ID_",onlyWaiId,"CATEGORY_KEY_","FILE_TYPE","name_",item.get("NAME_").toString(),"type_key_",RandomStringUtils.randomAlphabetic(6),
+                            "stru_type_","1","PARENT_ID_",waiId,"DEPTH_","2","PATH_",joinWithDot(waiId,waiFu,onlyWaiId),
+                            "IS_LEAF_","Y","OWNER_ID_","0","TENANT_ID_","-999","AUTHORITY_NAME",waiAuthName.toString()));
+
+                    //创建4级,外键是来自于3级,所以只能一步到位
+                    List<Map<String, Object>> mapList = findDept(deptList,"4",item.get("ID_").toString());
+                    for (Map<String, Object> map: mapList) {
+
+                        String onlyNeiFourId = UniqueIdUtil.getId(); //所有内部4级架构
+                        String xiangMuId = UniqueIdUtil.getId();//项目类sop
+                        String guanLiId = UniqueIdUtil.getId();//管理类sop
+                        String sheBeiId = UniqueIdUtil.getId();//设备类sop
+                        String neiXianId = UniqueIdUtil.getId();//受限类
+
+                        neiAuthNameForu.set("diDian",diDian);
+                        JSONArray buMenForu = stream(map.get("PATH_").toString());
+                        neiAuthNameForu.set("buMen",buMenForu);//内部文件替换部门权限
+
+                        String onlyWaiFourId = UniqueIdUtil.getId(); //所有外部4级架构
+                        String sheBeiShuoMingId = UniqueIdUtil.getId();//设备使用说明
+                        String shiJiShuoMingId = UniqueIdUtil.getId();//试剂使用说明书
+                        String faLuFaGuiId = UniqueIdUtil.getId();//法律法规
+                        String hangYeId = UniqueIdUtil.getId();//行业标准
+                        String canKaoId = UniqueIdUtil.getId();//参考文献
+                        String shuJiId = UniqueIdUtil.getId();//书籍
+                        String qiTaId = UniqueIdUtil.getId();//其他
+                        String waiXianId = UniqueIdUtil.getId();//受限类
+
+                        waiAuthNameFour.set("diDian",diDian);
+
+                        list.add(build("ID_",onlyNeiFourId,"CATEGORY_KEY_","FILE_TYPE","name_",map.get("NAME_").toString(),"type_key_",item.get("PARTY_ALIAS_").toString(),
+                                "stru_type_","1","PARENT_ID_",onlyNeiId,"DEPTH_","2","PATH_",joinWithDot(neiFu,neiId,onlyNeiId,onlyNeiFourId),
+                                "IS_LEAF_","Y","OWNER_ID_","0","TENANT_ID_","-999","AUTHORITY_NAME",neiAuthNameForu.toString()));
+                        //内部文件的所有子集
+                        //项目类sop
+                        list.add(build("ID_",xiangMuId,"CATEGORY_KEY_",FileEnumeration.N_XIANG_MU_LEI_SOP.categoryKey,"name_",FileEnumeration.N_XIANG_MU_LEI_SOP.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.N_XIANG_MU_LEI_SOP.struType,"PARENT_ID_",onlyNeiFourId,"DEPTH_",FileEnumeration.N_XIANG_MU_LEI_SOP.depth,
+                                "PATH_",joinWithDot(neiFu,neiId,onlyNeiId,onlyNeiFourId,xiangMuId),"IS_LEAF_",FileEnumeration.N_XIANG_MU_LEI_SOP.isLeaf,"OWNER_ID_",FileEnumeration.N_XIANG_MU_LEI_SOP.ownerId,
+                                "TENANT_ID_",FileEnumeration.N_XIANG_MU_LEI_SOP.tenantId,"AUTHORITY_NAME",neiAuthNameForu.toString()));
+                        //管理类sop
+                        list.add(build("ID_",guanLiId,"CATEGORY_KEY_",FileEnumeration.N_GUAN_LI_LEI_SOP.categoryKey,"name_",FileEnumeration.N_GUAN_LI_LEI_SOP.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.N_GUAN_LI_LEI_SOP.struType,"PARENT_ID_",onlyNeiFourId,"DEPTH_",FileEnumeration.N_GUAN_LI_LEI_SOP.depth,
+                                "PATH_",joinWithDot(neiFu,neiId,onlyNeiId,onlyNeiFourId,guanLiId),"IS_LEAF_",FileEnumeration.N_GUAN_LI_LEI_SOP.isLeaf,"OWNER_ID_",FileEnumeration.N_GUAN_LI_LEI_SOP.ownerId,
+                                "TENANT_ID_",FileEnumeration.N_GUAN_LI_LEI_SOP.tenantId,"AUTHORITY_NAME",neiAuthNameForu.toString()));
+                        // 设备类sop
+                        list.add(build("ID_",sheBeiId,"CATEGORY_KEY_",FileEnumeration.N_SHE_BEI_LEI_SOP.categoryKey,"name_",FileEnumeration.N_SHE_BEI_LEI_SOP.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.N_SHE_BEI_LEI_SOP.struType,"PARENT_ID_",onlyNeiFourId,"DEPTH_",FileEnumeration.N_SHE_BEI_LEI_SOP.depth,
+                                "PATH_",joinWithDot(neiFu,neiId,onlyNeiId,onlyNeiFourId,sheBeiId),"IS_LEAF_",FileEnumeration.N_SHE_BEI_LEI_SOP.isLeaf,"OWNER_ID_",FileEnumeration.N_SHE_BEI_LEI_SOP.ownerId,
+                                "TENANT_ID_",FileEnumeration.N_SHE_BEI_LEI_SOP.tenantId,"AUTHORITY_NAME",neiAuthNameForu.toString()));
+                        // 受限类
+                        list.add(build("ID_",neiXianId,"CATEGORY_KEY_",FileEnumeration.N_SHOU_XIAN_LEI.categoryKey,"name_",FileEnumeration.N_SHOU_XIAN_LEI.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.N_SHOU_XIAN_LEI.struType,"PARENT_ID_",onlyNeiFourId,"DEPTH_",FileEnumeration.N_SHOU_XIAN_LEI.depth,
+                                "PATH_",joinWithDot(neiFu,neiId,onlyNeiId,onlyNeiFourId,neiXianId),"IS_LEAF_",FileEnumeration.N_SHOU_XIAN_LEI.isLeaf,"OWNER_ID_",FileEnumeration.N_SHOU_XIAN_LEI.ownerId,
+                                "TENANT_ID_",FileEnumeration.N_SHOU_XIAN_LEI.tenantId,"AUTHORITY_NAME",neiAuthNameForu.toString()));
+
+
+
+                        list.add(build("ID_",onlyWaiFourId,"CATEGORY_KEY_","FILE_TYPE","name_",map.get("NAME_").toString(),"type_key_",item.get("PARTY_ALIAS_").toString(),
+                                "stru_type_","1","PARENT_ID_",onlyWaiId,"DEPTH_","2","PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId),
+                                "IS_LEAF_","Y","OWNER_ID_","0","TENANT_ID_","-999","AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        //设备使用说明
+                        list.add(build("ID_",sheBeiShuoMingId,"CATEGORY_KEY_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.categoryKey,"name_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,sheBeiShuoMingId),"IS_LEAF_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.isLeaf,"OWNER_ID_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_SHE_BEI_SHI_YONG_SHUO_MING_SHU.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 试剂使用说明书
+                        list.add(build("ID_",shiJiShuoMingId,"CATEGORY_KEY_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.categoryKey,"name_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,shiJiShuoMingId),"IS_LEAF_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.isLeaf,"OWNER_ID_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_SHI_JI_SHI_YONG_SHUO_MING_SHU.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 法律法规
+                        list.add(build("ID_",faLuFaGuiId,"CATEGORY_KEY_",FileEnumeration.W_FA_LU_FAG_UI.categoryKey,"name_",FileEnumeration.W_FA_LU_FAG_UI.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_FA_LU_FAG_UI.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_FA_LU_FAG_UI.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,faLuFaGuiId),"IS_LEAF_",FileEnumeration.W_FA_LU_FAG_UI.isLeaf,"OWNER_ID_",FileEnumeration.W_FA_LU_FAG_UI.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_FA_LU_FAG_UI.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 行业标准
+                        list.add(build("ID_",hangYeId,"CATEGORY_KEY_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.categoryKey,"name_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,hangYeId),"IS_LEAF_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.isLeaf,"OWNER_ID_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_HANG_YE_BIAO_ZHUN.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 参考文献
+                        list.add(build("ID_",canKaoId,"CATEGORY_KEY_",FileEnumeration.W_CAN_KAO_WEN_XIAN.categoryKey,"name_",FileEnumeration.W_CAN_KAO_WEN_XIAN.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_CAN_KAO_WEN_XIAN.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_CAN_KAO_WEN_XIAN.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,canKaoId),"IS_LEAF_",FileEnumeration.W_CAN_KAO_WEN_XIAN.isLeaf,"OWNER_ID_",FileEnumeration.W_CAN_KAO_WEN_XIAN.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_CAN_KAO_WEN_XIAN.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 书籍
+                        list.add(build("ID_",shuJiId,"CATEGORY_KEY_",FileEnumeration.W_SHU_JI.categoryKey,"name_",FileEnumeration.W_SHU_JI.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_SHU_JI.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_SHU_JI.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,shuJiId),"IS_LEAF_",FileEnumeration.W_SHU_JI.isLeaf,"OWNER_ID_",FileEnumeration.W_SHU_JI.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_SHU_JI.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 其他
+                        list.add(build("ID_",qiTaId,"CATEGORY_KEY_",FileEnumeration.W_QI_TA.categoryKey,"name_",FileEnumeration.W_QI_TA.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_QI_TA.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_QI_TA.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,qiTaId),"IS_LEAF_",FileEnumeration.W_QI_TA.isLeaf,"OWNER_ID_",FileEnumeration.W_QI_TA.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_QI_TA.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                        // 受限类
+                        list.add(build("ID_",waiXianId,"CATEGORY_KEY_",FileEnumeration.W_SHOU_XIAN_LIE.categoryKey,"name_",FileEnumeration.W_SHOU_XIAN_LIE.name,
+                                "type_key_",RandomStringUtils.randomAlphabetic(6),"stru_type_",FileEnumeration.W_SHOU_XIAN_LIE.struType,"PARENT_ID_",onlyWaiFourId,"DEPTH_",FileEnumeration.W_SHOU_XIAN_LIE.depth,
+                                "PATH_",joinWithDot(waiFu,waiId,onlyWaiId,onlyWaiFourId,waiXianId),"IS_LEAF_",FileEnumeration.W_SHOU_XIAN_LIE.isLeaf,"OWNER_ID_",FileEnumeration.W_SHOU_XIAN_LIE.ownerId,
+                                "TENANT_ID_",FileEnumeration.W_SHOU_XIAN_LIE.tenantId,"AUTHORITY_NAME",waiAuthNameFour.toString()));
+                    }
+
+                }
+            }
+        }
+        return list;
+    }
+
+    public Map<String,Object> build(Object... keyValues){
+        Map<String, Object> map = new HashMap<>();
+        for (int i = 0; i < keyValues.length; i += 2) {
+            map.put((String) keyValues[i], keyValues[i + 1]);
+        }
+        return map;
+    }
+
+    public String joinWithDot(String... strings) {
+        return String.join(".", strings) + ".";
+    }
+
+    public JSONArray  stream(String deptIds){
+        JSONArray resultArray = new JSONArray();
+        JSONArray innerArray = new JSONArray();
+
+        String[] parts = deptIds.split("\\.");
+        for (String part : parts) {
+            innerArray.add(part);
+        }
+
+        resultArray.add(innerArray);
+        return resultArray;
+    }
+
+    public List<Map<String, Object>> findDept(List<Map<String, Object>> deptList,String depth,String deptId){
+        return deptList.stream()
+                .filter(dept -> depth.equals(dept.get("DEPTH_").toString()))  // 使用equals比较字符串
+                .filter(dept -> dept.get("PATH_").toString().contains(deptId))
+                .collect(Collectors.toList());
+    }
+
+    public String findDeptName(List<Map<String, Object>> deptList,String depth,String deptName){
+        String str = "";
+        List<Map<String, Object>> list = deptList.stream()
+                .filter(dept -> depth.equals(dept.get("DEPTH_").toString()))  // 使用equals比较字符串
+                .filter(dept -> deptName.equals(dept.get("NAME_").toString()))
+                .collect(Collectors.toList());
+        if (list.size()>0){
+            str = list.get(0).get("PATH_").toString();
+        }
+        return str;
+    }
+
+    private void executeAdd(List<Map<String, Object>> list,List<Map<String, Object>> assemblyData) throws Exception {
+       List<Map<String, Object>> lists = new ArrayList<>();
+       lists.addAll(list);
+       lists.addAll(assemblyData);
+
+        for (Map<String, Object> val : lists) {
+           // Map<String, Object> val = this.transformUpperCase(val1);
+            val.put("CREATE_BY_", "1");
+            val.put("CREATE_TIME_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+            val.put("UPDATE_TIME_", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+            commonDao.execute(this.buildInsertSql(val, "ibps_cat_type"));
+        }
+    }
+
+}