Bladeren bron

讲者功能

wangjun 3 weken geleden
bovenliggende
commit
4d5b2e0bb7

+ 5 - 3
code/jyyy/nckd-jimin-jyyy-bd/src/main/java/nckd/jimin/jyyy/bd/common/oauth/FanWeiUtils.java

@@ -18,7 +18,7 @@ public class FanWeiUtils {
 
     public static String getFanWeiToken(String url) {
         try {
-            Map<String, String> mapentity = CommonHelperUtils.getCommonParams("fanwei");
+            Map<String, String> mapentity = CommonHelperUtils.getCommonParams("fanwei-prod");
             if(mapentity == null){
                 return null;
             }
@@ -28,8 +28,8 @@ public class FanWeiUtils {
             String param_app_key = mapentity.get("app_key");
             String param_grant_type = mapentity.get("grant_type");
             String param_app_secret = mapentity.get("app_secret");
-            String param_code_url = mapentity.get("getcode1");
-            String param_token_url = mapentity.get("gettoken1");
+            String param_code_url = mapentity.get("getcode");
+            String param_token_url = mapentity.get("gettoken");
             String post_getspeaker_url = mapentity.get("getspeaker");
 
             if( StringUtils.isEmpty(param_corpid) || StringUtils.isEmpty(param_app_secret)
@@ -123,10 +123,12 @@ public class FanWeiUtils {
         header.put("operator", "037267");
 
         // 构建 datajson 对象
+        JSONObject datajsonParent = new JSONObject();
         JSONObject datajson = new JSONObject();
         datajson.put("mainTable", new JSONObject()); // mainTable 是一个空对象
         datajson.put("pageInfo", pageInfo);
         datajson.put("header", header);
+        datajsonParent.put("datajson", datajson);
 
         // 构建 requestData 数组
         JSONArray requestData = new JSONArray();

+ 203 - 76
code/jyyy/nckd-jimin-jyyy-bd/src/main/java/nckd/jimin/jyyy/bd/task/impl/SynSapServiceImpl.java

@@ -13,6 +13,7 @@ import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.bos.util.StringUtils;
+import nckd.jimin.jyyy.bd.common.oauth.FanWeiUtils;
 import nckd.jimin.jyyy.bd.task.SynSapService;
 import nckd.jimin.jyyy.bd.task.SyncSapUtils;
 import java.util.*;
@@ -24,7 +25,8 @@ public class SynSapServiceImpl implements SynSapService {
     private static final Log logger = LogFactory.getLog(SynSapServiceImpl.class);
 
     /**
-     *同步成本中心
+     * 同步成本中心
+     *
      * @param companyCode
      * @return
      */
@@ -36,7 +38,7 @@ public class SynSapServiceImpl implements SynSapService {
         String url = "costcenter";
         logger.info("同步SAP主数据_成本,参数:" + data);
         String response = SyncSapUtils.postDataToSAP(url, data);
-        if(StringUtils.isEmpty(response)){
+        if (StringUtils.isEmpty(response)) {
             result.put("code", "300");
             result.put("msg", "同步SAP主数据_成本,同步失败");
             return result;
@@ -44,42 +46,42 @@ public class SynSapServiceImpl implements SynSapService {
         JSONObject rData = JSONObject.parseObject(response);
         String etype = rData.getString("E_TYPE");
 
-        if(!"S".equals(etype)){
+        if (!"S".equals(etype)) {
             result.put("code", "301");
-            result.put("msg", "同步SAP主数据_成本,E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
+            result.put("msg", "同步SAP主数据_成本,E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
             return result;
         }
 
         JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
-        if(rEtItem == null){
+        if (rEtItem == null) {
             result.put("code", "302");
             result.put("msg", "同步SAP主数据_成本,ET_ITEM参数为空");
             return result;
         }
 
         JSONArray rItemArray = rEtItem.getJSONArray("item");
-        if(rItemArray == null){
+        if (rItemArray == null) {
             result.put("code", "303");
             result.put("msg", "同步SAP主数据_成本,item参数为空");
             return result;
         }
 
         List<String> costNumList = new ArrayList<String>();
-        for(int i = 0; i < rItemArray.size(); ++i) {
+        for (int i = 0; i < rItemArray.size(); ++i) {
             JSONObject item = rItemArray.getJSONObject(i);
             String number = item.getString("KOSTL");
             costNumList.add(number);
         }
         //取组织对象
         QFilter qf = new QFilter("number", QCP.equals, companyCode);
-        DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org",  new QFilter[]{qf});
+        DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
 
         //取上级
-        DynamicObject parent = BusinessDataServiceHelper.loadSingle("bos_costcenter",  new QFilter[]{new QFilter("number", QCP.equals, companyCode)});
+        DynamicObject parent = BusinessDataServiceHelper.loadSingle("bos_costcenter", new QFilter[]{new QFilter("number", QCP.equals, companyCode)});
 
         QFilter qFilter = new QFilter("number", QCP.in, costNumList);
-       // QFilter qFilter1 = new QFilter("accountorg.number", QCP.equals, companyCode);
-        DynamicObject[] costDyns  = BusinessDataServiceHelper.load("bos_costcenter", "id,masterid,parent,number,name,accountorg,orgduty,status,enable", new QFilter[]{qFilter});
+        // QFilter qFilter1 = new QFilter("accountorg.number", QCP.equals, companyCode);
+        DynamicObject[] costDyns = BusinessDataServiceHelper.load("bos_costcenter", "id,masterid,parent,number,name,accountorg,orgduty,status,enable", new QFilter[]{qFilter});
         Map<String, DynamicObject> costMap =
                 Arrays.stream(costDyns)
                         .collect(Collectors.toMap(
@@ -90,33 +92,33 @@ public class SynSapServiceImpl implements SynSapService {
         ArrayList<DynamicObject> costList = new ArrayList<>();
         StringBuilder err = new StringBuilder();
 
-        for(int i = 0; i < rItemArray.size(); ++i) {
+        for (int i = 0; i < rItemArray.size(); ++i) {
             JSONObject item = rItemArray.getJSONObject(i);
             String number = item.getString("KOSTL");
 
             String name = item.getString("KTEXT");
-            if(i == 0 && (StringUtils.isEmpty(number) || StringUtils.isEmpty(name))){
+            if (i == 0 && (StringUtils.isEmpty(number) || StringUtils.isEmpty(name))) {
                 continue;
             }
-            if(StringUtils.isEmpty(number) || StringUtils.isEmpty(name)){
+            if (StringUtils.isEmpty(number) || StringUtils.isEmpty(name)) {
                 err.append("/n 存在项目编号或名称为空, " + number + name);
                 continue;
             }
 
-            if(EmptyUtils.isNotEmpty(number)){
+            if (EmptyUtils.isNotEmpty(number)) {
                 DynamicObject dyn = costMap.get(number);
-                if(dyn == null){
+                if (dyn == null) {
                     dyn = BusinessDataServiceHelper.newDynamicObject("bos_costcenter");
                     long Id = DB.genLongId("t_bos_costcenter");
                     dyn.set("id", Id);
                     dyn.set("number", number); // 编号
                     dyn.set("accountorg", companyDyn);//核算组织
-                    String orgduty=item.getString("KTEXT");
-                    if(EmptyUtils.isNotEmpty(orgduty)){
+                    String orgduty = item.getString("KTEXT");
+                    if (EmptyUtils.isNotEmpty(orgduty)) {
 
-                        String orgdutyValue=orgduty.substring(orgduty.length()-1);
+                        String orgdutyValue = orgduty.substring(orgduty.length() - 1);
 
-                        switch (orgdutyValue){
+                        switch (orgdutyValue) {
                             case "V"://销售
                                 dyn.set("orgduty", "3");
                                 break;
@@ -139,22 +141,22 @@ public class SynSapServiceImpl implements SynSapService {
                 dyn.set("name", item.getString("KTEXT"));////项目名称
                 dyn.set("status", "C");   ///单据状态
                 dyn.set("enable", "1");  //使用状态
-                if(EmptyUtils.isNotEmpty(parent )){
+                if (EmptyUtils.isNotEmpty(parent)) {
                     dyn.set("parent", parent);
                 }
-                logger.info("同步SAP主数据_成本,id:"+dyn.getLong("id")+"  -->"+Long.valueOf(dyn.getString("id")));
-                dyn.set("masterid",Long.valueOf(dyn.getString("id")));
+                logger.info("同步SAP主数据_成本,id:" + dyn.getLong("id") + "  -->" + Long.valueOf(dyn.getString("id")));
+                dyn.set("masterid", Long.valueOf(dyn.getString("id")));
                 costList.add(dyn);
             }
         }
 
-        if(costList.size()>0) {
+        if (costList.size() > 0) {
             Object[] save = SaveServiceHelper.save(costList.toArray(new DynamicObject[0]));
             int length = save.length;
-            logger.info("同步[成本]完成,本次新增数量:{},"+err, length);
+            logger.info("同步[成本]完成,本次新增数量:{}," + err, length);
             result.put("code", "200");
-            result.put("msg", "同步SAP主数据_成本,执行成功,本次同步数量"+length+err);
-        }else{
+            result.put("msg", "同步SAP主数据_成本,执行成功,本次同步数量" + length + err);
+        } else {
             result.put("code", "304");
             result.put("msg", "同步SAP主数据_没有数据");
         }
@@ -164,11 +166,11 @@ public class SynSapServiceImpl implements SynSapService {
 
     /**
      * 同步SAP主数据中的项目信息
-     *
+     * <p>
      * 本方法负责从SAP系统同步项目相关的主数据,处理并保存到当前系统中
      * 它首先从SAP获取项目数据,然后解析这些数据,并与系统中已存在的项目信息进行对比和更新
      * 如果项目在系统中不存在,则会创建新的项目记录;如果存在,则更新项目信息
-     *
+     * <p>
      * 1、根据 SAP 项目编码判断层级
      * 编码中的2010、2060 代表公司  1级项目(编码无点)按全局共享,2级项目阶段,按02、.03判断私分配隔(私有)
      * 需要代码自动判断创建1级项目
@@ -187,7 +189,7 @@ public class SynSapServiceImpl implements SynSapService {
         logger.info("同步SAP主数据_项目,参数:" + data);
         String response = SyncSapUtils.postDataToSAP(url, data);
 
-        if(StringUtils.isEmpty(response)){
+        if (StringUtils.isEmpty(response)) {
             result.put("code", "300");
             result.put("msg", "同步SAP主数据_项目,同步失败");
             return result;
@@ -196,39 +198,39 @@ public class SynSapServiceImpl implements SynSapService {
 
         String etype = rData.getString("E_TYPE");
 
-        if(!"S".equals(etype)){
+        if (!"S".equals(etype)) {
             result.put("code", "301");
-            result.put("msg", "同步SAP主数据_项目,E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
+            result.put("msg", "同步SAP主数据_项目,E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
             return result;
         }
 
         JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
-        if(rEtItem == null){
+        if (rEtItem == null) {
             result.put("code", "302");
             result.put("msg", "同步SAP主数据_项目,ET_ITEM参数为空");
             return result;
         }
 
         JSONArray rItemArray = rEtItem.getJSONArray("item");
-        if(rItemArray == null){
+        if (rItemArray == null) {
             result.put("code", "303");
             result.put("msg", "同步SAP主数据_项目,item参数为空");
             return result;
         }
 
         List<String> projectNumList = new ArrayList<String>();
-        for(int i = 0; i < rItemArray.size(); ++i) {
+        for (int i = 0; i < rItemArray.size(); ++i) {
             JSONObject item = rItemArray.getJSONObject(i);
             String number = item.getString("POSID");
             projectNumList.add(number);
         }
         //取组织对象
         QFilter qf = new QFilter("number", QCP.equals, companyCode);
-        DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org",  new QFilter[]{qf});
+        DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
 
         QFilter qFilter = new QFilter("number", QCP.in, projectNumList);
         QFilter qFilter1 = new QFilter("org.number", QCP.equals, companyCode);
-        DynamicObject[] dyns  = BusinessDataServiceHelper.load("bd_project", "id,number,name,fullname,parent,masterid,proleader,org,useorg,createorg,group,status,ctrlstrategy,level,isleaf,department,prostatus,enable", new QFilter[]{qFilter,qFilter1});
+        DynamicObject[] dyns = BusinessDataServiceHelper.load("bd_project", "id,number,name,fullname,parent,masterid,proleader,org,useorg,createorg,group,status,ctrlstrategy,level,isleaf,department,prostatus,enable", new QFilter[]{qFilter, qFilter1});
 
         Map<String, DynamicObject> projectMap =
                 Arrays.stream(dyns)
@@ -242,11 +244,11 @@ public class SynSapServiceImpl implements SynSapService {
         List<Object[]> useorgList = new ArrayList<>();
         StringBuilder err = new StringBuilder();
 
-        for(int i = 0; i < rItemArray.size(); ++i) {
+        for (int i = 0; i < rItemArray.size(); ++i) {
             JSONObject item = rItemArray.getJSONObject(i);
             String number = item.getString("POSID");
             String name = item.getString("POST1");
-            if(StringUtils.isEmpty(number) || StringUtils.isEmpty(name)){
+            if (StringUtils.isEmpty(number) || StringUtils.isEmpty(name)) {
                 err.append("  \n存在项目编号或名称为空, " + number + name);
                 continue;
             }
@@ -254,49 +256,49 @@ public class SynSapServiceImpl implements SynSapService {
             //if(!"CD20210404.2010.22".equals(number)) continue;
 
             String proleader = item.getString("USR03");
-            String department =  item.getString("DEPARTMENT");
+            String department = item.getString("DEPARTMENT");
             String type = item.getString("ZBY2");
             String billstatus = item.getString("STATUS");
             DynamicObject proleaderDyn = null;
             DynamicObject departmentDyn = null;
             DynamicObject typeDyn = null;
             DynamicObject projectStatusDyn = null;
-            if(StringUtils.isNotEmpty(proleader)){
+            if (StringUtils.isNotEmpty(proleader)) {
                 QFilter qf1 = new QFilter("number", QCP.equals, proleader);
-                proleaderDyn = BusinessDataServiceHelper.loadSingle("bos_user",  new QFilter[]{qf1});
+                proleaderDyn = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{qf1});
             }
-            if(StringUtils.isNotEmpty(department)){
+            if (StringUtils.isNotEmpty(department)) {
                 QFilter qf1 = new QFilter("number", QCP.equals, department);
-                departmentDyn = BusinessDataServiceHelper.loadSingle("bos_org",  new QFilter[]{qf1});
+                departmentDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf1});
             }
-            if(StringUtils.isNotEmpty(type)){
+            if (StringUtils.isNotEmpty(type)) {
                 QFilter qf1 = new QFilter("number", QCP.equals, type);
-                typeDyn = BusinessDataServiceHelper.loadSingle("bd_projectkind",  new QFilter[]{qf1});
+                typeDyn = BusinessDataServiceHelper.loadSingle("bd_projectkind", new QFilter[]{qf1});
             }
-            if(StringUtils.isNotEmpty(billstatus)){
+            if (StringUtils.isNotEmpty(billstatus)) {
                 QFilter qf1 = new QFilter("nckd_sapprojstatus", QCP.equals, billstatus);
-                projectStatusDyn = BusinessDataServiceHelper.loadSingle("bd_projectstatus",  new QFilter[]{qf1});
+                projectStatusDyn = BusinessDataServiceHelper.loadSingle("bd_projectstatus", new QFilter[]{qf1});
             }
             QFilter qf2 = new QFilter("number", QCP.equals, "SAP");
-            DynamicObject srcSysDyn = BusinessDataServiceHelper.loadSingle("bos_devportal_bizcloud",new QFilter[]{qf2});
+            DynamicObject srcSysDyn = BusinessDataServiceHelper.loadSingle("bos_devportal_bizcloud", new QFilter[]{qf2});
 
             DynamicObject dyn = projectMap.get(number);
-            if(dyn == null){
+            if (dyn == null) {
                 /*
                  * 处理一级项目,来自于项目编码前段编码  BD20200303.2010.07 ,BD20200303为一级项目编码
                  * */
                 DynamicObject parentDyn = null;
                 String parent = SyncSapUtils.getProjectNumberForParent(number);
-                if(StringUtils.isNotEmpty(parent)) {
+                if (StringUtils.isNotEmpty(parent)) {
 
                     parentDyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
                     long Id = DB.genLongId("t_bd_project");
                     parentDyn.set("id", Id);
-                    parentDyn.set("masterid",Id);
+                    parentDyn.set("masterid", Id);
                     parentDyn.set("number", parent); // 编号
                     parentDyn.set("org", DEFAULT_ORG_ID);  //一级项目放在顶层组织下
                     parentDyn.set("createorg", DEFAULT_ORG_ID);  //一级项目放在顶层组织下
-                    if(EmptyUtils.isNotEmpty(typeDyn)) {
+                    if (EmptyUtils.isNotEmpty(typeDyn)) {
                         parentDyn.set("group", typeDyn);  ///项目分类
                     }
                     parentDyn.set("level", 1);
@@ -307,16 +309,16 @@ public class SynSapServiceImpl implements SynSapService {
                     // parentDyn.set("prostatus", "PASS_S"); //项目状态 PASS通过
                     parentDyn.set("name", parent);
                     parentDyn.set("fullname", parent);
-                    if(EmptyUtils.isNotEmpty(proleaderDyn)) {
+                    if (EmptyUtils.isNotEmpty(proleaderDyn)) {
                         parentDyn.set("proleader", proleaderDyn);
                     }
-                    if(EmptyUtils.isNotEmpty(departmentDyn)) {
+                    if (EmptyUtils.isNotEmpty(departmentDyn)) {
                         parentDyn.set("department", departmentDyn);
                     }
-                    if(EmptyUtils.isNotEmpty(projectStatusDyn)) {
+                    if (EmptyUtils.isNotEmpty(projectStatusDyn)) {
                         parentDyn.set("prostatus", projectStatusDyn);
                     }
-                    if(EmptyUtils.isNotEmpty(srcSysDyn)) {
+                    if (EmptyUtils.isNotEmpty(srcSysDyn)) {
                         parentDyn.set("systemtypebase", srcSysDyn);
                     }
                     projectList.add(parentDyn);
@@ -328,8 +330,8 @@ public class SynSapServiceImpl implements SynSapService {
                 dyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
                 long Id = DB.genLongId("t_bd_project");
                 dyn.set("id", Id);
-                dyn.set("masterid",Id);
-                if(EmptyUtils.isNotEmpty(parentDyn)){
+                dyn.set("masterid", Id);
+                if (EmptyUtils.isNotEmpty(parentDyn)) {
                     dyn.set("parent", parentDyn);
                 }
                 dyn.set("number", number); // 编号
@@ -338,7 +340,7 @@ public class SynSapServiceImpl implements SynSapService {
                 dyn.set("isleaf", 1);
                 dyn.set("createorg", companyDyn.getPkValue());
                 dyn.set("useorg", companyDyn.getPkValue());
-                if(EmptyUtils.isNotEmpty(typeDyn)) {
+                if (EmptyUtils.isNotEmpty(typeDyn)) {
                     dyn.set("group", typeDyn);  ///项目分类
                 }
                 dyn.set("status", "C");        ///单据状态
@@ -357,35 +359,35 @@ public class SynSapServiceImpl implements SynSapService {
             }
             dyn.set("name", item.getString("POST1"));
             dyn.set("fullname", item.getString("POST1"));
-            if(EmptyUtils.isNotEmpty(proleaderDyn)) {
+            if (EmptyUtils.isNotEmpty(proleaderDyn)) {
                 dyn.set("proleader", proleaderDyn);
             }
-            if(EmptyUtils.isNotEmpty(departmentDyn)) {
+            if (EmptyUtils.isNotEmpty(departmentDyn)) {
                 dyn.set("department", departmentDyn);
             }
-            if(EmptyUtils.isNotEmpty(projectStatusDyn)) {
+            if (EmptyUtils.isNotEmpty(projectStatusDyn)) {
                 dyn.set("prostatus", projectStatusDyn);
             }
-            if(EmptyUtils.isNotEmpty(srcSysDyn)) {
+            if (EmptyUtils.isNotEmpty(srcSysDyn)) {
                 dyn.set("systemtypebase", srcSysDyn);
             }
             projectList.add(dyn);
         }
 
-        if(projectList.size()>0) {
+        if (projectList.size() > 0) {
             Object[] save = SaveServiceHelper.save(projectList.toArray(new DynamicObject[0]));
             int length = save.length;
-            logger.info("同步[项目]完成,本次新增数量:{},"+err, length);
+            logger.info("同步[项目]完成,本次新增数量:{}," + err, length);
             result.put("code", "200");
-            result.put("msg", "同步SAP主数据_项目,执行成功,本次同步数量"+length+err);
-        }else{
+            result.put("msg", "同步SAP主数据_项目,执行成功,本次同步数量" + length + err);
+        } else {
             result.put("code", "304");
-            result.put("msg", "同步SAP主数据_错误,"+err);
+            result.put("msg", "同步SAP主数据_错误," + err);
         }
         /***
          * 需要单独处理项目t_bd_project_u表数据,否则不能在界面查询出来
          */
-        if (useorgList.size()>0) {
+        if (useorgList.size() > 0) {
             baseDataService.savePrivateBaseDataUseRange("bd_project", useorgList);
             logger.info("同步[项目]完成,t_bd_project_u表");
         }
@@ -400,7 +402,7 @@ public class SynSapServiceImpl implements SynSapService {
         String url = "account";
         String response = SyncSapUtils.postDataToSAP(url, data);
 
-        if(StringUtils.isEmpty(response)){
+        if (StringUtils.isEmpty(response)) {
             result.put("code", "300");
             result.put("msg", "同步失败");
             return result;
@@ -409,21 +411,21 @@ public class SynSapServiceImpl implements SynSapService {
 
         String etype = rData.getString("E_TYPE");
 
-        if(!"S".equals(etype)){
+        if (!"S".equals(etype)) {
             result.put("code", "301");
-            result.put("msg", "E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
+            result.put("msg", "E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
             return result;
         }
 
         JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
-        if(rEtItem == null){
+        if (rEtItem == null) {
             result.put("code", "302");
             result.put("msg", "ET_ITEM参数为空");
             return result;
         }
 
         JSONArray rItemArray = rEtItem.getJSONArray("item");
-        if(rItemArray == null){
+        if (rItemArray == null) {
             result.put("code", "303");
             result.put("msg", "item参数为空");
             return result;
@@ -435,6 +437,131 @@ public class SynSapServiceImpl implements SynSapService {
 
     @Override
     public Map<String, String> synSpeakerForOA() {
-        return null;
+        Map<String, String> result = new HashMap<>();
+        logger.info("同步OA主数据_讲者");
+        String response = FanWeiUtils.getFanWeiToken("speaker");
+        //logger.info("返回的数据:"+response);
+        if(StringUtils.isEmpty(response)){
+            result.put("code", "300");
+            result.put("msg", "同步OA主数据_讲者失败");
+            return result;
+        }
+        JSONObject rData = JSONObject.parseObject(response);
+        JSONObject datajson=rData.getJSONObject("datajson");
+        if(datajson==null){
+            result.put("code", "301");
+            result.put("msg", "同步OA主数据_讲者,datajson参数为空");
+        }
+        Boolean status  = datajson.getBoolean("status");
+        if(status){
+            result.put("code", "302");
+            result.put("msg", "同步OA主数据_讲者,数据无效");
+        }
+
+        JSONArray datas=datajson.getJSONArray("datas");
+        if(datas==null){
+            result.put("code", "303");
+            result.put("msg", "同步OA主数据_讲者,datas参数为空");
+        }
+        //获取所有讲者身份证号
+        List<String> speakerIdList=new ArrayList<>();
+        for(int i=0;i<datas.size();i++){
+            JSONObject item=datas.getJSONObject(i);
+            JSONObject mainTable=item.getJSONObject("mainTable");
+            String sfzh=mainTable.getString("sfzh");
+            speakerIdList.add(sfzh);
+        }
+        QFilter qFilter = new QFilter("number", QCP.in, speakerIdList);
+        DynamicObject[] speakerDyns = BusinessDataServiceHelper.load("nckd_speaker", "number", new QFilter[]{qFilter});
+        Map<String, DynamicObject> speakerMap =
+                Arrays.stream(speakerDyns)
+                        .collect(Collectors.toMap(
+                                detail -> detail.getString("number"),
+                                detail -> detail, // 整个 DynamicObject 作为 value
+                                (existing, replacement) -> existing // 保留前面的值
+                        ));
+        ArrayList<DynamicObject> speakerDynList = new ArrayList<>();
+        StringBuilder err = new StringBuilder();
+
+        for(int i=0;i<datas.size();i++){
+            JSONObject item=datas.getJSONObject(i);
+            JSONObject mainTable=item.getJSONObject("mainTable");
+            //身份证号
+            String  sfzh=mainTable.getString("sfzh");
+            if(EmptyUtils.isEmpty(sfzh)){
+                err.append("第"+i+"条数据身份证号为空,");
+                continue;
+            }
+            //姓名
+            String zjxm=mainTable.getString("zjxm");
+            if(EmptyUtils.isEmpty(zjxm)){
+                err.append("第"+i+"条数据姓名为空,");
+                continue;
+            }
+            //任职医院
+            String rzyy=mainTable.getString("rzyy");
+            //社会单位
+            String shdw=mainTable.getString("shdw");
+            //治疗领域
+            String zlly=mainTable.getString("zlly");
+            //专家评定级别  0:院士级 1:国家级 2:区域/省级 3:城市级 4:普通级
+            String zjpdjb=mainTable.getString("zjpdjb");
+            //数据状态 1表示正常 单据
+            String data_status=mainTable.getString("data_status");
+            //创建人
+            String creator=mainTable.getString("creator");
+            //创建时间
+            //主数据内码
+            if(EmptyUtils.isNotEmpty(sfzh)){
+                DynamicObject dyn=speakerMap.get(sfzh);
+                if(dyn==null){
+                    dyn=BusinessDataServiceHelper.newDynamicObject("nckd_speaker");
+                    dyn.set("number", sfzh);
+                    dyn.set("name",zjxm);
+                    dyn.set("nckd_rzyy",rzyy);
+                    dyn.set("nckd_shdw",shdw);
+                    dyn.set("nckd_zlly",zlly);
+                    if(EmptyUtils.isNotEmpty(zjpdjb)){
+                        switch (zjpdjb){
+                            case "0":
+                                dyn.set("nckd_pdjb","院士级");
+                                break;
+                            case "1":
+                                dyn.set("nckd_pdjb","国家级");
+                                break;
+                            case "2":
+                                dyn.set("nckd_pdjb","区域/省级");
+                                break;
+                            case "3":
+                                dyn.set("nckd_pdjb","城市级");
+                                break;
+                            case "4":
+                                dyn.set("nckd_pdjb","普通级");
+                                break;
+                            default:break;
+                        }
+                    }
+                    //数据状态
+                    dyn.set("status",data_status);
+                    //creator创建人
+                    dyn.set("creator",creator);
+                    //使用状态
+                    dyn.set("enable", "1");
+                }
+                speakerDynList.add(dyn);
+            }
+
+        }
+        if(speakerDynList.size()>0) {
+            Object[] save = SaveServiceHelper.save(speakerDynList.toArray(new DynamicObject[0]));
+            int length = save.length;
+            logger.info("同步[讲者]完成,本次新增数量:{},"+err, length);
+            result.put("code", "200");
+            result.put("msg", "同步OA主数据_讲者,执行成功,本次同步数量"+length+err);
+        }else{
+            result.put("code", "304");
+            result.put("msg", "同步OA主数据_没有数据");
+        }
+        return result;
     }
 }