| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- package com.kingdee.shr.customer.gtiit.osf;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.bsf.service.app.IHRMsfService;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.log4j.Logger;
- /**
- * 同步AD域信息接口
- * @author 何朗
- *
- */
- public class SynADService implements IHRMsfService {
- private static Logger logger = Logger.getLogger("com.kingdee.shr.customer.gtiit.osf.SynADService");
- public Object process(Context ctx, Map map) throws EASBizException, BOSException {
- logger.error("进入同步AD域信息接口");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- // 开始日期
- String startDate = (String)map.get("startDate");
- // 截止日期
- String endDate = (String)map.get("endDate");
- // 员工工号
- String personNumber = (String)map.get("personNumber");
- logger.error("获取员工信息接口参数-开始日期:" + startDate + ",截止日期:" + endDate + ",人员:" + personNumber);
- if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)) {
- // 如果开始日期或结束日期为空,则默认设置为当天和第二天
- Calendar calendar = Calendar.getInstance();
- startDate = sdf.format(calendar.getTime());
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- endDate = sdf.format(calendar.getTime());
- }
- JSONArray jsonArray = new JSONArray();
- Set<String> personIdSet = new HashSet<>();
- try {
- // 查询调动单审核通过的员工
- String fluctuaSql = "SELECT b.fpersonid FROM T_HR_FluctuationBizBill a left join T_HR_FluctuationBizBillentry b on a.fid=b.fbillid where FBILLSTATE ='3' and FLASTUPDATETIME >='" +
- startDate + "' and FLASTUPDATETIME <='" + endDate + "'";
- IRowSet fluctuaRow = DbUtil.executeQuery(ctx, fluctuaSql);
- while (fluctuaRow.next())
- personIdSet.add(fluctuaRow.getString("fpersonid"));
- // 查询前一天离职的员工
- Calendar resignCalendar = Calendar.getInstance();
- resignCalendar.add(Calendar.DAY_OF_MONTH, -1);
- String resignSql = "select b.fpersonid from T_HR_ResignBizBill a left join T_HR_ResignBizBillentry b on a.fid=b.fbillid where a.FBILLSTATE = '3' and b.FBIZDATE = '" +
- sdf.format(resignCalendar.getTime()) + "'";
- IRowSet resignRow = DbUtil.executeQuery(ctx, resignSql);
- while (resignRow.next())
- personIdSet.add(resignRow.getString("fpersonid"));
- // 查询预入职生效的员工
- String preSql = "select per.fid from T_HR_PreEntry pre left join T_BD_Person per on per.fnumber = pre.CFEMPNUMBER where FBILLSTATE = '3' and FCHECKINSTATE = '3' and CFEMPNUMBER <> '' and FBIZDATE >='" +
- startDate + "' and FBIZDATE <='" + endDate + "'";
- IRowSet preRow = DbUtil.executeQuery(ctx, preSql);
- while (preRow.next())
- personIdSet.add(preRow.getString("fid"));
- // 查询员工信息变动的员工
- String lastDateSql = "SELECT fid FROM T_BD_Person where flastupdatetime>='" + startDate +
- "' and flastupdatetime<='" + endDate + "'";
- IRowSet lastDateRow = DbUtil.executeQuery(ctx, lastDateSql);
- while (lastDateRow.next())
- personIdSet.add(lastDateRow.getString("fid"));
- // 如果指定了员工工号,则只查询该员工
- if (StringUtils.isNotBlank(personNumber)) {
- personIdSet = new HashSet<>();
- String personSql = "SELECT fid FROM T_BD_Person where fnumber = '" + personNumber + "'";
- IRowSet personRow = DbUtil.executeQuery(ctx, personSql);
- while (personRow.next())
- personIdSet.add(personRow.getString("fid"));
- }
- logger.error("员工id集合:" + personIdSet.toString());
- // 构建SQL IN条件
- StringBuilder sb = new StringBuilder();
- if (personIdSet.size() == 0) {
- sb.append("''");
- } else {
- for (String value : personIdSet)
- sb.append("'").append(value).append("',");
- sb.deleteCharAt(sb.length() - 1);
- }
- // 构建主查询SQL
- StringBuffer sql = new StringBuffer();
- sql.append("SELECT DISTINCT\r\n\tp.fname_l1 displayName,\r\n\tsj.manager AS manager,\r\n\tfullp.fname_l1 AS extensionAttribute6,\r\n\tres.fleftdate extensionAttribute4,\r\n\tcmpt.cfexpireddate AS extensionAttribute10,\r\n\tsj.department department,\r\n\tsj.title title,\r\n\tp.fnumber personnumber,\r\n\tp.femail mail,\r\n\tp.femail userPrincipalName,\r\n\thpcc.cfprivateemail AS extensionAttribute9,\r\n\tp.cfusername sAMAccountName,\r\n\tp.cfgivenName givenName,\r\n\tp.cfsurname sn,\r\nCASE\r\n\t\t\r\n\t\tWHEN p.fgender = '1' THEN\r\n\t\t'\r\n\t\tWHEN p.fgender = '2' THEN\r\n\t\t'ELSE '' \r\n\tEND AS gender,\r\n\tcase when sj.biznumber ='SHR02' then 'Re-employed' else '' end extensionAttribute12,\r\n\tify.fname_l1 extensionAttribute5,\r\n\tzt.fname_l1 statusname,\r\n\tp.fcell AS extensionAttribute11,\r\n\tp.fofficephone AS telephoneNumber,\r\n\tla.fenterdate extensionAttribute3,\r\n\tnation.fname_l1 extensionAttribute8 \r\nFROM\r\n\tT_BD_Person p\r\n\tLEFT JOIN T_HR_EmployeeClassify ify ON ify.fid = p.cfpersontypeid\r\n\tLEFT JOIN T_BD_Nationality nation ON nation.fid = p.fnationalityid\r\n\tLEFT JOIN CT_MP_Fullorpart fullp ON fullp.fid = p.cfftorptid\r\n\tLEFT JOIN (\r\n\tSELECT\r\n\t\thpca.fpersonid,\r\n\t\thpca.cfprivateemail \r\n\tFROM\r\n\t\tT_HR_PersonContactMethod hpca\r\n\t\tINNER JOIN ( SELECT fpersonid, MAX( flastupdatetime ) maxDate FROM T_HR_PersonContactMethod GROUP BY fpersonid ) hpcb ON hpca.fpersonid = hpcb.fpersonid \r\n\t\tAND hpca.flastupdatetime = hpcb.maxDate \r\n\t) hpcc ON hpcc.fpersonid = p.fid\r\n\tLEFT JOIN (\r\n\tSELECT\r\n\t\tctpa.fpersonid,\r\n\t\tctpa.cfexpireddate \r\n\tFROM\r\n\t\tCT_MP_Pcontractinfo ctpa\r\n\t\tINNER JOIN ( SELECT fpersonid, MAX( cfexpireddate ) maxDate FROM CT_MP_Pcontractinfo GROUP BY fpersonid ) ctpb ON ctpa.fpersonid = ctpb.fpersonid \r\n\t\tAND ctpa.cfexpireddate = ctpb.maxDate \r\n\t) cmpt ON cmpt.fpersonid = p.fid\r\n\tLEFT JOIN (\r\n\tSELECT\r\n\t\tc.fpersonid fpersonid,\r\n\t\td.cfusername manager,\r\n\t\tpost.fname_l1 title,\r\n\t\torg.fname_l1 department,\r\n\t biz.fnumber bizNumber\t\r\n\tFROM\r\n\t\t(\r\n\t\tSELECT\r\n\t\t\ta.fpersonid fpersonid,\r\n\t\t\ta.cflinemanagernamei cflinemanagernamei,\r\n\t\t\ta.fpositionid fpositionid,\r\n\t\t\ta.fadminorgid fadminorgid,\r\n\t\t a.factionid factionid\t\r\n\t\tFROM\r\n\t\t\tT_HR_EmpOrgRelation a\r\n\t\t\tINNER JOIN ( SELECT MAX( fleffdt ) maxDate, fpersonid fpersonid FROM T_HR_EmpOrgRelation WHERE FIsLatestInAday = '1' AND FAssignType = '1' GROUP BY fpersonid ) b ON a.fpersonid = b.fpersonid \r\n\t\t\tAND a.fleffdt = b.maxDate \r\n\t\tWHERE\r\n\t\t\ta.FIsLatestInAday = '1' \r\n\t\t\tAND a.FAssignType = '1' \r\n\t\t) c\r\n\t\tLEFT JOIN T_BD_PERSON d ON c.cflinemanagernamei = d.fid\r\n\t\tLEFT JOIN T_ORG_Position post ON post.fid = c.fpositionid\r\n\t\tLEFT JOIN T_ORG_Admin org ON org.fid = c.fadminorgid \r\n\t\tleft join T_HR_HRBizDefine biz on biz.fid=c.factionid\r\n\t) sj ON sj.fpersonid = p.fid\r\n\tLEFT JOIN T_HR_BDEmployeeType zt ON zt.fid = p.femployeetypeid\r\n\tLEFT JOIN (\r\n\tSELECT\r\n\t\ta.fpersonid,\r\n\t\tb.fenterdate,\r\n\t\tb.FEFFDT,\r\n\t\tb.fleffdt \r\n\tFROM\r\n\t\t( SELECT FPERSONID, MAX( fenterdate ) AS maxDate FROM T_HR_EmpLaborRelationHis GROUP BY fpersonid ) a\r\n\t\tLEFT JOIN T_HR_EmpLaborRelationHis b ON a.fpersonid = b.fpersonid \r\n\t\tAND a.maxdate = b.fenterdate \r\n\t) la ON la.fpersonid = p.fid\r\n\tLEFT JOIN (\r\n\tSELECT\r\n\t\thpipa.fleftdate fleftdate,\r\n\t\thpipa.fpersonid fpersonid \r\n\tFROM\r\n\t\tT_HR_PersonPositionHis hpipa\r\n\t\tINNER JOIN ( SELECT MAX( fleffdt ) maxDate, fpersonid fpersonid FROM T_HR_PersonPositionHis GROUP BY fpersonid ) hpipb ON hpipa.fleffdt = hpipb.maxDate \r\n\t\tAND hpipa.fpersonid = hpipb.fpersonid \r\n\t) AS res ON res.fpersonid = p.fid \r\nWHERE\r\n\t(\r\n\t\tp.cfgtiitemail = 'Yes' \r\n\t\tOR ( ( p.cfgtiitemail = 'No' OR p.cfgtiitemail IS NULL ) AND fullp.fnumber = 'FULL' ) \r\n\t\tOR (\r\n\t\t\t( p.cfgtiitemail = 'No' OR p.cfgtiitemail IS NULL ) \r\n\t\t\tAND fullp.fnumber = 'PART' \r\n\t\t\tAND ( sj.title NOT LIKE '%Student Assistant%' OR sj.title LIKE '%ERP%' ) \r\n\t\t) \r\n\t) ");
- sql.append(" and p.fid in (" + sb.toString() + ")");
- String str = sql.toString();
- str = str.replaceAll("(?i)fname_l2", "fname_l1");
- logger.info("非预入职流程SQL"+ str);
- IRowSet iRowSet = DbUtil.executeQuery(ctx, str);
- // 处理查询结果
- while (iRowSet.next()) {
- JSONObject jsonObject = new JSONObject();
- // 用户名
- jsonObject.put("sAMAccountName", iRowSet.getString("sAMAccountName"));
- // 名
- String givenName = iRowSet.getString("givenName");
- jsonObject.put("givenName", givenName);
- // 姓
- String sn = iRowSet.getString("sn");
- jsonObject.put("sn", sn);
- // 显示名称
- String displayName = iRowSet.getString("displayName");
- jsonObject.put("displayName", convert(displayName, givenName, sn));
- // 用户名称
- jsonObject.put("userPrincipalName", iRowSet.getString("userPrincipalName"));
- // 邮箱地址
- jsonObject.put("mail", iRowSet.getString("mail"));
- // 办公电话
- if (StringUtils.isNotBlank(iRowSet.getString("telephoneNumber")))
- jsonObject.put("telephoneNumber", iRowSet.getString("telephoneNumber"));
- // 职位
- jsonObject.put("title", iRowSet.getString("title"));
- // 所属部门
- jsonObject.put("department", iRowSet.getString("department"));
- // 上级负责人
- jsonObject.put("manager", iRowSet.getString("manager"));
- // 员工工号
- jsonObject.put("employeeID", iRowSet.getString("personnumber"));
- // 员工类型
- jsonObject.put("employeeType", "STAFF");
- // 入职日期
- jsonObject.put("extensionAttribute3", stringDateFormat(iRowSet.getDate("extensionAttribute3")));
- // 离职日期
- Date extensionAttribute4 = iRowSet.getDate("extensionAttribute4");
- String AccountExpirationDate = "";
- if (extensionAttribute4 != null) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(extensionAttribute4);
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- Date nextDay = calendar.getTime();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
- AccountExpirationDate = formatter.format(nextDay);
- }
- jsonObject.put("extensionAttribute4", stringDateFormat(iRowSet.getDate("extensionAttribute4")));
- // 人员类型
- jsonObject.put("extensionAttribute5", iRowSet.getString("extensionAttribute5"));
- // 全职/兼职
- jsonObject.put("extensionAttribute6", iRowSet.getString("extensionAttribute6"));
- // 国籍
- jsonObject.put("extensionAttribute8", iRowSet.getString("extensionAttribute8"));
- // 私人邮箱
- jsonObject.put("extensionAttribute9", iRowSet.getString("extensionAttribute9"));
- // 合同结束日期
- jsonObject.put("extensionAttribute10", stringDateFormat(iRowSet.getDate("extensionAttribute10")));
- // 私人手机
- jsonObject.put("extensionAttribute11", iRowSet.getString("extensionAttribute11"));
- // 失效日期
- jsonObject.put("AccountExpirationDate", AccountExpirationDate);
- // 再就业标识
- if (StringUtils.isNotBlank(iRowSet.getString("extensionAttribute12")))
- jsonObject.put("extensionAttribute12", iRowSet.getString("extensionAttribute12"));
- jsonArray.add(jsonObject);
- }
- // 查询预入职员工信息
- StringBuilder sql2 = new StringBuilder();
- sql2.append("SELECT ")
- .append("pe.CFUSERNAME_l1 AS sAMAccountName, ")
- .append("pe.CFGivenName_l1 AS givenName, ")
- .append("pe.CFSurname_l1 AS sn, ")
- .append("pe.FName_l1 AS displayName, ")
- .append("pe.CFUserName_l1 AS userPrincipalName, ")
- .append("pe.cfworkemail AS mail, ")
- .append("pe.femail AS extensionAttribute9, ")
- .append("pe.FCellPhone AS telephoneNumber, ")
- .append("pe.FPositionID, ")
- .append("pe.FAdminOrgUnitID, ")
- .append("pe.CFLmanagerID, ")
- .append("pe.CFEmpNumber AS employeeID, ")
- .append("pe.FPreEnterDate AS extensionAttribute3, ")
- .append("ec.fname_l1 AS extensionAttribute5, ")
- .append("pe.CFFtorptID, ")
- .append("pep.CFGtiitemail, ")
- .append("post.fname_l1 AS title, ")
- .append("bu.fname_l1 AS department, ")
- .append("p.cfusername AS manager, ")
- .append("ec.FNAME_l1 AS employeeType, ")
- .append("f.fname_l1 AS extensionAttribute6, ")
- .append("nation.fname_l1 AS extensionattribute8 ")
- .append("FROM T_HR_PreEntry pe ")
- .append("LEFT JOIN T_HR_PreEntryPerson pep ON pep.fid = pe.FTalentID ")
- .append("LEFT JOIN T_BD_Nationality nation ON pep.fnationalityid = nation.fid ")
- .append("LEFT JOIN T_ORG_Position post ON pe.FPositionID = post.fid ")
- .append("LEFT JOIN T_ORG_BaseUnit bu ON bu.fid = pe.FAdminOrgUnitID ")
- .append("LEFT JOIN T_BD_PERSON p ON p.fid = pe.CFLmanagerID ")
- .append("LEFT JOIN T_HR_EmployeeClassify ec ON ec.fid = pe.CFPersontypeID ")
- .append("LEFT JOIN CT_MP_Fullorpart f ON f.fid = pe.CFFtorptID ")
- .append("WHERE 1=1 ")
- .append("AND pe.FCheckInState = '4' ")
- .append("AND pe.FBillState = '3' ")
- .append("AND (pep.CFGtiitemail = 'Yes' ")
- .append("OR ((pep.CFGtiitemail = 'No' OR pep.CFGtiitemail IS NULL) AND f.fnumber = 'FULL') ")
- .append("OR ((pep.CFGtiitemail = 'No' OR pep.CFGtiitemail IS NULL) ")
- .append("AND f.fnumber = 'PART' ")
- .append("AND (post.fname_l1 NOT LIKE '%Student Assistant%' OR post.fname_l1 LIKE '%ERP%')))");
- // 添加查询条件(使用参数化查询防止SQL注入)
- if (StringUtils.isNotBlank(personNumber)) {
- sql2.append(" AND pe.CFEmpNumber = ?");
- }
- if (StringUtils.isNotBlank(startDate)) {
- sql2.append(" AND pe.FLastUpdateTime >= ?");
- }
- if (StringUtils.isNotBlank(endDate)) {
- sql2.append(" AND pe.FLastUpdateTime <= ?");
- }
- logger.info("预入职流程SQL: {}", sql2.toString());
- // 执行查询(假设DbUtil支持参数化查询)
- List<Object> params = new ArrayList<>();
- if (StringUtils.isNotBlank(personNumber)) {
- params.add(personNumber);
- }
- if (StringUtils.isNotBlank(startDate)) {
- params.add(startDate);
- }
- if (StringUtils.isNotBlank(endDate)) {
- params.add(endDate);
- }
- IRowSet iRowSet2 = DbUtil.executeQuery(ctx, sql2.toString(), params.toArray());
- // 处理预入职员工信息
- while (iRowSet2.next()) {
- JSONObject jsonObject = new JSONObject();
- // 用户名
- jsonObject.put("sAMAccountName", iRowSet2.getString("sAMAccountName"));
- // 名
- String givenName = iRowSet2.getString("givenName");
- jsonObject.put("givenName", givenName);
- // 姓
- String sn = iRowSet2.getString("sn");
- jsonObject.put("sn", sn);
- // 显示名称
- String displayName = iRowSet2.getString("displayName");
- jsonObject.put("displayName", convert(displayName, givenName, sn));
- // 用户名称
- jsonObject.put("userPrincipalName", iRowSet2.getString("mail"));
- // 邮箱地址
- jsonObject.put("mail", iRowSet2.getString("mail"));
- // 手机号码
- if (StringUtils.isNotBlank(iRowSet2.getString("telephoneNumber")))
- jsonObject.put("extensionAttribute11", iRowSet2.getString("telephoneNumber"));
- // 职位
- jsonObject.put("title", iRowSet2.getString("title"));
- // 所属部门
- jsonObject.put("department", iRowSet2.getString("department"));
- // 上级负责人
- jsonObject.put("manager", iRowSet2.getString("manager"));
- // 员工工号
- jsonObject.put("employeeID", iRowSet2.getString("employeeID"));
- // 员工类型
- jsonObject.put("employeeType", "STAFF");
- // 入职日期
- jsonObject.put("extensionAttribute3", stringDateFormat(iRowSet2.getDate("extensionAttribute3")));
- // 离职日期
- jsonObject.put("extensionAttribute4", null);
- // 人员类型
- jsonObject.put("extensionAttribute5", iRowSet2.getString("extensionAttribute5"));
- // 全职/兼职
- jsonObject.put("extensionAttribute6", iRowSet2.getString("extensionAttribute6"));
- // 国籍
- jsonObject.put("extensionAttribute8", iRowSet2.getString("extensionAttribute8"));
- jsonObject.put("extensionAttribute9", "");
- jsonObject.put("extensionAttribute10", "");
- jsonObject.put("AccountExpirationDate", null);
- jsonArray.add(jsonObject);
- }
- // 查询入职审核通过的员工
- StringBuilder sql3 = new StringBuilder();
- sql3.append("SELECT ")
- .append("b.cfusername sAMAccountName, ")
- .append("b.cfgivenname givenName, ")
- .append("b.cfsurname sn, ")
- .append("b.fempname_l1 displayName, ")
- .append("b.femail userPrincipalName, ")
- .append("b.femail mail, ")
- .append("post.fname_l1 title, ")
- .append("org.fname_l1 department, ")
- .append("person.cfusername manager, ")
- .append("b.fempnumber employeeID, ")
- .append("b.fenrolldate extensionAttribute3, ")
- .append("class.fname_l1 extensionAttribute5, ")
- .append("fullp.fname_l1 extensionAttribute6, ")
- .append("b.cfpemail extensionAttribute9, ")
- .append("b.fncell extensionAttribute11, ")
- .append("CASE WHEN b.fenrollagain = '1' THEN 'Re-employed' ELSE '' END extensionAttribute12 ")
- .append("FROM T_HR_EmpEnrollBizBill a ")
- .append("LEFT JOIN T_HR_EmpEnrollBizBillentry b ON a.fid = b.fbillid ")
- .append("LEFT JOIN CT_MP_Fullorpart fullp ON fullp.fid = b.cfftorptid ")
- .append("LEFT JOIN T_ORG_Position post ON post.fid = b.fpositionid ")
- .append("LEFT JOIN T_ORG_Admin org ON org.fid = b.fadminorgid ")
- .append("LEFT JOIN T_BD_Person person ON person.fid = b.cflmanagerid ")
- .append("LEFT JOIN T_HR_EmployeeClassify class ON class.fid = b.cfpersontypeid ")
- .append("WHERE a.fbillstate = '3' ")
- .append("AND (b.cfgtiitemail = 'Yes' ")
- .append("OR ((b.cfgtiitemail = 'No' OR b.cfgtiitemail IS NULL) AND fullp.fnumber = 'FULL') ")
- .append("OR ((b.cfgtiitemail = 'No' OR b.cfgtiitemail IS NULL) ")
- .append("AND fullp.fnumber = 'PART' ")
- .append("AND post.fname_l1 NOT LIKE '%Student Assistant%'))");
- List<Object> params = new ArrayList<>();
- // 添加查询条件
- if (StringUtils.isNotBlank(personNumber)) {
- sql3.append(" AND b.fempnumber = ?"); // 使用参数化查询
- params.add(personNumber);
- }
- if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
- sql3.append(" AND (a.flastupdatetime >= ? AND a.flastupdatetime <= ?)");
- params.add(startDate);
- params.add(endDate);
- }
- // if (StringUtils.isNotBlank(personNumber))
- // sql3.append(" and b.fempnumber = '" + personNumber + "' ");
- // if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate))
- // sql3.append(" and ( a.flastupdatetime >= '" + startDate + "' and a.flastupdatetime <= '" + endDate + "') ");
- logger.info("入职流程SQL"+ sql3.toString());
- IRowSet iRowSet3 = DbUtil.executeQuery(ctx, sql3.toString(),params.toArray());
- // 处理入职员工信息
- while (iRowSet3.next()) {
- JSONObject jsonObject = new JSONObject();
- // 用户名
- jsonObject.put("sAMAccountName", iRowSet3.getString("sAMAccountName"));
- // 名
- String givenName = iRowSet3.getString("givenName");
- jsonObject.put("givenName", givenName);
- // 姓
- String sn = iRowSet3.getString("sn");
- jsonObject.put("sn", sn);
- // 显示名称
- String displayName = iRowSet3.getString("displayName");
- jsonObject.put("displayName", convert(displayName, givenName, sn));
- // 用户名称
- jsonObject.put("userPrincipalName", iRowSet3.getString("mail"));
- // 邮箱地址
- jsonObject.put("mail", iRowSet3.getString("mail"));
- // 手机号码
- if (StringUtils.isNotBlank(iRowSet3.getString("extensionAttribute11")))
- jsonObject.put("extensionAttribute11", iRowSet3.getString("extensionAttribute11"));
- // 职位
- jsonObject.put("title", iRowSet3.getString("title"));
- // 所属部门
- jsonObject.put("department", iRowSet3.getString("department"));
- // 上级负责人
- jsonObject.put("manager", iRowSet3.getString("manager"));
- // 员工工号
- jsonObject.put("employeeID", iRowSet3.getString("employeeID"));
- // 员工类型
- jsonObject.put("employeeType", "STAFF");
- // 入职日期
- jsonObject.put("extensionAttribute3", stringDateFormat(iRowSet3.getDate("extensionAttribute3")));
- // 离职日期
- jsonObject.put("extensionAttribute4", null);
- // 人员类型
- jsonObject.put("extensionAttribute5", iRowSet3.getString("extensionAttribute5"));
- // 全职/兼职
- jsonObject.put("extensionAttribute6", iRowSet3.getString("extensionAttribute6"));
- // 国籍
- jsonObject.put("extensionAttribute8", null);
- // 私人邮箱
- jsonObject.put("extensionAttribute9", iRowSet3.getString("extensionAttribute9"));
- jsonObject.put("extensionAttribute10", "");
- jsonObject.put("AccountExpirationDate", null);
- // 再就业标识
- jsonObject.put("extensionAttribute12", iRowSet3.getString("extensionAttribute12"));
- jsonArray.add(jsonObject);
- }
- } catch (Exception e) {
- e.printStackTrace();
- JSONObject jSONObject = new JSONObject();
- jSONObject.put("code", "0");
- jSONObject.put("status", "false");
- jSONObject.put("message", "获取人员信息失败:" + e.getMessage());
- jSONObject.put("data", "");
- logger.error("获取人员信息失败:" + e.getMessage());
- return jSONObject.toJSONString();
- }
- // 构建返回结果
- JSONObject resultJson = new JSONObject();
- resultJson.put("code", "1");
- resultJson.put("status", "true");
- resultJson.put("message", "获取人员信息成功");
- resultJson.put("data", jsonArray);
- jsonArray.forEach(item -> System.out.println(item));
- logger.error("返回员工信息结果集:" + resultJson);
- return resultJson;
- }
- /**
- * 日期格式化方法
- * @param date 日期对象
- * @return 格式化后的日期字符串
- */
- private String stringDateFormat(Date date) {
- if (date == null)
- return null;
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
- return formatter.format(Long.valueOf(date.getTime()));
- }
- /**
- * 转换显示名称格式
- * @param disPlayName 原始显示名称
- * @param giveName 名
- * @param sn 姓
- * @return 转换后的显示名称
- */
- private String convert(String disPlayName, String giveName, String sn) {
- String lowerCase = disPlayName.toLowerCase();
- String newDisplayName = "";
- if (lowerCase.contains(giveName.toLowerCase()))
- newDisplayName = lowerCase.replace(giveName.toLowerCase(), upperGiveName(giveName));
- if (newDisplayName.contains(sn.toLowerCase()))
- newDisplayName = newDisplayName.replace(sn.toLowerCase(), sn.toUpperCase());
- return newDisplayName;
- }
- /**
- * 将名字首字母大写
- * @param giveName 名字
- * @return 处理后的名字
- */
- private String upperGiveName(String giveName) {
- String[] giveNames = giveName.toLowerCase().split(" ");
- String newGiveName = "";
- for (String name : giveNames) {
- newGiveName = newGiveName + Character.toUpperCase(name.charAt(0)) + name.substring(1) + " ";
- }
- return newGiveName.trim();
- }
- }
|