|
@@ -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 ¶ms = {\"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;
|
|
|
}
|
|
|
}
|