123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package com.kingdee.eas.custom.synctask.utils;
- import com.alibaba.fastjson.JSONObject;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.metadata.entity.EntityViewInfo;
- import com.kingdee.bos.metadata.entity.FilterInfo;
- import com.kingdee.bos.metadata.entity.FilterItemInfo;
- import com.kingdee.bos.metadata.entity.SelectorItemCollection;
- import com.kingdee.bos.metadata.query.util.CompareType;
- import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
- import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.IAdminOrgUnit;
- import com.kingdee.eas.custom.synctask.ActionTypeEnum;
- import com.kingdee.eas.custom.synctask.entity.AdminOrg;
- import com.kingdee.eas.hr.ats.AtsUtil;
- import com.kingdee.util.StringUtils;
- import okhttp3.*;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.log4j.Logger;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.*;
- /**
- * @author qingwu
- * @date 2024/10/21
- * @apiNote
- */
- public class SynctaskUtils {
- public static Logger logger = Logger.getLogger("com.kingdee.eas.custom.synctask.utils.SynctaskUtils");
- private Properties propt = new Properties();
- public SynctaskUtils() {
- 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"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 同步组织
- * 1、当参数billIds不为空值时,增量同步参数中的部门数据到OA
- * 2、当参数billIds为空时,全量同步所有组织数据到OA
- * 3、当参数action不为空时,根据操作类型同步数据
- * 4、当参数action为空时,判断部门状态是否为失效,如果失效就执行删除同步,否则就执行编辑同步
- * 5、部门新增,调用部门同步方法增量同步,操作类型为新增
- *
- * @param billds
- * @param action
- * @throws BOSException
- */
- public void _syncOrgUnitToOA(Context ctx, String billds, ActionTypeEnum action) throws BOSException, IOException {
- logger.error("_syncOrgUnitToOA----------------------start");
- logger.error("_syncOrgUnitToOA----------------------billds: " + billds);
- IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
- List dataList = new ArrayList();
- String actionType = action == null ? "" : action.getValue().toLowerCase();
- //当参数billIds不为空值时,增量同步参数中的部门数据到OA
- FilterInfo filterInfo = null;
- if (!StringUtils.isEmpty(billds)) {
- Set<String> adminOrgIds = AtsUtil.toSet(billds);
- filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("id", adminOrgIds, CompareType.INCLUDE));
- }
- SelectorItemCollection sic = new SelectorItemCollection();
- sic.add("*");
- sic.add("parent.number");
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
- AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection(entityViewInfo);
- for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
- AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
- String orgName = adminOrgUnitInfo.getName();
- AdminOrg adminOrg = new AdminOrg();
- boolean isSealUp = adminOrgUnitInfo.isIsSealUp();
- if (isSealUp) {
- adminOrg.setAction("delete");
- adminOrg.setCanceled("0");
- } else {
- adminOrg.setAction("add");
- }
- adminOrg.setCode(adminOrgUnitInfo.getNumber());
- adminOrg.setShortname(orgName);
- adminOrg.setFullname(orgName);
- //adminOrg.setParent_code("ITCS");
- adminOrg.setOrg_code("0");
- adminOrg.setParent_code(adminOrgUnitInfo.getParent().getNumber());
- //adminOrg.setOrder((String.valueOf(adminOrgUnitInfo.getIndex())));
- dataList.add(adminOrg);
- }
- //调用执行同步组织到OA
- executeSyncOrgUnitToOA(dataList);
- }
- /**
- * 执行同步组织到OA
- *
- * @param dataList
- */
- public void executeSyncOrgUnitToOA(List dataList) throws IOException, BOSException {
- 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 = "/api/hrm/resful/synDepartment";
- String syncOrgUnitApiUrl = this.propt.getProperty("syncOrgUnitApiUrl");
- String url = this.propt.getProperty("url");
- logger.error("executeSyncOrgUnitToOA----------------------syncOrgUnitApiUrl" + syncOrgUnitApiUrl);
- if (StringUtils.isEmpty(syncOrgUnitApiUrl)) {
- throw new BOSException("同步组织到OA接口地址不能为空!");
- }
- 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(url + syncOrgUnitApiUrl)
- .post(body)
- .addHeader("Content-Type", "application/json")
- .addHeader("Accept", "*/*")
- .addHeader("Accept-Encoding", "gzip, deflate, br")
- .addHeader("User-Agent", "PostmanRuntime-ApipostRuntime/1.1.0")
- .addHeader("Connection", "keep-alive")
- .build();
- Response response = client.newCall(request).execute();
- String respBody = response.body().string();
- if (response.isSuccessful()) {
- } else {
- }
- }
- }
- /**
- * 获取token
- *
- * @return
- */
- public String getToken() {
- String key = this.propt.getProperty("key");
- long l = System.currentTimeMillis();//时间戳毫秒数
- String code = key.concat(Long.toString(l));
- //String s = DigestUtils.md5Hex(code).toUpperCase();
- String s = DigestUtils.md5Hex(code).toUpperCase();
- Map<String, String> map = new HashMap<>();
- map.put("key", s);
- map.put("ts", Long.toString(l));
- logger.error("getToken" + JSONObject.toJSONString(map));
- return JSONObject.toJSONString(map);
- }
- }
|