Browse Source

更新同步oa事务代码

Heyuan 9 months ago
parent
commit
8c3c095997

+ 59 - 57
src/com/kingdee/eas/custom/synctask/SyncTranForOAFacadeControllerBean.java

@@ -57,7 +57,16 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     private static Logger logger =
             Logger.getLogger(SyncTranForOAFacadeControllerBean.class);
     private Properties propt = new Properties();
+    private static Map<String, String> personStatusMap = new HashMap<String, String>();
 
+    static {
+        personStatusMap.put("001", "正式");//正式员工
+        personStatusMap.put("002", "试用");//试用员工
+        personStatusMap.put("S06", "临时工");//临时工
+        personStatusMap.put("021", "解聘");//解聘
+        personStatusMap.put("S09", "离职");//离职
+        personStatusMap.put("011", "退休");//退休
+    }
 
     public SyncTranForOAFacadeControllerBean() throws BOSException {
         String syncOAConfigPath = System.getProperty("EAS_HOME") + "/server/properties/scy/syncOAConfig.properties";
@@ -197,6 +206,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             String data = mapper.writeValueAsString(dataList);
             String params = String.format("token = %s &data = %s", getToken(), data);
             logger.error("executeSyncOrgUnitToOA----------------------params" + params);
+            syncLogInfo.setRequestParams(params);
             //封装请求参数
             String syncOrgUnitApiUrl = this.propt.getProperty("syncOrgUnitApiUrl");
             logger.error("executeSyncOrgUnitToOA----------------------syncOrgUnitApiUrl" + syncOrgUnitApiUrl);
@@ -388,6 +398,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
         OkHttpClient client = new OkHttpClient();
         MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
         String data = String.format("token = %s &data = %s", getToken(), param);
+        syncLogInfo.setRequestParams(data);
         //logger.error("synAdminOrgRequest----------------------date" + data);
         RequestBody body = RequestBody.create(mediaType, data);
         Request request = new Request.Builder()
@@ -489,6 +500,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             //封装请求参数
             String data = mapper.writeValueAsString(dataList);
             String params = String.format("token = %s &data = %s", getToken(), data);
+            syncLogInfo.setRequestParams(params);
             logger.error("executeSyncPersonToOA----------------------params----" + params);
             //封装请求参数
             String syncPersonApiUrl = this.propt.getProperty("syncPersonApiUrl");
@@ -550,30 +562,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
         //状态
         EmployeeTypeInfo employeeType = personInfo.getEmployeeType();
         String number = employeeType.getNumber();
-        String personStatus = "";
-        switch (number) {
-            case "001": //正式员工
-                personStatus = "正式";
-                break;
-            case "002": //试用员工
-                personStatus = "试用";
-                break;
-            case "S06": //临时工
-                personStatus = "临时";
-                break;
-            case "021": //解聘
-                personStatus = "解聘";
-                break;
-            case "S09": //离职
-                personStatus = "离职";
-                break;
-            case "011": //退休
-                personStatus = "退休";
-                break;
-            default:
-                personStatus = "无效";
-                break;
-        }
+        String personStatus = personStatusMap.getOrDefault(number, "无效");
         person.setStatus(personStatus);
         //办公地点 @todo
         IObjectValue workPlace = (IObjectValue) personInfo.get("workPlace");
@@ -621,7 +610,6 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
         person.setJobactivityid("费用会计");
         //职务类型
         person.setJobactivityid("专业类");
-
         return person;
     }
 
