|
|
@@ -70,7 +70,7 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 同步需要更新的组织架构信息
|
|
|
+ * 同步组织架构信息
|
|
|
* @param setOrgContext 组织架构信息接入上下文
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
@@ -80,70 +80,61 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
return getService().syncOrgElements(setOrgContext);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步更新的组织架构信息
|
|
|
+ * @param setOrgContext 组织架构信息接入上下文
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ private SysSynchroSetResult updateOrgElement(SysSynchroSetOrgContext setOrgContext) throws Exception{
|
|
|
+ return getService().updateOrgElement(setOrgContext);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 封装数据
|
|
|
* @return
|
|
|
*/
|
|
|
- private JSONArray getOrgJsonData(String type){
|
|
|
+ private JSONArray getOrgJsonData(){
|
|
|
JSONArray resultArray = new JSONArray();
|
|
|
- // 《组织》 数据对象
|
|
|
- SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name,or_subof ,or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho.or_headmancode=em_code where ho.or_id=hr.or_subof) as superleader,or_statuscode,or_landraysubid,to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code order by or_id");
|
|
|
+ // 《组织部门》 数据对象
|
|
|
+ SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl" +
|
|
|
+ "(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name ," +
|
|
|
+ "or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' " +
|
|
|
+ "then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho" +
|
|
|
+ ".or_headmancode=em_code where ho.or_id=hr.or_subof) as superLeader,or_statuscode,or_landraysubid," +
|
|
|
+ "to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else " +
|
|
|
+ "em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code where " +
|
|
|
+ "nvl(or_subof,0)>0 order by rn");
|
|
|
while (orgs.next()) {
|
|
|
JSONObject orgObj = new JSONObject();
|
|
|
orgObj.put("id", orgs.getGeneralString("or_id")); // 唯一标识 (不允许为空)
|
|
|
orgObj.put("lunid", orgs.getGeneralString("or_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,不允许为空)
|
|
|
orgObj.put("name", orgs.getGeneralString("or_name")); // 名称 (不允许为空)
|
|
|
- orgObj.put("type", "org"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
+ orgObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
orgObj.put("no", orgs.getGeneralString("or_code")); // 编号 (可为空)
|
|
|
orgObj.put("order", orgs.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
orgObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
|
|
|
- if ("详情".equals(type)) {
|
|
|
- String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
|
|
|
- orgObj.put("parent", landraysubid); // 父组织 (可为空)
|
|
|
- orgObj.put("thisleader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
|
|
|
- orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
|
|
|
- orgObj.put("superleader", orgs.getGeneralString("superleader")); // 组织上级上级领导 (可为空)
|
|
|
- String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
|
|
|
- "or_statuscode");
|
|
|
- if ("AUDITED".equals(statuscode)) {
|
|
|
- orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
- }else {
|
|
|
- orgObj.put("isAvailable", false);
|
|
|
- }
|
|
|
+ String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
|
|
|
+ orgObj.put("parent", landraysubid); // 父组织 (可为空)
|
|
|
+ orgObj.put("thisLeader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
|
|
|
+ orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
|
|
|
+ orgObj.put("superLeader", orgs.getGeneralString("superLeader")); // 组织上级上级领导 (可为空)
|
|
|
+ String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
|
|
|
+ "or_statuscode");
|
|
|
+ if ("AUDITED".equals(statuscode)) {
|
|
|
+ orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ orgObj.put("isAvailable", false);
|
|
|
}
|
|
|
resultArray.add(orgObj); // 组织机构
|
|
|
}
|
|
|
- // 《部门》 数据对象
|
|
|
- SqlRowList depts = baseDao.queryForRowSet("select row_number() over (order by dp_level) rn,case when nvl(dp_landrayid,' ')=' ' then to_char(dp_id) else Dp_Landrayid end dp_id, dp_code, dp_name, dp_status, dp_headmancode, dp_headmanname, dp_subof, dp_isleaf, dp_parentdpname, dp_level,(select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from department dp left join employee on em_code=dp.dp_headmancode where dp.dp_id=dept.dp_subof) as superleader,dp_statuscode,dp_landraysubid,to_char(dp_subof) dp_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id from department dept left join employee on em_code=dept.dp_headmancode order by dp_level");
|
|
|
- while (depts.next()) {
|
|
|
- JSONObject deptObj = new JSONObject();
|
|
|
- deptObj.put("id", depts.getGeneralString("dp_id")); // 唯一标识 (不允许为空)
|
|
|
- deptObj.put("lunid", depts.getGeneralString("dp_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
|
|
|
- deptObj.put("name", depts.getGeneralString("dp_name")); // 名称 (不允许为空)
|
|
|
- deptObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
- deptObj.put("no", depts.getGeneralString("dp_code")); // 编号 (可为空)
|
|
|
- deptObj.put("order", depts.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
- deptObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
|
|
|
- if ("详情".equals(type)) {
|
|
|
- String landraysubid = orgs.getObject("dp_landraysubid") == null ? orgs.getGeneralString("dp_subof") : orgs.getGeneralString("dp_landraysubid");
|
|
|
- deptObj.put("parent", landraysubid); // 父部门 (可为空)
|
|
|
- deptObj.put("thisleader", depts.getGeneralString("em_id")); // 部门架构领导 (可为空)
|
|
|
- int level = depts.getGeneralInt("dp_level");
|
|
|
- String memo = depts.getGeneralInt("or_path") == 0 ? "不是末级部门,部门层级" + level : "是末级部门,部门层级" + level;
|
|
|
- deptObj.put("memo", memo); // 部门架构说明 (可为空)
|
|
|
- deptObj.put("superleader", depts.getGeneralString("superleader")); // 部门上级领导 (可为空)
|
|
|
- String statuscode = depts.getObject("dp_statuscode") == null ? "" : depts.getGeneralString("dp_statuscode");
|
|
|
- if ("AUDITED".equals(statuscode)) {
|
|
|
- deptObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
- }else {
|
|
|
- deptObj.put("isAvailable", false);
|
|
|
- }
|
|
|
- }
|
|
|
- resultArray.add(deptObj); // 部门
|
|
|
- }
|
|
|
|
|
|
// 《岗位》 数据对象
|
|
|
- SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_subof) jo_subof, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landraysubid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid from job left join employee on em_code=jo_headmancode order by jo_level");
|
|
|
+ SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_orgid) jo_orgid, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landrayorid," +
|
|
|
+ "case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid," +
|
|
|
+ "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id " +
|
|
|
+ "from job left join employee on em_code=jo_headmancode left join hrorg on jo_orgid=or_id" +
|
|
|
+ " order by rn");
|
|
|
while (posts.next()) {
|
|
|
JSONObject postObj = new JSONObject();
|
|
|
postObj.put("id", posts.getGeneralString("jo_id")); // 唯一标识 (不允许为空)
|
|
|
@@ -153,35 +144,38 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
postObj.put("no", posts.getGeneralString("jo_code")); // 编号 (可为空)
|
|
|
postObj.put("order", posts.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
postObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
|
|
|
- if ("详情".equals(type)) {
|
|
|
- String landraysubid = orgs.getObject("jo_landraysubid") == null ? orgs.getGeneralString("jo_subof") : orgs.getGeneralString("jo_landraysubid");
|
|
|
- postObj.put("parent", landraysubid); // 父部门 (可为空)
|
|
|
- postObj.put("thisleader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
|
|
|
- int level = posts.getGeneralInt("jo_level");
|
|
|
- String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level : "所属组织" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
|
|
|
- postObj.put("memo", memo); // 岗位架构说明 (可为空)
|
|
|
- List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
|
|
|
+ postObj.put("parent", posts.getString("or_id")); // 父部门 (可为空)
|
|
|
+ postObj.put("thisLeader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
|
|
|
+ int level = posts.getGeneralInt("jo_level");
|
|
|
+ String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level :
|
|
|
+ "所属组织部门" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
|
|
|
+ postObj.put("memo", memo); // 岗位架构说明 (可为空)
|
|
|
+ List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
|
|
|
|
|
|
- JSONArray persons=null;
|
|
|
- if (data != null && data.size() > 0) {
|
|
|
- persons =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
+ JSONArray persons=null;
|
|
|
+ if (data != null && data.size() > 0) {
|
|
|
+ persons =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
|
|
|
- }
|
|
|
- postObj.put("persons", persons); // 岗位包含人员 (可为空)
|
|
|
- String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
|
|
|
- "jo_statuscode");
|
|
|
- if ("AUDITED".equals(statuscode)) {
|
|
|
- postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
- }else {
|
|
|
- postObj.put("isAvailable", false);
|
|
|
- }
|
|
|
+ }
|
|
|
+ postObj.put("persons", persons); // 岗位包含人员 (可为空)
|
|
|
+ String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
|
|
|
+ "jo_statuscode");
|
|
|
+ if ("AUDITED".equals(statuscode)) {
|
|
|
+ postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ postObj.put("isAvailable", false);
|
|
|
}
|
|
|
resultArray.add(postObj); // 岗位
|
|
|
}
|
|
|
|
|
|
|
|
|
// 《人员》 数据对象
|
|
|
- SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode,em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class,case when nvl(dp_landrayid,' ')=' ' then to_char(dp_id) else Dp_Landrayid end dp_id from employee left join department on em_departmentcode=dp_code where nvl(em_islandray,0)=-1 order by em_id");
|
|
|
+ SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode," +
|
|
|
+ "em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class," +
|
|
|
+ "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,case when nvl" +
|
|
|
+ "(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id " +
|
|
|
+ "from employee left join job on em_defaulthsid=jo_id left join hrorg on em_defaultorid=or_id where " +
|
|
|
+ "nvl(em_islandray,0)=-1 order by rn");
|
|
|
while (persons.next()) {
|
|
|
JSONObject personObj = new JSONObject();
|
|
|
// 唯一标识 (不允许为空)
|
|
|
@@ -192,36 +186,35 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
personObj.put("no", persons.getGeneralString("em_code")); // 编号 (可为空)
|
|
|
personObj.put("order", persons.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
personObj.put("keyword", persons.getGeneralString("em_name")); // 关键字 (内容格式不限制,可为空)
|
|
|
- if ("详情".equals(type)) {
|
|
|
- String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
|
|
|
- if ("离职".equals(statuscode)) {
|
|
|
- personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
|
|
|
- }else {
|
|
|
- personObj.put("isAvailable", true);
|
|
|
- }
|
|
|
- personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
|
|
|
- personObj.put("parent", persons.getGeneralString("dp_id")); // 所在部门 (可为空)
|
|
|
- List<String> data =
|
|
|
- baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id where emp_id=" + persons.getGeneralInt("emid"), String.class);
|
|
|
- JSONArray jobs=null;
|
|
|
- if (data != null && data.size() > 0) {
|
|
|
- jobs =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
+ String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
|
|
|
+ if ("离职".equals(statuscode)) {
|
|
|
+ personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ personObj.put("isAvailable", true);
|
|
|
+ }
|
|
|
+ personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
|
|
|
+ personObj.put("parent", persons.getGeneralString("or_id")); // 所在部门 (可为空)
|
|
|
+ List<String> data =
|
|
|
+ baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id where emp_id=" + persons.getGeneralInt("emid"), String.class);
|
|
|
+ data.add(persons.getString("jo_id"));
|
|
|
+ JSONArray jobs=null;
|
|
|
+ if (data != null && data.size() > 0) {
|
|
|
+ jobs =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
|
|
|
- }
|
|
|
- personObj.put("posts", jobs); // 所属岗位
|
|
|
- personObj.put("loginName", persons.getGeneralString("em_mobile")); // 登录名
|
|
|
- String password = "";
|
|
|
- if (persons.getObject("em_password") != null) {
|
|
|
- BASE64Encoder encoder = new BASE64Encoder();
|
|
|
- password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
|
|
|
- }
|
|
|
- personObj.put("password", password); // 密码,base64加密后的信息
|
|
|
- personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
|
|
|
- personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
|
|
|
- personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
|
|
|
- personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
|
|
|
- personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
|
|
|
}
|
|
|
+ personObj.put("posts", jobs); // 所属岗位
|
|
|
+ personObj.put("loginName", persons.getGeneralString("em_mobile")); // 登录名
|
|
|
+ String password = "";
|
|
|
+ if (persons.getObject("em_password") != null) {
|
|
|
+ BASE64Encoder encoder = new BASE64Encoder();
|
|
|
+ password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
|
|
|
+ }
|
|
|
+ personObj.put("password", password); // 密码,base64加密后的信息
|
|
|
+ personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
|
|
|
+ personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
|
|
|
+ personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
|
|
|
+ personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
|
|
|
+ personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
|
|
|
resultArray.add(personObj); // 人员
|
|
|
}
|
|
|
return resultArray;
|
|
|
@@ -229,13 +222,17 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
|
|
|
@Override
|
|
|
public String sendSyncOrgElementsBaseInfo() {
|
|
|
+ updateDeptElementAll();
|
|
|
+ updatePostElementAll();
|
|
|
+ updatePersonElementAll();
|
|
|
String res = "";
|
|
|
// 定义组织架构信息接入上下文
|
|
|
SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
|
|
|
// 获取测试组织数据
|
|
|
- JSONArray orgJsonData = getOrgJsonData("简略");
|
|
|
+ JSONArray orgJsonData = getOrgJsonData();
|
|
|
// 将组织数据设置到组织架构信息接入上下文
|
|
|
setOrgContext.setOrgJsonData(orgJsonData.toString());
|
|
|
+ setOrgContext.setAppName("UAS");
|
|
|
logger.info(orgJsonData.toString());
|
|
|
logger.info(setOrgContext.toString());
|
|
|
|
|
|
@@ -259,13 +256,17 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
|
|
|
@Override
|
|
|
public String sendSyncOrgElements() {
|
|
|
+ updateDeptElementAll();
|
|
|
+ updatePostElementAll();
|
|
|
+ updatePersonElementAll();
|
|
|
String res = "";
|
|
|
// 定义组织架构信息接入上下文
|
|
|
SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
|
|
|
// 获取测试组织数据
|
|
|
- JSONArray orgJsonData = getOrgJsonData("详情");
|
|
|
+ JSONArray orgJsonData = getOrgJsonData();
|
|
|
// 将组织数据设置到组织架构信息接入上下文
|
|
|
setOrgContext.setOrgJsonData(orgJsonData.toString());
|
|
|
+ setOrgContext.setAppName("UAS");
|
|
|
logger.info(orgJsonData.toString());
|
|
|
logger.info(setOrgContext.toString());
|
|
|
try {
|
|
|
@@ -278,12 +279,178 @@ public class SyncOrgElementsBaseInfoServiceImpl implements SyncOrgElementsBaseIn
|
|
|
}else if (result.getReturnState()==2){
|
|
|
res="同步蓝凌OA成功";
|
|
|
}
|
|
|
- System.out.println("请求状态:\n"+result.getReturnState()); // 0:未操作、1:失败、2:成功
|
|
|
- System.out.println("消息:\n"+result.getMessage()); // 返回状态值为 0 时,该值返回空,返回状态值为 1 时,该值错误信息,返回状态值为 2 时,该值返回空
|
|
|
} catch (Exception e) {
|
|
|
res="同步蓝凌OA失败,接口异常,异常信息:"+e.getMessage();
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 部门更新
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateDeptElementAll(){
|
|
|
+ SqlRowList orgs = baseDao.queryForRowSet("select row_number() over (order by or_id) rn, case when nvl" +
|
|
|
+ "(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,or_code,or_name ," +
|
|
|
+ "or_parentname,or_headmancode,or_headmanname,or_path, (select case when nvl(em_landrayemid,' ')=' ' " +
|
|
|
+ "then to_char(em_id) else em_landrayemid end from hrorg ho left join employee on ho" +
|
|
|
+ ".or_headmancode=em_code where ho.or_id=hr.or_subof) as superLeader,or_statuscode,or_landraysubid," +
|
|
|
+ "to_char(or_subof) or_subof,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else " +
|
|
|
+ "em_landrayemid end emid from hrorg hr left join employee on hr.or_headmancode=em_code where " +
|
|
|
+ "nvl(or_subof,0)>0 order by rn");
|
|
|
+ while (orgs.next()) {
|
|
|
+ JSONObject orgObj = new JSONObject();
|
|
|
+ orgObj.put("id", orgs.getGeneralString("or_id")); // 唯一标识 (不允许为空)
|
|
|
+ orgObj.put("lunid", orgs.getGeneralString("or_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,不允许为空)
|
|
|
+ orgObj.put("name", orgs.getGeneralString("or_name")); // 名称 (不允许为空)
|
|
|
+ orgObj.put("type", "dept"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
+ orgObj.put("no", orgs.getGeneralString("or_code")); // 编号 (可为空)
|
|
|
+ orgObj.put("order", orgs.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
+ orgObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
|
|
|
+ String landraysubid = orgs.getObject("or_landraysubid") == null ? orgs.getGeneralString("or_subof") : orgs.getGeneralString("or_landraysubid");
|
|
|
+ orgObj.put("parent", landraysubid); // 父组织 (可为空)
|
|
|
+ orgObj.put("thisLeader", orgs.getGeneralString("emid")); // 组织架构领导 (可为空)
|
|
|
+ orgObj.put("memo", orgs.getGeneralString("or_path")); // 组织架构说明 (可为空)
|
|
|
+ orgObj.put("superLeader", orgs.getGeneralString("superLeader")); // 组织上级上级领导 (可为空)
|
|
|
+ String statuscode = orgs.getObject("or_statuscode") == null ? "" : orgs.getGeneralString(
|
|
|
+ "or_statuscode");
|
|
|
+ if ("AUDITED".equals(statuscode)) {
|
|
|
+ orgObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ orgObj.put("isAvailable", false);
|
|
|
+ }
|
|
|
+ updateOrgElement(orgObj,null,null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 岗位更新
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updatePostElementAll(){
|
|
|
+ SqlRowList posts = baseDao.queryForRowSet("select row_number() over (order by jo_level) rn,jo_id joid,case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id, jo_code, jo_name, jo_orgid, jo_orgname, jo_headmancode, jo_headmanname , to_char(jo_orgid) jo_orgid, jo_parentname, jo_level, jo_emptype,jo_statuscode,jo_landrayorid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end emid,case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id from job left join employee on em_code=jo_headmancode left join hrorg on jo_orgid=or_id order by rn");
|
|
|
+ while (posts.next()) {
|
|
|
+ JSONObject postObj = new JSONObject();
|
|
|
+ postObj.put("id", posts.getGeneralString("jo_id")); // 唯一标识 (不允许为空)
|
|
|
+ postObj.put("lunid", posts.getGeneralString("jo_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
|
|
|
+ postObj.put("name", posts.getGeneralString("jo_name")); // 名称 (不允许为空)
|
|
|
+ postObj.put("type", "post"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
+ postObj.put("no", posts.getGeneralString("jo_code")); // 编号 (可为空)
|
|
|
+ postObj.put("order", posts.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
+ postObj.put("keyword", ""); // 关键字 (内容格式不限制,可为空)
|
|
|
+ postObj.put("parent", posts.getString("or_id")); // 父部门 (可为空)
|
|
|
+ postObj.put("thisLeader", posts.getGeneralString("emid")); // 部门架构领导 (可为空)
|
|
|
+ int level = posts.getGeneralInt("jo_level");
|
|
|
+ String memo = posts.getObject("jo_orgname") == null ? "岗位层级" + level :
|
|
|
+ "所属组织部门" + posts.getGeneralString("jo_orgname") + ",岗位层级" + level;
|
|
|
+ postObj.put("memo", memo); // 岗位架构说明 (可为空)
|
|
|
+ List<String> data = baseDao.queryForList("select case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end from employee where em_class<>'离职' and nvl(em_islandray,0)=-1 and em_defaulthsid="+posts.getGeneralInt("joid"), String.class);
|
|
|
+
|
|
|
+ JSONArray persons=null;
|
|
|
+ if (data != null && data.size() > 0) {
|
|
|
+ persons =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
+
|
|
|
+ }
|
|
|
+ postObj.put("persons", persons); // 岗位包含人员 (可为空)
|
|
|
+ String statuscode = posts.getObject("jo_statuscode") == null ? "" : posts.getGeneralString(
|
|
|
+ "jo_statuscode");
|
|
|
+ if ("AUDITED".equals(statuscode)) {
|
|
|
+ postObj.put("isAvailable", true); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ postObj.put("isAvailable", false);
|
|
|
+ }
|
|
|
+ updateOrgElement(null,postObj,null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人员更新
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updatePersonElementAll(){
|
|
|
+ SqlRowList persons = baseDao.queryForRowSet("select row_number() over (order by em_id) rn,em_id emid,case when nvl(em_landrayemid,' ')=' ' then to_char(em_id) else em_landrayemid end em_id,em_code,em_name,em_password,em_mobile, em_email,em_cardcode," +
|
|
|
+ "em_departmentcode,em_depart,em_position,em_defaulthsid,em_landrayemid,em_class," +
|
|
|
+ "case when nvl(or_landrayid,' ')=' ' then to_char(or_id) else or_landrayid end or_id,case when nvl" +
|
|
|
+ "(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end jo_id " +
|
|
|
+ "from employee left join job on em_defaulthsid=jo_id left join hrorg on em_defaultorid=or_id where " +
|
|
|
+ "nvl(em_islandray,0)=-1 order by rn");
|
|
|
+ while (persons.next()) {
|
|
|
+ JSONObject personObj = new JSONObject();
|
|
|
+ // 唯一标识 (不允许为空)
|
|
|
+ personObj.put("id", persons.getGeneralString("em_id"));
|
|
|
+ personObj.put("lunid", persons.getGeneralString("em_id")); // 唯一标识 (若不为空,直接作为主健存入数据库,允许为空)
|
|
|
+ personObj.put("name", persons.getGeneralString("em_name")); // 名称 (不允许为空)
|
|
|
+ personObj.put("type", "person"); // 组织架构类型 (不允许为空 可选项: org(机构)、dept(部门)、group(群组)、post(岗位)、person(人员))
|
|
|
+ personObj.put("no", persons.getGeneralString("em_code")); // 编号 (可为空)
|
|
|
+ personObj.put("order", persons.getGeneralString("rn")); // 排序号 (可为空)
|
|
|
+ personObj.put("keyword", persons.getGeneralString("em_name")); // 关键字 (内容格式不限制,可为空)
|
|
|
+ String statuscode = persons.getObject("em_class") == null ? "" : persons.getGeneralString("em_class");
|
|
|
+ if ("离职".equals(statuscode)) {
|
|
|
+ personObj.put("isAvailable", false); // 是否有效,该属性决定该部门架构是否删除
|
|
|
+ }else {
|
|
|
+ personObj.put("isAvailable", true);
|
|
|
+ }
|
|
|
+ personObj.put("memo", persons.getGeneralString("rn")); // 人员说明 (可为空)
|
|
|
+ personObj.put("parent", persons.getGeneralString("or_id")); // 所在部门 (可为空)
|
|
|
+ List<String> data =
|
|
|
+ baseDao.queryForList("select case when nvl(jo_landrayid,' ')=' ' then to_char(jo_id) else jo_landrayid end from empsjobs left join job on job_id=jo_id where emp_id=" + persons.getGeneralInt("emid"), String.class);
|
|
|
+ data.add(persons.getString("jo_id"));
|
|
|
+ JSONArray jobs=null;
|
|
|
+ if (data != null && data.size() > 0) {
|
|
|
+ jobs =JSONArray.parseArray(JSON.toJSONString(data));
|
|
|
+
|
|
|
+ }
|
|
|
+ personObj.put("posts", jobs); // 所属岗位
|
|
|
+ personObj.put("loginName", persons.getGeneralString("em_mobile")); // 登录名
|
|
|
+ String password = "";
|
|
|
+ if (persons.getObject("em_password") != null) {
|
|
|
+ BASE64Encoder encoder = new BASE64Encoder();
|
|
|
+ password = encoder.encode(persons.getGeneralString("em_password").getBytes());//base64加密
|
|
|
+ }
|
|
|
+ personObj.put("password", password); // 密码,base64加密后的信息
|
|
|
+ personObj.put("mobileNo", persons.getGeneralString("em_mobile")); // 手机号
|
|
|
+ personObj.put("email", persons.getGeneralString("em_email")); // 邮件地址
|
|
|
+ personObj.put("attendanceCardNumber", persons.getGeneralString("em_cardcode")); // 考勤号
|
|
|
+ personObj.put("workPhone", "0755878787782"); // 办公电话 (仅当 type 为 person 时,有此信息)
|
|
|
+ personObj.put("rtx", "952701"); // rtx 账号 (仅当 type 为 person 时,有此信息)
|
|
|
+ updateOrgElement(null,null,personObj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateOrgElement(JSONObject deptJsonData,JSONObject postJsonData,JSONObject personJsonData) {
|
|
|
+ try {
|
|
|
+ // 定义组织架构信息接入上下文
|
|
|
+ SysSynchroSetOrgContext setOrgContext = new SysSynchroSetOrgContext();
|
|
|
+ setOrgContext.setAppName("UAS");
|
|
|
+ if (deptJsonData!=null) {
|
|
|
+ // 将《部门》组织数据设置到组织架构信息接入上下文
|
|
|
+ setOrgContext.setOrgJsonData(deptJsonData.toString());
|
|
|
+ // 调用 WebService 接口,并接收请求返回的数据
|
|
|
+ SysSynchroSetResult deptResult = updateOrgElement(setOrgContext);
|
|
|
+ // 0:未操作、1:失败、2:成功
|
|
|
+ logger.info("请求状态:\n" + deptResult.getReturnState());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (postJsonData!=null) {
|
|
|
+ // 将《岗位》组织数据设置到组织架构信息接入上下文
|
|
|
+ setOrgContext.setOrgJsonData(postJsonData.toString());
|
|
|
+ // 调用 WebService 接口,并接收请求返回的数据
|
|
|
+ SysSynchroSetResult postResult = updateOrgElement(setOrgContext);
|
|
|
+ // 0:未操作、1:失败、2:成功
|
|
|
+ logger.info("请求状态:\n" + postResult.getReturnState());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (personJsonData!=null) {
|
|
|
+ // 将《人员》组织数据设置到组织架构信息接入上下文
|
|
|
+ setOrgContext.setOrgJsonData(personJsonData.toString());
|
|
|
+ // 调用 WebService 接口,并接收请求返回的数据
|
|
|
+ SysSynchroSetResult personResult = updateOrgElement(setOrgContext);
|
|
|
+ // 0:未操作、1:失败、2:成功
|
|
|
+ logger.info("请求状态:\n" + personResult.getReturnState());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|