소스 검색

1.同步Moka面试官

Tyx 2 주 전
부모
커밋
50c9f5c3f8

+ 79 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/hrmp/hbpm/task/SyncUtil.java

@@ -17,6 +17,7 @@ import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 import kd.bos.util.HttpClientUtils;
 import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import nckd.jimin.jyyy.hr.tsrsc.plugin.util.MokaApiUtil;
 
 import java.io.IOException;
 import java.text.ParseException;
@@ -35,6 +36,7 @@ public class SyncUtil {
     public static String SyncOrg_Position = "组织+岗位同步";
     public static String SyncPerson = "人员同步";
     public static String SyncPosition = "岗位同步";
+    public static String SyncPersonMoka = "Moka面试官同步";
 
 
     /**
@@ -219,6 +221,52 @@ public class SyncUtil {
         }
     }
 
+    /**
+     * 分批调用MDM接口
+     * @param url 接口地址
+     * @param bodyData 入参
+     * @param type 同步类型
+     * @param startTime 变动开始时间
+     * @param endTime 变动结束时间
+     * @throws IOException
+     */
+    public static void batchPost(int size, String url, JSONObject bodyData, String type, String startTime, String endTime) throws IOException {
+        JSONArray oldArr = bodyData.getJSONArray("usersInfo");
+        int totalSize = oldArr.size();    //总条数
+        JSONObject newOb = new JSONObject();
+        int totalPage = totalSize % size == 0 ? totalSize / size : totalSize / size + 1;    //总页数
+        for (int i = 1; i <= totalPage; i++) {
+            int startIndex = (i - 1) * size;
+            int endIndex = Math.min(startIndex + size, totalSize);
+            JSONArray newArr = new JSONArray();
+            for (int m = startIndex; m < endIndex; m++) {
+                newArr.add(oldArr.get(m));
+            }
+            newOb.put("usersInfo", newArr);
+            //调用接口
+            JSONObject response = MokaApiUtil.syncUserInfo(url, newOb);
+            //处理返回结果
+            if(response.getInteger("code") != 200) {
+                SyncUtil.createLog("C", startTime, endTime, newOb.toJSONString(), response.toJSONString(), type);
+            }
+            else {
+                //当前调用条数
+                int curPageCount = newArr.size();
+                int successCount = response.getJSONObject("data").getInteger("successCount");
+                String status = "";
+                //A-成功 B-部分成功 C-失败
+                if (curPageCount == successCount)
+                    status = "A";
+                if (successCount < curPageCount)
+                    status = "B";
+                if (curPageCount == 0)
+                    status = "C";
+                //记录日志
+                SyncUtil.createLog(status, startTime, endTime, newOb.toJSONString(), response.toJSONString(), type);
+            }
+        }
+    }
+
     /**
      * 获取分页条数
      * @return
@@ -324,6 +372,9 @@ public class SyncUtil {
         }
         else {
             String dateStr = "1900-01-01";
+            //7.1时手工导入过一次数据,这里从7.2开始
+            if(type.equals(SyncPersonMoka))
+                dateStr = "2025-07-02";
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             return sdf.parse(dateStr);
         }
@@ -559,6 +610,34 @@ public class SyncUtil {
         return sb;
     }
 
+    /**
+     * Moka同步面试官用,获取变动档案sql
+     * @return
+     */
+    public static StringBuilder getChangePersonForMoka() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(" /*dialect*/ SELECT distinct t1.fname personName, \n");
+        sb.append("                    t1.fnumber personNumber, \n");
+        sb.append("                    t5.fnumber orgMokaNumber, \n");
+        sb.append("                   case when t7.fname = '已离职' then 1 else 0 end deactivated \n");
+        sb.append(" from t_hrpi_ermanfile t1\n");
+        sb.append(" left join t_hrpi_person t2 on t1.fpersonid = t2.fid \n");
+        sb.append(" left join t_hrpi_empposorgrel t3 on t1.fempposrelid = t3.fid \n");
+        sb.append(" left join t_haos_adminorg org on org.fid = t3.fadminorgid \n");
+        sb.append(" inner join t_tsrbs_adminorgentry t4 on t4.frealadminorgid = org.fid \n");
+        sb.append(" inner join t_tsrbs_foreignadminorg t5 on t5.fid = t4.fid \n");
+        sb.append(" left join t_hrpi_empentrel t6 on t6.fid = t1.fempentrelid \n");
+        sb.append(" left join t_hbss_laborrelstatus t7 ON t7.fid = t6.flaborrelstatusid \n");
+        sb.append(" where 1 = 1 \n");
+        sb.append("   AND t1.fiscurrentversion = '1' \n");
+        sb.append("   AND t1.fbusinessstatus = '1' \n");
+        sb.append("   AND t1.fdatastatus = '1' \n");
+        //sb.append("   AND t1.fmodifytime >= '2025-08-10 00:00:00'\n");
+        //sb.append("   AND t1.fmodifytime <= '2025-08-21 23:59:59'\n");
+        sb.append("   AND t3.fpostypeid = '1010' \n");
+        sb.append("   AND t1.fnumber not like 'w%' \n");
+        return sb;
+    }
 
 
 }

