Compare commits

..

10 Commits

12
.gitignore vendored

@ -1,15 +1,17 @@
/weaver-develop.iml
/weaver-hrm-organization.iml
/out/
.idea/
/.idea/
HELP.md
target/
### IntelliJ IDEA ###
.idea
/test
/src/test
/src/rebel.xml
/src/META-INF
/WEB-INF/config
/log
/log
/weaver-develop.iml

@ -1,8 +0,0 @@
<component name="ArtifactManager">
<artifact type="jar" name="weaver-develop:jar">
<output-path>$PROJECT_DIR$/out/artifacts/weaver_develop_jar</output-path>
<root id="archive" name="weaver-develop.jar">
<element id="module-output" name="weaver-develop" />
</root>
</artifact>
</component>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
</annotationProcessing>
</component>
</project>

@ -1,9 +0,0 @@
<component name="libraryTable">
<library name="classbean">
<CLASSES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/classbean" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/../../../../weaver/ecology/WEB-INF/lib" recursive="false" type="SOURCES" />
</library>
</component>

@ -1,3 +0,0 @@
Manifest-Version: 1.0
Main-Class: test.MainTest

@ -1,14 +0,0 @@
package test;
/**
* @Author weaver_cl
* @Description:
* @Date 2022/10/9
* @Version V1.0
**/
public class MainTest {
public static void main(String[] args) {
}
}

@ -0,0 +1,99 @@
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.hrm.company.DepartmentComInfo;
import weaver.interfaces.thwl.action.sdk.AddRequest;
import weaver.interfaces.thwl.action.sdk.ArtemisUtil;
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.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 = "";
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");
}
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
String departmentMark = departmentComInfo.getDepartmentmark(departmentId);
String departmentCode = departmentComInfo.getDepartmentCode(departmentId);
if (StringUtils.isBlank(departmentCode)) {
requestInfo.getRequestManager().setMessagecontent("未获取到当前人员的部门编号,请确认");
return Action.FAILURE_AND_CONTINUE;
}
// 获取组织唯一标识
String orgIndexCode = ArtemisUtil.getOrgIndexCode(departmentMark, departmentCode, 1, 10);
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,184 @@
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");
private static BaseBean baseBean = new BaseBean();
/**
* 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);
baseBean.writeLog("body==" + body);
baseBean.writeLog("response==" + response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equalsIgnoreCase(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");
baseBean.writeLog("body==" + body);
baseBean.writeLog("response==" + response);
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equalsIgnoreCase(msg)) {
return;
}
throw new RuntimeException(msg);
}
/**
*
*
* @param departmentMark
* @param departmentCode
* @param pageNo
* @param pageSize
* @return
* @throws Exception
*/
public static String getOrgIndexCode(String departmentMark, String departmentCode, int pageNo, int pageSize) throws Exception {
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", "/artemis/api/resource/v2/org/advance/orgList");
}
};
OrgListRequest orgListRequest = new OrgListRequest();
orgListRequest.setOrgName(departmentMark);
orgListRequest.setPageNo(pageNo);
orgListRequest.setPageSize(pageSize);
String body = JSON.toJSONString(orgListRequest);
String response = ArtemisHttpUtil.doPostStringArtemis(getConfig(), path, body, null, null, "application/json");
baseBean.writeLog("departmentCode==" + departmentCode + ",body==" + body);
baseBean.writeLog("response==" + response);
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equalsIgnoreCase(msg)) {
JSONObject data = jsonObject.getJSONObject("data");
JSONArray list = data.getJSONArray("list");
// 遍历List 通过部门编号获取组织代码
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
JSONObject item = list.getJSONObject(i);
if (departmentCode.equals(item.getString("organizationCode"))) {
return item.getString("orgIndexCode");
}
}
// 当前页未匹配到,获取下一页的数据匹配
return getOrgIndexCode(departmentMark, departmentCode, pageNo + 1, pageSize);
}
// 未匹配到,返回空
return "";
} else {
throw new RuntimeException(msg);
}
}
/**
* 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");
baseBean.writeLog("body==" + body);
baseBean.writeLog("response==" + response);
String personId = "";
JSONObject jsonObject = JSON.parseObject(response);
String code = jsonObject.getString("code");
String msg = jsonObject.getString("msg");
if ("0".equals(code) && "SUCCESS".equalsIgnoreCase(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,89 @@
package weaver.interfaces.thwl.action.sdk;
import weaver.workflow.ruleDesign.Expressions;
import java.util.ArrayList;
public class OrgListRequest {
private String orgName;
private String orgIndexCodes;
private Integer pageNo;
private Integer pageSize;
private String parentOrgIndexCodes;
private Boolean isSubOrg;
private ArrayList<Expressions> expressions;
private String orderBy;
private String orderType;
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public String getOrgIndexCodes() {
return orgIndexCodes;
}
public void setOrgIndexCodes(String orgIndexCodes) {
this.orgIndexCodes = orgIndexCodes;
}
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getParentOrgIndexCodes() {
return parentOrgIndexCodes;
}
public void setParentOrgIndexCodes(String parentOrgIndexCodes) {
this.parentOrgIndexCodes = parentOrgIndexCodes;
}
public Boolean getIsSubOrg() {
return isSubOrg;
}
public void setIsSubOrg(Boolean isSubOrg) {
this.isSubOrg = isSubOrg;
}
public ArrayList<Expressions> getExpressions() {
return expressions;
}
public void setExpressions(ArrayList<Expressions> expressions) {
this.expressions = expressions;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public String getOrderType() {
return orderType;
}
public void setOrderType(String orderType) {
this.orderType = orderType;
}
}

@ -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,75 @@
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.PersonInfoRequest;
import weaver.interfaces.thwl.action.sdk.UpdateRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @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);
String departmentMark = departmentComInfo.getDepartmentmark(drgzbm);
// 获取组织唯一标识
String orgIndexCode = ArtemisUtil.getOrgIndexCode(departmentMark,departmentCode,1,10);
// 获取人员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