#3178759 人员入职、人员异动 接口开发

Z浙江泰鸿万立科技股份有限公司
dxfeng 10 months ago
parent e52a8bc5fd
commit 17378da9d4

@ -0,0 +1,107 @@
package weaver.interfaces.thwl.action;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.thwl.action.sdk.AddRequest;
import weaver.interfaces.thwl.action.sdk.ArtemisUtil;
import weaver.interfaces.thwl.action.sdk.OrgInfoRequest;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class PersonSingleAddAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
try {
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
Map<String, String> mainDataMap = new HashMap<>(16);
for (Property property : properties) {
mainDataMap.put(property.getName(), property.getValue());
}
String ryid = Util.null2String(mainDataMap.get("ryid"));
if (StringUtils.isBlank(ryid)) {
requestInfo.getRequestManager().setMessagecontent("未获取到有效的人员ID请确认");
return Action.FAILURE_AND_CONTINUE;
}
RecordSet rs = new RecordSet();
rs.executeQuery("select t.departmentid,t.lastname,t.sex,t.birthday,t.mobile,t.certificatenum,t.workcode from hrmresource t where t.id = ? ", ryid);
String departmentId = "";
String lastName = "";
String sex = "";
String birthday = "";
String mobile = "";
String certificateNum = "";
String workCode = "";
String departmentCode = "";
if (rs.next()) {
departmentId = rs.getString("departmentid");
lastName = rs.getString("lastname");
sex = rs.getString("sex");
birthday = rs.getString("birthday");
mobile = rs.getString("mobile");
certificateNum = rs.getString("certificatenum");
workCode = rs.getString("workcode");
}
rs.executeQuery("select departmentcode from hrmdepartment where id = ? ", departmentId);
if (rs.next()) {
departmentCode = rs.getString("departmentcode");
}
if (StringUtils.isBlank(departmentCode)) {
requestInfo.getRequestManager().setMessagecontent("未获取到当前人员的部门编号,请确认");
return Action.FAILURE_AND_CONTINUE;
}
ArrayList<String> codeList = new ArrayList<>();
codeList.add(departmentCode);
OrgInfoRequest orgInfoRequest = new OrgInfoRequest();
orgInfoRequest.setOrgIndexCodes(codeList);
// 获取组织唯一标识
String orgIndexCode = ArtemisUtil.getOrgIndexCode(orgInfoRequest);
if (StringUtils.isBlank(orgIndexCode)) {
requestInfo.getRequestManager().setMessagecontent("未获取到当前人员部门的组织唯一标识码,请确认");
return Action.FAILURE_AND_CONTINUE;
}
// 添加人员
AddRequest addRequest = new AddRequest();
addRequest.setPersonName(lastName);
String gender = "0";
if("0".equals(sex)){
gender="1";
}else if("1".equals(sex)){
gender="2";
}
addRequest.setGender(gender);
addRequest.setOrgIndexCode(orgIndexCode);
addRequest.setBirthday(birthday);
addRequest.setPhoneNo(mobile);
addRequest.setCertificateType("111");
addRequest.setCertificateNo(certificateNum);
addRequest.setJobNo(workCode);
ArtemisUtil.personSingleAdd(addRequest);
return Action.SUCCESS;
} catch (Exception e) {
requestInfo.getRequestManager().setMessagecontent(e.getMessage());
new BaseBean().writeLog(e);
return Action.FAILURE_AND_CONTINUE;
}
}
}