+ 277 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/hspm/opplugin/infoclassify/personinfo/BasicInfoHspmPlugin.java

@@ -0,0 +1,277 @@
+package nckd.jimin.jyyy.hr.hspm.opplugin.infoclassify.personinfo;
+
+import kd.bos.cache.CacheFactory;
+import kd.bos.cache.TempFileCache;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.serialization.SerializationUtils;
+import kd.bos.dataentity.utils.StringUtils;
+import kd.bos.fileservice.FileService;
+import kd.bos.fileservice.FileServiceFactory;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.IClientViewProxy;
+import kd.bos.form.control.AttachmentPanel;
+import kd.bos.form.control.Toolbar;
+import kd.bos.form.control.UrlUtil;
+import kd.bos.form.control.events.ItemClickEvent;
+import kd.bos.form.control.events.UploadEvent;
+import kd.bos.form.control.events.UploadListener;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.AttachmentServiceHelper;
+import kd.bos.util.CollectionUtils;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import kd.hr.hbp.common.constants.HRBaseConstants;
+import kd.hr.hbp.common.util.HRJSONUtils;
+import kd.hr.hbp.common.util.HRStringUtils;
+import kd.hr.hbp.formplugin.web.HRDataBaseEdit;
+import kd.sdk.hr.hspm.business.service.AttacheHandlerService;
+import kd.sdk.hr.hspm.common.constants.AttachConstants;
+import kd.sdk.hr.hspm.common.constants.HspmCommonConstants;
+
+import java.io.InputStream;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static kd.bos.base.bdversion.BdVersionUtils.NAME;
+import static kd.bos.org.utils.Consts.STR_ONE;
+
+/**
+ * 信息批量维护-》基本信息-》弹框页面
+ * 元数据标识:nckd_hspm_personinfo_ext,基本信息表单
+ * 新增附件面板字段
+ * author: chengchaohua
+ * data: 2025-06-19
+ */
+public class BasicInfoHspmPlugin extends HRDataBaseEdit implements UploadListener {
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        AttachmentPanel attachmentPanel = this.getView().getControl("attachmentpanelap_std"); //附件面板
+        attachmentPanel.addUploadListener(this);
+
+        Toolbar mbar = this.getView().getControl("tbmain"); // 工具栏标识
+        mbar.addItemClickListener(this);
+
+    }
+
+    /**
+     * 附件删除
+     * @param evt
+     */
+    @Override
+    public void remove(UploadEvent evt) {
+        defaultRemoveAttachment(evt);
+    }
+
+    /**
+     * 删除附件
+     *
+     * @param evt
+     */
+    protected void defaultRemoveAttachment(UploadEvent evt) {
+        Object[] attachs = evt.getUrls();
+        Map<String, Object> attachment = (Map<String, Object>) attachs[0];
+        Object removeUid = attachment.get("uid");
+        String removeUidString = this.getPageCache().get("removeUid");
+        Set<String> removeUidSet = new HashSet<>(attachs.length);
+        if (!HRStringUtils.isEmpty(removeUidString)) {
+            removeUidSet = SerializationUtils.fromJsonString(removeUidString, Set.class);
+        }
+        removeUidSet.add(removeUid.toString());
+        String callbackKey = evt.getCallbackKey();
+        String attachJsonString = this.getPageCache().get(callbackKey);
+        getPageCache().put("removeUid", SerializationUtils.toJsonString(removeUidSet));
+        AttachmentPanel control = this.getControl("attachmentpanelap_std");
+        // 缓存内移除已删除附件
+        List<Map<String, Object>> saveAttachments = control.getAttachmentData().stream()
+                .filter(attach -> !attach.get("uid").equals(removeUid))
+                .collect(Collectors.toList());
+        // 删除一个附件后,把剩下附件信息保存到缓存中
+        this.getPageCache().put(callbackKey, SerializationUtils.toJsonString(saveAttachments));
+        this.getPageCache().put("isAttachChanged", STR_ONE);
+    }
+
+    /**
+     * 附件上传
+     * @param evt
+     */
+    @Override
+    public void upload(UploadEvent evt) {
+        defaultUploadAttachment(evt);
+    }
+
+    /**
+     * 上传附件
+     *
+     * @param evt
+     */
+    protected void defaultUploadAttachment(UploadEvent evt) {
+        Object[] attachs = evt.getUrls();
+        List<Map<String, Object>> attachments = new ArrayList<>(attachs.length);
+        String callbackKey = evt.getCallbackKey();
+        String attachJsonString = this.getPageCache().get(callbackKey);
+        if (!HRStringUtils.isEmpty(attachJsonString)) {
+            attachments = SerializationUtils.fromJsonString(attachJsonString, List.class);
+        }
+        List<Map<String, Object>> finalAttachments = attachments;
+        Arrays.stream(attachs).
+                map(attObj -> (Map<String, Object>) attObj).
+                forEach(attachment -> finalAttachments.add(attachment));
+
+        // 把附件信息保存到缓存中
+        this.getPageCache().put(callbackKey, SerializationUtils.toJsonString(finalAttachments));
+        this.getPageCache().put("isAttachChanged", STR_ONE);
+    }
+
+    /**
+     * 页面初始化
+     * @param eventObject
+     */
+    @Override
+    public void beforeBindData(EventObject eventObject) {
+
+    }
+
+    private void setAttachMent(FormShowParameter formShowParameter) {
+        Long pkId = queryPkId(formShowParameter);
+        List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments("hrpi_pernontsprop", String.valueOf(pkId), "attachmentpanelap_std", false);
+        String attachKey = "attachmentpanelap_std";
+        AttachmentPanel attachmentEdit = (AttachmentPanel)this.getView().getControl(attachKey);
+        setDownLoadAllBtn(attachments);
+        this.changeAttachmentUrl(attachments);
+        IClientViewProxy clientViewProxy = (IClientViewProxy)this.getView().getService(IClientViewProxy.class);
+        clientViewProxy.setEntryProperty("attachmentpanel", "data", attachments);
+        if (attachmentEdit != null) {
+            IClientViewProxy proxy = (IClientViewProxy)attachmentEdit.getView().getService(IClientViewProxy.class);
+            proxy.setFieldProperty(attachmentEdit.getKey(), "v", attachments);
+            this.getView().getPageCache().put(attachKey, SerializationUtils.toJsonString(attachments));
+            String cacheJsonString = this.getPageCache().get("TampAttCache" + this.getView().getPageId());
+            Map<String, Object> attachmentInfo = StringUtils.isNotEmpty(cacheJsonString) ? (Map)SerializationUtils.fromJsonString(cacheJsonString, Map.class) : new HashMap();
+            ((Map)attachmentInfo).put(attachKey, attachments);
+            cacheJsonString = SerializationUtils.toJsonString(attachmentInfo);
+            this.getPageCache().put("TampAttCache" + this.getView().getPageId(), cacheJsonString);
+        }
+    }
+
+    private Long queryPkId(FormShowParameter formShowParameter) {
+        Long personId = HRJSONUtils.getLongValOfCustomParam(formShowParameter.getCustomParam("person"));
+        //因为通过this.getView().getFormShowParameter().getCustomParam("pkid")获取的pkid为空,所以需要通过其他途径获取pkid,然后再赋值
+        //查询人员非时序性属性中附件信息
+        HRBaseServiceHelper serviceHelper = new HRBaseServiceHelper("hrpi_pernontsprop");
+        //数据版本状态
+        QFilter qFilter = new QFilter("datastatus", QCP.equals,"1");
+        //初始化状态
+        QFilter dFilter = new QFilter("initstatus", QCP.equals,"2");
+        //是否当前版本
+        QFilter cFilter = new QFilter("iscurrentversion", QCP.equals,"1");
+        QFilter pFilter = new QFilter("person", QCP.equals,personId);
+        QFilter[] qFilters = new QFilter[]{qFilter,dFilter,cFilter,pFilter};
+        DynamicObject dynamicObject = serviceHelper.queryOriginalOne("id", qFilters);
+        if(dynamicObject != null){
+            this.getView().getFormShowParameter().setCustomParam("pkid", dynamicObject.getString("id"));
+            getView().getPageCache().put("pkid",this.getModel().getValue("id")+"");
+
+        }
+        return (Long)this.getModel().getValue("id");
+    }
+
+    protected void setDownLoadAllBtn(List<Map<String, Object>> attachments) {
+        if(attachments == null || attachments.size() == 0){
+            return;
+        }
+        for (Map<String, Object> attachmentMap : attachments) {
+            //是否显示预览按钮
+            String visiablePreview = "1";
+            //是否显示下载按钮
+            String visiableDownload = "1";
+            //是否显示删除按钮
+            String visiableDelete = "1";
+            //是否显示重命名按钮
+            String visiableRename = "1";
+            //visible参数规则为0,1组成,0代表不可见,1代表可见
+            attachmentMap.put("visible",visiablePreview + visiableDownload + visiableDelete + visiableRename);
+        }
+    }
+
+    private void changeAttachmentUrl(List<Map<String, Object>> attachments) {
+        if (CollectionUtils.isEmpty(attachments)) {
+            return;
+        }
+        FileService attachmentFileService = FileServiceFactory.getAttachmentFileService();
+        TempFileCache tempFileCache = CacheFactory.getCommonCacheFactory().getTempFileCache();
+        for (Map<String, Object> attachment : attachments) {
+            try{
+                String url = (String) attachment.get(AttachConstants.URL);
+                // 临时文件不用转换
+                if(url.contains("tempfile/download.do?configKey")){
+                    return;
+                }
+                if (url.contains(AttachConstants.KD_EDC_BA)) {
+                    url = url.substring(0, url.indexOf(AttachConstants.KD_EDC_BA));
+                }
+                String path = UrlUtil.getParam(url, AttachConstants.PATH);
+                InputStream inputStream = attachmentFileService.getInputStream(path);
+                String tempFileUrl = tempFileCache.saveAsFullUrl((String) attachment.get(NAME), inputStream, 2 * 60 * 60);
+                attachment.put(AttachConstants.URL, tempFileUrl);
+            }catch (Exception es){
+            }
+        }
+    }
+
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+        // 当前页面的附件面板标识:attachmentpanelap_std
+        AttachmentPanel attachmentPanel = (AttachmentPanel)this.getControl("attachmentpanelap_std");
+        List<Map<String, Object>> attachmentData = attachmentPanel.getAttachmentData();
+        int size1 = attachmentData.size();
+        // 由于也初始化上面附件面板拿不到数据,特通过下面的查询,然后再绑定到附件面板
+        List<Map<String, Object>>  atts = AttachmentServiceHelper.getAttachments("hrpi_pernontsprop",this.getModel().getValue("id") ,"attachmentpanelap_std");
+        int size2 = atts.size();
+        attachmentPanel.bindData(atts);
+        attachmentPanel.getAttachmentData();
+    }
+
+    @Override
+    public void itemClick(ItemClickEvent evt) {
+        super.itemClick(evt);
+        if (StringUtils.equals("btnsave", evt.getItemKey()) || StringUtils.equals("btnupdate", evt.getItemKey())) {
+            FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+            Long pkId = queryPkId(formShowParameter);
+            saveAttachments("hrpi_pernontsprop", pkId,"attachmentpanelap_std");
+            setAttachMent(getView().getFormShowParameter());
+        }
+    }
+
+    protected void saveAttachments(String pageId, Long pkId, String attachKey) {
+        // 从缓存中取出附件信息
+        String attachJsonString = this.getPageCache().get(attachKey);
+        if (HRStringUtils.isEmpty(attachJsonString)) {
+            return;
+        }
+        List<Map<String, Object>> attachments = SerializationUtils.fromJsonString(attachJsonString, List.class);
+        // 要取平台的缓存,不然重命名附件和备注 不会改业务的缓存字段,导致首次新增附件重命名和备注失败
+        String cacheJsonString = this.getPageCache().get("TampAttCache" + this.getView().getPageId());
+        if (StringUtils.isNotBlank(cacheJsonString) && !StringUtils.isEmpty(cacheJsonString)) {
+            Map<String, Object> attachmentInfo = SerializationUtils.fromJsonString(cacheJsonString, Map.class);
+            // attachmentInfo 的key为面板标识
+            List<Map<String, Object>> tempAtts = (List) attachmentInfo.get("attachmentpanelap_std");
+            if (tempAtts != null) {
+                attachments = tempAtts;
+            }
+        }
+        Map<String, Object> attachmentInfo = new HashMap<>(HRBaseConstants.INT_CAPACITY);
+        // 绑定到协作单的附件标识attachmentpanel中
+        attachmentInfo.put(HspmCommonConstants.ATTACHMENT_PANEL_AP, attachments);
+        // 调用中台附件保存
+        AttacheHandlerService attachmentHandler = AttacheHandlerService.getInstance();
+        String removeUidString = this.getPageCache().get("removeUid");
+        Set<String> removeUidSet = new HashSet<>();
+        if (!HRStringUtils.isEmpty(removeUidString)) {
+            removeUidSet = SerializationUtils.fromJsonString(removeUidString, Set.class);
+        }
+        removeUidSet.forEach(uid -> attachmentHandler.invokeRemoveAttachment(pageId, pkId, uid));
+        attachmentHandler.invokeAttachment(pageId, pkId, "", attachmentInfo);
+    }
+}

