From 17378da9d4713bf4dd00aa429b3ff10a17b5f4d0 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 15 Aug 2024 10:54:08 +0800 Subject: [PATCH] =?UTF-8?q?#3178759=20=E4=BA=BA=E5=91=98=E5=85=A5=E8=81=8C?= =?UTF-8?q?=E3=80=81=E4=BA=BA=E5=91=98=E5=BC=82=E5=8A=A8=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../artemis-http-client-1.1.12.RELEASE.jar | Bin 0 -> 41237 bytes .../thwl/action/PersonSingleAddAction.java | 107 ++++++++++++ .../thwl/action/sdk/AddRequest.java | 101 +++++++++++ .../thwl/action/sdk/ArtemisUtil.java | 157 +++++++++++++++++ .../interfaces/thwl/action/sdk/Faces.java | 19 ++ .../thwl/action/sdk/OrgInfoRequest.java | 20 +++ .../thwl/action/sdk/PersonInfoRequest.java | 25 +++ .../thwl/action/sdk/UpdateRequest.java | 162 ++++++++++++++++++ .../thwl/cronjob/PersonSyncUpdateJob.java | 76 ++++++++ 9 files changed, 667 insertions(+) create mode 100644 WEB-INF/lib/artemis-http-client-1.1.12.RELEASE.jar create mode 100644 src/weaver/interfaces/thwl/action/PersonSingleAddAction.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/AddRequest.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/ArtemisUtil.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/Faces.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/OrgInfoRequest.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/PersonInfoRequest.java create mode 100644 src/weaver/interfaces/thwl/action/sdk/UpdateRequest.java create mode 100644 src/weaver/interfaces/thwl/cronjob/PersonSyncUpdateJob.java 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 0000000000000000000000000000000000000000..2fca024830839cc841b88e012b5a73468f4dd89d GIT binary patch literal 41237 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

h9!r5e+CQPglP{HN6&uO1Jz!=XE=y#Jur}Z2E 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

q-DS8a*ez!Ut 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 L5Xb~Tg+Trf7uh4l literal 0 HcmV?d00001 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); + } + } +}