@@ -669,53 +657,57 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     protected void _syncPersonFromOAByNumber(Context ctx, String personNumbers) throws BOSException, EASBizException {
         super._syncPersonFromOAByNumber(ctx, personNumbers);
         ISyncLog iSyncLog = SyncLogFactory.getLocalInstance(ctx);
-        SyncLogInfo syncLogInfo = new SyncLogInfo();
-        syncLogInfo.setEntityName(SyncEntityNameEnum.person);
-        syncLogInfo.setDataDirection(DataDirectionEnum.flowInto);
-        syncLogInfo.setDockingSystem(DockingSystemEnum.OA);
         logger.error("_syncPersonFromOAByNumber -> personNumbers" + personNumbers);
-        try {
-            String updatePersonSql = "update t_bd_person set cfOAId = ? where fnumber = ?";
-            int pagesize = 2000;//每页数量
-            int curpage = 1;//当前页
-            int totalSize = 0;//总条数
-            int totalPage = 0;//总页数
-            List<Object[]> updateParams = new ArrayList<Object[]>();
-            boolean flag = true;
-            do {
-                totalSize = executeSyncPersonFromOA(updateParams, curpage, pagesize, personNumbers);
+        int pagesize = 2000;//每页数量
+        int curpage = 1;//当前页
+        int totalSize = 0;//总条数
+        int totalPage = 0;//总页数
+        boolean flag = true;
+        do {
+            SyncLogInfo syncLogInfo = new SyncLogInfo();
+            syncLogInfo.setEntityName(SyncEntityNameEnum.person);
+            syncLogInfo.setDataDirection(DataDirectionEnum.flowInto);
+            syncLogInfo.setDockingSystem(DockingSystemEnum.OA);
+            try {
+                totalSize = executeSyncPersonFromOA(ctx, curpage, pagesize, personNumbers, syncLogInfo);
                 if (flag) {
                     totalPage = totalSize % pagesize == 0 ? totalSize / pagesize : totalSize / pagesize + 1;
                     flag = false;
                 }
                 curpage++;
-            } while (curpage <= totalPage);
-            if (!updateParams.isEmpty()) {
-                DbUtil.executeBatch(ctx, updatePersonSql, updateParams);
+                iSyncLog.save(syncLogInfo);
+            } catch (Exception e) {
+                e.printStackTrace();
+                syncLogInfo.setSyncStatus(SyncStatusEnum.ERROR);
+                syncLogInfo.setSyncResult(e.getMessage());
+                iSyncLog.save(syncLogInfo);
+                throw new BOSException(e.getMessage());
             }
-            syncLogInfo.setSyncStatus(SyncStatusEnum.SUCCESS);
-            syncLogInfo.setSyncCount(updateParams.size());
-            syncLogInfo.setSuccessNum(updateParams.size());
-            iSyncLog.save(syncLogInfo);
-        } catch (IOException e) {
-            e.printStackTrace();
-            syncLogInfo.setSyncStatus(SyncStatusEnum.ERROR);
-            syncLogInfo.setSyncResult(e.getMessage());
-            iSyncLog.save(syncLogInfo);
-            throw new BOSException(e.getMessage());
-        }
+        } while (curpage <= totalPage);
     }
 
 
     /**
      * 执行从OA系统同步人员信息
      *
-     * @param updateParams
+     * @param ctx
      * @param curpage
+     * @param pagesize
+     * @param personNumbers
+     * @param syncLogInfo
      * @return
+     * @throws IOException
+     * @throws BOSException
+     * @throws EASBizException
      */
-    public Integer executeSyncPersonFromOA(List<Object[]> updateParams, int curpage, int pagesize, String personNumbers)
+    public Integer executeSyncPersonFromOA(Context ctx,
+                                           int curpage,
+                                           int pagesize,
+                                           String personNumbers,
+                                           SyncLogInfo syncLogInfo)
             throws IOException, BOSException, EASBizException {
+        String updatePersonSql = "update t_bd_person set cfOAId = ? where fnumber = ?";
+        List<Object[]> updateParams = new ArrayList<Object[]>();
         //封装请求参数
         String params = null;
         if (StringUtils.isEmpty(personNumbers)) {
@@ -723,6 +715,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
         } else {
             params = String.format("token = %s &params = {\"workcode\":\"%s\",\"pagesize\":%d,\"curpage\":%d}", getToken(), personNumbers, pagesize, curpage);
         }
+        syncLogInfo.setRequestParams(params);
         logger.error("executeSyncPersonFromOA----------------------params" + params);
         //封装请求参数
         String getHrmUserApiUrl = this.propt.getProperty("getHrmUserApiUrl");
@@ -759,12 +752,21 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                         updateParams.add(objects);
                     }
                 }
+                if (!updateParams.isEmpty()) {
+                    DbUtil.executeBatch(ctx, updatePersonSql, updateParams);
+                }
+                syncLogInfo.setSyncStatus(SyncStatusEnum.SUCCESS);
+                syncLogInfo.setSyncCount(updateParams.size());
+                syncLogInfo.setSuccessNum(updateParams.size());
                 return totalSize;
             } else {
-                throw new BOSException(msg);
+                syncLogInfo.setSyncStatus(SyncStatusEnum.FAIL);
+                syncLogInfo.setSyncResult(msg);
             }
         } else {
-            throw new BOSException("请求超时");
+            syncLogInfo.setSyncStatus(SyncStatusEnum.FAIL);
+            syncLogInfo.setSyncResult("请求超时");
         }
+        return 0;
     }
 }