diff --git a/WEB-INF/lib/artemis-http-client-1.1.12.RELEASE.jar b/WEB-INF/lib/artemis-http-client-1.1.12.RELEASE.jar new file mode 100644 index 0000000..2fca024 Binary files /dev/null and b/WEB-INF/lib/artemis-http-client-1.1.12.RELEASE.jar differ diff --git a/src/weaver/interfaces/thwl/action/PersonSingleAddAction.java b/src/weaver/interfaces/thwl/action/PersonSingleAddAction.java new file mode 100644 index 0000000..3cfdca0 --- /dev/null +++ b/src/weaver/interfaces/thwl/action/PersonSingleAddAction.java @@ -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 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 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; + } + } +} diff --git a/src/weaver/interfaces/thwl/action/sdk/AddRequest.java b/src/weaver/interfaces/thwl/action/sdk/AddRequest.java new file mode 100644 index 0000000..9cc7569 --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/AddRequest.java @@ -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; + + 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 getFaces() { + return faces; + } + + public void setFaces(ArrayList faces) { + this.faces = faces; + } +} diff --git a/src/weaver/interfaces/thwl/action/sdk/ArtemisUtil.java b/src/weaver/interfaces/thwl/action/sdk/ArtemisUtil.java new file mode 100644 index 0000000..f1bc9ba --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/ArtemisUtil.java @@ -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 { + /** + * 代理API网关nginx服务器ip端口 + */ + 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 path = new HashMap(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 path = new HashMap(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 path = new HashMap(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 path = new HashMap(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; + } + + +} diff --git a/src/weaver/interfaces/thwl/action/sdk/Faces.java b/src/weaver/interfaces/thwl/action/sdk/Faces.java new file mode 100644 index 0000000..4320ca9 --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/Faces.java @@ -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; + } +} + diff --git a/src/weaver/interfaces/thwl/action/sdk/OrgInfoRequest.java b/src/weaver/interfaces/thwl/action/sdk/OrgInfoRequest.java new file mode 100644 index 0000000..dc1ed4a --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/OrgInfoRequest.java @@ -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 orgIndexCodes; + + public ArrayList getOrgIndexCodes() { + return orgIndexCodes; + } + + public void setOrgIndexCodes(ArrayList orgIndexCodes) { + this.orgIndexCodes = orgIndexCodes; + } +} diff --git a/src/weaver/interfaces/thwl/action/sdk/PersonInfoRequest.java b/src/weaver/interfaces/thwl/action/sdk/PersonInfoRequest.java new file mode 100644 index 0000000..1a185f6 --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/PersonInfoRequest.java @@ -0,0 +1,25 @@ +package weaver.interfaces.thwl.action.sdk; + +import java.util.ArrayList; + +public class PersonInfoRequest { + private String paramName; + private ArrayList paramValue; + + public String getParamName() { + return paramName; + } + + public void setParamName(String paramName) { + this.paramName = paramName; + } + + public ArrayList getParamValue() { + return paramValue; + } + + public void setParamValue(ArrayList paramValue) { + this.paramValue = paramValue; + } +} + diff --git a/src/weaver/interfaces/thwl/action/sdk/UpdateRequest.java b/src/weaver/interfaces/thwl/action/sdk/UpdateRequest.java new file mode 100644 index 0000000..9dab492 --- /dev/null +++ b/src/weaver/interfaces/thwl/action/sdk/UpdateRequest.java @@ -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; + } +} diff --git a/src/weaver/interfaces/thwl/cronjob/PersonSyncUpdateJob.java b/src/weaver/interfaces/thwl/cronjob/PersonSyncUpdateJob.java new file mode 100644 index 0000000..04c92f7 --- /dev/null +++ b/src/weaver/interfaces/thwl/cronjob/PersonSyncUpdateJob.java @@ -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> personList = new ArrayList<>(); + while (rs.next()) { + Map 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 item : personList) { + try { + String ydryxm = item.get("ydryxm"); + String drgzbm = item.get("drgzbm"); + String departmentCode = departmentComInfo.getDepartmentCode(drgzbm); + ArrayList 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 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); + } + } +}