@ -0,0 +1,101 @@
package weaver.interfaces.thwl.action.sdk;
import java.util.ArrayList;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class AddRequest {
private String personName;
private String gender;
private String orgIndexCode;
private String birthday;
private String phoneNo;
private String email;
private String certificateType;
private String certificateNo;
private String jobNo;
private ArrayList<Faces> faces;
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getOrgIndexCode() {
return orgIndexCode;
}
public void setOrgIndexCode(String orgIndexCode) {
this.orgIndexCode = orgIndexCode;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCertificateType() {
return certificateType;
}
public void setCertificateType(String certificateType) {
this.certificateType = certificateType;
}
public String getCertificateNo() {
return certificateNo;
}
public void setCertificateNo(String certificateNo) {
this.certificateNo = certificateNo;
}
public String getJobNo() {
return jobNo;
}
public void setJobNo(String jobNo) {
this.jobNo = jobNo;
}
public ArrayList<Faces> getFaces() {
return faces;
}
public void setFaces(ArrayList<Faces> faces) {
this.faces = faces;
}
}

@ -0,0 +1,157 @@
package weaver.interfaces.thwl.action.sdk;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import weaver.general.BaseBean;
import java.util.HashMap;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class ArtemisUtil {
/**
* APInginxip
*/
private static final String HOST = new BaseBean().getPropValue("artemisSdk", "host");
/**
* appkey
*/
private static final String APP_KEY = new BaseBean().getPropValue("artemisSdk", "appKey");
/**
* appSecret
*/
private static final String APP_SECRET = new BaseBean().getPropValue("artemisSdk", "appSecret");
/**
* config
* @return
*/
private static ArtemisConfig getConfig() {
ArtemisConfig config = new ArtemisConfig();
config.setHost(HOST);
config.setAppKey(APP_KEY);
config.setAppSecret(APP_SECRET);
return config;
}
/**
*
* @param addRequest
* @throws Exception
*/
public static void personSingleAdd(AddRequest addRequest) throws Exception {
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", "/artemis/api/resource/v2/person/single/add");
}
};
String body = JSON.toJSONString(addRequest);
String response = ArtemisHttpUtil.doPostStringArtemis(getConfig(), path, body, null, null, "application/json");
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equals(msg)) {
return;
}
throw new RuntimeException(msg);
}
/**
*
* @param updateRequest
* @throws Exception
*/
public static void personSingleUpdate(UpdateRequest updateRequest) throws Exception {
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", "/artemis/api/resource/v1/person/single/update");
}
};
String body = JSON.toJSONString(updateRequest);
String response = ArtemisHttpUtil.doPostStringArtemis(getConfig(), path, body, null, null, "application/json");
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equals(msg)) {
return;
}
throw new RuntimeException(msg);
}
/**
*
*
* @param orgInfo
* @return
*/
public static String getOrgIndexCode(OrgInfoRequest orgInfo) throws Exception {
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", "/artemis/api/resource/v1/org/orgIndexCodes/orgInfo");
}
};
String body = JSON.toJSONString(orgInfo);
String response = ArtemisHttpUtil.doPostStringArtemis(getConfig(), path, body, null, null, "application/json");
String orgIndexCode = "";
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equals(msg)) {
JSONObject data = jsonObject.getJSONObject("data");
JSONArray list = data.getJSONArray("list");
int total = data.getIntValue("total");
if (total > 0) {
JSONObject info = list.getJSONObject(0);
orgIndexCode = info.getString("orgIndexCode");
}
} else {
throw new RuntimeException(msg);
}
return orgIndexCode;
}
/**
* ID
*
* @param personInfoRequest
* @return
*/
public static String getPersonId(PersonInfoRequest personInfoRequest) throws Exception {
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", "/artemis/api/resource/v1/person/condition/personInfo");
}
};
String body = JSON.toJSONString(personInfoRequest);
String response = ArtemisHttpUtil.doPostStringArtemis(getConfig(), path, body, null, null, "application/json");
String personId = "";
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equals(msg)) {
JSONObject data = jsonObject.getJSONObject("data");
JSONArray list = data.getJSONArray("list");
int total = data.getIntValue("total");
if (total > 0) {
JSONObject info = list.getJSONObject(0);
personId = info.getString("personId");
}
} else {
throw new RuntimeException(msg);
}
return personId;
}
}

@ -0,0 +1,19 @@
package weaver.interfaces.thwl.action.sdk;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class Faces {
private String faceData;
public String getFaceData() {
return faceData;
}
public void setFaceData(String faceData) {
this.faceData = faceData;
}
}

@ -0,0 +1,20 @@
package weaver.interfaces.thwl.action.sdk;
import java.util.ArrayList;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class OrgInfoRequest {
private ArrayList<String> orgIndexCodes;
public ArrayList<String> getOrgIndexCodes() {
return orgIndexCodes;
}
public void setOrgIndexCodes(ArrayList<String> orgIndexCodes) {
this.orgIndexCodes = orgIndexCodes;
}
}

@ -0,0 +1,25 @@
package weaver.interfaces.thwl.action.sdk;
import java.util.ArrayList;
public class PersonInfoRequest {
private String paramName;
private ArrayList<String> paramValue;
public String getParamName() {
return paramName;
}
public void setParamName(String paramName) {
this.paramName = paramName;
}
public ArrayList<String> getParamValue() {
return paramValue;
}
public void setParamValue(ArrayList<String> paramValue) {
this.paramValue = paramValue;
}
}

