Selaa lähdekoodia

人员信息同步

“luojun” 9 kuukautta sitten
vanhempi
commit
6986f50578

+ 52 - 48
src/com/kingdee/eas/custom/synctask/SyncTranForOAFacadeControllerBean.java

@@ -53,13 +53,13 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             propt.load(new FileInputStream(syncOAConfigPath));
         } catch (IOException e) {
             e.printStackTrace();
-            String errorMsg = "鑾峰彇閰嶇疆鏂囦欢鎶ラ敊锛岃�妫€鏌ラ厤缃�細" + syncOAConfigPath + "   " + e.getMessage();
+            String errorMsg = "获取配置文件报错,请检查配置:" + syncOAConfigPath + "   " + e.getMessage();
             throw new BOSException(errorMsg);
         }
     }
 
     /**
-     * 鍚屾�缁勭粐
+     * 同步组织
      *
      * @param ctx
      * @param billds
@@ -80,7 +80,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
             List dataList = new ArrayList();
             //String actionType = action == null ? "" : action.getValue().toLowerCase();
-            //褰撳弬鏁癰illIds涓嶄负绌哄€兼椂锛屽�閲忓悓姝ュ弬鏁颁腑鐨勯儴闂ㄦ暟鎹�埌OA
+            //当参数billIds不为空值时,增量同步参数中的部门数据到OA
             FilterInfo filterInfo = null;
             if (!StringUtils.isEmpty(billds)) {
                 Set<String> adminOrgIds = AtsUtil.toSet(billds);
@@ -112,7 +112,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                 //adminOrg.setOrder((String.valueOf(adminOrgUnitInfo.getIndex())));
                 dataList.add(adminOrg);
             }
-            //鎵ц�鍚屾�缁勭粐鍒癘A
+            //执行同步组织到OA
             executeSyncOrgUnitToOA(ctx, dataList, syncLogInfo);
         } catch (Exception e) {
             e.printStackTrace();
@@ -125,7 +125,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
 
 
     /**
-     * 鎵ц�鍚屾�缁勭粐鍒癘A
+     * 执行同步组织到OA
      *
      * @param dataList
      * @return
@@ -133,15 +133,15 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     public void executeSyncOrgUnitToOA(Context ctx, List dataList, SyncLogInfo syncLogInfo) throws IOException, BOSException, EASBizException {
         if (dataList != null && dataList.size() > 0) {
             ObjectMapper mapper = new ObjectMapper();
-            //灏佽�璇锋眰鍙傛暟
+            //封装请求参数
             String data = mapper.writeValueAsString(dataList);
             String params = String.format("token = %s &data = %s", getToken(), data);
             logger.error("executeSyncOrgUnitToOA----------------------params" + params);
-            //灏佽�璇锋眰鍙傛暟
+            //封装请求参数
             String syncOrgUnitApiUrl = this.propt.getProperty("syncOrgUnitApiUrl");
             logger.error("executeSyncOrgUnitToOA----------------------syncOrgUnitApiUrl" + syncOrgUnitApiUrl);
             if (StringUtils.isEmpty(syncOrgUnitApiUrl)) {
-                throw new BOSException("鍚屾�缁勭粐鍒癘A鎺ュ彛鍦板潃涓嶈兘涓虹┖!");
+                throw new BOSException("同步组织到OA接口地址不能为空!");
             }
             OkHttpClient client = new OkHttpClient();
             MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
@@ -156,13 +156,13 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                     .addHeader("Connection", "keep-alive")
                     .build();
             Response response = client.newCall(request).execute();
-            //澶勭悊鍝嶅簲缁撴灉,鍐欏叆鏃ュ織
+            //处理响应结果,写入日志
             handlerResponse(ctx, response, syncLogInfo);
         }
     }
 
     /**
-     * 澶勭悊鍝嶅簲缁撴灉,鍐欏叆鏃ュ織
+     * 处理响应结果,写入日志
      *
      * @param ctx
      * @param response
@@ -186,16 +186,17 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             if (response.isSuccessful()) {
                 String code = respMap.getString("code");
                 if ("1".equals(code)) {
+                    JSONObject result = respMap.getJSONObject("result");
                     StringBuilder msg = new StringBuilder();
-                    for (String orgNumber : respMap.keySet()) {
-                        JSONObject jsonObject = respMap.getJSONObject(orgNumber);
+                    for (String orgNumber : result.keySet()) {
+                        JSONObject jsonObject = result.getJSONObject(orgNumber);
                         msg.append("[").append(orgNumber).append("]");
                         if ("1".equals(jsonObject.getString("code"))) {
                             success++;
-                            msg.append("鍚屾�鎴愬姛\n");
+                            msg.append("同步成功\n");
                         } else {
                             fail++;
-                            msg.append("鍚屾�澶辫触锛�").append(jsonObject.getString("msg")).append("\n");
+                            msg.append("同步失败,").append(jsonObject.getString("msg")).append("\n");
                         }
                     }
                     syncLogInfo.setSyncStatus(SyncStatusEnum.SUCCESS);
@@ -209,27 +210,27 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                 }
             } else {
                 syncLogInfo.setSyncStatus(SyncStatusEnum.FAIL);
-                syncLogInfo.setSyncResult("璇锋眰瓒呮椂");
+                syncLogInfo.setSyncResult("请求超时");
             }
         } else {
             syncLogInfo.setSyncStatus(SyncStatusEnum.FAIL);
-            syncLogInfo.setSyncResult("鍚屾�鏁版嵁涓虹┖");
+            syncLogInfo.setSyncResult("同步数据为空");
         }
         iSyncLog.save(syncLogInfo);
     }
 
 
     /**
-     * 鑾峰彇token
+     * 获取token
      *
      * @return
      */
     private String getToken() throws BOSException {
         String key = this.propt.getProperty("key");
         if (StringUtils.isEmpty(key)) {
-            throw new BOSException("鑾峰彇token key涓嶈兘涓虹┖锛�");
+            throw new BOSException("获取token key不能为空!");
         }
-        long l = System.currentTimeMillis();//鏃堕棿鎴虫�绉掓暟
+        long l = System.currentTimeMillis();//时间戳毫秒数
         String code = key.concat(Long.toString(l));
         String s = DigestUtils.md5Hex(code).toUpperCase();
         Map<String, String> map = new HashMap<String, String>();
@@ -240,7 +241,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     }
 
     /**
-     * 鍚屾�鑱屼綅淇℃伅
+     * 同步职位信息
      *
      * @param ctx
      * @param billds
@@ -259,7 +260,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             logger.error("_syncPositionToOA---billds: " + billds);
             String data = getPositionColData(ctx, billds);
             String syncPositionApiUrl = this.propt.getProperty("syncPositionApiUrl");
-            synScyRequest(ctx,data, syncPositionApiUrl,syncLogInfo);
+            synScyRequest(ctx, data, syncPositionApiUrl, syncLogInfo);
         } catch (Exception e) {
             e.printStackTrace();
             syncLogInfo.setSyncStatus(SyncStatusEnum.ERROR);
@@ -272,35 +273,36 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     }
 
     /**
-     * 鑾峰彇宀椾綅淇℃伅
+     * 获取岗位信息
+     *
      * @param ctx
      * @param billIds
      * @return
      * @throws IOException
      * @throws BOSException
      */
