|
|
@@ -1,13 +1,16 @@
|
|
|
package com.usoftchina.uas.office.dingtalk.service;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.dingtalk.api.request.OapiDepartmentCreateRequest;
|
|
|
import com.dingtalk.api.request.OapiDepartmentUpdateRequest;
|
|
|
+import com.dingtalk.api.response.OapiDepartmentGetResponse;
|
|
|
import com.dingtalk.api.response.OapiDepartmentListResponse;
|
|
|
import com.usoftchina.dingtalk.sdk.AddrBookSdk;
|
|
|
import com.usoftchina.uas.office.dingtalk.entity.HrOrg;
|
|
|
import com.usoftchina.uas.office.service.AbstractService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.dao.EmptyResultDataAccessException;
|
|
|
+import org.springframework.jdbc.support.rowset.SqlRowSet;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
@@ -39,10 +42,23 @@ public class UasOrgService extends AbstractService {
|
|
|
* 同步全部 uas组织资料 -> 企业微信部门资料
|
|
|
*/
|
|
|
public void sync() {
|
|
|
- List<HrOrg> HrOrgList = queryForBeanList("select * from HrOrg where or_statuscode<>'DISABLE'", HrOrg.class);
|
|
|
- if (!CollectionUtils.isEmpty(HrOrgList)) {
|
|
|
- List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas");
|
|
|
- checkOrg(groupOrgList(HrOrgList), 0, groupDepartmentList(departmentList), 0L);
|
|
|
+ // 同步根部门
|
|
|
+ HrOrg rootOrg = queryForBean("select * from hrorg where or_subof=0 and or_statuscode<>'DISABLE'", HrOrg.class);
|
|
|
+ syncRoot(rootOrg);
|
|
|
+
|
|
|
+ List<HrOrg> orgList = queryForBeanList("select * from HrOrg where or_subof<>0 and or_statuscode<>'DISABLE'", HrOrg.class);
|
|
|
+ if (!CollectionUtils.isEmpty(orgList)) {
|
|
|
+ List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas", 1);
|
|
|
+ checkOrg(groupOrgList(orgList), rootOrg.getOr_id(), groupDepartmentList(departmentList), 1L);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步根部门
|
|
|
+ */
|
|
|
+ private void syncRoot(HrOrg rootOrg) {
|
|
|
+ if (null == rootOrg.getOr_ding() || 1 != rootOrg.getOr_ding()) {
|
|
|
+ updateOrgDingId(rootOrg, 1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -50,70 +66,48 @@ public class UasOrgService extends AbstractService {
|
|
|
* 同步 uas组织资料 -> 企业微信部门资料
|
|
|
*/
|
|
|
public void sync(HrOrg org) {
|
|
|
+ if (null == org.getOr_subof() || 0 == org.getOr_subof()) {
|
|
|
+ syncRoot(org);
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (null != org.getOr_ding()) {
|
|
|
- if (null == org.getOr_subof() || 0 == org.getOr_subof()) {
|
|
|
+ HrOrg parentOrg = getById(org.getOr_subof());
|
|
|
+ if (null != parentOrg) {
|
|
|
// 修改部门
|
|
|
OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
req.setId(org.getOr_ding());
|
|
|
req.setName(org.getOr_name());
|
|
|
- req.setParentid("0");
|
|
|
+ req.setParentid(String.valueOf(parentOrg.getOr_ding()));
|
|
|
addrBookSdk.updateDepartment("Uas", req);
|
|
|
- } else {
|
|
|
- HrOrg parentOrg = getById(org.getOr_subof());
|
|
|
- if (null != parentOrg) {
|
|
|
- // 修改部门
|
|
|
- OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
- req.setId(org.getOr_ding());
|
|
|
- req.setName(org.getOr_name());
|
|
|
- req.setParentid(String.valueOf(parentOrg.getOr_ding()));
|
|
|
- addrBookSdk.updateDepartment("Uas", req);
|
|
|
- }
|
|
|
}
|
|
|
} else {
|
|
|
- List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas");
|
|
|
- if (null == org.getOr_subof() || 0 == org.getOr_subof()) {
|
|
|
- OapiDepartmentListResponse.Department rootDept = null;
|
|
|
+ List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas", 1);
|
|
|
+ try {
|
|
|
+ // 只需考虑父级组织已同步的情况
|
|
|
+ HrOrg parentOrg = getById(org.getOr_subof());
|
|
|
+ OapiDepartmentListResponse.Department dept = null;
|
|
|
for (OapiDepartmentListResponse.Department department : departmentList) {
|
|
|
- if (department.getParentid() == 0) {
|
|
|
- rootDept = department;
|
|
|
+ if (department.getParentid().equals(parentOrg.getOr_ding()) && department.getName().equals(org.getOr_name())) {
|
|
|
+ dept = department;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- // 修改部门名称
|
|
|
- OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
- req.setId(rootDept.getId());
|
|
|
- req.setName(org.getOr_name());
|
|
|
- req.setParentid("0");
|
|
|
- addrBookSdk.updateDepartment("Uas", req);
|
|
|
- updateOrgDingId(org, rootDept.getId());
|
|
|
- } else {
|
|
|
- try {
|
|
|
- // 只需考虑父级组织已同步的情况
|
|
|
- HrOrg parentOrg = getById(org.getOr_subof());
|
|
|
- OapiDepartmentListResponse.Department dept = null;
|
|
|
- for (OapiDepartmentListResponse.Department department : departmentList) {
|
|
|
- if (department.getParentid().equals(parentOrg.getOr_ding()) && department.getName().equals(org.getOr_name())) {
|
|
|
- dept = department;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (null != dept) {
|
|
|
- // 修改部门名称
|
|
|
- OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
- req.setId(dept.getId());
|
|
|
- req.setName(org.getOr_name());
|
|
|
- addrBookSdk.updateDepartment("Uas", req);
|
|
|
- updateOrgDingId(org, dept.getId());
|
|
|
- } else {
|
|
|
- OapiDepartmentCreateRequest req = new OapiDepartmentCreateRequest();
|
|
|
- req.setName(org.getOr_name());
|
|
|
- req.setParentid(String.valueOf(parentOrg.getOr_ding()));
|
|
|
- req.setCreateDeptGroup(true);
|
|
|
- Long departmentId = addrBookSdk.createDepartment("Uas", req);
|
|
|
- updateOrgDingId(org, departmentId);
|
|
|
- }
|
|
|
- } catch (EmptyResultDataAccessException e) {
|
|
|
+ if (null != dept) {
|
|
|
+ // 修改部门名称
|
|
|
+ OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
+ req.setId(dept.getId());
|
|
|
+ req.setName(org.getOr_name());
|
|
|
+ addrBookSdk.updateDepartment("Uas", req);
|
|
|
+ updateOrgDingId(org, dept.getId());
|
|
|
+ } else {
|
|
|
+ OapiDepartmentCreateRequest req = new OapiDepartmentCreateRequest();
|
|
|
+ req.setName(org.getOr_name());
|
|
|
+ req.setParentid(String.valueOf(parentOrg.getOr_ding()));
|
|
|
+ req.setCreateDeptGroup(true);
|
|
|
+ Long departmentId = addrBookSdk.createDepartment("Uas", req);
|
|
|
+ updateOrgDingId(org, departmentId);
|
|
|
}
|
|
|
+ } catch (EmptyResultDataAccessException e) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -219,11 +213,24 @@ public class UasOrgService extends AbstractService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改部门管理员
|
|
|
+ */
|
|
|
+ public void updateManagerUser() {
|
|
|
+ SqlRowSet orgSet = jdbcTemplate.queryForRowSet("select or_ding,em_ding from HrOrg,employee where or_headmancode=em_code and or_subof<>0 and or_statuscode<>'DISABLE' and or_ding is not null and em_ding is not null");
|
|
|
+ while (orgSet.next()) {
|
|
|
+ OapiDepartmentUpdateRequest req = new OapiDepartmentUpdateRequest();
|
|
|
+ req.setId(orgSet.getLong("or_ding"));
|
|
|
+ req.setDeptManagerUseridList(orgSet.getString("em_ding"));
|
|
|
+ addrBookSdk.updateDepartment("Uas", req);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 清除下面没有人员的部门
|
|
|
*/
|
|
|
public void clearUseless() {
|
|
|
- List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas");
|
|
|
+ List<OapiDepartmentListResponse.Department> departmentList = addrBookSdk.getDepartmentList("Uas", 1);
|
|
|
Map<Long, List<OapiDepartmentListResponse.Department>> group = groupDepartmentList(departmentList);
|
|
|
while (!departmentList.isEmpty()) {
|
|
|
Iterator<OapiDepartmentListResponse.Department> iterator = departmentList.iterator();
|