@ -0,0 +1,162 @@
package weaver.interfaces.thwl.action.sdk;
/**
* @author:dxfeng
* @createTime: 2024/08/15
* @version: 1.0
*/
public class UpdateRequest {
private String personId;
private String personName;
private String orgIndexCode;
private Integer gender;
private String birthday;
private String phoneNo;
private String email;
private String certificateType;
private String certificateNo;
private String jobNo;
private String firstWorkingTime;
private String enterTime;
private String formalEmpTime;
private String empType;
private String empLevel;
private String workPlace;
private String leaveTime;
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public String getOrgIndexCode() {
return orgIndexCode;
}
public void setOrgIndexCode(String orgIndexCode) {
this.orgIndexCode = orgIndexCode;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCertificateType() {
return certificateType;
}
public void setCertificateType(String certificateType) {
this.certificateType = certificateType;
}
public String getCertificateNo() {
return certificateNo;
}
public void setCertificateNo(String certificateNo) {
this.certificateNo = certificateNo;
}
public String getJobNo() {
return jobNo;
}
public void setJobNo(String jobNo) {
this.jobNo = jobNo;
}
public String getFirstWorkingTime() {
return firstWorkingTime;
}
public void setFirstWorkingTime(String firstWorkingTime) {
this.firstWorkingTime = firstWorkingTime;
}
public String getEnterTime() {
return enterTime;
}
public void setEnterTime(String enterTime) {
this.enterTime = enterTime;
}
public String getFormalEmpTime() {
return formalEmpTime;
}
public void setFormalEmpTime(String formalEmpTime) {
this.formalEmpTime = formalEmpTime;
}
public String getEmpType() {
return empType;
}
public void setEmpType(String empType) {
this.empType = empType;
}
public String getEmpLevel() {
return empLevel;
}
public void setEmpLevel(String empLevel) {
this.empLevel = empLevel;
}
public String getWorkPlace() {
return workPlace;
}
public void setWorkPlace(String workPlace) {
this.workPlace = workPlace;
}
public String getLeaveTime() {
return leaveTime;
}
public void setLeaveTime(String leaveTime) {
this.leaveTime = leaveTime;
}
}

@ -0,0 +1,76 @@
package weaver.interfaces.thwl.cronjob;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.schedule.BaseCronJob;
import weaver.interfaces.thwl.action.sdk.ArtemisUtil;
import weaver.interfaces.thwl.action.sdk.OrgInfoRequest;
import weaver.interfaces.thwl.action.sdk.PersonInfoRequest;
import weaver.interfaces.thwl.action.sdk.UpdateRequest;
import java.util.*;
/**
* @author:dxfeng
* @createTime: 2024/08/14
* @version: 1.0
*/
public class PersonSyncUpdateJob extends BaseCronJob {
@Override
public void execute() {
RecordSet rs = new RecordSet();
try {
String currentDate = DateUtil.getCurrentDate();
rs.executeQuery("select ydryxm,drgzbm from formtable_main_176 where dgrq = ? ", currentDate);
List<Map<String, String>> personList = new ArrayList<>();
while (rs.next()) {
Map<String, String> map = new HashMap<>();
map.put(rs.getString("ydryxm"), rs.getString("drgzbm"));
personList.add(map);
}
rs.writeLog("人员异动同步任务开始,共查询到异动人员" + personList.size());
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
for (Map<String, String> item : personList) {
try {
String ydryxm = item.get("ydryxm");
String drgzbm = item.get("drgzbm");
String departmentCode = departmentComInfo.getDepartmentCode(drgzbm);
ArrayList<String> codeList = new ArrayList<>();
codeList.add(departmentCode);
OrgInfoRequest orgInfoRequest = new OrgInfoRequest();
orgInfoRequest.setOrgIndexCodes(codeList);
// 获取组织唯一标识
String orgIndexCode = ArtemisUtil.getOrgIndexCode(orgInfoRequest);
// 获取人员ID
String workCode = resourceComInfo.getWorkcode(ydryxm);
PersonInfoRequest personInfoRequest = new PersonInfoRequest();
personInfoRequest.setParamName("");
ArrayList<String> list = new ArrayList<>();
list.add(workCode);
personInfoRequest.setParamValue(list);
String personId = ArtemisUtil.getPersonId(personInfoRequest);
rs.writeLog("ydryxm==" + ydryxm + ",drgzbm==" + drgzbm + ",workCode==" + workCode + ",personId==" + personId);
if(StringUtils.isBlank(workCode) || StringUtils.isBlank(personId)){
continue;
}
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setPersonId(personId);
updateRequest.setOrgIndexCode(orgIndexCode);
ArtemisUtil.personSingleUpdate(updateRequest);
} catch (Exception e) {
rs.writeLog(e);
}
}
} catch (Exception e) {
rs.writeLog("人员异动同步失败", e);
}
}
}
Loading…
Cancel
Save