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.
150 lines
5.2 KiB
Java
150 lines
5.2 KiB
Java
package com.api.hrm.service;
|
|
|
|
import com.api.hrm.bean.TreeNode;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.general.BaseBean;
|
|
import weaver.general.Util;
|
|
import weaver.hrm.HrmUserVarify;
|
|
import weaver.hrm.User;
|
|
import weaver.hrm.appdetach.AppDetachComInfo;
|
|
import weaver.hrm.resource.ResourceComInfo;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class HrmResourceTreeService extends BaseBean{
|
|
private AppDetachComInfo adci = null;
|
|
private User user = null;
|
|
private String alllevel = null;//是否显示所有下级
|
|
private String isNoAccount = null;// 是否显示无账号人员
|
|
public Map<String, Object> getHrmResourceTree(HttpServletRequest request, HttpServletResponse response) {
|
|
User user = HrmUserVarify.getUser(request, response);
|
|
TreeNode manager = new TreeNode();
|
|
Map<String,Object> apidatas = new HashMap<String,Object>();
|
|
Map<String, Object> resultDatas = new HashMap<String, Object>();
|
|
try{
|
|
adci = new AppDetachComInfo(user);
|
|
this.user = user;
|
|
String id = Util.null2String(request.getParameter("id"));
|
|
String rootid = Util.null2String(request.getParameter("rootid"));
|
|
if(id.length()>0){
|
|
rootid = "";
|
|
}
|
|
alllevel = Util.null2String(request.getParameter("alllevel"));//是否显示所有下级
|
|
isNoAccount = Util.null2String(request.getParameter("isNoAccount"));// 是否显示无账号人员
|
|
if(id.length()==0||rootid.length()>0){
|
|
String userid = ""+user.getUID();
|
|
String username = user.getLastname();
|
|
if(rootid.length()>0){
|
|
ResourceComInfo rci = new ResourceComInfo();
|
|
userid = rootid;
|
|
username = rci.getLastname(userid);
|
|
}
|
|
manager.setId(userid);
|
|
manager.setName(username);
|
|
manager.setType("1");
|
|
manager.setCanClick(true);
|
|
List<TreeNode> result = getChildTreeNode(manager).getSubs();
|
|
if(result!=null && result.size()>0){
|
|
manager.setIsParent(true);
|
|
}
|
|
resultDatas.put("rootManager", manager);
|
|
apidatas.put("datas", resultDatas);
|
|
}else{
|
|
manager.setId(id);
|
|
List<TreeNode> result = getChildTreeNode(manager).getSubs();
|
|
apidatas.put("datas", result);
|
|
}
|
|
}catch (Exception e) {
|
|
writeLog(e);
|
|
}
|
|
|
|
return apidatas;
|
|
}
|
|
|
|
private TreeNode getChildTreeNode(TreeNode manager){
|
|
List<TreeNode> childNode = null;
|
|
RecordSet rs = new RecordSet();
|
|
String sql = "";
|
|
String sqlwhere = "";
|
|
try{
|
|
childNode = new ArrayList<TreeNode>();
|
|
String id = manager.getId();
|
|
|
|
if(id.length()>0){
|
|
//二开修改 取线长下所有组员
|
|
sql = " select hr.id, lastname from hrmresource hr left join cus_fielddata c on hr.id=c.id and c.scope='HrmCustomFieldByInfoType' " +
|
|
" and c.scopeid=-1 left join hrmdepartmentdefined d on hr.departmentid=d.deptid where (field89="+id+" or managerid="+id+" or d.kqwy="+id+") ";
|
|
if(sqlwhere.length()>0)sqlwhere=" and " +sqlwhere;
|
|
sqlwhere+=" and hr.status in (0,1,2,3)";
|
|
|
|
if(!isNoAccount.equals("1")){
|
|
sqlwhere +=" and loginid is not null "+(rs.getDBType().equals("oracle")?"":" and loginid<>'' ");
|
|
}
|
|
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.executeSql(sql);
|
|
while(rs.next()){
|
|
TreeNode orgBean = new TreeNode();
|
|
if(id.equals(rs.getString("id")))continue;
|
|
orgBean.setId(rs.getString("id"));
|
|
orgBean.setName(rs.getString("lastname"));
|
|
orgBean.setType("1");
|
|
orgBean.setCanClick(true);
|
|
orgBean.setIsParent(hasChild(rs.getString("id")));
|
|
childNode.add(orgBean);
|
|
}
|
|
}
|
|
manager.setSubs(childNode);
|
|
}catch (Exception e) {
|
|
writeLog(e);
|
|
}
|
|
return manager;
|
|
}
|
|
|
|
private boolean hasChild(String id){
|
|
RecordSet rs = new RecordSet();
|
|
String sql = "";
|
|
String sqlwhere = "";
|
|
boolean isParent = false;
|
|
try{
|
|
if(id.length()>0){
|
|
//sql = "select count(1) from hrmresource hr where managerid = "+id;
|
|
sql = " select count(1) from hrmresource hr left join cus_fielddata c on hr.id=c.id and c.scope='HrmCustomFieldByInfoType' " +
|
|
" and c.scopeid=-1 left join hrmdepartmentdefined d on hr.departmentid=d.deptid where (field89="+id+" or managerid="+id+" or d.kqwy="+id+")";
|
|
if(sqlwhere.length()>0)sqlwhere=" and " +sqlwhere;
|
|
sqlwhere+=" and hr.status in (0,1,2,3)";
|
|
|
|
if(!isNoAccount.equals("1")){
|
|
sqlwhere +=" and loginid is not null "+(rs.getDBType().equals("oracle")?"":" and loginid<>'' ");
|
|
}
|
|
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.executeSql(sql);
|
|
if(rs.next()){
|
|
if(rs.getInt(1)>0){
|
|
isParent = true;
|
|
}
|
|
}
|
|
}
|
|
}catch (Exception e) {
|
|
writeLog(e);
|
|
}
|
|
return isParent;
|
|
}
|
|
}
|