-    protected String getPositionColData(Context ctx,String billIds) throws IOException, BOSException {
+    protected String getPositionColData(Context ctx, String billIds) throws IOException, BOSException {
         List list = new ArrayList();
         ObjectMapper mapper = new ObjectMapper();
         Set positionIds = new HashSet();
         PositionCollection positionCollection = new PositionCollection();
         IPosition localInstance = PositionFactory.getLocalInstance(ctx);
-        if (org.apache.commons.lang.StringUtils.isNotBlank(billIds)){
+        if (org.apache.commons.lang.StringUtils.isNotBlank(billIds)) {
             String[] split = billIds.split(",");
             for (int i = 0; i < split.length; i++) {
                 positionIds.add(split[i]);
             }
             positionCollection = localInstance.getPositionCollection("where id in( " + AtsUtil.convertSetToString(positionIds) + ")");
-        }else {
+        } else {
             positionCollection = localInstance.getPositionCollection();
         }
         for (int i = 0; i < positionCollection.size(); i++) {
             PositionEntity positionEntity = new PositionEntity();
             PositionInfo positionInfo = positionCollection.get(i);
             DeletedStatusEnum deletedStatus = positionInfo.getDeletedStatus();
-            if ("2".equals(deletedStatus.getValue())){ // 澶辨晥
+            if (deletedStatus.getValue() == 2) { // 失效
                 positionEntity.setAction("delete");
-            }else {
+            } else {
                 positionEntity.setAction("add");
             }
             positionEntity.setJobtitlecode(positionInfo.getNumber());
@@ -308,20 +310,21 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             positionEntity.setJobtitleremark(positionInfo.getName());
             list.add(positionEntity);
         }
-        //灏佽�璇锋眰鍙傛暟
+        //封装请求参数
         String data = mapper.writeValueAsString(list);
         logger.error("_syncPositionToOA----------------------data" + data);
         return data;
     }
 
     /**
-     * 鍚屾�璇锋眰鏂规硶
+     * 同步请求方法
+     *
      * @param param
      * @param aipUrl
      * @return
      * @throws IOException
      */
-    public void synScyRequest(Context ctx,String param, String aipUrl, SyncLogInfo syncLogInfo) throws IOException, BOSException, EASBizException {
+    public void synScyRequest(Context ctx, String param, String aipUrl, SyncLogInfo syncLogInfo) throws IOException, BOSException, EASBizException {
         OkHttpClient client = new OkHttpClient();
         MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
         String data = String.format("token = %s &data = %s", getToken(), param);
@@ -336,14 +339,14 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                 .addHeader("User-Agent", "PostmanRuntime-ApipostRuntime/1.1.0")
                 .addHeader("Connection", "keep-alive")
                 .build();
-        //澶勭悊鍝嶅簲缁撴灉,鍐欏叆鏃ュ織
+        //处理响应结果,写入日志
         Response response = client.newCall(request).execute();
         handlerResponse(ctx, response, syncLogInfo);
     }
 
 
     /**
-     * 鍚屾�鍛樺伐淇℃伅
+     * 同步员工信息
      *
      * @param ctx
      * @param billds
@@ -353,10 +356,11 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
     @Override
     protected void _syncPersonToOA(Context ctx, String billds, ActionTypeEnum action) throws BOSException, EASBizException {
         super._syncPersonToOA(ctx, billds, action);
+        _syncPersonFromOAById(ctx, billds);
     }
 
     /**
-     * 鏍规嵁id浠嶰A绯荤粺鍚屾�浜哄憳淇℃伅
+     * 根据id从OA系统同步人员信息
      *
      * @param ctx
      * @param personIds
@@ -381,13 +385,13 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                 this._syncPersonFromOAByNumber(ctx, personNumbers.toString());
             } catch (SQLException e) {
                 e.printStackTrace();
-                throw new BOSException("鏍规嵁id浠嶰A绯荤粺鍚屾�浜哄憳淇℃伅鏂规硶鎶ラ敊: " + e.getMessage());
+                throw new BOSException("根据id从OA系统同步人员信息方法报错: " + e.getMessage());
             }
         }
     }
 
     /**
-     * 鏍规嵁宸ュ彿浠嶰A绯荤粺鍚屾�浜哄憳淇℃伅
+     * 根据工号从OA系统同步人员信息
      *
      * @param ctx
      * @param personNumbers
@@ -405,10 +409,10 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
         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;//鎬婚〉鏁�
+            int pagesize = 2000;//每页数量
+            int curpage = 1;//当前页
+            int totalSize = 0;//总条数
+            int totalPage = 0;//总页数
             List<Object[]> updateParams = new ArrayList<Object[]>();
             boolean flag = true;
             do {
@@ -437,7 +441,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
 
 
     /**
-     * 鎵ц�浠嶰A绯荤粺鍚屾�浜哄憳淇℃伅
+     * 执行从OA系统同步人员信息
      *
      * @param updateParams
      * @param curpage
@@ -445,7 +449,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
      */
     public Integer executeSyncPersonFromOA(List<Object[]> updateParams, int curpage, int pagesize, String personNumbers)
             throws IOException, BOSException, EASBizException {
-        //灏佽�璇锋眰鍙傛暟
+        //封装请求参数
         String params = null;
         if (StringUtils.isEmpty(personNumbers)) {
             params = String.format("token = %s &params = {\"pagesize\":%d,\"curpage\":%d}", getToken(), pagesize, curpage);
@@ -453,17 +457,17 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
             params = String.format("token = %s &params = {\"workcode\":\"%s\",\"pagesize\":%d,\"curpage\":%d}", getToken(), personNumbers, pagesize, curpage);
         }
         logger.error("executeSyncPersonFromOA----------------------params" + params);
-        //灏佽�璇锋眰鍙傛暟
-        String syncPersonFromApiUrl = this.propt.getProperty("syncOrgUnitApiUrl");
-        logger.error("executeSyncPersonFromOA----------------------syncOrgUnitApiUrl" + syncPersonFromApiUrl);
-        if (StringUtils.isEmpty(syncPersonFromApiUrl)) {
-            throw new BOSException("鑾峰彇浜哄憳鎺ュ彛鍦板潃涓嶈兘涓虹┖!");
+        //封装请求参数
+        String getHrmUserApiUrl = this.propt.getProperty("getHrmUserApiUrl");
+        logger.error("executeSyncPersonFromOA----------------------getHrmUserApiUrl" + getHrmUserApiUrl);
+        if (StringUtils.isEmpty(getHrmUserApiUrl)) {
+            throw new BOSException("获取人员接口地址不能为空!");
         }
         OkHttpClient client = new OkHttpClient();
         MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
         RequestBody body = RequestBody.create(mediaType, params);
         Request request = new Request.Builder()
-                .url(syncPersonFromApiUrl)
+                .url(getHrmUserApiUrl)
                 .post(body)
                 .addHeader("content-type", "application/x-www-form-urlencoded")
                 .build();
@@ -493,7 +497,7 @@ public class SyncTranForOAFacadeControllerBean extends AbstractSyncTranForOAFaca
                 throw new BOSException(msg);
             }
         } else {
-            throw new BOSException("璇锋眰瓒呮椂");
+            throw new BOSException("请求超时");
         }
     }
 }

+ 0 - 112
websrc/com/kingdee/eas/custom/synctask/entity/AdminOrg.java

@@ -1,112 +0,0 @@
-package com.kingdee.eas.custom.synctask.entity;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * @author qingwu
- * @date 2024/10/21
- * @apiNote
- */
-public class AdminOrg {
-    @JsonProperty("@action")
-    private String action;//add 新增,edit 编辑 delete 删除(只会处理canceled字段)
-    private String code;//编号
-    private String shortname;//简称
-    private String fullname;//全称
-    private String org_code;// 分部编号
-    private String parent_code;//上级部门编号
-    private String canceled;//封存标志
-    private String order;//排序
-
-    public AdminOrg() {
-    }
-
-    public AdminOrg(String action, String code, String shortname, String fullname, String org_code, String parent_code, String canceled, String order) {
-        this.action = action;
-        this.code = code;
-        this.shortname = shortname;
-        this.fullname = fullname;
-        this.org_code = org_code;
-        this.parent_code = parent_code;
-        this.canceled = canceled;
-        this.order = order;
-    }
-
-    public void setAction(String action) {
-        this.action = action;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public void setShortname(String shortname) {
-        this.shortname = shortname;
-    }
-
-    public void setFullname(String fullname) {
-        this.fullname = fullname;
-    }
-
-    public void setOrg_code(String org_code) {
-        this.org_code = org_code;
-    }
-
-    public void setParent_code(String parent_code) {
-        this.parent_code = parent_code;
-    }
-
-    public void setCanceled(String canceled) {
-        this.canceled = canceled;
-    }
-
-    public void setOrder(String order) {
-        this.order = order;
-    }
-
-    public String getAction() {
-        return action;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getShortname() {
-        return shortname;
-    }
-
-    public String getFullname() {
-        return fullname;
-    }
-
-    public String getOrg_code() {
-        return org_code;
-    }
-
-    public String getParent_code() {
-        return parent_code;
-    }
-
-    public String getCanceled() {
-        return canceled;
-    }
-
-    public String getOrder() {
-        return order;
-    }
-
-    @Override
-    public String toString() {
-        return "AdminOrg{" +
-                "action='" + action + '\'' +
-                ", code='" + code + '\'' +
-                ", shortname='" + shortname + '\'' +
-                ", fullname='" + fullname + '\'' +
-                ", org_code='" + org_code + '\'' +
-                ", parent_code='" + parent_code + '\'' +
-                ", canceled='" + canceled + '\'' +
-                ", order='" + order + '\'' +
-                '}';
-    }
-}

+ 0 - 634
websrc/com/kingdee/eas/custom/synctask/entity/PersonEntity.java

@@ -1,634 +0,0 @@
-package com.kingdee.eas.custom.synctask.entity;
-
-import com.kingdee.util.StringUtils;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author qingwu
- * @date 2024/10/24
- * @apiNote
- */
-public class PersonEntity {
-    // 编号
-    private String workcode;
-    // 分部:2 种方式:1)分部全路径(副作用:未找到,会新增),2) 以 {"subcompanycode":"fw"} 为值的字符串,指定分部编码(不会新增)
-    private Map subcompany;
-    // 部门:2 种方式:1)部门全路径(副作用:未找到,会新增),2)以 {"departmentcode":"fw"} 为值的字符串,指定部门编码(不会新增)
-    private Map department;
-    // 人员名称
-    private String lastname;
-    // 登录名称
-    private String loginid;
-    // 明文密码,会转密文
-    private String password;
-    // 安全级别
-    private Integer seclevel;
-    // 枚举值:默认男、女,此处为性别
-    private String sex;
-    // 岗位名称:2 种方式:1)名称(会新建),2)以 {"jobtitlecode":"fw"} 为值的字符串,指定岗位编码(不会新增)
-    private Map jobtitle;
-    // 职务,岗位使用 JSON 格式不需要传递
-    private String jobactivityid;
-    // 职务类型,岗位使用 JSON 格式不需要传递
-    private String jobgroupid;
-    // 职称,数据关联表:HrmJobCall
-    private String jobcall;
-    // 职级,仅支持整数字
-    private Integer joblevel;
-    // 职责描述
-    private String jobactivitydesc;
-    // 直接上级,仅支持编号
-    private String managerid;
-    // 助理,仅支持编号
-    private String assistantid;
-    // 状态,包括试用、正式、临时、试用延期、解聘、离职、退休、无效
-    private String status;
-    // 办公地点
-    private String locationid;
-    // 办公室
-    private String workroom;
-    // 办公室电话
-    private String telephone;
-    // 移动电话
-    private String mobile;
-    // 其他电话
-    private String mobilecall;
-    // 传真
-    private String fax;
-    // 邮箱
-    private String email;
-    // 系统语言,包括简体中文、繁體中文、English
-    private String systemlanguage;
-    // 生日,格式:yyyy-MM-dd
-    private String birthday;
-    // 民族
-    private String folk;
-    // 籍贯
-    private String nativeplace;
-    // 户口
-    private String regresidentplace;
-    // 身份证号码,如果有值,必须唯一
-    private String certificatenum;
-    // 婚姻状况,包括已婚、离异、未婚
-    private String maritalstatus;
-    // 政治面貌
-    private String policy;
-    // 入团日期,格式:yyyy-MM-dd
-    private String bememberdate;
-    // 入党日期,格式:yyyy-MM-dd
-    private String bepartydate;
-    // 工会会员
-    private String islabouunion;
-    // 学历,数据关联表:HrmEducationLevel
-    private String educationlevel;
-    // 学位
-    private String degree;
-    // 健康状况,包括良好、一般、较差、优秀
-    private String healthinfo;
-    // 身高(cm),仅支持整数字
-    private Integer height;
-    // 体重(kg),仅支持整数字
-    private Integer weight;
-    // 现居住地
-    private String residentplace;
-    // 家庭联系方式
-    private String homeaddress;
-    // 暂住证号码
-    private String tempresidentnumber;
-    // 主账号:accounttype 为次账号才有效,仅支持编号
-    private String belongto;
-    // 排序,数字
-    private String dsporder;
-    // 公积金账号
-    private String accumfundaccount;
-    // 主次账号标志,包括主账号、次账号
-    private String accounttype;
-    // 工资账号户名
-    private String accountname;
-    // 工资银行
-    private String bankid1;
-    // 工资账号
-    private String accountid1;
-    // 入职日期
-    private String companystartdate;
-    // 参加工作日期
-    private String workstartdate;
-    // 基本信息自定义数据,字段确认请看【组织权限中心】-【自定义设置】-【人员卡片字段定义】-【基本信息】数据库字段名
-    private Map baseCustomData;
-    // 个人信息自定义数据,字段确认请看【组织权限中心】-【自定义设置】-【人员卡片字段定义】-【个人信息】数据库字段名
-    private Map personCustomData;
-    // 工作信息自定义数据,字段确认请看【组织权限中心】-【自定义设置】-【人员卡片字段定义】-【工作信息】数据库字段名
-    private Map workCustomData;
-
-    public String getWorkcode() {
-        return workcode;
-    }
-
-    public void setWorkcode(String workcode) {
-        this.workcode = workcode;
-    }
-
-    public String getSubcompany() {
-        return (String) subcompany.get("subcompanycode");
-    }
-
-    public void setSubcompany(String subcompany) {
-        if (this.subcompany == null) {
-            this.subcompany = new HashMap();
-        }
-        this.subcompany.put("subcompanycode", subcompany);
-    }
-
-    public String getDepartment() {
-        return (String) department.get("departmentcode");
-    }
-
-    public void setDepartment(String department) {
-        if (this.department == null) {
-            this.department = new HashMap();
-        }
-        this.department.put("departmentcode", department);
-    }
-
-    public String getLastname() {
-        return lastname;
-    }
-
-    public void setLastname(String lastname) {
-        this.lastname = lastname;
-    }
-
-    public String getLoginid() {
-        return loginid;
-    }
-
-    public void setLoginid(String loginid) {
-        this.loginid = loginid;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public int getSeclevel() {
-        return seclevel;
-    }
-
-    public void setSeclevel(Integer seclevel) {
-        this.seclevel = seclevel;
-    }
-
-    public String getSex() {
-        return sex;
-    }
-
-    public void setSex(String sex) {
-        this.sex = sex;
-    }
-
-    public String getJobtitle() {
-        return (String) jobtitle.get("jobtitlecode");
-    }
-
-    public void setJobtitle(String jobtitle) {
-        if (this.jobtitle == null) {
-            this.jobtitle = new HashMap();
-        }
-        this.jobtitle.put("jobtitlecode", jobtitle);
-    }
-
-    public String getJobactivityid() {
-        return jobactivityid;
-    }
-
-    public void setJobactivityid(String jobactivityid) {
-        this.jobactivityid = jobactivityid;
-    }
-
-    public String getJobgroupid() {
-        return jobgroupid;
-    }
-
-    public void setJobgroupid(String jobgroupid) {
-        this.jobgroupid = jobgroupid;
-    }
-
-    public String getJobcall() {
-        return jobcall;
-    }
-
-    public void setJobcall(String jobcall) {
-        this.jobcall = jobcall;
-    }
-
-    public Integer getJoblevel() {
-        return joblevel;
-    }
-
-    public void setJoblevel(Integer joblevel) {
-        this.joblevel = joblevel;
-    }
-
-    public String getJobactivitydesc() {
-        return jobactivitydesc;
-    }
-
-    public void setJobactivitydesc(String jobactivitydesc) {
-        this.jobactivitydesc = jobactivitydesc;
-    }
-
-    public String getManagerid() {
-        return managerid;
-    }
-
-    public void setManagerid(String managerid) {
-        this.managerid = managerid;
-    }
-
-    public String getAssistantid() {
-        return assistantid;
-    }
-
-    public void setAssistantid(String assistantid) {
-        this.assistantid = assistantid;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getLocationid() {
-        return locationid;
-    }
-
-    public void setLocationid(String locationid) {
-        this.locationid = locationid;
-    }
-
-    public String getWorkroom() {
-        return workroom;
-    }
-
-    public void setWorkroom(String workroom) {
-        this.workroom = workroom;
-    }
-
-    public String getTelephone() {
-        return telephone;
-    }
-
-    public void setTelephone(String telephone) {
-        this.telephone = telephone;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-
-    public String getMobilecall() {
-        return mobilecall;
-    }
-
-    public void setMobilecall(String mobilecall) {
-        this.mobilecall = mobilecall;
-    }
-
-    public String getFax() {
-        return fax;
-    }
-
-    public void setFax(String fax) {
-        this.fax = fax;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getSystemlanguage() {
-        return systemlanguage;
-    }
-
-    public void setSystemlanguage(String systemlanguage) {
-        this.systemlanguage = systemlanguage;
-    }
-
-    public String getBirthday() {
-        return birthday;
-    }
-
-    public void setBirthday(String birthday) {
-        this.birthday = birthday;
-    }
-
-    public String getFolk() {
-        return folk;
-    }
-
-    public void setFolk(String folk) {
-        this.folk = folk;
-    }
-
-    public String getNativeplace() {
-        return nativeplace;
-    }
-
-    public void setNativeplace(String nativeplace) {
-        this.nativeplace = nativeplace;
-    }
-
-    public String getRegresidentplace() {
-        return regresidentplace;
-    }
-
-    public void setRegresidentplace(String regresidentplace) {
-        this.regresidentplace = regresidentplace;
-    }
-
-    public String getCertificatenum() {
-        return certificatenum;
-    }
-
-    public void setCertificatenum(String certificatenum) {
-        this.certificatenum = certificatenum;
-    }
-
-    public String getMaritalstatus() {
-        return maritalstatus;
-    }
-
-    public void setMaritalstatus(String maritalstatus) {
-        this.maritalstatus = maritalstatus;
-    }
-
-    public String getPolicy() {
-        return policy;
-    }
-
-    public void setPolicy(String policy) {
-        this.policy = policy;
-    }
-
-    public String getBememberdate() {
-        return bememberdate;
-    }
-
-    public void setBememberdate(String bememberdate) {
-        this.bememberdate = bememberdate;
-    }
-
-    public String getBepartydate() {
-        return bepartydate;
-    }
-
-    public void setBepartydate(String bepartydate) {
-        this.bepartydate = bepartydate;
-    }
-
-    public String getIslabouunion() {
-        return islabouunion;
-    }
-
-    public void setIslabouunion(String islabouunion) {
-        this.islabouunion = islabouunion;
-    }
-
-    public String getEducationlevel() {
-        return educationlevel;
-    }
-
-    public void setEducationlevel(String educationlevel) {
-        this.educationlevel = educationlevel;
-    }
-
-    public String getDegree() {
-        return degree;
-    }
-
-    public void setDegree(String degree) {
-        this.degree = degree;
-    }
-
-    public String getHealthinfo() {
-        return healthinfo;
-    }
-
-    public void setHealthinfo(String healthinfo) {
-        this.healthinfo = healthinfo;
-    }
-
-    public Integer getHeight() {
-        return height;
-    }
-
-    public void setHeight(Integer height) {
-        this.height = height;
-    }
-
-    public Integer getWeight() {
-        return weight;
-    }
-
-    public void setWeight(Integer weight) {
-        this.weight = weight;
-    }
-
-    public String getResidentplace() {
-        return residentplace;
-    }
-
-    public void setResidentplace(String residentplace) {
-        this.residentplace = residentplace;
-    }
-
-    public String getHomeaddress() {
-        return homeaddress;
-    }
-
-    public void setHomeaddress(String homeaddress) {
-        this.homeaddress = homeaddress;
-    }
-
-    public String getTempresidentnumber() {
-        return tempresidentnumber;
-    }
-
-    public void setTempresidentnumber(String tempresidentnumber) {
-        this.tempresidentnumber = tempresidentnumber;
-    }
-
-    public String getBelongto() {
-        return belongto;
-    }
-
-    public void setBelongto(String belongto) {
-        this.belongto = belongto;
-    }
-
-    public String getDsporder() {
-        return dsporder;
-    }
-
-    public void setDsporder(String dsporder) {
-        this.dsporder = dsporder;
-    }
-
-    public String getAccumfundaccount() {
-        return accumfundaccount;
-    }
-
-    public void setAccumfundaccount(String accumfundaccount) {
-        this.accumfundaccount = accumfundaccount;
-    }
-
-    public String getAccounttype() {
-        return accounttype;
-    }
-
-    public void setAccounttype(String accounttype) {
-        this.accounttype = accounttype;
-    }
-
-    public String getAccountname() {
-        return accountname;
-    }
-
-    public void setAccountname(String accountname) {
-        this.accountname = accountname;
-    }
-
-    public String getBankid1() {
-        return bankid1;
-    }
-
-    public void setBankid1(String bankid1) {
-        this.bankid1 = bankid1;
-    }
-
-    public String getAccountid1() {
-        return accountid1;
-    }
-
-    public void setAccountid1(String accountid1) {
-        this.accountid1 = accountid1;
-    }
-
-    public String getCompanystartdate() {
-        return companystartdate;
-    }
-
-    public void setCompanystartdate(String companystartdate) {
-        this.companystartdate = companystartdate;
-    }
-
-    public String getWorkstartdate() {
-        return workstartdate;
-    }
-
-    public void setWorkstartdate(String workstartdate) {
-        this.workstartdate = workstartdate;
-    }
-
-    public Map getBaseCustomData() {
-        return baseCustomData;
-    }
-
-    public void setBaseCustomData(Map baseCustomData) {
-        this.baseCustomData = baseCustomData;
-    }
-
-    public Map getPersonCustomData() {
-        return personCustomData;
-    }
-
-    public void setPersonCustomData(Map personCustomData) {
-        this.personCustomData = personCustomData;
-    }
-
-    public Map getWorkCustomData() {
-        return workCustomData;
-    }
-
-    public void setWorkCustomData(Map workCustomData) {
-        this.workCustomData = workCustomData;
-    }
-
-    @Override
-    public String toString() {
-        return "Person{" +
-                "workcode='" + workcode + '\'' +
-                ", subcompany='" + subcompany + '\'' +
-                ", department='" + department + '\'' +
-                ", lastname='" + lastname + '\'' +
-                ", loginid='" + loginid + '\'' +
-                ", password='" + password + '\'' +
-                ", seclevel=" + seclevel +
-                ", sex='" + sex + '\'' +
-                ", jobtitle='" + jobtitle + '\'' +
-                ", jobactivityid='" + jobactivityid + '\'' +
-                ", jobgroupid='" + jobgroupid + '\'' +
-                ", jobcall='" + jobcall + '\'' +
-                ", joblevel='" + joblevel + '\'' +
-                ", jobactivitydesc='" + jobactivitydesc + '\'' +
-                ", managerid='" + managerid + '\'' +
-                ", assistantid='" + assistantid + '\'' +
-                ", status='" + status + '\'' +
-                ", locationid='" + locationid + '\'' +
-                ", workroom='" + workroom + '\'' +
-                ", telephone='" + telephone + '\'' +
-                ", mobile='" + mobile + '\'' +
-                ", mobilecall='" + mobilecall + '\'' +
-                ", fax='" + fax + '\'' +
-                ", email='" + email + '\'' +
-                ", systemlanguage='" + systemlanguage + '\'' +
-                ", birthday='" + birthday + '\'' +
-                ", folk='" + folk + '\'' +
-                ", nativeplace='" + nativeplace + '\'' +
-                ", regresidentplace='" + regresidentplace + '\'' +
-                ", certificatenum='" + certificatenum + '\'' +
-                ", maritalstatus='" + maritalstatus + '\'' +
-                ", policy='" + policy + '\'' +
-                ", bememberdate='" + bememberdate + '\'' +
-                ", bepartydate='" + bepartydate + '\'' +
-                ", islabouunion='" + islabouunion + '\'' +
-                ", educationlevel='" + educationlevel + '\'' +
-                ", degree='" + degree + '\'' +
-                ", healthinfo='" + healthinfo + '\'' +
-                ", height=" + height +
-                ", weight=" + weight +
-                ", residentplace='" + residentplace + '\'' +
-                ", homeaddress='" + homeaddress + '\'' +
-                ", tempresidentnumber='" + tempresidentnumber + '\'' +
-                ", belongto='" + belongto + '\'' +
-                ", dsporder='" + dsporder + '\'' +
-                ", accumfundaccount='" + accumfundaccount + '\'' +
-                ", accounttype='" + accounttype + '\'' +
-                ", accountname='" + accountname + '\'' +
-                ", bankid1='" + bankid1 + '\'' +
-                ", accountid1='" + accountid1 + '\'' +
-                ", companystartdate='" + companystartdate + '\'' +
-                ", workstartdate='" + workstartdate + '\'' +
-                ", baseCustomData=" + baseCustomData +
-                ", personCustomData=" + personCustomData +
-                ", workCustomData=" + workCustomData +
-                '}';
-    }
-}

+ 36 - 24
websrc/com/kingdee/eas/custom/synctask/handler/EmployeeListHandlerEx.java

@@ -17,8 +17,9 @@ import com.kingdee.eas.basedata.org.*;
 import com.kingdee.eas.basedata.person.*;
 import com.kingdee.eas.common.EASBizException;
 import com.kingdee.eas.custom.synctask.ActionTypeEnum;
+import com.kingdee.eas.custom.synctask.SyncTranForOAFacadeFactory;
 import com.kingdee.eas.custom.synctask.entity.PersonEntity;
-import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntry;
+import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryCollection;
 import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryFactory;
 import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryInfo;
 import com.kingdee.eas.hr.affair.IEmpEnrollBizBillEntry;
@@ -54,13 +55,14 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
 
     public EmployeeListHandlerEx() {
         try {
-            this.propt.load(new FileInputStream("E:\\Kingdee\\eas\\server\\properties\\scy\\syncOAConfig.properties"));
-            //propt.load(new FileInputStream(System.getProperty("EAS_HOME") + "/server/properties/scy/syncOAConfig.properties"));
+            //this.propt.load(new FileInputStream("E:\\Kingdee\\eas\\server\\properties\\scy\\syncOAConfig.properties"));
+            propt.load(new FileInputStream(System.getProperty("EAS_HOME") + "/server/properties/scy/syncOAConfig.properties"));
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 
+
     public void syncPersonToOAAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, IOException, EASBizException {
         String billIds = request.getParameter("billIds");
         //同步组织到OA
@@ -68,13 +70,14 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         _syncpersonToOA(billIds, null);
     }
 
+    public void syncPersonFromAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, IOException, EASBizException {
+        String billIds = request.getParameter("billIds");
+        SyncTranForOAFacadeFactory.getLocalInstance(ctx).syncPersonToOA(billIds, null);
+    }
+
+
     /**
-     * 同步组织
-     * 1、当参数billIds不为空值时,增量同步参数中的部门数据到OA
-     * 2、当参数billIds为空时,全量同步所有组织数据到OA
-     * 3、当参数action不为空时,根据操作类型同步数据
-     * 4、当参数action为空时,判断部门状态是否为失效,如果失效就执行删除同步,否则就执行编辑同步
-     * 5、部门新增,调用部门同步方法增量同步,操作类型为新增
+     * 同步人员
      *
      * @param billds
      * @param action
@@ -83,7 +86,6 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
     public void _syncpersonToOA(String billds, ActionTypeEnum action) throws BOSException, IOException, EASBizException {
         logger.error("_syncpersonToOA----------------------start");
         logger.error("_syncpersonToOA----------------------billds: " + billds);
-        IPerson iPerson = PersonFactory.getLocalInstance(ctx);
         IPersonPosition iPersonPosition = PersonPositionFactory.getLocalInstance(ctx);
         List<PersonEntity> dataList = new ArrayList();
         //当参数billIds不为空值时,增量同步参数中的部门数据到OA
@@ -91,7 +93,7 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         if (!StringUtils.isEmpty(billds)) {
             Set<String> personIds = AtsUtil.toSet(billds);
             filterInfo = new FilterInfo();
-            filterInfo.getFilterItems().add(new FilterItemInfo("id", personIds, CompareType.INCLUDE));
+            filterInfo.getFilterItems().add(new FilterItemInfo("person", personIds, CompareType.INCLUDE));
         }
         SelectorItemCollection sic = new SelectorItemCollection();
         sic.add("*");
@@ -142,6 +144,7 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         //编码
         person.setWorkcode(personInfo.getNumber());
         //人员名称
+        logger.error("personInfo.getName------------" + personInfo.getName());
         person.setLastname(personInfo.getName());
         //分部
         //person.setSubcompany("0");
@@ -181,7 +184,10 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         }
         person.setStatus(personStatus);
         //办公地点 @todo
-        person.setLocationid("");
+        IObjectValue workPlace = (IObjectValue) personInfo.get("workPlace");
+        if (workPlace != null) {
+            person.setLocationid((String) workPlace.get("name"));
+        }
         //移动电话
         person.setMobile(personInfo.getCell());
         //办公室电话
@@ -190,19 +196,22 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         person.setEmail(personInfo.getEmail());
         //入职日期
         IEmpEnrollBizBillEntry iEmpEnrollBizBillEntry = EmpEnrollBizBillEntryFactory.getLocalInstance(ctx);
-        EmpEnrollBizBillEntryInfo empEnrollBizBillEntryInfo = iEmpEnrollBizBillEntry.getEmpEnrollBizBillEntryInfo("person = '" + personInfo.getId() + "'");
-        Date enrollDate = empEnrollBizBillEntryInfo.getEnrollDate();
-        person.setCompanystartdate(originalFormat.format(enrollDate));
-        //参加工作日期
-        Date jobStartDate = empEnrollBizBillEntryInfo.getJobStartDate();
-        person.setWorkstartdate(originalFormat.format(jobStartDate));
-        UserInfo userInfo = iuser.getUserInfo("where person = '" + personInfo.getId() + "' ");
+        EmpEnrollBizBillEntryCollection empEnrollBizBillEntryCollection = iEmpEnrollBizBillEntry.getEmpEnrollBizBillEntryCollection("where person = '" + personInfo.getId() + "'");
+        if (empEnrollBizBillEntryCollection.size() > 0) {
+
+            EmpEnrollBizBillEntryInfo empEnrollBizBillEntryInfo = empEnrollBizBillEntryCollection.get(0);
+            Date enrollDate = empEnrollBizBillEntryInfo.getEnrollDate();
+            person.setCompanystartdate(originalFormat.format(enrollDate));
+            //参加工作日期
+            Date jobStartDate = empEnrollBizBillEntryInfo.getJobStartDate();
+            person.setWorkstartdate(originalFormat.format(jobStartDate));
+        }
         //登录名称
-        person.setLastname(userInfo.getName());
-        //明文密码,会转密文
-        person.setPassword(userInfo.getPassword());
+        person.setLoginid(personInfo.getNumber());
+        //明文密码,会转密文  默认:Scy$1234
+        person.setPassword("Scy$1234");
         //安全级别
-        person.setSeclevel(3);
+        person.setSeclevel("3");
         //人员类别
         IObjectValue personnelCa = (IObjectValue) personInfo.get("personnelCa");
         if (personnelCa != null) {
@@ -212,7 +221,10 @@ public class EmployeeListHandlerEx extends EmployeeListHandler {
         }
         //职级
         JobLevelInfo jobLevel = personPositionInfo.getJobLevel();
-        person.setJoblevel(Integer.parseInt(jobLevel.getName()));
+        if (jobLevel != null) {
+            person.setJoblevel(jobLevel.getName());
+        }
+
         return person;
     }
 

+ 0 - 58
websrc/com/kingdee/eas/custom/synctask/handler/OrgUnitEditHandlerEx.java

@@ -1,58 +0,0 @@
-package com.kingdee.eas.custom.synctask.handler;
-
-import com.kingdee.bos.Context;
-import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
-import com.kingdee.eas.custom.synctask.ActionTypeEnum;
-import com.kingdee.eas.custom.synctask.utils.SynctaskUtils;
-import com.kingdee.eas.framework.CoreBaseInfo;
-import com.kingdee.eas.hr.org.web.handler.OrgUnitEditHandler;
-import com.kingdee.shr.base.syssetting.context.SHRContext;
-import com.kingdee.shr.base.syssetting.exception.SHRWebException;
-import org.apache.log4j.Logger;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * @author qingwu
- * @date 2024/10/21
- * @apiNote
- */
-public class OrgUnitEditHandlerEx extends OrgUnitEditHandler {
-    Logger logger = Logger.getLogger("com.kingdee.eas.custom.synctask.handler.OrgUnitEditHandlerEx");
-    private Context ctx = SHRContext.getInstance().getContext();
-
-    @Override
-    protected void afterSave(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo model) throws SHRWebException {
-        super.afterSave(request, response, model);
-        AdminOrgUnitInfo adminOrgUnitInfo = (AdminOrgUnitInfo) model;
-        //获取操作状态
-        String operateState = request.getParameter("operateState");
-        SynctaskUtils synctaskUtils = new SynctaskUtils();
-        try {
-            //ADDNEW  EDIT
-            //新增方法
-            if ("ADDNEW".equals(operateState)) {
-                synctaskUtils._syncOrgUnitToOA(ctx, adminOrgUnitInfo.getId().toString(), ActionTypeEnum.ADD);
-            }
-            //编辑方法
-            if ("EDIT".equals(operateState)) {
-                synctaskUtils._syncOrgUnitToOA(ctx, adminOrgUnitInfo.getId().toString(), ActionTypeEnum.EDIT);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new RuntimeException(e);
-        }
-        //Enumeration paramNames = request.getParameterNames();
-        //while (paramNames.hasMoreElements()) {
-        //    String paramName = (String) paramNames.nextElement();
-        //    String[] paramValues = request.getParameterValues(paramName);
-        //    if (paramValues.length == 1) {
-        //        String paramValue = paramValues[0];
-        //        if (paramValue.length() != 0) {
-        //            logger.error("参数:" + paramName + "=" + paramValue);
-        //        }
-        //    }
-        //}
-    }
-}