package com.aia.sailPoint.job;
import com.aia.common.utils.DaoUtils;
import com.aia.sailPoint.utils.SailPointUtils;
import com.engine.hrm.util.face.hrmrestful.service.HrmRestFulFromWebServiceManager;
import com.weaver.general.BaseBean;
import com.weaver.general.Util;
import weaver.conn.RecordSet;
import weaver.monitor.cache.CacheFactory;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 自动进行建模表单sailpoint-user数据获取并更新 HRMRESOURCE 数据
*
* @author zhangmingchen
*/
public class SailPointUser {
private static HrmRestFulFromWebServiceManager manager = new HrmRestFulFromWebServiceManager();
private BaseBean log = new BaseBean();
private String logTableName = "uf_sailpoint_log";
private String tableName = "uf_IFT4User";
/**
* @param: param(Map collections)
* 参数名称不能包含特殊字符+,.[]!"#$%&'()*:;<=>?@\^`{}|~/ 中文字符、标点 U+007F U+0000到U+001F
*/
public Map execute(Map<String, Object> params) {
Map<String, String> result = new HashMap<String, String>();
List<Map<String, String>> listMap = new ArrayList<>();
//清理缓存
CacheFactory.getInstance().reset();
try {
StringBuilder stringBuilder = new StringBuilder();
//查询语句(查询uf_IFT4User新加数据)
stringBuilder.append("select ufuser.id,ufuser.status,ufuser.username,ufuser.loginid, ")
.append("ufuser.email,ufuser.departmentName, ")
.append("ufuser.subcompanyName,hrp.ID depID ,hrs.ID subID ")
.append("from (").append(tableName).append(" ufuser left JOIN hrmdepartment hrp ")
.append("ON ufuser.departmentName=hrp.DEPARTMENTNAME) ")
.append("left JOIN hrmsubcompany hrs ON ufuser.subcompanyName=hrs.SUBCOMPANYNAME ")
.append("WHERE (ufuser.ISMODIFY =0 OR ufuser.ISMODIFY IS NULL ) ")
.append("AND (hrp.CANCELED!=1 OR hrp.CANCELED IS NULL ) ")
.append("AND (hrs.CANCELED !=1 OR hrs.CANCELED IS NULL)");
log.writeLog("sailpoint-user查询-" + stringBuilder.toString());
RecordSet recordSet = DaoUtils.executeQuery(stringBuilder.toString());
while (recordSet.next()) {
Map<String, String> mapValue = new HashMap<>();
//id主键
mapValue.put("id", Util.null2String(recordSet.getString("id")));
//状态
mapValue.put("status", Util.null2String(recordSet.getString("status")));
//用户名
mapValue.put("username", Util.null2String(recordSet.getString("username")));
//登录名
mapValue.put("loginid", Util.null2String(recordSet.getString("loginid")));
//邮箱
mapValue.put("email", Util.null2String(recordSet.getString("email")));
//部门名称
mapValue.put("depID", Util.null2String(recordSet.getString("depID")));
//分布名称
mapValue.put("subID", Util.null2String(recordSet.getString("subID")));
listMap.add(mapValue);
}
} catch (Exception e) {
e.printStackTrace();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
log.writeLog("sailpoint-user数据获取报错 error : \n " + exception);
result.put("msg", exception);
result.put("code", "1");
return result;
}
try {
//判断是否存在元素
if (!listMap.isEmpty()) {
for (Map<String, String> stringStringMap : listMap) {
dataProcess(stringStringMap);
}
}
} catch (Exception e) {
e.printStackTrace();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
log.writeLog("sailpoint-user数据更新报错 error : \n " + exception);
result.put("msg", exception);
result.put("code", "1");
return result;
}
result.put("msg", "成功");
result.put("code", "0");
return result;
}
/**
* 数据处理
*
* @param stringStringMap
*/
private void dataProcess(Map<String, String> stringStringMap) {
//log表需要
HashMap<String, String> logMap = new HashMap<>();
logMap.put("type", "0");
//获取数据
String id = stringStringMap.get("id");
String status = stringStringMap.get("status");
String username = stringStringMap.get("username");
String loginid = stringStringMap.get("loginid");
String email = stringStringMap.get("email");
String depID = stringStringMap.get("depID");
String subID = stringStringMap.get("subID");
if ("0".equals(status)){
//获取部门编码
String depCode= SailPointUtils.getDepCode(depID);
//获取分部编码
String subCode= SailPointUtils.getSubCode(subID);
//获取岗位编码
String jobCode= SailPointUtils.getJobCode("1");
List<Map<String, Object>> hrmMapList=new ArrayList<>();
Map<String, Object> hrmMap=new HashMap<>();
hrmMap.put("workcode",loginid);
hrmMap.put("subcompany","{JSON}{\"subcompanycode\":\""+subCode+"\"}");
hrmMap.put("department","{JSON}{\"departmentcode\":\""+depCode+"\"}");
hrmMap.put("lastname",username);
hrmMap.put("loginid",loginid);
hrmMap.put("password","Amc=1234");
hrmMap.put("seclevel","");
hrmMap.put("sex","");
hrmMap.put("jobtitle","{JSON}{\"jobtitlecode\":\""+jobCode+"\"}");
hrmMap.put("jobactivityid","");
hrmMap.put("jobgroupid","");
hrmMap.put("jobcall","");
hrmMap.put("joblevel","");
hrmMap.put("jobactivitydesc","");
hrmMap.put("managerid","");
hrmMap.put("assistantid","");
hrmMap.put("status","试用");
hrmMap.put("locationid","default");
hrmMap.put("workroom","");
hrmMap.put("telephone","");
hrmMap.put("mobile","");
hrmMap.put("mobilecall","");
hrmMap.put("fax","");
hrmMap.put("email",email);
hrmMap.put("systemlanguage","简体中文");
hrmMap.put("birthday","");
hrmMap.put("folk","");
hrmMap.put("nativeplace","");
hrmMap.put("regresidentplace","");
hrmMap.put("certificatenum","");
hrmMap.put("maritalstatus","");
hrmMap.put("policy","");
hrmMap.put("bememberdate","");
hrmMap.put("bepartydate","");
hrmMap.put("islabouunion","");
hrmMap.put("educationlevel","");
hrmMap.put("degree","");
hrmMap.put("healthinfo","");
hrmMap.put("height","");
hrmMap.put("weight","");
hrmMap.put("residentplace","");
hrmMap.put("homeaddress","");
hrmMap.put("tempresidentnumber","");
hrmMap.put("belongto","");
hrmMap.put("dsporder","");
hrmMap.put("accumfundaccount","");
hrmMap.put("accounttype","");
hrmMap.put("accountname","");