+ 132 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/tsrsc/plugin/task/MokaSyncUserTask.java

@@ -0,0 +1,132 @@
+package nckd.jimin.jyyy.hr.tsrsc.plugin.task;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import kd.bos.algo.DataSet;
+import kd.bos.algo.Row;
+import kd.bos.context.RequestContext;
+import kd.bos.db.DB;
+import kd.bos.db.DBRoute;
+import kd.bos.exception.KDException;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.schedule.executor.AbstractTask;
+import kd.sdk.plugin.Plugin;
+import nckd.base.helper.CommonHelperUtils;
+import nckd.jimin.jyyy.hr.hrmp.hbpm.task.SyncUtil;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+
+/**
+ * 同步人员至Moka面试官
+ */
+public class MokaSyncUserTask extends AbstractTask implements Plugin {
+    private static final Log log = LogFactory.getLog(MokaSyncUserTask.class);
+    private static String startTime = "";
+    private static String endTime = "";
+    @Override
+    public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
+        //初始化时间
+        try {
+            initDateRange(map);
+            //获取Moka参数
+            Map<String, String> params = CommonHelperUtils.getCommonParams("Moka");
+            //1.查找变动人员
+            StringBuilder sb = SyncUtil.getChangePersonForMoka();
+            sb.append(" AND t1.fmodifytime >= '"+startTime+"' \n");
+            sb.append(" AND t1.fmodifytime <= '"+endTime+"' \n");
+            DataSet dataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("hr"), sb.toString());
+            //2.组装入参
+            JSONObject ob = new JSONObject();
+            buildJSON(ob, dataSet, params);
+            if(ob.getJSONArray("usersInfo").size() == 0) {
+                SyncUtil.createLog(SyncUtil.v_success, startTime, endTime, "未查询到变化人员", "未调用", SyncUtil.SyncPersonMoka);
+                return;
+            }
+            //3.拆分调用接口,每次最多100条
+            String url = params.get("syncUserUrl");
+            SyncUtil.batchPost(100, url, ob, SyncUtil.SyncPersonMoka, startTime, endTime);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 组装入参
+     * @param ob
+     * @param dataSet
+     */
+    public static void buildJSON(JSONObject ob, DataSet dataSet, Map<String, String> params) {
+        //        {
+//            "usersInfo": [
+//            {
+//                "email": "huohuohou2@mokahr.com",   0
+//                    "name": "liu大哥89",     1
+//                    "phone": "15101069886", 0
+//                    "number": "6661889",    1
+//                    "roleId": 60,           0
+//                    "departmentCode": [],
+//                    "superiorEmail": "",
+//                    "deactivated": 0,
+//                    "thirdPartyId": "",
+//                    "uniqueType": "number",
+//                    "autoActivated": 1,
+//                    "nickname": "花名",
+//                    "locale": "zh-CN"
+//            }
+//            ]
+//        }
+        //招聘需求负责人工号,这些人变化时,角色ID不发生变化
+        String HRBPNumbers = params.get("HRBP").toString();
+        JSONArray arr = new JSONArray();
+        int roleId = Integer.valueOf(params.get("roleId"));
+        int HRRoleId = Integer.valueOf(params.get("HRRoleId"));
+        while(dataSet.hasNext()) {
+            JSONObject data = new JSONObject(true);
+            Row rowData = dataSet.next();
+            data.put("name", rowData.getString("personName"));
+            String personNumber = rowData.getString("personNumber");
+            data.put("number", personNumber);
+            if(HRBPNumbers.indexOf(personNumber) >= 0) {
+                data.put("roleId", HRRoleId);
+            }
+            else {
+                data.put("roleId", roleId);
+            }
+            JSONArray deptArr = new JSONArray();
+            deptArr.add(rowData.getString("orgMokaNumber"));
+            data.put("departmentCode", deptArr);
+            data.put("deactivated", rowData.getInteger("deactivated"));
+            data.put("uniqueType", "number");
+            data.put("autoActivated", 1);
+            arr.add(data);
+        }
+        ob.put("usersInfo", arr);
+    }
+
+    /**
+     * 根据调度作业上配置的参数初始化时间范围
+     * @param map
+     */
+    public void initDateRange(Map<String, Object> map) throws ParseException {
+        boolean isAuto = Boolean.valueOf(map.get("isAuto").toString());
+        if(!isAuto) {
+            startTime = map.get("startTime").toString();
+            endTime = map.get("endTime").toString();
+        }
+        //取最近一次日志的时间
+        else {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            startTime = sdf.format(SyncUtil.getLastSyncEndTime(SyncUtil.SyncPersonMoka));
+            endTime = sdf.format(new Date());
+        }
+    }
+
+}

+ 20 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/tsrsc/plugin/util/MokaApiUtil.java

@@ -85,6 +85,26 @@ public class MokaApiUtil {
         return result;
     }
 
+    /**
+     * 同步人员信息
+     * @param url
+     * @param bodyData
+     * @return
+     * @throws IOException
+     */
+    public static JSONObject syncUserInfo (String url, JSONObject bodyData) throws IOException {
+        Map<String, String> headers = new HashMap();
+        headers.put("Content-Type", "application/json");
+        headers.put("Accept", "*/*");
+        headers.put("Authorization", "Basic " + Base64.encodeBase64String((getParamValue("moka_apikey") + ":").getBytes()));
+        logger.info(String.format("url[%s],data[%s]", url, bodyData.toJSONString()));
+        System.out.println(String.format("url[%s],data[%s]", url, bodyData.toJSONString()));
+        String responseEntify = postjson(url, headers, bodyData.toJSONString(), 10000, 10000);
+        logger.info(responseEntify);
+        JSONObject result = (JSONObject)JSONObject.parse(responseEntify);
+        return result;
+    }
+
     /**
      * 调用Moka接口
      * @param url