Sfoglia il codice sorgente

1.MDM同步改为分页同步,每页同步条数配置在nckd_commonparams里面

Tyx 4 giorni fa
parent
commit
b2a95b5f52

+ 7 - 21
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/haos/staff/plugin/task/SyncAdminOrgTask.java

@@ -111,32 +111,18 @@ public class SyncAdminOrgTask extends AbstractTask implements Plugin {
                 buildPersonJSON(personOb, totalOrgSet, bosOrgMap);
                 //获取调用接口地址
                 String url = SyncUtil.getUrl("org_url");
-                log.info("-------- 组织同步调用url : " + url + " --------");
-                //调用接口
-                JSONObject response = SyncUtil.doPostByHttpClient(url, ob);
-                //处理返回结果
-                String status = SyncUtil.dealResponseStatus(response);
-                //记录日志
-                SyncUtil.createLog(status, startTime, endTime, ob.toJSONString(), response.toJSONString(), SyncUtil.SyncOrg);
+                SyncUtil.batchPost(url, ob, SyncUtil.SyncOrg, startTime, endTime);
+
+                //组织下级岗位同步:
                 if(posOb.getJSONArray("obj").size() > 0) {
                     url = SyncUtil.getUrl("position_url");
-                    log.info("-------- 组织同步下级岗位调用url : " + url + " --------");
-                    //调用接口
-                    response = SyncUtil.doPostByHttpClient(url, posOb);
-                    //处理返回结果
-                    status = SyncUtil.dealResponseStatus(response);
-                    //记录日志
-                    SyncUtil.createLog(status, startTime, endTime, posOb.toJSONString(), response.toJSONString(), SyncUtil.SyncOrg_Position);
+                    SyncUtil.batchPost(url, ob, SyncUtil.SyncOrg_Position, startTime, endTime);
                 }
+
+                //组织下级员工同步:
                 if(personOb.getJSONArray("obj").size() > 0) {
                     url = SyncUtil.getUrl("person_url");
-                    log.info("-------- 组织同步下级人员调用url : " + url + " --------");
-                    //调用接口
-                    response = SyncUtil.doPostByHttpClient(url, personOb);
-                    //处理返回结果
-                    status = SyncUtil.dealResponseStatus(response);
-                    //记录日志
-                    SyncUtil.createLog(status, startTime, endTime, personOb.toJSONString(), response.toJSONString(), SyncUtil.SyncOrg_Person);
+                    SyncUtil.batchPost(url, ob, SyncUtil.SyncOrg_Person, startTime, endTime);
                 }
             }
         } catch (ParseException e) {

+ 2 - 6
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/haos/staff/plugin/task/SyncPersonTask.java

@@ -58,12 +58,8 @@ public class SyncPersonTask extends AbstractTask implements Plugin {
                 SyncUtil.createLog(SyncUtil.v_success, startTime, endTime, "未查询到变化人员", "未调用", SyncUtil.SyncPerson);
                 return;
             }
-            //调用接口
-            JSONObject response = SyncUtil.doPostByHttpClient(url, ob);
-            //处理返回结果
-            String status = SyncUtil.dealResponseStatus(response);
-            //记录日志
-            SyncUtil.createLog(status, startTime, endTime, ob.toJSONString(), response.toJSONString(), SyncUtil.SyncPerson);
+            //Tyx 2025-05-07 改成分批传输
+            SyncUtil.batchPost(url, ob, SyncUtil.SyncPerson, startTime, endTime);
         } catch (ParseException e) {
             SyncUtil.createLog(SyncUtil.v_error, startTime, endTime, null, e.getMessage(), SyncUtil.SyncPerson);
         } catch (IOException e) {

+ 2 - 6
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/haos/staff/plugin/task/SyncPositionTask.java

@@ -83,12 +83,8 @@ public class SyncPositionTask extends AbstractTask implements Plugin {
                 log.info("-------- 岗位同步调用url : " + url + " --------");
                 //构建入参
                 buildJSON(ob, posDyArr, changeOperateMap, orgDyxMap);
-                //调用接口
-                JSONObject response = SyncUtil.doPostByHttpClient(url, ob);
-                //处理返回结果
-                String status = SyncUtil.dealResponseStatus(response);
-                //记录日志
-                SyncUtil.createLog(status, startTime, endTime, ob.toJSONString(), response.toJSONString(), SyncUtil.SyncPosition);
+                // 2025-05-07 Tyx 改为分批传输 默认300一批
+                SyncUtil.batchPost(url, ob, SyncUtil.SyncPosition, startTime, endTime);
             }
         } catch (ParseException e) {
             SyncUtil.createLog(SyncUtil.v_error, startTime, endTime, e.getMessage(), "未调用", SyncUtil.SyncPosition);

+ 46 - 2
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/haos/staff/plugin/task/SyncUtil.java

@@ -189,6 +189,51 @@ public class SyncUtil {
         });
     }
 
+    /**
+     * 分批调用MDM接口
+     * @param url 接口地址
+     * @param bodyData 入参
+     * @param type 同步类型
+     * @param startTime 变动开始时间
+     * @param endTime 变动结束时间
+     * @throws IOException
+     */
+    public static void batchPost(String url, JSONObject bodyData, String type, String startTime, String endTime) throws IOException {
+        int size = getBatchSize();
+        JSONArray oldArr = bodyData.getJSONArray("obj");
+        int totalSize = bodyData.getJSONArray("obj").size();    //总条数
+        JSONObject newOb = new JSONObject();
+        int totalPage = totalSize % size == 0 ? totalSize / size : totalSize / size + 1;    //总页数
+        for (int i = 1; i <= totalPage; i++) {
+            int startIndex = (i - 1) * size;
+            int endIndex = Math.min(startIndex + size, totalSize);
+            JSONArray newArr = new JSONArray();
+            for (int m = startIndex; m < endIndex; m++) {
+                newArr.add(oldArr.get(m));
+            }
+            newOb.put("obj", newArr);
+            //调用接口
+            JSONObject response = SyncUtil.doPostByHttpClient(url, newOb);
+            //处理返回结果
+            String status = SyncUtil.dealResponseStatus(response);
+            //记录日志
+            SyncUtil.createLog(status, startTime, endTime, newOb.toJSONString(), response.toJSONString(), type);
+        }
+    }
+
+    /**
+     * 获取分页条数
+     * @return
+     */
+    public static int getBatchSize () {
+        QFilter filter = new QFilter("number", QCP.equals, "MDM");
+        filter.and("nckd_entryentity.nckd_key",QCP.equals, "size");
+        DynamicObject bill = QueryServiceHelper.queryOne("nckd_commonparams", "nckd_entryentity.nckd_value", new QFilter[]{filter});
+        return Integer.valueOf(bill.getString("nckd_entryentity.nckd_value"));
+    }
+
+
+
     /**
      *
      * @param url
@@ -201,8 +246,7 @@ public class SyncUtil {
         headers.put("Accept", "*/*");
         logger.info(String.format("url[%s],data[%s]", url, bodyData.toJSONString()));
         System.out.println(String.format("url[%s],data[%s]", url, bodyData.toJSONString()));
-
-        String responseEntify = HttpClientUtils.postjson(url, headers, bodyData.toJSONString());
+        String responseEntify = HttpClientUtils.postjson(url, headers, bodyData.toJSONString(), 10000, 10000);
 
         logger.info(responseEntify);
         JSONObject result = (JSONObject)JSONObject.parse(responseEntify);