You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2229 lines
104 KiB
Java

package com.engine.hrm.cmd.emmanager;
import com.alibaba.fastjson.JSONObject;
import com.api.hrm.bean.RightMenu;
import com.api.hrm.bean.RightMenuType;
import com.api.hrm.cmd.usericon.GetUserIconCmd;
import com.api.hrm.service.HrmUserIconService;
import com.api.hrm.service.impl.HrmUserIconServiceImpl;
import com.api.system.language.util.ParseLangDataUtil;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.biz.EncryptConfigBiz;
import com.engine.common.entity.BizLogContext;
import com.engine.common.util.ServiceUtil;
import com.engine.core.interceptor.CommandContext;
import com.engine.hrm.util.HrmUtil;
import com.engine.fullsearch.service.SearchService;
import com.engine.fullsearch.service.impl.SearchServiceImpl;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.docs.docs.CustomFieldManager;
import org.apache.commons.lang3.StringUtils;
import weaver.fullsearch.interfaces.rmi.SearchRmi;
import weaver.fullsearch.interfaces.service.SearchRmiService;
import weaver.fullsearch.util.SearchBrowserUtils;
import weaver.general.BaseBean;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.appdetach.AppDetachComInfo;
import weaver.hrm.cachecenter.util.SqlUtil;
import weaver.hrm.common.database.dialect.DialectUtil;
import weaver.hrm.company.CompanyComInfo;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.companyvirtual.CompanyVirtualComInfo;
import weaver.hrm.companyvirtual.DepartmentVirtualComInfo;
import weaver.hrm.companyvirtual.ResourceVirtualComInfo;
import weaver.hrm.companyvirtual.SubCompanyVirtualComInfo;
import weaver.hrm.definedfield.HrmFieldManager;
import weaver.hrm.job.JobActivitiesComInfo;
import weaver.hrm.job.JobGroupsComInfo;
import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.privacy.PrivacyComInfo;
import weaver.hrm.privacy.PrivacyUtil;
import weaver.hrm.resource.HrmListValidate;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.hrm.cachecenter.bean.KVResourceComInfo;
import weaver.hrm.cachecenter.bean.LoadComInfo;
import weaver.hrm.cachecenter.bean.SuperDepartmentComInfo;
import weaver.hrm.cachecenter.bean.SuperSubCompanyComInfo;
import java.io.File;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* em
*
* @author lvyi
*/
public class GetOrganizationInfoCmd extends AbstractCommonCommand<Map<String, Object>> {
private AppDetachComInfo adci = null;
private static ConcurrentHashMap<String, Object> id2count = new ConcurrentHashMap<String, Object>();
private boolean showChild = true;
private boolean openLog = false;
public GetOrganizationInfoCmd(Map<String, Object> params) {
this.params = params;
int userid = Util.getIntValue(Util.null2String(params.get("userid")));
this.user = new User(userid);
String lang_tag = Util.null2String(params.get("lang_tag"));//多语言
this.user.setLanguage(ParseLangDataUtil.convertLang(lang_tag));
adci = new AppDetachComInfo(user);
if("0".equals(new BaseBean().getPropValue("hrmFieldSync","showChild"))){
this.showChild = false;
}else if("0".equals(Util.null2String(params.get("showChild")))){
this.showChild = false;
}
openLog = "1".equals(new BaseBean().getPropValue("hrmFieldSync","openLog"));
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> retmap = new HashMap<String, Object>();
try {
long startTime=System.currentTimeMillis();
//writeLog("进入getOrganizationInfo方法时间===="+startTime);
String cmd = Util.null2String(params.get("cmd"));
if(cmd.equals("getOrganizationInfo")){
retmap = this.getOrganizationInfo();
}else if(cmd.equals("getSubordinate")){
retmap = this.getSubordinate();
}else if(cmd.equals("searchBaseResourceList")){
retmap = this.searchBaseResourceList();
}else if(cmd.equals("searchResourceList")){
retmap = this.searchResourceList();
}else if(cmd.equals("getResourceSimpleInfo")){
retmap = this.getResourceSimpleInfo();
}else if(cmd.equals("getResourceDetailInfo")){
retmap = this.getResourceDetailInfo();
}
} catch (Exception e) {
retmap.put("errcode", -5);
retmap.put("errmsg", ""+ SystemEnv.getHtmlLabelName(10003158,weaver.general.ThreadVarLanguage.getLang())+"EM"+ SystemEnv.getHtmlLabelName(10005236,weaver.general.ThreadVarLanguage.getLang())+"" + e.getMessage());
writeLog(e);
}finally {
long endTime=System.currentTimeMillis();
//writeLog("结束getOrganizationInfo方法时间===="+endTime);
}
return retmap;
}
/***
*
* @return
*/
private Map<String, Object> getSubordinate(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
List<Object> resourceList = new ArrayList<>();
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
if(adci==null) adci = new AppDetachComInfo(user);
sql = " select hr.* "
+ " from hrmresource hr "
+ " where hr.managerid= ? ";
String sqlwhere =" and hr.status in (0,1,2,3)";
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " order by hr.dsporder ";
rs.executeQuery(sql,user.getUID());
while (rs.next()) {
String userid = rs.getString("id");
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String sex = Util.null2String(rs.getString("sex"),"0");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String status = rs.getString("status");
String showorder = Util.toDecimalDigits(rs.getString("dsporder"),2);
String messagerurl = rs.getString("messagerurl");
String mobile = resourceComInfo.getMobileShow(userid, user);
String telephone = rs.getString("telephone");
String email = rs.getString("email");
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(rs.getString("hrmresource","email",true,true)), mapShowSets, mapShowTypeDefaults, pc);
telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(rs.getString("hrmresource","telephone",true,true)), mapShowSets, mapShowTypeDefaults, pc);
String subcount = "0";
String totalcount = "0";
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("userid",userid);
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("name",lastname);
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 应EM要求在职人员默认返回1
resourceInfo.put("status","1");
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("mobile", EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
// resourceInfo.put("subcount",subcount);
// resourceInfo.put("totalcount",totalcount);
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("mobile_prefix","+86");
ArrayList<Object> ls = null;
ls = new ArrayList<>();
ls.add(rs.getString("departmentid"));
resourceInfo.put("department",ls);
ls = new ArrayList<>();
ls.add(departmentComInfo.getDepartmentName(rs.getString("departmentname")));
resourceInfo.put("deptlist",ls);
ls = new ArrayList<>();
ls.add(rs.getString("showorder"));
resourceInfo.put("order",ls);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
retmap.put("userlist",resourceList);
retmap.put("totalcount",resourceList.size());
}catch (Exception e){
writeLog(e);
}
return retmap;
}
private Map<String, Object> searchBaseResourceList(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
List<Object> resourceList = new ArrayList<>();
List<String> sqlParams = new ArrayList<String>() ;
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
if(adci==null) adci = new AppDetachComInfo(user);
String keyword = Util.null2String(params.get("keyword")).trim();
String deptid = Util.null2String(params.get("deptid")).trim();
String fetch_child = Util.null2String(params.get("fetch_child")).trim();
String fetch_mine = Util.null2String(params.get("fetch_mine")).trim();
int user_count = Util.getIntValue(Util.null2String(params.get("user_count")));
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
String type = "3";//节点类型 1 com2 subcom, 3 dept
if(fetch_mine.equals("1")){
deptid = "3"+user.getUserDepartment();
}else{
String tmpStr = deptid;
if(deptid.length()>0) {
if (deptid.startsWith("-")) {
tmpStr = deptid.replace("-", "");
type = tmpStr.substring(0, 1);
deptid = "-" + tmpStr.substring(1, tmpStr.length());
} else {
type = tmpStr.substring(0, 1);
deptid = tmpStr.substring(1, tmpStr.length());
}
}
}
if(deptid.length()>0){
if(fetch_child.equals("1")){
String childids = "";
if(type.equals("2")) {
childids = subCompanyComInfo.getAllChildSubcompanyId(deptid, childids);
}else if(type.equals("3")){
childids = departmentComInfo.getAllChildDepartId(deptid, childids);
}
if(childids.length()>0){
if(childids.startsWith(",")) {
deptid = deptid + childids;
}else{
deptid = deptid + ","+childids;
}
}
}
}
Map<String,Object> params = new HashMap<>();
long starttime = System.currentTimeMillis();
SearchRmi localISearcher = SearchRmiService.getSearchRmi();
boolean isso = true;
if (localISearcher == null) isso = false;
//优化EM人员搜素慢的问题如果启用了微搜走微搜接口搜索人员
if(openLog){
writeLog("searchBaseResourceList>>>isso>>>"+isso);
}
if(isso) {
params.put("key", keyword);
params.put("page", 1);
params.put("pageSize", 50);
params.put("userId", user.getUID()+"");
params.put("schemaType","RSC");
params.put("contentType","RSC");
params.put("searchType","CONTENT");
params.put("language",user.getLanguage());
params.put("sysVersion",9);
params.put("sourceType", "PC");
List <String> userList = new ArrayList();
Map ret = new HashMap();
try {
ret = localISearcher.search(params, null, null);
List resultList = (List) ret.get("result");
for (int i = 0; i < resultList.size(); i++) {
Map resultInfo = (Map) resultList.get(i);
if (resultInfo != null) {
Map headMap = (Map) resultInfo.get("head");
if (headMap != null) {
userList.add(Util.null2String(headMap.get("id")));
}
}
}
} catch (Exception e){
e.printStackTrace();
new BaseBean().writeLog(e);
}
long endtime = System.currentTimeMillis();
if(openLog){
writeLog("searchBaseResourceList>>>params>>>"+JSONObject.toJSONString(params));
writeLog("searchBaseResourceList>>>userinfos>>>"+JSONObject.toJSONString(ret));
writeLog("searchBaseResourceList>>>userList>>>"+JSONObject.toJSONString(userList));
writeLog("searchBaseResourceList>>>time>>>"+(endtime-starttime));
}
int idx = 0;
for (String userid : userList) {
if(user_count>0) {
idx++;
if (idx > user_count) break;
}
String departmentid = resourceComInfo.getDepartmentID(userid);
String subcompanyid1 = resourceComInfo.getSubCompanyID(userid);
String deptshoworder = departmentComInfo.getShoworder(departmentid);
if(deptid.length()>0){
if(type.equals("1")){//总部不用控制
}else if(type.equals("2")){
if(!(","+deptid+",").contains((","+subcompanyid1+","))) continue;
}else if(type.equals("3")){
if(!(","+deptid+",").contains((","+departmentid+","))) continue;
}
}
String lastname = Util.formatMultiLang(resourceComInfo.getLastname(userid),""+user.getLanguage());
String accounttype = resourceComInfo.getAccountType(userid);
String belongto = "1".equals(accounttype)?Util.null2String(resourceComInfo.getBelongTo(userid)):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String sex = Util.null2String(resourceComInfo.getSexs(userid),"0");
String managerid = resourceComInfo.getManagerID(userid);
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = resourceComInfo.getJobTitle(userid);
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String showorder = Util.toDecimalDigits(resourceComInfo.getDsporder(userid),2);
String messagerurl = resourceComInfo.getMessagerUrls(userid);
String mobile = resourceComInfo.getMobileShow(userid, user);
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
String email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(resourceComInfo.getEmail(userid)), mapShowSets, mapShowTypeDefaults, pc);
String telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(resourceComInfo.getTelephone(userid)), mapShowSets, mapShowTypeDefaults, pc);
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("userid",userid);
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 应EM要求在职人员默认返回1
resourceInfo.put("status","1");
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("mobile",EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("mobile_prefix","+86");
ArrayList<Object> ls = null;
ls = new ArrayList<>();
ls.add(departmentid);
resourceInfo.put("department",ls);
ls = new ArrayList<>();
ls.add(departmentComInfo.getDepartmentName(departmentid));
resourceInfo.put("deptlist",ls);
ls = new ArrayList<>();
ls.add(deptshoworder);
resourceInfo.put("order",ls);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
}else{
sql = " select hr.* "
+ " from hrmresource hr ";
String sqlwhere =" where hr.status in (0,1,2,3)";
String mysqlEscope = "/";
if(keyword.length()>0) {
String keywordtemp = "";
if (DialectUtil.isMySql()) {
keywordtemp = "%" + Util.StringReplace(keyword.toLowerCase(), "_", mysqlEscope + "_") + "%";
sqlwhere += " and (lastname like ? escape '" + mysqlEscope
+ "' or pinyinlastname like ? escape '" + mysqlEscope
+ "' or mobile like ? escape '" + mysqlEscope
+ "' or telephone like ? escape '" + mysqlEscope
+ "' or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? escape '" + mysqlEscope + "') "
+ " or lastname like ? or lower(pinyinlastname) like ? or workcode like ? or mobile like ? or telephone like ? "
+ " or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? ))";
} else {
keywordtemp = "%" + Util.StringReplace(keyword.toLowerCase(), "_", "\\_")+"%";
sqlwhere += " and (lastname like ? escape '\\' " +
" or pinyinlastname like ? escape '\\' " +
" or mobile like ? escape '\\' " +
" or telephone like ? escape '\\' " +
" or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? escape '\\') " +
" or lastname like ? or lower(pinyinlastname) like ? or workcode like ? or mobile like ? or telephone like ? " +
" or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? ))";
}
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
}
if(deptid.length()>0){
Object[] descs = SqlUtil.toPlaceHolderAndParamsListForIds(deptid) ;
String hodler = (String) descs[0] ;
List<String> hodlerParams = (List<String>) descs[1] ;
sqlParams.addAll(hodlerParams) ;
if(type.equals("1")){//总部不用控制
}else if(type.equals("2")){
sqlwhere += " and hr.subcompanyid1 in ("+hodler+")";
}else if(type.equals("3")){
sqlwhere += " and hr.departmentid in ("+hodler+")";
}
}
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " order by hr.dsporder ";
rs.executeQuery(sql,sqlParams);
int idx = 0;
while (rs.next()) {
if(user_count>0) {
idx++;
if (idx > user_count) break;
}
String userid = rs.getString("id");
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String sex = Util.null2String(rs.getString("sex"),"0");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String showorder = Util.toDecimalDigits(rs.getString("dsporder"),2);
String messagerurl = rs.getString("messagerurl");
String mobile = resourceComInfo.getMobileShow(userid, user);
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
String email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(rs.getString("email")), mapShowSets, mapShowTypeDefaults, pc);
String telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(rs.getString("telephone")), mapShowSets, mapShowTypeDefaults, pc);
String subcount = "0";
String totalcount = "0";
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("userid",userid);
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 应EM要求在职人员默认返回1
resourceInfo.put("status","1");
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("mobile",EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("mobile_prefix","+86");
ArrayList<Object> ls = null;
ls = new ArrayList<>();
ls.add(rs.getString("departmentid"));
resourceInfo.put("department",ls);
ls = new ArrayList<>();
ls.add(departmentComInfo.getDepartmentName(rs.getString("departmentid")));
resourceInfo.put("deptlist",ls);
ls = new ArrayList<>();
ls.add(rs.getString("showorder"));
resourceInfo.put("order",ls);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
}
retmap.put("userlist",resourceList);
retmap.put("totalcount",resourceList.size());
}catch (Exception e){
writeLog(e);
}
return retmap;
}
private Map<String, Object> searchResourceList(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
List<Object> resourceList = new ArrayList<>();
List<String> sqlParams = new ArrayList<String>() ;
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
departmentComInfo.setTofirstRow();
if(adci==null) adci = new AppDetachComInfo(user);
String keyword = Util.null2String(params.get("keyword")).trim();
int user_count = Util.getIntValue(Util.null2String(params.get("user_count")));
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
Map<String,Object> params = new HashMap<>();
long starttime = System.currentTimeMillis();
SearchRmi localISearcher = SearchRmiService.getSearchRmi();
boolean isso = true;
if (localISearcher == null) isso = false;
//优化EM人员搜素慢的问题如果启用了微搜走微搜接口搜索人员
if(openLog){
writeLog("searchResourceList>>>isso>>>"+isso);
}
if(isso) {
params.put("key", keyword);
params.put("page", 1);
params.put("pageSize", 50);
params.put("userId", user.getUID()+"");
params.put("schemaType","RSC");
params.put("contentType","RSC");
params.put("searchType","CONTENT");
params.put("language",user.getLanguage());
params.put("sysVersion",9);
params.put("sourceType", "PC");
List <String> userList = new ArrayList();
Map ret = new HashMap();
try {
ret = localISearcher.search(params, null, null);
List resultList = (List) ret.get("result");
for (int i = 0; i < resultList.size(); i++) {
Map resultInfo = (Map) resultList.get(i);
if (resultInfo != null) {
Map headMap = (Map) resultInfo.get("head");
if (headMap != null) {
userList.add(Util.null2String(headMap.get("id")));
}
}
}
} catch (Exception e){
e.printStackTrace();
new BaseBean().writeLog(e);
}
long endtime = System.currentTimeMillis();
if(openLog){
writeLog("searchResourceList>>>params>>>"+JSONObject.toJSONString(params));
writeLog("searchResourceList>>>userinfos>>>"+JSONObject.toJSONString(ret));
writeLog("searchResourceList>>>userList>>>"+JSONObject.toJSONString(userList));
writeLog("searchResourceList>>>time>>>"+(endtime-starttime));
}
int idx = 0;
for (String userid : userList) {
if(user_count>0) {
idx++;
if (idx > user_count) break;
}
String lastname = Util.formatMultiLang(resourceComInfo.getLastname(userid),""+user.getLanguage());
String accounttype = resourceComInfo.getAccountType(userid);
String belongto = "1".equals(accounttype)?Util.null2String(resourceComInfo.getBelongTo(userid)):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String sex = Util.null2String(resourceComInfo.getSexs(userid),"0");
String managerid = resourceComInfo.getManagerID(userid);
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = resourceComInfo.getJobTitle(userid);
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String showorder = Util.toDecimalDigits(resourceComInfo.getDsporder(userid),2);
String messagerurl = resourceComInfo.getMessagerUrls(userid);
String mobile = resourceComInfo.getMobileShow(userid, user);
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
String email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(resourceComInfo.getEmail(userid)), mapShowSets, mapShowTypeDefaults, pc);
String telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(resourceComInfo.getTelephone(userid)), mapShowSets, mapShowTypeDefaults, pc);
String departmentid = resourceComInfo.getDepartmentID(userid);
String subCompanyID = resourceComInfo.getSubCompanyID(userid);
String deptshoworder = departmentComInfo.getShoworder(departmentid);
String subcount = "0";
String totalcount = "0";
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("userid",userid);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 应EM要求在职人员默认返回1
resourceInfo.put("status","1");
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("mobile",EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("mobile_prefix","+86");
ArrayList<Object> ls = null;
ls = new ArrayList<>();
ls.add(departmentid);
resourceInfo.put("department",ls);
ls = new ArrayList<>();
String allParentDepartmentBlankNames = departmentComInfo.getAllParentDepartmentBlankNames(departmentid, subCompanyID);
ls.add(getSubAndTopDeptName(allParentDepartmentBlankNames));
resourceInfo.put("deptlist",ls);
ls = new ArrayList<>();
ls.add(deptshoworder);
resourceInfo.put("order",ls);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
}else{
sql = " select hr.*,t2.departmentname,t2.showorder "
+ " from hrmresource hr, hrmdepartment t2 "
+ " where hr.departmentid=t2.id ";
String sqlwhere =" and hr.status in (0,1,2,3)";
String mysqlEscope = "/";
if(keyword.length()>0) {
String keywordtemp = "";
if (DialectUtil.isMySql()) {
keywordtemp = "%" + Util.StringReplace(keyword.toLowerCase(), "_", mysqlEscope + "_") + "%";
sqlwhere += " and (lastname like ? escape '" + mysqlEscope
+ "' or pinyinlastname like ? escape '" + mysqlEscope
+ "' or mobile like ? escape '" + mysqlEscope
+ "' or telephone like ? escape '" + mysqlEscope
+ "' or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? escape '" + mysqlEscope + "') "
+ " or lastname like ? or lower(pinyinlastname) like ? or workcode like ? or mobile like ? or telephone like ? "
+ " or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? ))";
} else {
keywordtemp = "%" + Util.StringReplace(keyword.toLowerCase(), "_", "\\_")+"%";
sqlwhere += " and (lastname like ? escape '\\' " +
" or pinyinlastname like ? escape '\\' " +
" or mobile like ? escape '\\' " +
" or telephone like ? escape '\\' " +
" or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? escape '\\') " +
" or lastname like ? or lower(pinyinlastname) like ? or workcode like ? or mobile like ? or telephone like ? " +
" or EXISTS (SELECT 1 FROM hrmjobtitles WHERE hr.jobtitle=hrmjobtitles.id AND jobtitlename LIKE ? ))";
}
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
sqlParams.add(keywordtemp);
}
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " order by hr.dsporder ";
rs.executeQuery(sql,sqlParams);
int idx = 0;
while (rs.next()) {
if(user_count>0) {
idx++;
if (idx > user_count) break;
}
String userid = rs.getString("id");
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = resourceComInfo.getLastname(belongto);
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String sex = Util.null2String(rs.getString("sex"),"0");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String status = rs.getString("status");
String showorder = Util.toDecimalDigits(rs.getString("dsporder"),2);
String messagerurl = rs.getString("messagerurl");
String mobile = resourceComInfo.getMobileShow(userid, user);
String telephone = rs.getString("telephone");
String email = rs.getString("email");
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(rs.getString("hrmresource","email",true,true)), mapShowSets, mapShowTypeDefaults, pc);
telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(rs.getString("hrmresource","telephone",true,true)), mapShowSets, mapShowTypeDefaults, pc);
String subcount = "0";
String totalcount = "0";
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("userid",userid);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 应EM要求在职人员默认返回1
resourceInfo.put("status","1");
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("mobile",EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
// resourceInfo.put("subcount",subcount);
// resourceInfo.put("totalcount",totalcount);
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("mobile_prefix","+86");
ArrayList<Object> ls = null;
ls = new ArrayList<>();
ls.add(rs.getString("departmentid"));
resourceInfo.put("department",ls);
ls = new ArrayList<>();
String subcompanyid1 = rs.getString("SUBCOMPANYID1");
// String subCompanyname = subCompanyComInfo.getSubCompanyname(subcompanyid1);
String allParentDepartmentBlankNames = departmentComInfo.getAllParentDepartmentBlankNames(rs.getString("departmentid"), subcompanyid1);
ls.add(getSubAndTopDeptName(allParentDepartmentBlankNames));
resourceInfo.put("deptlist",ls);
ls = new ArrayList<>();
ls.add(rs.getString("showorder"));
resourceInfo.put("order",ls);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
}
retmap.put("userlist",resourceList);
retmap.put("totalcount",resourceList.size());
}catch (Exception e){
writeLog(e);
}
return retmap;
}
private Map<String, Object> getResourceSimpleInfo(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
List<Object> resourceList = new ArrayList<>();
List<String> sqlParams = new ArrayList<String>() ;
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
departmentComInfo.setTofirstRow();
if(adci==null) adci = new AppDetachComInfo(user);
String userlist = Util.null2String(params.get("userlist")).trim();
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
String userliststr = "";
//处理管理员信息
String [] userListIds = Util.TokenizerString2(userlist,",");
for(String userListId: userListIds){
if(resourceComInfo.isAdmin(userListId)){
resourceInfo = new HashMap<>();
resourceInfo.put("id",userListId);
resourceInfo.put("name",resourceComInfo.getLastname(userListId));
resourceInfo.put("base_user_id",userListId);
resourceInfo.put("base_user_name",resourceComInfo.getLastname(userListId));
if(enable_main_account){
resourceInfo.put("main_base_user_id","" );
resourceInfo.put("main_base_user_name","");
}
resourceInfo.put("name_simple_pingyin","");
resourceInfo.put("name_full_pingyin","");
resourceInfo.put("base_name_simple_pingyin","");
resourceInfo.put("base_name_full_pingyin","");
resourceInfo.put("user_type",1);
resourceInfo.put("work_cond_icon","");
resourceInfo.put("work_cond_txt","");
resourceInfo.put("gender",Util.getIntValue(resourceComInfo.getSex(userListId)));
resourceInfo.put("position","");
resourceInfo.put("status","1");
resourceInfo.put("mobile_prefix","");
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userListId);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
// 传管理员ID会查所有人此处加上管理员ID限制数据返回
if(userliststr.length()>0) userliststr+=",";
userliststr+=userListId;
}else{
if(userliststr.length()>0) userliststr+=",";
userliststr+=userListId;
}
}
sql = " select hr.*,t2.departmentname,t2.showorder "
+ " from hrmresource hr, hrmdepartment t2 "
+ " where hr.departmentid=t2.id ";
String sqlwhere ="";
//根据id查询人员信息如果传了id就查询所有状态的人员没有传id默认查询在职人员
if(userliststr.length()==0){
sqlwhere+=" and hr.status in (0,1,2,3)";
}
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
if(userliststr.length()>0){
Object[] descs = SqlUtil.toPlaceHolderAndParamsListForIds(userliststr) ;
String hodler = (String) descs[0] ;
List<String> hodlerParams = (List<String>) descs[1] ;
sqlParams.addAll(hodlerParams) ;
sql+=" and hr.id in( "+hodler+" ) ";
}
sql += " order by hr.dsporder ";
rs.executeQuery(sql,sqlParams);
while (rs.next()) {
String userid = rs.getString("id");
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String status = rs.getString("status");
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 如果人员为非在职状态人员返回3在职返回1
if(status.equals("0")||status.equals("1")||status.equals("2")||status.equals("3")){
status = "1";
}else{
status = "3";
}
String sex = Util.null2String(rs.getString("sex"),"0");
//手机端性别和OA不同 1表示男性2表示女性0表示未知
sex = sex.equals("0")?"1":(sex.equals("1")?"2":"0");
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String messagerurl = rs.getString("messagerurl");
// String []pinyin = Util.TokenizerString2(rs.getString("pinyinlastname"),"^");
String name_simple_pingyin =Util.null2String(rs.getString("pinyinlastname"));
String name_full_pingyin = Util.null2String(rs.getString("pinyinlastname"));
resourceInfo = new HashMap<>();
resourceInfo.put("id",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("name_simple_pingyin",name_simple_pingyin);
resourceInfo.put("name_full_pingyin",name_full_pingyin);
resourceInfo.put("base_name_simple_pingyin",name_simple_pingyin);
resourceInfo.put("base_name_full_pingyin",name_full_pingyin);
resourceInfo.put("user_type",1);
resourceInfo.put("work_cond_icon","");
resourceInfo.put("work_cond_txt","");
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("position",jobtitlename);
resourceInfo.put("status",status);
resourceInfo.put("mobile_prefix","");
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
retmap.put("userlist",resourceList);
retmap.put("errcode",0);
retmap.put("errmsg","");
retmap.put("operationLogId","");
}catch (Exception e){
retmap.put("errcode",-1);
retmap.put("errmsg","catch exception : " + e.getMessage());
writeLog(e);
}
return retmap;
}
private Map<String, Object> getResourceDetailInfo(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
List<Object> resourceList = new ArrayList<>();
List<String> sqlParams = new ArrayList<String>() ;
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
SubCompanyComInfo sci = new SubCompanyComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
JobActivitiesComInfo jobActivitiesComInfo = new JobActivitiesComInfo();
JobGroupsComInfo jobGroupsComInfo = new JobGroupsComInfo();
departmentComInfo.setTofirstRow();
if(adci==null) adci = new AppDetachComInfo(user);
String id = Util.null2String(params.get("id")).trim();
boolean isSelf = id.equals(user.getUID()+"");
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
sql = " select hr.*,t2.departmentname,t2.showorder "
+ " from hrmresource hr, hrmdepartment t2 "
+ " where hr.departmentid=t2.id ";
String sqlwhere =" and hr.id =? ";
sqlParams.add(id) ;
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " order by hr.dsporder ";
rs.executeQuery(sql,sqlParams);
if (rs.next()) {
String userid = rs.getString("id");
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = resourceComInfo.getLastname(belongto);
String workcode = rs.getString("workcode");
String lastname = rs.getString("lastname");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String messagerurl = rs.getString("messagerurl");
String status = rs.getString("status");
//EM端只有3种状态 1-正常状态 -2-禁用 3=删除 如果人员为非在职状态人员返回3在职返回1
if(status.equals("0")||status.equals("1")||status.equals("2")||status.equals("3")){
status = "1";
}else{
status = "3";
}
String sex = Util.null2String(rs.getString("sex"),"0");
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
// String []pinyin = Util.TokenizerString2(rs.getString("pinyinlastname"),"^");
String name_simple_pingyin =Util.null2String(rs.getString("pinyinlastname"));
String name_full_pingyin = Util.null2String(rs.getString("pinyinlastname"));
resourceInfo = new HashMap<>();
resourceInfo.put("workcode",workcode);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("position",jobtitlename);
resourceInfo.put("user_type",1);
resourceInfo.put("status",status);
resourceInfo.put("id",userid);
resourceInfo.put("name",Util.formatMultiLang(lastname,""+user.getLanguage()));
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
//隐私设置部分
PrivacyComInfo pc = new PrivacyComInfo();
Map<String, String> mapShowSets = pc.getMapShowSets();
Map<String, String> mapShowTypeDefaults = pc.getMapShowTypeDefaults();
String mobile = resourceComInfo.getMobileShow(userid, user);
String email = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", Util.null2String(rs.getString("hrmresource","email",true,true)), mapShowSets, mapShowTypeDefaults, pc);
String telephone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", Util.null2String(rs.getString("hrmresource","telephone",true,true)), mapShowSets, mapShowTypeDefaults, pc);
String otherphone = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "mobilecall", Util.null2String(rs.getString("hrmresource","mobilecall",true,true)), mapShowSets, mapShowTypeDefaults, pc);
resourceInfo.put("mobile",EncryptConfigBiz.getDecryptData(mobile));
resourceInfo.put("telephone",EncryptConfigBiz.getDecryptData(telephone));
resourceInfo.put("email",EncryptConfigBiz.getDecryptData(email));
resourceInfo.put("otherphone",otherphone);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto);
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("nick_name","");
resourceInfo.put("mobile_prefix","+86");
resourceInfo.put("name_simple_pingyin",name_simple_pingyin);
resourceInfo.put("name_full_pingyin",name_full_pingyin);
resourceInfo.put("work_cond_txt","");
resourceInfo.put("work_cond_icon","");
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
//部门信息
List<Map<String,Object>> deptlist = new ArrayList<Map<String,Object>>();
Map<String,Object> deptInfo = new HashMap<String,Object>();
String deptId = rs.getString("departmentid");
String subId = departmentComInfo.getSubcompanyid1(deptId);
List <Integer> orgids = new ArrayList<Integer>();
List <String> orgnames = new ArrayList<String>();
List<String> allparentsubcompanyid1 = new ArrayList<String>();
List<String> allparentdeptid = new ArrayList<String>();
String allSupdept = departmentComInfo.getAllSupDepartment(deptId);
String allSupSub = sci.getAllSupCompany(subId);
if(allSupdept.length()>0){
allSupdept = deptId+","+allSupdept;
}else{
allSupdept = deptId;
}
if(allSupSub.length()>0){
allSupSub = subId+","+allSupSub;
}else{
allSupSub = subId;
}
allparentsubcompanyid1 = Util.TokenizerString(allSupSub,",");
allparentdeptid = Util.TokenizerString(allSupdept,",");
for(int i = allparentsubcompanyid1.size()-1;i>=0;i--){
String orgid = allparentsubcompanyid1.get(i);
orgids.add(Util.getIntValue(orgid));
orgnames.add(sci.getSubCompanyname(orgid));
}
for(int i = allparentdeptid.size()-1;i>=0;i--){
String orgid = allparentdeptid.get(i);
orgids.add(Util.getIntValue(orgid));
orgnames.add(departmentComInfo.getDepartmentname(orgid));
}
Integer [] pathid = new Integer[orgids.size()];
orgids.toArray(pathid);
//部门全路径id集合
deptInfo.put("pathid",pathid);
//部门全路径名称集合
deptInfo.put("path",orgnames);
//要查看的人的部门名称
deptInfo.put("name",departmentComInfo.getDepartmentName(deptId));
//要查看的人的部门id
deptInfo.put("id",Util.getIntValue(deptId));
//要查看的人的上级部门id
deptInfo.put("parentid",Util.getIntValue(departmentComInfo.getDepartmentsupdepid()));
deptlist.add(deptInfo);
resourceInfo.put("deptlist",deptlist);
//自定义字段信息
List<Map<String,Object>> attrs = new ArrayList<Map<String,Object>>();
Map<String,Object> extattr = null;
Map<String,Object> cusData = null;
String basicinfo = rs.getPropValue("hrmFieldSync","basicinfo");
String workinfo = rs.getPropValue("hrmFieldSync","workinfo");
String personalinfo = rs.getPropValue("hrmFieldSync","personalinfo");
String isOpen = rs.getPropValue("hrmFieldSync","isOpen");
String standardFields = rs.getPropValue("hrmFieldSync","standardFields");
String cusFields = rs.getPropValue("hrmFieldSync","cusFields");
Map<String,Integer> scopeIds = new HashMap<>();
if(basicinfo.equals("1")||isOpen.equals("1")){
//基本信息中的自定义字段
scopeIds.put("0",-1);
}
if(personalinfo.equals("1")||isOpen.equals("1")){
//个人信息中的自定义字段
scopeIds.put("1",1);
}
if(workinfo.equals("1")||isOpen.equals("1")){
//工作信息中的自定义字段
scopeIds.put("2",3);
}
HrmFieldManager hfm = null;
int scopeId = 0;
for(Map.Entry<String,Integer>entry: scopeIds.entrySet()){
scopeId = entry.getValue();
int i = Util.getIntValue(entry.getKey());
String prefix = "";
if(i==0){
prefix = "basic_";
}else if(i==1){
prefix = "personal_";
}else if(i==2){
prefix = "work_";
}
hfm = new HrmFieldManager("HrmCustomFieldByInfoType", scopeId);
CustomFieldManager cfm = new CustomFieldManager("HrmCustomFieldByInfoType", scopeId);
hfm.getHrmData(Util.getIntValue(id));
cfm.getCustomData(Util.getIntValue(id));
hfm.getCustomFields();
while (hfm.next()) {
if (!hfm.isUse()) continue;
if (hfm.getHtmlType().equals("6")) continue;//屏蔽附件上传
if (hfm.getHtmlType().equals("3")&&(hfm.getType()==161||hfm.getType()==162)) continue;//因获取自定义浏览框的值有性能问题,查询特别慢故暂屏蔽自定义浏览框
String fieldName = hfm.getFieldname();
String fieldValue = "";
//EM标准字段与自定义字段需要自定义是否显示
if(isOpen.equals("1")){
if (hfm.isBaseField(fieldName)){
if(!(","+standardFields+",").contains(","+fieldName+","))continue;
if(fieldName.equalsIgnoreCase("jobactivity")){
fieldValue = jobActivitiesComInfo.getJobActivitiesmarks(jobTitlesComInfo.getJobactivityid(jobtitle));
}else if(fieldName.equalsIgnoreCase("jobgroupid")){
fieldValue = jobGroupsComInfo.getJobGroupsremarks(jobActivitiesComInfo.getJobgroupid(jobTitlesComInfo.getJobactivityid(jobtitle)));
}else{
fieldValue = hfm.getHrmData(fieldName);
}
}else{
if(!(","+cusFields+",").contains(","+prefix+fieldName+","))continue;
fieldValue = cfm.getData("field" + hfm.getFieldid());
}
if(fieldValue.length()>0&&(!fieldName.equalsIgnoreCase("jobactivity")&&!fieldName.equalsIgnoreCase("jobgroupid"))){
fieldValue=hfm.getFieldvalue(user, hfm.getDmrUrl(), hfm.getFieldid(), Util.getIntValue(hfm.getHtmlType()), hfm.getType(), fieldValue , 0);
}
if(fieldName.equalsIgnoreCase("mobile")){
fieldValue = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "mobile", fieldValue, mapShowSets, mapShowTypeDefaults, pc);
}
if(fieldName.equalsIgnoreCase("telephone")){
fieldValue = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "telephone", fieldValue, mapShowSets, mapShowTypeDefaults, pc);
}
if(fieldName.equalsIgnoreCase("email")){
fieldValue = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "email", fieldValue, mapShowSets, mapShowTypeDefaults, pc);
}
if(fieldName.equalsIgnoreCase("mobilecall")){
fieldValue = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "mobilecall", fieldValue, mapShowSets, mapShowTypeDefaults, pc);
}
if(fieldName.equalsIgnoreCase("fax")){
fieldValue = PrivacyUtil.checkByPrivacy(Util.null2String(userid), user, "fax", fieldValue, mapShowSets, mapShowTypeDefaults, pc);
}
}else{
if(hfm.isBaseField(fieldName))continue;
fieldValue = cfm.getData("field" + hfm.getFieldid());
if(fieldValue.length()>0){
fieldValue=hfm.getFieldvalue(user, hfm.getDmrUrl(), hfm.getFieldid(), Util.getIntValue(hfm.getHtmlType()), hfm.getType(), fieldValue , 0);
}
}
fieldValue = EncryptConfigBiz.getDecryptData(fieldValue);
cusData = new HashMap<String,Object>();
cusData.put("name", SystemEnv.getHtmlLabelName(Util.getIntValue(hfm.getLable()), user.getLanguage()));
cusData.put("value", fieldValue);
attrs.add(cusData);
}
}
extattr = new HashMap<>();
extattr.put("attrs",attrs);
resourceInfo.put("extattr",extattr);
resourceInfo.put("call",true);
resourceInfo.put("send",true);
resourceInfo.put("isattend",true);
resourceList.add(resourceInfo);
}else if(resourceComInfo.isAdmin(id)){
resourceInfo = new HashMap<>();
resourceInfo.put("workcode",resourceComInfo.getSex(id));
resourceInfo.put("gender",resourceComInfo.getSex(id));
resourceInfo.put("position","");
resourceInfo.put("user_type",1);
resourceInfo.put("status",resourceComInfo.getStatus(id));
resourceInfo.put("id",id);
resourceInfo.put("name",Util.formatMultiLang(resourceComInfo.getLastnames(id),""+user.getLanguage()));
resourceInfo.put("manager_id","");
resourceInfo.put("manager_name","");
resourceInfo.put("mobile","");
resourceInfo.put("telephone","");
resourceInfo.put("email","");
resourceInfo.put("otherphone","");
if(enable_main_account){
resourceInfo.put("main_base_user_id","");
resourceInfo.put("main_base_user_name ","");
}
resourceInfo.put("nick_name","");
resourceInfo.put("mobile_prefix","+86");
resourceInfo.put("name_simple_pingyin","");
resourceInfo.put("name_full_pingyin","");
resourceInfo.put("work_cond_txt","");
resourceInfo.put("work_cond_icon","");
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",id);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
Map<String,Object> extattr = new HashMap<>();
List<Map<String,Object>> attrs = new ArrayList<Map<String,Object>>();
extattr.put("attrs",attrs);
resourceInfo.put("extattr",extattr);
resourceInfo.put("call",true);
resourceInfo.put("send",true);
resourceInfo.put("isattend",true);
resourceList.add(resourceInfo);
}
retmap.put("userlist",resourceList);
retmap.put("errcode",0);
retmap.put("errmsg","");
retmap.put("operationLogId","");
retmap.put("totalcount",resourceList.size());
}catch (Exception e){
retmap.put("errcode",-1);
retmap.put("errmsg","catch exception : " + e.getMessage());
writeLog(e);
}
return retmap;
}
/***
*
* @return
*/
private Map<String, Object> getOrganizationInfo(){
Map<String, Object> retmap = new HashMap<String, Object>();
try{
String id = Util.null2String(params.get("id"));//节点id
String type = "";//节点类型 1 com2 subcom, 3 dept
String tmpStr = id;
if(id.length()>0) {
if (id.startsWith("-")) {
tmpStr = id.replace("-", "");
type = tmpStr.substring(0, 1);
id = "-" + tmpStr.substring(1, tmpStr.length());
} else {
type = tmpStr.substring(0, 1);
id = tmpStr.substring(1, tmpStr.length());
}
if (type.equals("1")) {
type = "com";
id="0";
}else{
type = type.equals("2") ? "com" : "dept";
}
}
String lang_tag = Util.null2String(params.get("lang_tag"));//多语言
if(id.length()==0){//获取主节点
List<Object> companylist = new ArrayList<>();
Map<String, Object> companyInfo = null;
if(user.isAdmin()||user.getUserDepartment()>0) {
CompanyComInfo CompanyComInfo = new CompanyComInfo();
if (CompanyComInfo.getCompanyNum() > 0) {
CompanyComInfo.setTofirstRow();
while (CompanyComInfo.next()) {
companyInfo = new HashMap<>();
companyInfo.put("id", Util.getIntValue("1" + CompanyComInfo.getCompanyid()));
companyInfo.put("name", Util.formatMultiLang(CompanyComInfo.getCompanyname(), "" + user.getLanguage()));
companyInfo.put("parentid", 0);
companyInfo.put("total_count", this.getResourceNum("com",CompanyComInfo.getCompanyid()));
companyInfo.put("hasnext", "true");
companyInfo.put("showorder", "1");
companylist.add(companyInfo);
}
}
}
CompanyVirtualComInfo CompanyVirtualComInfo = new CompanyVirtualComInfo();
if(CompanyVirtualComInfo.getCompanyNum()>0){
CompanyVirtualComInfo.setTofirstRow();
while(CompanyVirtualComInfo.next()){
if(HrmUtil.isHideDefaultDimension(Util.null2String(CompanyVirtualComInfo.getCompanyid()))){
continue;
}
if(!user.isAdmin()&&user.getUserDepartment()==0&&!CompanyVirtualComInfo.getCompanyid().equals("-10000"))continue;
companyInfo = new HashMap<>();
companyInfo.put("id",Util.getIntValue("-1"+CompanyVirtualComInfo.getCompanyid().replace("-","")));
companyInfo.put("name",Util.formatMultiLang(CompanyVirtualComInfo.getVirtualType(),""+user.getLanguage()));
companyInfo.put("parentid",0);
companyInfo.put("total_count", this.getResourceNum("com",CompanyVirtualComInfo.getCompanyid()));
companyInfo.put("hasnext","true");
companyInfo.put("showorder",CompanyVirtualComInfo.getShowOrder());
companylist.add(companyInfo);
}
}
retmap.put("department",companylist);
}else{
if(type.equals("com")){
if(Util.null2String(params.get("id")).startsWith("-")){
retmap.putAll(getSubCompanyVirtualList(id));
}else{
retmap.putAll(getSubCompanyList(id));
}
}else if(type.equals("dept")){
if(Util.null2String(params.get("id")).startsWith("-")) {
retmap.putAll(getDepartmentVirtualList("", id));
}else{
retmap.putAll(getDepartmentList("", id));
}
}
}
}catch (Exception e){
writeLog(e);
}
return retmap;
}
private Map<String,Object> getSubCompanyList(String subId){
Map<String,Object> resultMap = new HashMap<>();
List<Object> subcompanyList = new ArrayList<>();
Map<String,Object> subcompanyInfo = null;
try{
String fetch_mine = Util.null2String(params.get("fetch_mine"));// 0 全部 1-我的部门 2-我的分部
String parentid = Util.null2String(params.get("id"));
if(adci==null) adci = new AppDetachComInfo(user);
adci.setVirtualType("1");
List<String> allowsubcompany=adci.getAlllowsubcompany();//能查看的分部
List<String> allowsubcompanyview=adci.getAlllowsubcompanyview();//能查看的分部含必要的上级
SubCompanyComInfo rs = new SubCompanyComInfo();
rs.setTofirstRow();
String allparentsubcompanyid = "";
String allchildsubcompanyid = "";
if(fetch_mine.equals("1") || fetch_mine.equals("2")){
allparentsubcompanyid = rs.getAllSupCompany(""+user.getUserSubCompany1());
allchildsubcompanyid = rs.getAllChildSubcompanyId(""+user.getUserSubCompany1(),allchildsubcompanyid);
if(!allchildsubcompanyid.endsWith(",")){
allchildsubcompanyid+=","+user.getUserSubCompany1();
}else{
allchildsubcompanyid+=user.getUserSubCompany1();
}
allchildsubcompanyid = ","+allchildsubcompanyid+",";
allparentsubcompanyid = ","+allparentsubcompanyid+",";
}
if(fetch_mine.equals("1") || fetch_mine.equals("2")){
if(allchildsubcompanyid.indexOf(","+subId+",")>=0){
resultMap.putAll(this.getDepartmentList(subId, "0"));
}
}else {
resultMap.putAll(this.getDepartmentList(subId, "0"));
}
while (rs.next()) {
String id = rs.getSubCompanyid();
String supsubcomid = rs.getSupsubcomid();
if (supsubcomid.equals(""))supsubcomid = "0";
if (!supsubcomid.equals(subId))continue;
if("1".equals(rs.getCompanyiscanceled()))continue;
//我的部门,不管需不需要显示所有下级,分部都只展示本分部
if(fetch_mine.equals("1")){
if(allparentsubcompanyid.indexOf(","+id+",")<0 && !id.equals(user.getUserSubCompany1()+"")) continue;
}else if(fetch_mine.equals("2")){
//我的分部
if(this.showChild){
if(allparentsubcompanyid.indexOf(","+id+",")<0 && allchildsubcompanyid.indexOf(","+id+",")<0) continue;
}else{
if(allparentsubcompanyid.indexOf(","+id+",")<0 && !id.equals(user.getUserSubCompany1()+"")) continue;
}
}
boolean flag = true;
if(allowsubcompany.size()>0||allowsubcompanyview.size()>0){
flag = false;
if(allowsubcompany.contains(id)){
flag = true;
}
if(!flag && allowsubcompanyview.contains(id)){
flag = true;
}
}
if(!flag)continue;
String name = rs.getSubCompanyname();
String showorder = rs.getShoworder();
if(!flag)continue;
subcompanyInfo = new HashMap<>();
subcompanyInfo.put("id",Util.getIntValue("2"+id));
subcompanyInfo.put("name",Util.formatMultiLang(name,""+user.getLanguage()));
subcompanyInfo.put("hasnext",hasChild("subcompany", id));
subcompanyInfo.put("parentid",Util.getIntValue(parentid));
subcompanyInfo.put("total_count",this.getResourceNum("subcom",id));
subcompanyInfo.put("showorder",showorder);
subcompanyList.add(subcompanyInfo);
}
if(resultMap.get("department")!=null){
List<Object> tmpList = (List<Object>)resultMap.get("department");
tmpList.addAll(subcompanyList);
resultMap.put("department",tmpList);
}else{
resultMap.put("department",subcompanyList);
}
}catch (Exception e){
writeLog(e);
}finally {
}
return resultMap;
}
private Map<String,Object> getDepartmentList(String subId, String departmentId){
Map<String,Object> returnMap = new HashMap<>();
List<Object> departmentList = new ArrayList<>();
Map<String,Object> departmentInfo = null;
try{
DepartmentComInfo rsDepartment = new DepartmentComInfo();
rsDepartment.setTofirstRow();
String fetch_mine = Util.null2String(params.get("fetch_mine"));// 0 全部 1-我的部门 2-我的分部
String parentid = Util.null2String(params.get("id"));
String allparentdepartmentid = "";
String allchilddepartmentid = "";
if(fetch_mine.equals("1")){
allparentdepartmentid = rsDepartment.getAllSupDepartment(""+user.getUserDepartment());
allchilddepartmentid = rsDepartment.getAllChildDepartId(""+user.getUserDepartment(),allchilddepartmentid);
if(!allchilddepartmentid.endsWith(",")){
allchilddepartmentid+=","+user.getUserDepartment();
}else{
allchilddepartmentid+=user.getUserDepartment();
}
allchilddepartmentid = ","+allchilddepartmentid+",";
allparentdepartmentid = ","+allparentdepartmentid+",";
}
if(Util.getIntValue(departmentId)>0){
subId = rsDepartment.getSubcompanyid1(departmentId);
if(fetch_mine.equals("1")){
if(allchilddepartmentid.indexOf(","+departmentId+",")>=0){
returnMap.put("userlist",this.getResourceList(departmentId));
}
}else {
returnMap.put("userlist", this.getResourceList(departmentId));
}
}
if(adci==null) adci = new AppDetachComInfo(user);
adci.setVirtualType("1");
List<String> allowsubcompany=adci.getAlllowsubcompany();//能查看的分部
List<String> allowdepartment=adci.getAlllowdepartment();//能查看的部门
List<String> allowdepartmentview=adci.getAlllowdepartmentview();//能查看的部门含必要的上级
while (rsDepartment.next()) {
if(departmentId.equals(rsDepartment.getDepartmentid()))continue;
if("1".equals(rsDepartment.getDeparmentcanceled()))continue;
String supdepid = rsDepartment.getDepartmentsupdepid();
if (departmentId.equals("0") && supdepid.equals(""))supdepid = "0";
if(this.showChild){
if(fetch_mine.equals("1") && allparentdepartmentid.indexOf(","+rsDepartment.getDepartmentid()+",")<0 && allchilddepartmentid.indexOf(","+rsDepartment.getDepartmentid()+",")<0){
continue;
}
}else{
if(fetch_mine.equals("1") && allparentdepartmentid.indexOf(","+rsDepartment.getDepartmentid()+",")<0 && !rsDepartment.getDepartmentid().equals(user.getUserDepartment()+"")){
continue;
}else if(fetch_mine.equals("2") && !rsDepartment.getSubcompanyid1().equals(subId)){
continue;
}
}
if (!(rsDepartment.getSubcompanyid1().equals(subId) && (supdepid.equals(departmentId)||(!rsDepartment.getSubcompanyid1(supdepid).equals(subId)&&departmentId.equals("0"))))) continue;
String id = rsDepartment.getDepartmentid();
String subcompanyid1 = rsDepartment.getSubcompanyid1();
String name = rsDepartment.getDepartmentname();
String showorder = rsDepartment.getShoworder();
boolean flag = true;
if(allowsubcompany.size()>0||allowdepartment.size()>0||allowdepartmentview.size()>0){
flag = false;
if(allowdepartment.contains(id)){
flag = true;
}
if(!flag && allowdepartmentview.contains(id)){
flag = true;
}
if(!flag && allowsubcompany.contains(subcompanyid1)){
flag = true;
}
}
if(!flag)continue;
departmentInfo = new HashMap<>();
departmentInfo.put("id",Util.getIntValue("3"+id));
departmentInfo.put("name",Util.formatMultiLang(name,""+user.getLanguage()));
departmentInfo.put("hasnext",hasChild("dept", id));
departmentInfo.put("parentid",Util.getIntValue(parentid));
departmentInfo.put("showorder",showorder);
departmentInfo.put("total_count",this.getResourceNum("dept",id));//部门下的人数
departmentList.add(departmentInfo);
}
returnMap.put("department",departmentList);
}catch (Exception e){
writeLog(e);
}
return returnMap;
}
/***
*
* @param departmentId
* @return
*/
private List<Object> getResourceList(String departmentId){
List<Object> resourceList = new ArrayList<>();
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
try{
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
boolean enable_main_account = "1".equals(Util.null2String(params.get("enable_main_account")).trim());
departmentComInfo.setTofirstRow();
if(adci==null) adci = new AppDetachComInfo(user);
sql = " select hr.id, hr.lastname, hr.sex, hr.managerid, hr.jobtitle, hr.status, hr.dsporder, hr.messagerurl, hr.pinyinlastname, hr.accounttype, hr.belongto "
+ " from hrmresource hr, hrmdepartment t2 "
+ " where hr.departmentid=t2.id and t2.id=?" ;
String sqlwhere =" and hr.status in (0,1,2,3)";
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " order by hr.dsporder ";
rs.executeQuery(sql,departmentId);
while (rs.next()) {
String userid = rs.getString("id");
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String accounttype = rs.getString("accounttype");
String belongto = "1".equals(accounttype)?Util.null2String(rs.getString("belongto")):"";
String belongto_name = Util.formatMultiLang(resourceComInfo.getLastname(belongto),""+user.getLanguage());
String pinyinlastname = Util.null2String(rs.getString("pinyinlastname"));
String sex = Util.null2String(rs.getString("sex"),"0");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String status = rs.getString("status");
String showorder = Util.toDecimalDigits(rs.getString("dsporder"),2);
String messagerurl = rs.getString("messagerurl");
resourceInfo = new HashMap<>();
resourceInfo.put("userid",userid);
resourceInfo.put("name",lastname);
if(enable_main_account){
resourceInfo.put("main_base_user_id",belongto );
resourceInfo.put("main_base_user_name",belongto_name);
}
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
resourceInfo.put("status",status);
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
resourceInfo.put("name_simple_pingyin",pinyinlastname);
resourceInfo.put("name_full_pingyin",pinyinlastname);
resourceInfo.put("guangliyuanxiashu",pinyinlastname);
resourceInfo.put("base_name_simple_pingyin",pinyinlastname);
resourceInfo.put("base_name_full_pingyin",pinyinlastname);
Map<String,Object> avatar = new HashMap<>();//头像信息
params.put("userId",userid);
Map<String,Object> userIconInfo = ((HrmUserIconService) ServiceUtil.getService(HrmUserIconServiceImpl.class, user)).getUserIcon(params,user);
String media_id = userIconInfo.get("messagerurl").toString();
//这种格式得手机端显示不出来,取默认设置图片
if(media_id.startsWith("/weaver/weaver.file.FileDownload")){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}else if(messagerurl.length()>0){
String filePath = GCONST.getRootPath() + media_id;
File file = new File(filePath);
if(!file.exists()){
media_id = userIconInfo.get("defaultmessagerurl").toString();
}
}
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", userIconInfo.get("shortname").toString());
avatar.put("show_color",userIconInfo.get("background").toString());
avatar.put("media_id",media_id);
resourceList.add(resourceInfo);
}
}catch (Exception e){
writeLog(e);
}
return resourceList;
}
/**
*
* @param type com:;dept:
* @param id id
* @return boolean
* @throws Exception
*/
private boolean hasChild(String type, String id) throws Exception {
boolean hasChild = false;
if (type.equals("subcompany")) {
SuperSubCompanyComInfo superSubCompanyComInfo = LoadComInfo.getInstance(SuperSubCompanyComInfo.class) ;
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo() ;
String downSubIds = superSubCompanyComInfo.getDownIdsBySuperId(id) ;
if(!StringUtils.isBlank(downSubIds)){
return true ;
}
SuperDepartmentComInfo superDepartmentComInfo = LoadComInfo.getInstance(SuperDepartmentComInfo.class) ;
String downDeptIds = superDepartmentComInfo.getDepartIdsBySubcompanyId(id) ;
if(StringUtils.isNotBlank(downDeptIds)){
return true ;
}
} else if (type.equals("dept")) {
SuperDepartmentComInfo superDepartmentComInfo = LoadComInfo.getInstance(SuperDepartmentComInfo.class) ;
String downDeptIds = superDepartmentComInfo.getDepartIdsBySuperId(id) ;
if(StringUtils.isNotBlank(downDeptIds)){
return true ;
}
KVResourceComInfo kvResourceComInfo = LoadComInfo.getInstance(KVResourceComInfo.class) ;
String resourceids = kvResourceComInfo.getResourceIdsByDeptId(id) ;
if(StringUtils.isNotBlank(resourceids)){
return true ;
}
}
return hasChild;
}
private Map<String,Object> getSubCompanyVirtualList(String subId){
Map<String,Object> resultMap = new HashMap<>();
List<Object> subcompanyList = new ArrayList<>();
Map<String,Object> subcompanyInfo = null;
try{
resultMap.putAll(this.getDepartmentVirtualList(subId, "0"));
String fetch_mine = Util.null2String(params.get("fetch_mine"));//是否本部门
String parentid = Util.null2String(params.get("id"));
SubCompanyVirtualComInfo rs = new SubCompanyVirtualComInfo();
rs.setTofirstRow();
String virtualtype = "";
if(subId.equals("0")){
String tmpStr = Util.null2String(params.get("id")).replace("-", "");
virtualtype = "-" + tmpStr.substring(1, tmpStr.length());
}else{
virtualtype = rs.getVirtualtypeid(subId);
}
while (rs.next()) {
String id = rs.getSubCompanyid();
String supsubcomid = rs.getSupsubcomid();
if (supsubcomid.equals(""))supsubcomid = "0";
if (!supsubcomid.equals(subId))continue;
if("1".equals(rs.getCompanyiscanceled()))continue;
if(!virtualtype.equals(rs.getCompanyid()))continue;
// if (!this.checkDetach("com", id)) {//检查机构分权和应用分权
// continue;
// }
String name = rs.getSubCompanyname();
String showorder = rs.getShowOrder();
subcompanyInfo = new HashMap<>();
subcompanyInfo.put("id",+Util.getIntValue("-2"+id.replace("-","")));
subcompanyInfo.put("name",Util.formatMultiLang(name,""+user.getLanguage()));
subcompanyInfo.put("hasnext",hasChildVirtual("subcompany", id));
subcompanyInfo.put("parentid",Util.getIntValue(parentid));
subcompanyInfo.put("showorder",showorder);
subcompanyInfo.put("total_count",this.getResourceNum("subcom",id));
subcompanyList.add(subcompanyInfo);
}
if(resultMap.get("department")!=null){
List<Object> tmpList = (List<Object>)resultMap.get("department");
tmpList.addAll(subcompanyList);
resultMap.put("department",tmpList);
}else{
resultMap.put("department",subcompanyList);
}
}catch (Exception e){
writeLog(e);
}finally {
}
return resultMap;
}
private Map<String,Object> getDepartmentVirtualList(String subId, String departmentId){
Map<String,Object> returnMap = new HashMap<>();
List<Object> departmentList = new ArrayList<>();
Map<String,Object> departmentInfo = null;
try{
DepartmentVirtualComInfo rsDepartment = new DepartmentVirtualComInfo();
rsDepartment.setTofirstRow();
String parentid = Util.null2String(params.get("id"));
if(Util.null2String(departmentId).startsWith("-")){
subId = rsDepartment.getSubcompanyid1(departmentId);
returnMap.put("userlist",this.getResourceVirtualList(departmentId));
}
while (rsDepartment.next()) {
if(departmentId.equals(rsDepartment.getDepartmentid()))continue;
if("1".equals(rsDepartment.getDeparmentcanceled()))continue;
String supdepid = rsDepartment.getDepartmentsupdepid();
if (departmentId.equals("0") && supdepid.equals(""))supdepid = "0";
if (!(rsDepartment.getSubcompanyid1().equals(subId) && (supdepid.equals(departmentId)||(!rsDepartment.getSubcompanyid1(supdepid).equals(subId)&&departmentId.equals("0"))))) continue;
String id = rsDepartment.getDepartmentid();
String subcompanyid1 = rsDepartment.getSubcompanyid1();
String name = rsDepartment.getDepartmentname();
String showorder = rsDepartment.getShowOrder();
// if (!this.checkDetach("dept", id)) {//检查机构分权和应用分权
// continue;
// }
departmentInfo = new HashMap<>();
departmentInfo.put("id",+Util.getIntValue("-3"+id.replace("-","")));
departmentInfo.put("name",Util.formatMultiLang(name,""+user.getLanguage()));
departmentInfo.put("hasnext",hasChildVirtual("dept", id));
departmentInfo.put("parentid",Util.getIntValue(parentid));
departmentInfo.put("showorder",showorder);
departmentInfo.put("total_count",this.getResourceNum("dept",id));//部门下的人数
departmentList.add(departmentInfo);
}
returnMap.put("department",departmentList);
}catch (Exception e){
writeLog(e);
}
return returnMap;
}
/***
*
* @param departmentId
* @return
*/
private List<Object> getResourceVirtualList(String departmentId){
List<Object> resourceList = new ArrayList<>();
Map<String,Object> resourceInfo = null;
RecordSet rs = new RecordSet();
String sql = "";
try{
ResourceComInfo resourceComInfo = new ResourceComInfo();
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
if(adci==null) adci = new AppDetachComInfo(user);
sql = " select hr.id, hr.lastname, hr.sex, hr.managerid, hr.jobtitle, hr.status, hr.dsporder, hr.messagerurl, hr.pinyinlastname,hr.dsporder "
+ " from hrmresource hr "
+ " where 1=1 ";
String sqlwhere =" and hr.status in (0,1,2,3)";
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
sql += " and exists ( select * from hrmresourcevirtual where hr.id = resourceid and departmentid= ? )";
sql += " order by hr.dsporder ";
rs.executeQuery(sql,departmentId);
while (rs.next()) {
String userid = rs.getString("id");
String lastname = Util.formatMultiLang(rs.getString("lastname"),""+user.getLanguage());
String pinyinlastname = Util.null2String(rs.getString("pinyinlastname"));
String sex = Util.null2String(rs.getString("sex"),"0");
String managerid = rs.getString("managerid");
String managername = Util.formatMultiLang(managerid.length() > 0 ? resourceComInfo.getResourcename(managerid) : "",""+user.getLanguage());
String jobtitle = rs.getString("jobtitle");
String jobtitlename = Util.formatMultiLang(jobTitlesComInfo.getJobTitlesname(jobtitle),""+user.getLanguage());
String status = rs.getString("status");
String showorder = Util.toDecimalDigits(rs.getString("dsporder"),2);
String messagerurl = rs.getString("messagerurl");
resourceInfo = new HashMap<>();
resourceInfo.put("userid",userid);
resourceInfo.put("name",lastname);
resourceInfo.put("manager_id",managerid);
resourceInfo.put("manager_name",managername);
resourceInfo.put("position",jobtitlename);
resourceInfo.put("status",status);
resourceInfo.put("showorder",showorder);
resourceInfo.put("gender",Util.getIntValue(sex));
resourceInfo.put("base_user_id",userid);
resourceInfo.put("base_user_name",lastname);
resourceInfo.put("name_simple_pingyin",pinyinlastname);
resourceInfo.put("name_full_pingyin",pinyinlastname);
resourceInfo.put("guangliyuanxiashu",pinyinlastname);
resourceInfo.put("base_name_simple_pingyin",pinyinlastname);
resourceInfo.put("base_name_full_pingyin",pinyinlastname);
Map<String,Object> avatar = new HashMap<>();//头像信息
resourceInfo.put("avatar",avatar);
avatar.put("default","");
avatar.put("show_name", User.getLastname(lastname));
avatar.put("show_color",sex.equals("0")?"#008cee":"#FF0000");
avatar.put("media_id",messagerurl);
resourceList.add(resourceInfo);
}
}catch (Exception e){
writeLog(e);
}
return resourceList;
}
/**
*
* @param type com:;dept:
* @param id id
* @return boolean
* @throws Exception
*/
private boolean hasChildVirtual(String type, String id) throws Exception {
boolean hasChild = false;
if (type.equals("subcompany")) {
SubCompanyVirtualComInfo rs = new SubCompanyVirtualComInfo();
rs.setTofirstRow();
while (rs.next()) {
if (rs.getSupsubcomid().equals(id) && !"1".equals(rs.getCompanyiscanceled()))
hasChild = true;
}
DepartmentVirtualComInfo rsDepartment = new DepartmentVirtualComInfo();
rsDepartment.setTofirstRow();
while (rsDepartment.next()) {
if (rsDepartment.getSubcompanyid1().equals(id) && !"1".equals(rsDepartment.getDeparmentcanceled())) {
hasChild = true;
}
}
} else if (type.equals("dept")) {
DepartmentVirtualComInfo rsDepartment = new DepartmentVirtualComInfo();
rsDepartment.setTofirstRow();
while (rsDepartment.next()) {
String str = rsDepartment.getSubcompanyid1(id);
if (rsDepartment.getSubcompanyid1().equals(str) && rsDepartment.getDepartmentsupdepid().equals(id) && !"1".equals(rsDepartment.getDeparmentcanceled()))
hasChild = true;
}
if(!hasChild){
RecordSet rs = new RecordSet();
rs.executeQuery("select count(*) from HrmResourceVirtualView t1 where t1.status in (0,1,2,3) and t1.departmentid=" + id);
if(rs.next()){
if(rs.getInt(1)>0){
hasChild=true;
}
}
}
}
return hasChild;
}
/**
*
*
* @param type
* @param id
* @return
*/
private boolean checkDetach(String type, String id) {
boolean hasRight = true;
if (type.equals("com")) {
if (adci == null) {
adci = new AppDetachComInfo(user);
}
if (adci.isUseAppDetach()) {
if (adci.checkUserAppDetach(id, "2") == 0) {
hasRight = false;
} else {
hasRight = true;
}
}
} else if (type.equals("dept")) {
if (adci == null) {
adci = new AppDetachComInfo(user);
}
if (adci.isUseAppDetach()) {
if (adci.checkUserAppDetach(id, "3") == 0) {
hasRight = false;
} else {
hasRight = true;
}
}
}
return hasRight;
}
private int getResourceDepts(String selfDepartContainChilds){
KVResourceComInfo kvResourceComInfo = LoadComInfo.getInstance(KVResourceComInfo.class) ;
if(StringUtils.isBlank(selfDepartContainChilds)) return 0 ;
StringTokenizer tokenizer = new StringTokenizer(selfDepartContainChilds,",") ;
int num = 0 ;
while(tokenizer.hasMoreTokens()){
String singleDeptId = tokenizer.nextToken() ;
String resourceids = kvResourceComInfo.getResourceIdsByDeptId(singleDeptId) ;
num += getResourceNumWithDetach(resourceids);
}
return num ;
}
public int getResourceNumWithDetach(String resourceids){
int num = 0 ;
if(StringUtils.isBlank(resourceids)) return num ;
StringTokenizer resourceToken = new StringTokenizer(resourceids,",") ;
while(resourceToken.hasMoreTokens()){
String resourceId = resourceToken.nextToken() ;
if(adci.isUseAppDetach() && adci.isDetachUser(user.getUID()+"")){
if (adci.checkUserResourceInfo(resourceId)) {
num += 1;
}
}else{
num+= 1 ;
}
}
return num ;
}
public int getResourceSubcompanyIds(String subids){
KVResourceComInfo kvResourceComInfo = LoadComInfo.getInstance(KVResourceComInfo.class) ;
if(StringUtils.isBlank(subids)) return 0 ;
StringTokenizer tokenizer = new StringTokenizer(subids,",") ;
int num = 0 ;
while(tokenizer.hasMoreTokens()){
String subId = tokenizer.nextToken() ;
String resourceids = kvResourceComInfo.getResourceBySubcompanyId(subId) ;
num += getResourceNumWithDetach(resourceids);
}
return num ;
}
/**
*
* @param type
* @param id
* @return
* @throws Exception
*/
private int getResourceNum(String type,String id)throws Exception{
int resourceNum = 0;
if(Util.null2String(this.params.get("needcount")).equals("0")){//如果禁用统计人数则返回0
return resourceNum;
}
String fetch_mine = Util.null2String(params.get("fetch_mine"));//是否本部门
if (id2count.containsKey(type+"_"+id) && !fetch_mine.equals("1")) {
resourceNum = Util.getIntValue(Util.null2String(id2count.get(type+"_"+id)));
return resourceNum<0?0:resourceNum;
}
RecordSet rs = new RecordSet();
String sql = " ";
String sqlwhere = "";
String selfDepartContainChilds = "" ;
if(fetch_mine.equals("1")){
String mychildids = "";
if(id.startsWith("-")) {
mychildids = DepartmentVirtualComInfo.getAllChildDepartId("" + user.getUserDepartment(), mychildids);
}else if(this.showChild){
mychildids = DepartmentComInfo.getAllChildDepartId("" + user.getUserDepartment(), mychildids);
}
if(mychildids.length()>0){
if(mychildids.startsWith(",")){
mychildids=user.getUserDepartment()+mychildids;
}else{
mychildids=user.getUserDepartment()+","+mychildids;
}
}else{
mychildids=""+user.getUserDepartment();
}
if (type.equals("dept")&&("," + mychildids + ",").indexOf("," + id + ",") > 0) {
} else {
if (id.startsWith("-")) {
sqlwhere = " and hrv.departmentid in (" + mychildids + ") ";
} else {
//sqlwhere = " and hr.departmentid in (" + mychildids + ") ";
SuperDepartmentComInfo superDepartmentComInfo = LoadComInfo.getInstance(SuperDepartmentComInfo.class) ;
String downDeptIds = superDepartmentComInfo.getAllDownIdsBySuperId(user.getUserDepartment()+"") ;
if(StringUtils.isNotBlank(downDeptIds) && this.showChild ){
if(selfDepartContainChilds.length() > 0) selfDepartContainChilds+="," ;
selfDepartContainChilds += downDeptIds ;
}
if(selfDepartContainChilds.length() > 0) selfDepartContainChilds += "," ;
selfDepartContainChilds += user.getUserDepartment() ;
return getResourceDepts(selfDepartContainChilds) ;
}
}
}
if(!id.startsWith("-")) {
if(type.equals("dept")){
String deptids = DepartmentComInfo.getAllChildDepartId(id, id) ;
//我的部门,展示所有下级,那么人数就应该包含下级部门
//我的部门,不展示所有下级,人数就显示本部门人数即可
//我的分部,不管展不展示下级,都是显示所有部门,所以需要包含下级部门人数
if(fetch_mine.equals("1") && !this.showChild){
deptids = id;
}
return getResourceDepts(deptids) ;
}else if(type.equals("subcom")){
String subIds = id;
String currentUserSubId = user.getUserSubCompany1()+"";
if(fetch_mine.equals("2")){
String subchilds = SubCompanyComInfo.getAllChildSubcompanyId(currentUserSubId,currentUserSubId) ;
if(!(","+subchilds+",").contains(","+id+",")){
subIds = currentUserSubId;
}
//我的分部需要根据是否显示下级开关控制
if(this.showChild ){
subIds = SubCompanyComInfo.getAllChildSubcompanyId(subIds, subIds) ;
}
}else{
//不是我的分部时不走这个开关
subIds = SubCompanyComInfo.getAllChildSubcompanyId(subIds, subIds) ;
}
return getResourceSubcompanyIds(subIds) ;
}else{
sql = " select count(1) from hrmresource hr where status in (0,1,2,3) ";
if(fetch_mine.equals("2")){
String allSubIds = user.getUserSubCompany1()+"";
if(this.showChild ){
allSubIds = SubCompanyComInfo.getAllChildSubcompanyId(allSubIds, allSubIds) ;
}
sql = " select count(1) from hrmresource hr where status in (0,1,2,3) and subcompanyid1 in ( "+allSubIds+" )";
}
}
}else{
sql = " select count(1) from hrmresource hr, hrmresourcevirtual hrv where hr.id=hrv.resourceid and hr.status in (0,1,2,3) ";
if(type.equals("dept")){
sql += " and hrv.departmentid in ( "+ DepartmentVirtualComInfo.getAllChildDepartId(id, id) +" )";
}else if(type.equals("subcom")){
sql += " and hrv.subcompanyid in ( "+ SubCompanyVirtualComInfo.getAllChildSubcompanyId(id, id) +" )";
}else if(type.equals("com")){
sql += " and hrv.virtualtype ="+id;
}
}
if(adci.isUseAppDetach()){
String appdetawhere = adci.getScopeSqlByHrmResourceSearch(user.getUID()+"",true,"resource_hr");
String tempstr= (appdetawhere!=null&&!"".equals(appdetawhere)?(" and " + appdetawhere):"");
sqlwhere+=tempstr;
}
if(sqlwhere.length()>0)sql+=sqlwhere;
rs.executeQuery(sql);
if(rs.next()){
resourceNum = rs.getInt(1);
}
// if(!fetch_mine.equals("1")) {
// id2count.put(type + "_" + id, resourceNum);
// }
return resourceNum;
}
public void needInit(){
RecordSet rs = new RecordSet();
String sql = " ";
sql = " select max(modified) as modified from (" +
" SELECT max(modified) as modified FROM HrmResource " +
" union all " +
" SELECT max(modified) as modified FROM hrmdepartment "+
" union all " +
" SELECT max(modified) as modified FROM HrmSubCompany) t ";
rs.executeQuery(sql);
if(rs.next()){
String modified = Util.null2String(rs.getString("modified"));
if(modified.length()>0){
if(id2count.get("modified")==null){
id2count.clear();
id2count.put("modified",rs.getString("modified"));
}else{
if(Util.null2String(id2count.get("modified")).compareTo(modified)<0){
id2count.clear();
}
}
}
}
}
@Override
public BizLogContext getLogContext() {
// TODO Auto-generated method stub
return null;
}
public String getSubAndTopDeptName(String deptAllName){
if (deptAllName == null || deptAllName.length() == 0){
return "";
}
if (deptAllName.contains(">")){
String subAndTopDeptName = deptAllName.substring(0, deptAllName.indexOf(">"));
return subAndTopDeptName.replace("||","/");
}else {
return deptAllName.replace("||","/");
}
}
}