diff --git a/src/com/api/gainway/web/BasicResourceTableAction.java b/src/com/api/gainway/web/BasicResourceTableAction.java new file mode 100644 index 0000000..583f99e --- /dev/null +++ b/src/com/api/gainway/web/BasicResourceTableAction.java @@ -0,0 +1,13 @@ +package com.api.gainway.web; + +import javax.ws.rs.Path; + +/** + * @Author liang.cheng + * @Date 2024/12/11 2:18 PM + * @Description: 基础人员状况报表 + * @Version 1.0 + */ +@Path("/gainway/basicResource") +public class BasicResourceTableAction extends com.engine.gainway.web.BasicResourceTableAction { +} diff --git a/src/com/api/hrm/util/HrmBaseStateUtil.java b/src/com/api/hrm/util/HrmBaseStateUtil.java new file mode 100644 index 0000000..33a7540 --- /dev/null +++ b/src/com/api/hrm/util/HrmBaseStateUtil.java @@ -0,0 +1,1831 @@ +package com.api.hrm.util; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import weaver.common.StringUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.TimeUtil; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.hrm.appdetach.AppDetachComInfo; +import weaver.hrm.common.SplitPageTagFormat; +import weaver.hrm.common.database.dialect.DbDialectFactory; +import weaver.hrm.common.database.dialect.DialectUtil; +import weaver.hrm.job.EducationLevelComInfo; +import weaver.hrm.job.JobActivitiesComInfo; +import weaver.hrm.job.JobCallComInfo; +import weaver.hrm.job.JobGroupsComInfo; +import weaver.hrm.job.UseKindComInfo; +import weaver.systeminfo.SystemEnv; + +public class HrmBaseStateUtil extends BaseBean { + + + + + /* + * + * 年龄报表查询 + */ +@SuppressWarnings("deprecation") +public List> getAgeRpResult(HttpServletRequest request,HttpServletResponse response){ + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + String agearea =Util.null2String(request.getParameter("agearea")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + String sqlwhere_0=""; + + if(agearea.equals("")||agearea.equals("0")) + agearea="10"; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")&&!fromdate.equals("0")){ + sqlwhere+=" and companystartdate>='"+fromdate+"' "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where companystartdate>='"+fromdate+"' "; + } + else{ + sqlwhere_0 +=" and companystartdate>='"+fromdate+"' "; + } + } + if(!enddate.equals("")&&!enddate.equals("0")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + else{ + sqlwhere_0 +=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + } + + if(!location.equals("")&&!location.equals("0")){ + sqlwhere+=" and locationid ="+location; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where locationid ="+location; + } + else{ + sqlwhere_0 +=" and locationid ="+location; + } + } + if(!department.equals("")&&!department.equals("0")){ + sqlwhere+=" and departmentid in ("+department+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where departmentid in ("+department+") "; + } + else{ + sqlwhere_0 +=" and departmentid in ("+department+") "; + } + } + if(!subcompany.equals("")&&!subcompany.equals("0")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where subcompanyid1 in ("+subcompany+") "; + } + else{ + sqlwhere_0 +=" and subcompanyid1 in ("+subcompany+") "; + } + } + + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status <= 3"; + }else{ + sqlwhere_0 +=" and status <= 3"; + } + }else{ + sqlwhere+=" and status ="+status; + + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status ="+status; + }else{ + sqlwhere_0 +=" and status ="+status; + } + } + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where "+innerResourceSql; + }else{ + sqlwhere_0 +=" and "+innerResourceSql; + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + if (sqlwhere_0.equals("")){ + sqlwhere_0 = " where " + detachSqlWhere; + } else { + sqlwhere_0 += " and " + detachSqlWhere; + } + } + + String sqlstr=""; + String sql=""; + int resultcount=0; + if(sqlwhere_0.equals("")){ + sql = "select count(*) from HrmResource where accounttype is null or accounttype=0 "; + }else{ + sql = "select count(*) from HrmResource "+sqlwhere_0+" and (accounttype is null or accounttype=0)"; + } + + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1);/*总人数*/ + + /*先算出年龄记录为空的人数*/ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and birthday is null or birthday =''"; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and (birthday is null or birthday ='')"+sqlwhere; + } + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + if(resultcount != 0){//年龄为空人数占比 + map = new HashMap(); + map.put("title", SystemEnv.getHtmlLabelName(15863,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + + Calendar today = Calendar.getInstance(); + int tempyear = Util.getIntValue(Util.add0(today.get(Calendar.YEAR), 4));//当前年份 + + if(rs.getDBType().equals("oracle")){ + sqlstr="select min(birthday) from HrmResource where (accounttype is null or accounttype=0) and birthday is not null and length(ltrim(rtrim(birthday)))=10 "; + }else if(rs.getDBType().equals("db2")){ + sqlstr="select min(birthday) from HrmResource where birthday !='' and length(ltrim(rtrim(birthday)))=10 "; + }else if(DialectUtil.isMySql(rs.getDBType())){ + sqlstr="select min(birthday) from HrmResource where (accounttype is null or accounttype=0) " + + "and birthday is not null and birthday !='' and "+ + DbDialectFactory.get(rs.getDBType()).charLengthSql("ltrim(rtrim(birthday))")+"=10 "; + }else if(rs.getDBType().equals("postgresql")){ + sqlstr="select min(birthday) from HrmResource where (accounttype is null or accounttype=0) and birthday is not null and birthday<>'' and length(ltrim(rtrim(birthday)))=10 "; + }else{ + sqlstr="select min(birthday) from HrmResource where (accounttype is null or accounttype=0) and birthday is not null and birthday !='' and len(ltrim(rtrim(birthday)))=10 "; + } + + rs.executeSql(sqlstr); + rs.next(); + String minworday=rs.getString(1);//年龄最大 + + if(!minworday.equals("")){ + int minyear = Util.getIntValue(minworday.substring(0,4)); + int yearcount = tempyear-minyear+1;//年龄 + int agenum = Util.getIntValue(agearea); + int cyc = yearcount/agenum +1;//循环次数 + String agefrom =""; + String ageto = ""; + + for(int i=0;i'' "; + }else{ + sqlstr="select count(*) resultcount from HrmResource where birthday >'"+agefrom+"' and birthday <='"+ageto+"' and birthday<>'' "+sqlwhere; + } + }else{ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and birthday >'"+agefrom+"' and birthday <='"+ageto+"' and birthday<>'' and birthday is not null "; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and birthday >'"+agefrom+"' and birthday <='"+ageto+"' and birthday<>'' and birthday is not null "+sqlwhere; + } + } + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + if(resultcount!=0){ + map = new HashMap(); + map.put("title", from_Y+"-"+to_Y+" "+SystemEnv.getHtmlLabelName(15864,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + tempyear -= agenum; + } + } + return list; + } + + + +/* + * + * 性别报表查询 + * + */ + +@SuppressWarnings("deprecation") +public List> getSexRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")&&!fromdate.equals("0")){ + sqlwhere+=" and companystartdate>='"+fromdate+"' "; + } + if(!enddate.equals("")&&!enddate.equals("0")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null) "; + } + + if(!location.equals("")&&!location.equals("0")){ + sqlwhere+=" and locationid ="+location+" "; + } + if(!department.equals("")&&!department.equals("0")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + + if(!subcompany.equals("")&&!subcompany.equals("0")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3 "; + }else{ + sqlwhere+=" and status ="+status+" "; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sqlstr=""; + String sql=""; + if(sqlwhere.equals("")){ + sql = "select count(*) from HrmResource where (accounttype is null or accounttype=0) and id>2 "; + }else{ + sql = "select count(*) from HrmResource where (accounttype is null or accounttype=0) and id>2 "+sqlwhere; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + + String sex=""; + String sexname = ""; + int resultcount = 0 ; + List> list = new ArrayList>(); + Map map = null; + + sqlstr = "select COUNT(*) resultcount , sex from HrmResource where (accounttype is null or accounttype=0) and id>2 "+sqlwhere +" group by sex "; + rs.executeSql(sqlstr); + while( rs.next() ) { + resultcount = Util.getIntValue(rs.getString(1),0); + sex = Util.null2String(rs.getString(2)); + + if(resultcount==0) continue ; + if(sex.equals("0")) sexname = SystemEnv.getHtmlLabelName(28473,user.getLanguage()) ; + else if(sex.equals("1")) sexname = SystemEnv.getHtmlLabelName(28474,user.getLanguage()); + else sexname = SystemEnv.getHtmlLabelName(15808,user.getLanguage()); + + map = new HashMap(); + map.put("title", sexname); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + return list; +} + + + + + +/* + * + * 工龄报表查询 + * + */ + +@SuppressWarnings("deprecation") +public List> getSeniorityRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + String workage =Util.null2String(request.getParameter("agearea")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + String sqlwhere_0=""; + + if(workage.equals("")) + workage="10"; + + if(status.equals("")){ + status = "8"; + } + + + if(!location.equals("")&&!location.equals("0")){ + sqlwhere+=" and locationid ="+location; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where locationid ="+location; + } + else{ + sqlwhere_0 +=" and locationid ="+location; + } + } + + if(!fromdate.equals("")&&!fromdate.equals("0")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")&&!enddate.equals("0")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + + if(!department.equals("")&&!department.equals("0")){ + sqlwhere+=" and departmentid in ("+department+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where departmentid in ("+department+") "; + } + else{ + sqlwhere_0 +=" and departmentid in ("+department+") "; + } + } + + + if(!subcompany.equals("")&&!subcompany.equals("0")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where subcompanyid1 in ("+subcompany+") "; + } + else{ + sqlwhere_0 +=" and subcompanyid1 in ("+subcompany+") "; + } + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status <= 3"; + }else{ + sqlwhere_0 +=" and status <= 3"; + } + }else{ + sqlwhere+=" and status ="+status; + + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status ="+status; + }else{ + sqlwhere_0 +=" and status ="+status; + } + } + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where "+innerResourceSql; + }else{ + sqlwhere_0 +=" and "+innerResourceSql; + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + if (sqlwhere_0.equals("")){ + sqlwhere_0 = " where " + detachSqlWhere; + } else { + sqlwhere_0 += " and " + detachSqlWhere; + } + } + + + + String sqlstr=""; + String sql=""; + int resultcount=0; + if(sqlwhere_0.equals("")){ + sql = "select count(*) from HrmResource where accounttype is null or accounttype=0 "; + }else{ + sql = "select count(*) from HrmResource "+sqlwhere_0+" and (accounttype is null or accounttype=0)"; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1);/*总人数*/ + + /*先算出工龄记录为空的人数*/ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and (workstartdate is null or workstartdate ='')"; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and (workstartdate is null or workstartdate ='')"+sqlwhere; + } + + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + if(resultcount != 0){//年龄为空人数占比 + map = new HashMap(); + map.put("title", SystemEnv.getHtmlLabelName(15863,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + + Calendar today = Calendar.getInstance(); + int tempyear = Util.getIntValue(Util.add0(today.get(Calendar.YEAR), 4));//当前年份 + + if(rs.getDBType().equals("oracle")){ + sqlstr="select min(workstartdate) from HrmResource where (accounttype is null or accounttype=0) and workstartdate is not null "; + }else{ + sqlstr="select min(workstartdate) from HrmResource where (accounttype is null or accounttype=0) and workstartdate is not null and workstartdate !=''"; + } + rs.executeSql(sqlstr); + rs.next(); + String minworday=rs.getString(1);//工龄最大的!即入职最早的。 + if(!minworday.equals("")){ + + int minyear = Util.getIntValue(minworday.substring(0,4)); + int yearcount = tempyear-minyear+1;//最多的年限 + int worknum = Util.getIntValue(workage); + int cyc = (worknum==0?0:yearcount/worknum) +1;//循环次数 + String workfrom =""; + String workto = ""; + + for(int i=0;i'' and workstartdate is not null "; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and workstartdate >'"+workfrom+"' and workstartdate <='"+workto+"' and workstartdate<>'' and workstartdate is not null "+sqlwhere; + } + } + + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + if(resultcount!=0){ + map = new HashMap(); + map.put("title", from_Y+"-"+to_Y+" "+SystemEnv.getHtmlLabelName(445,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + tempyear -= worknum; + } + } + return list; +} + + + + +/* + * + * 学历情况报表查询 + */ + +@SuppressWarnings("deprecation") +public List> getEduRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")&&!fromdate.equals("0")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")&&!enddate.equals("0")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + + + if(!location.equals("")&&!location.equals("0")){ + sqlwhere+=" and locationid ="+location; + } + if(!department.equals("")&&!department.equals("0")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + if(!subcompany.equals("")&&!subcompany.equals("0")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + }else{ + sqlwhere+=" and status ="+status; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "t1"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql("t1"); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sqlstr = ""; + if(sqlwhere.equals("")){ + sqlstr = " select 0 resultid ,count(*) resultcount from HrmResource t1 where (educationlevel <2 or educationlevel is null) and (accounttype is null or accounttype=0) union select educationlevel resultid ,count(*) resultcount from HrmResource t1 where educationlevel > 1 and (accounttype is null or accounttype=0) group by educationlevel "; + }else{ + sqlstr = " select 0 resultid ,count(*) resultcount from HrmResource t1 where (educationlevel <2 or educationlevel is null) and (accounttype is null or accounttype=0) "+sqlwhere+" union select educationlevel resultid ,count(*) resultcount from HrmResource t1 where educationlevel > 1 and (accounttype is null or accounttype=0) "+sqlwhere+" group by educationlevel "; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sqlstr); + + while(rs.next()) { + int resultcount = rs.getInt(2); + total+=resultcount; + } + rs.beforFirst(); + List> list = new ArrayList>(); + Map map = null; + if(total!=0){ + while(rs.next()){ + String resultid = rs.getString(1); + int resultcount = rs.getInt(2); + + map = new HashMap(); + String title = ""; + if(Util.getIntValue(resultid, 0)>0){ + try { + title = Util.toScreen(new EducationLevelComInfo().getEducationLevelname(resultid),user.getLanguage()); + if(title.trim().equals("")){ + title = SystemEnv.getHtmlLabelName(21381, user.getLanguage()); + } + } catch (Exception e) { + e.printStackTrace(); + } + }else{ + title = SystemEnv.getHtmlLabelName(21381, user.getLanguage()); + } + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + } + return list; +} + + + + + + +/* + * + * 婚姻状况报表查询 + */ + +@SuppressWarnings("deprecation") +public List> getWedlockRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + + int total=0; + String sqlwhere=""; + String sqlwhere_0=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where companystartdate>='"+fromdate+"'"; + } + else{ + sqlwhere_0 +=" and companystartdate>='"+fromdate+"'"; + } + } + if(!enddate.equals("")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + else{ + sqlwhere_0 +=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + } + + if(!location.equals("")){ + sqlwhere+=" and locationid ="+location; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where locationid ="+location; + } + else{ + sqlwhere_0 +=" and locationid ="+location; + } + } + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where departmentid in ("+department+") "; + } + else{ + sqlwhere_0 +=" and departmentid in ("+department+") "; + } + } + + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where subcompanyid1 in ("+subcompany+") "; + } + else{ + sqlwhere_0 +=" and subcompanyid1 in ("+subcompany+") "; + } + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status <= 3"; + }else{ + sqlwhere_0 +=" and status <= 3"; + } + }else{ + sqlwhere+=" and status ="+status; + + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status ="+status; + }else{ + sqlwhere_0 +=" and status ="+status; + } + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + if (sqlwhere_0.equals("")){ + sqlwhere_0 = " where " + detachSqlWhere; + } else { + sqlwhere_0 += " and " + detachSqlWhere; + } + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sqlstr=""; + String sql=""; + if(sqlwhere_0.equals("")){ + sql = "select count(*) from HrmResource where accounttype is null or accounttype=0 "; + }else{ + sql = "select count(*) from HrmResource "+sqlwhere_0+" and (accounttype is null or accounttype=0)"; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + /*先算出记录为空的人数*/ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and maritalstatus is null or maritalstatus =''"; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and (maritalstatus is null or maritalstatus ='')"+sqlwhere; + } + rs.executeSql(sqlstr); + rs.next(); + int resultcount = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + if(resultcount != 0){ + map = new HashMap(); + map.put("title", SystemEnv.getHtmlLabelName(15863,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + if(total!=0){ + for(int i=0;i<3;i++){ + String maritalstatus=""; + if(i==0)maritalstatus="0"; + else if(i==1)maritalstatus="1"; + else if(i==2)maritalstatus="2"; + + if(sqlwhere.equals("")){ + sqlstr = "select COUNT(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and maritalstatus = '"+maritalstatus+"'" ; + }else{ + sqlstr = "select COUNT(*) resultcount from HrmResource where (accounttype is null or accounttype=0) and maritalstatus = '"+maritalstatus+"'"+sqlwhere ; + } + rs.executeSql(sqlstr); + rs.next(); + + resultcount = rs.getInt(1); + + if(resultcount!=0){ + map = new HashMap(); + map.put("title", new SplitPageTagFormat().colFormat(maritalstatus,"{cmd:array["+user.getLanguage()+";0=470,1=471,2=472]}")); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + } + } + return list; +} + + +/* + * + * 职称报表查询 + */ + +@SuppressWarnings("deprecation") +public List> getJobCallRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + @SuppressWarnings("unused") + int totalnum = 0; + String sqlwhere=""; + + if(!fromdate.equals("")){ + sqlwhere+=" and t1.companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")){ + sqlwhere+=" and (t1.companystartdate<='"+enddate+"' or t1.companystartdate is null)"; + } + + if(!department.equals("")){ + sqlwhere+=" and t1.departmentid in ("+department+") "; + } + + if(!subcompany.equals("")){ + sqlwhere+=" and t1.subcompanyid1 in ("+subcompany+") "; + + + } + + if(!location.equals("")){ + sqlwhere+=" and t1.locationid ="+location; + } + + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and t1.status <= 3"; + }else{ + sqlwhere+=" and t1.status ="+status; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "t1"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql("t1"); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sql = "select count(id) from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) and 1=1"+sqlwhere; + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + + String sqlstr=""; + String nullmothod = ""; + if(rs.getDBType().equals("oracle")) + { + nullmothod = "nvl(t1.jobcall,0)"; + } + else if(rs.getDBType().equals("db2")) + { + nullmothod = "coalesce(t1.jobcall,0)"; + }else if(DialectUtil.isMySql(rs.getDBType())){ + nullmothod = DbDialectFactory.get(rs.getDBType()).isNull("t1.jobcall", 0) ; + }else{ + nullmothod = "ISNULL(t1.jobcall,0)"; + } + if(sqlwhere.equals("")) + { + sqlstr = "select "+nullmothod+" jobcall,COUNT(distinct t1.id) resultcount from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) group by t1.jobcall"; + } + else + sqlstr = "select "+nullmothod+" jobcall,COUNT(distinct t1.id) resultcount from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) "+sqlwhere+" group by t1.jobcall"; + sqlstr = "select a.jobcall, sum(a.resultcount) resultcount from ("+sqlstr+") a group by a.jobcall"; + rs.executeSql(sqlstr); + + while(rs.next()) { + int resultcount = rs.getInt(2); + totalnum+=resultcount; + } + rs.beforFirst(); + List> list = new ArrayList>(); + Map map = null; + if(total!=0){ + while(rs.next()){ + String resultid = rs.getString(1); + int resultcount = rs.getInt(2); + + map = new HashMap(); + String title = ""; + if("0".equals(resultid)){ + title = SystemEnv.getHtmlLabelName(15863,user.getLanguage()); + }else{ + try { + title = Util.toScreen(new JobCallComInfo().getJobCallname(resultid),user.getLanguage()); + } catch (Exception e) { + e.printStackTrace(); + } + } + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + + list.add(map); + } + } + return list; +} + + + + + +/** + * 职级报表 + * + */ +@SuppressWarnings("deprecation") +public List> getJobLevelRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + String area =Util.null2String(request.getParameter("agearea")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + + int linecolor=0; + int total=0; + + String sqlwhere=""; + String sqlwhere_0=""; + + if(area.equals("")) + area="5"; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where companystartdate>='"+fromdate+"'"; + } + else{ + sqlwhere_0 +=" and companystartdate>='"+fromdate+"'"; + } + } + if(!enddate.equals("")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + else{ + sqlwhere_0 +=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + } + + if(!location.equals("")){ + sqlwhere+=" and locationid ="+location; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where locationid ="+location; + } + else{ + sqlwhere_0 +=" and locationid ="+location; + } + } + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where departmentid in ("+department+") "; + } + else{ + sqlwhere_0 +=" and departmentid in ("+department+") "; + } + } + + + + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where subcompanyid1 in ("+subcompany+") "; + } + else{ + sqlwhere_0 +=" and subcompanyid1 in ("+subcompany+") "; + } + } + + + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status <= 3"; + }else{ + sqlwhere_0 +=" and status <= 3"; + } + }else{ + sqlwhere+=" and status ="+status; + + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status ="+status; + }else{ + sqlwhere_0 +=" and status ="+status; + } + } + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where "+innerResourceSql; + }else{ + sqlwhere_0 +=" and "+innerResourceSql; + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + if (sqlwhere_0.equals("")){ + sqlwhere_0 = " where " + detachSqlWhere; + } else { + sqlwhere_0 += " and " + detachSqlWhere; + } + } + + + String sqlstr=""; + String sql=""; + int resultcount=0; + if(sqlwhere_0.equals("")){ + sql = "select count(*) from HrmResource where accounttype is null or accounttype=0 "; + }else{ + sql = "select count(*) from HrmResource "+sqlwhere_0+" and (accounttype is null or accounttype=0)"; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + + rs.next(); + total = rs.getInt(1);/*总人数*/ + + /*先算出职级为0的人数*/ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource where (joblevel = 0 or joblevel is null) and (accounttype is null or accounttype=0)"; + }else{ + sqlstr="select count(*) resultcount from HrmResource where (joblevel = 0 or joblevel is null) and (accounttype is null or accounttype=0) "+sqlwhere; + } + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + if(resultcount != 0){//年龄为空人数占比 + map = new HashMap(); + map.put("title", "0 "+SystemEnv.getHtmlLabelName(15872,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + + sqlstr="select max(joblevel) from HrmResource where joblevel>0"; + rs.executeSql(sqlstr); + rs.next(); + int levelmax=rs.getInt(1);//职级最大 + + int levelnum = Util.getIntValue(area); + int cyc = (levelnum==0?0:levelmax/levelnum) +1;//循环次数 + linecolor=1; + + for(int i=0;i="+from_L+" and joblevel <="+to_L+sqlwhere; + } + rs.executeSql(sqlstr); + rs.next(); + resultcount = rs.getInt(1); + + if(resultcount!=0){ + map = new HashMap(); + String title = levelnum==1?(from_L+" "+SystemEnv.getHtmlLabelName(15872,user.getLanguage())):(from_L+"-"+to_L+" "+SystemEnv.getHtmlLabelName(15872,user.getLanguage())); + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + if(linecolor==0) linecolor=1; + else linecolor=0; + } + return list; +} + + + +/* + * 职务统计报表 + */ +@SuppressWarnings("deprecation") +public List> getJobActivityRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + @SuppressWarnings("unused") + int totalnum = 0; + String sqlwhere=""; + + if(!fromdate.equals("")){ + sqlwhere+=" and t1.companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")){ + sqlwhere+=" and (t1.companystartdate<='"+enddate+"' or t1.companystartdate is null)"; + } + + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + } + + if(!location.equals("")){ + sqlwhere+=" and t1.locationid ="+location; + } + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and t1.status <= 3"; + }else{ + sqlwhere+=" and t1.status ="+status; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "t1"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql("t1"); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sql = "select count(id) from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) and 1=1"+sqlwhere; + + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + + String sqlstr=""; + if(sqlwhere.equals("")){ + sqlstr = "select t3.id resultid,COUNT(t1.id) resultcount from HrmResource t1,HrmJobTitles t2,HrmJobActivities t3 where (t1.accounttype is null or t1.accounttype=0) and t1.jobtitle=t2.id and t2.jobactivityid = t3.id group by t3.id order by resultcount"; + } + else + sqlstr = "select t3.id resultid,COUNT(t1.id) resultcount from HrmResource t1,HrmJobTitles t2, HrmJobActivities t3 where (t1.accounttype is null or t1.accounttype=0) and t1.jobtitle=t2.id and t2.jobactivityid = t3.id "+sqlwhere+" group by t3.id order by resultcount"; + + rs.executeSql(sqlstr); + while(rs.next()) { + int resultcount = rs.getInt(2); + totalnum+=resultcount; + } + + List> list = new ArrayList>(); + Map map = null; + rs.first(); + if(total!=0){ + do{ + String resultid = rs.getString(1); + int resultcount = rs.getInt(2); + + map = new HashMap(); + String title = ""; + try { + JobActivitiesComInfo obj = new JobActivitiesComInfo(); + title = Util.toScreen(obj.getJobActivitiesmarks(resultid),user.getLanguage()); + + } catch (Exception e) { + e.printStackTrace(); + } + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + }while(rs.next()); + } + return list; +} + + + +/* + * 职务类别 + */ +@SuppressWarnings("deprecation") +public List> getJobGroupRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + //System.out.println("《》《》》》《》《》《》《》《》《》《"+fromdate+" A "+enddate+" B "+location+" C "+status+" D "+ department+" SUB " +subcompany); + + int total=0; + @SuppressWarnings("unused") + int totalnum = 0; + String sqlwhere=""; + + if(!fromdate.equals("")){ + sqlwhere+=" and t1.companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")){ + sqlwhere+=" and (t1.companystartdate<='"+enddate+"' or t1.companystartdate is null)"; + } + + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + } + if(!location.equals("")){ + sqlwhere+=" and t1.locationid ="+location; + } + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and t1.status <= 3"; + }else{ + sqlwhere+=" and t1.status ="+status; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "t1"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql("t1"); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sql = "select count(id) from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) and 1=1"+sqlwhere; + RecordSet rs = new RecordSet(); + //System.out.println("++++++++++++++++++++++Sql1 "+sql ); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + + String sqlstr=""; + if(sqlwhere.equals("")){ + sqlstr = "select t4.id resultid,COUNT(t1.id) resultcount from HrmResource t1,HrmJobTitles t2,HrmJobActivities t3,HrmJobGroups t4 where (t1.accounttype is null or t1.accounttype=0) and t1.jobtitle=t2.id and t2.jobactivityid = t3.id and t3.jobgroupid = t4.id group by t4.id order by resultcount"; + } + else + sqlstr = "select t4.id resultid,COUNT(t1.id) resultcount from HrmResource t1,HrmJobTitles t2, HrmJobActivities t3,HrmJobGroups t4 where (t1.accounttype is null or t1.accounttype=0) and t1.jobtitle=t2.id and t2.jobactivityid = t3.id and t3.jobgroupid = t4.id "+sqlwhere+" group by t4.id order by resultcount"; + + //System.out.println("++++++++++++++++++++++SqlStr1 "+sqlstr ); + rs.executeSql(sqlstr); + + while(rs.next()) { + int resultcount = rs.getInt(2); + totalnum+=resultcount; + } + + List> list = new ArrayList>(); + Map map = null; + rs.first(); + if(total!=0){ + do{ + String resultid = rs.getString(1); + int resultcount = rs.getInt(2); + + map = new HashMap(); + String title = ""; + try { + JobGroupsComInfo obj = new JobGroupsComInfo(); + + title += Util.toScreen(obj.getJobGroupsname(resultid),user.getLanguage()); + } catch (Exception e) { + e.printStackTrace(); + } + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + //writeLog("》》》》》》》》》》》》"+total); + list.add(map); + }while(rs.next()); + } + return list; +} + + +/** + * 用工性质 + * + */ +@SuppressWarnings("deprecation") +public List> getUserKindRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + String sqlwhere_0=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")){ + sqlwhere+=" and t1.companystartdate>='"+fromdate+"'"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where companystartdate>='"+fromdate+"'"; + } + else{ + sqlwhere_0 +=" and companystartdate>='"+fromdate+"'"; + } + } + if(!enddate.equals("")){ + sqlwhere+=" and (t1.companystartdate<='"+enddate+"' or t1.companystartdate is null)"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + else{ + sqlwhere_0 +=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + } + + if(!location.equals("")){ + sqlwhere+=" and t1.locationid ="+location; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where locationid ="+location; + } + else{ + sqlwhere_0 +=" and locationid ="+location; + } + } + + if(!department.equals("")){ + sqlwhere+=" and t1.departmentid in ("+department+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where departmentid in ("+department+") "; + } + else{ + sqlwhere_0 +=" and departmentid in ("+department+") "; + } + } + + if(!subcompany.equals("")){ + sqlwhere+=" and t1.subcompanyid1 in ("+subcompany+") "; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where subcompanyid1 in ("+subcompany+") "; + } + else{ + sqlwhere_0 +=" and subcompanyid1 in ("+subcompany+") "; + } + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and t1.status <= 3"; + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status <= 3"; + }else{ + sqlwhere_0 +=" and status <= 3"; + } + }else{ + sqlwhere+=" and t1.status ="+status; + + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where status ="+status; + }else{ + sqlwhere_0 +=" and status ="+status; + } + } + } + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql("t1"); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + if(sqlwhere_0.equals("")){ + sqlwhere_0 =" where "+innerResourceSql; + }else{ + sqlwhere_0 +=" and "+innerResourceSql; + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "t1"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (sqlwhere_0.equals("")){ + sqlwhere_0 = " where " + detachSqlWhere; + } else { + sqlwhere_0 += " and " + detachSqlWhere; + } + } + + String sqlstr=""; + String sql=""; + if(sqlwhere_0.equals("")){ + sql = "select count(*) from HrmResource where accounttype is null or accounttype=0 "; + }else{ + sql = "select count(*) from HrmResource "+sqlwhere_0+" and (accounttype is null or accounttype=0)"; + } + + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + /*先算出记录为空的人数*/ + if(sqlwhere.equals("")){ + sqlstr="select count(*) resultcount from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) and t1.usekind is null or t1.usekind ='' or t1.usekind='0'"; + }else{ + sqlstr="select count(*) resultcount from HrmResource t1 where (t1.accounttype is null or t1.accounttype=0) and (t1.usekind is null or t1.usekind ='' or t1.usekind='0')"+sqlwhere; + } + rs.executeSql(sqlstr); + rs.next(); + int resultcount = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + if(resultcount != 0){ + map = new HashMap(); + map.put("title", SystemEnv.getHtmlLabelName(15863,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + if(total!=0){ + if(sqlwhere.equals("")){ + sqlstr = "select COUNT(*) resultcount,t2.id usekindid from HrmResource t1 ,HrmUseKind t2 where (t1.accounttype is null or t1.accounttype=0) and t1.usekind = t2.id group by t2.id order by t2.id " ; + }else{ + sqlstr = "select COUNT(*) resultcount,t2.id usekindid from HrmResource t1 ,HrmUseKind t2 where (t1.accounttype is null or t1.accounttype=0) and t1.usekind = t2.id "+sqlwhere+" group by t2.id order by t2.id " ; + } + rs.executeSql(sqlstr); + + while(rs.next()){ + resultcount = rs.getInt(1); + String resultid= rs.getString(2); + if(resultcount!=0){ + map = new HashMap(); + String title = ""; + try { + title = Util.toScreen(new UseKindComInfo().getUseKindname(resultid),user.getLanguage()); + } catch (Exception e) { + e.printStackTrace(); + } + map.put("title", title); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + + writeLog(">>>>>>>>>>>" + total); + list.add(map); + } + } + } + return list; +} + + + + + + +@SuppressWarnings("deprecation") +public List> getStatusRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + String sqlwhere=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + + } + if(!enddate.equals("")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + + } + + if(!location.equals("")){ + sqlwhere+=" and locationid ="+location; + + } + + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + + } + + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + }else{ + sqlwhere+=" and status ="+status; + } + } + + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sql = "select count(*) from HrmResource where (accounttype is null or accounttype=0) and status is not null "+sqlwhere; + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + int total = rs.next() ? rs.getInt(1) : 0; + + List> list = new ArrayList>(); + Map map = null; + sql = "select status,count(id) resultcount from HrmResource where (accounttype is null or accounttype=0) and status is not null "; + if(!sqlwhere.equals("")){ + sql += sqlwhere; + } + sql += " group by status"; + + rs.executeSql(sql); + if(total!=0){ + while(rs.next()){ + String tempStatus = StringUtil.vString(rs.getString(1)); + int resultcount = rs.getInt(2); + + map = new HashMap(); + map.put("title", new SplitPageTagFormat().colFormat(tempStatus,"{cmd:array["+user.getLanguage()+";0=15710,1=15711,2=480,3=15844,4=6094,5=6091,6=6092,7=2245,8=1831,9=332]}")); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + + } + } + return list; +} + + + + + +/* + * + * 安全级别 + */ +@SuppressWarnings("deprecation") +public List> getSecLevelRpResult(HttpServletRequest request, HttpServletResponse response) { + + User user = HrmUserVarify.getUser(request, response); + String fromdate = Util.null2String(request.getParameter("fromdate")); + String enddate = Util.null2String(request.getParameter("enddate")); + String department =Util.null2String(request.getParameter("departmentid")); + String subcompany =Util.null2String(request.getParameter("subcompanyid")); + String location =Util.null2String(request.getParameter("location")); + String status =Util.null2String(request.getParameter("workstatus")); + HrmReportDetachUtil hrmReportDetachUtil = new HrmReportDetachUtil(); + + String startdateselect =Util.fromScreen(request.getParameter("dateselect"),user.getLanguage()); + if(!startdateselect.equals("") && !startdateselect.equals("0")&& !startdateselect.equals("6")){ + fromdate = TimeUtil.getDateByOption(startdateselect,"0"); + enddate = TimeUtil.getDateByOption(startdateselect,"1"); + } + + int total=0; + String sqlwhere=""; + + if(status.equals("")){ + status = "8"; + } + + if(!fromdate.equals("")){ + sqlwhere+=" and companystartdate>='"+fromdate+"'"; + } + if(!enddate.equals("")){ + sqlwhere+=" and (companystartdate<='"+enddate+"' or companystartdate is null)"; + } + if(!location.equals("")){ + sqlwhere+=" and locationid ="+location; + } + if(!department.equals("")){ + sqlwhere+=" and departmentid in ("+department+") "; + } + if(!subcompany.equals("")){ + sqlwhere+=" and subcompanyid1 in ("+subcompany+") "; + } + if(!(status.equals("")||status.equals("9"))){ + if(status.equals("8")){ + sqlwhere+=" and status <= 3"; + }else{ + sqlwhere+=" and status ="+status; + } + } + String detachSqlWhere = hrmReportDetachUtil.getDetachSqlWhere(user.getUID(), "hrmresource"); + if (StringUtils.isNotBlank(detachSqlWhere)){ + sqlwhere += " and " + detachSqlWhere; + } + + + String innerResourceSql = AppDetachComInfo.getInnerResourceSql(); + //只查询行政纬度人员 + sqlwhere += " and "+innerResourceSql; + + String sqlstr=""; + String sql=""; + if(sqlwhere.equals("")){ + sql = "select count(*) from HrmResource where seclevel is not null"; + }else{ + sql = "select count(*) from HrmResource where seclevel is not null"+sqlwhere; + } + RecordSet rs = new RecordSet(); + rs.executeSql(sql); + rs.next(); + total = rs.getInt(1); + + List> list = new ArrayList>(); + Map map = null; + + if(total!=0){ + if(sqlwhere.equals("")){ + sqlstr = "select COUNT(*) resultcount,seclevel from HrmResource where seclevel is not null group by seclevel order by seclevel"; + }else{ + sqlstr = "select COUNT(*) resultcount,seclevel from HrmResource where seclevel is not null "+sqlwhere+" group by seclevel order by seclevel" ; + } + rs.executeSql(sqlstr); + rs.first(); + do{ + int resultcount = rs.getInt(1); + String resultid = rs.getString(2); + + if(resultcount != 0){ + map = new HashMap(); + map.put("title", resultid+" "+SystemEnv.getHtmlLabelName(15872,user.getLanguage())); + map.put("result", String.valueOf(resultcount)); + map.put("percent", StringUtil.formatDoubleValue(String.valueOf(resultcount), String.valueOf(total))); + map.put("total", String.valueOf(total)); + list.add(map); + } + }while(rs.next()); + } + return list; +} + +} diff --git a/src/com/api/hrm/util/HrmReportDetachUtil.java b/src/com/api/hrm/util/HrmReportDetachUtil.java new file mode 100644 index 0000000..6386e9b --- /dev/null +++ b/src/com/api/hrm/util/HrmReportDetachUtil.java @@ -0,0 +1,111 @@ +package com.api.hrm.util; + +import com.engine.common.service.HrmCommonService; +import com.engine.common.service.impl.HrmCommonServiceImpl; +import com.engine.hrm.biz.HrmSanyuanAdminBiz; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.appdetach.AppDetachComInfo; +import weaver.hrm.moduledetach.ManageDetachComInfo; +import weaver.hrm.resource.ResourceComInfo; + +import java.util.StringJoiner; + +public class HrmReportDetachUtil extends BaseBean { + + private char flag = Util.getSeparator(); + + private String rightStr = "HrmResourceAdd:Add"; + + + + public String getDetachSqlWhere(int userId, String alias){ + String sqlWhere = ""; + String manageDetachSqlWhere = this.getManageDetachSqlWhere(userId, alias); + String appDetachSqlWhere = ""; + AppDetachComInfo appDetachComInfo = new AppDetachComInfo(); + try { + appDetachSqlWhere = appDetachComInfo.getScopeSqlByHrmResourceSearch("" + userId, true, "resource_" + alias); + } catch (Exception e){ + writeLog("获取应用分权SQL片段异常"); + writeLog(e); + } + + if (StringUtils.isNotBlank(manageDetachSqlWhere) && StringUtils.isNotBlank(appDetachSqlWhere)){ + sqlWhere = manageDetachSqlWhere + " and " + appDetachSqlWhere; + } else if (StringUtils.isNotBlank(manageDetachSqlWhere) && StringUtils.isBlank(appDetachSqlWhere)){ + sqlWhere = manageDetachSqlWhere; + } else if (StringUtils.isBlank(manageDetachSqlWhere) && StringUtils.isNotBlank(appDetachSqlWhere)){ + sqlWhere = appDetachSqlWhere; + } + + writeLog("分权sqlwhere:" + sqlWhere); + + return sqlWhere; + } + + private String getManageDetachSqlWhere(int userId, String alias){ + String sqlWhere = ""; + + try { + ManageDetachComInfo manageDetachComInfo = new ManageDetachComInfo(); + ResourceComInfo resourceComInfo = new ResourceComInfo(); + RecordSet recordSet = new RecordSet(); + + + // 是否开启了管理分权 + if (manageDetachComInfo.isUseManageDetach()){ + // 是否启用了人力资源管理分权 + if (manageDetachComInfo.isUseHrmManageDetach()){ + // 系统管理员和大三员可以看所有机构 + boolean canView = HrmSanyuanAdminBiz.canViewAllSubCompany(userId); + if (userId == 1 || canView){ + return sqlWhere; + } + StringJoiner stringJoiner = new StringJoiner(","); + writeLog("启用人力资源管理分权"); + recordSet.executeProc("HrmRoleSR_SeByURId", "" + userId + flag + rightStr); + while (recordSet.next()) { + if (recordSet.getInt("rightlevel") > -1) { + stringJoiner.add(String.valueOf(recordSet.getInt("subcompanyid"))); + } else if (recordSet.getInt("rightlevel") == -1) { + stringJoiner.add(String.valueOf(-1 * recordSet.getInt("subcompanyid"))); + } + } + String subCompanyIds = stringJoiner.toString(); + if (subCompanyIds.length() == 0){ + // 没有机构权限,查看不了任何分部 + sqlWhere = " 1= 2"; + } else { + sqlWhere = alias + ".subcompanyid1 in (" + subCompanyIds + ")"; + } + } else { + writeLog("未启用人力资源管理分权"); + if (resourceComInfo.isAdmin("" + userId)){ + return sqlWhere; + } + HrmCommonService hrmCommonService = new HrmCommonServiceImpl(); + int roleLevel = hrmCommonService.getMaxRoleLevel(userId, rightStr); + if (roleLevel < 0){ + sqlWhere = " 1=2 "; + } else if (roleLevel == 0){ + // 成员级别为部门 + String departmentId = resourceComInfo.getDepartmentID("" + userId); + sqlWhere = alias + ".departmentid = " + departmentId; + } else if (roleLevel == 1){ + // 成员级别为分部 + String subCompanyId = resourceComInfo.getSubCompanyID("" + userId); + sqlWhere = alias + ".subcompanyid1 = " + subCompanyId; + } + } + } + } catch (Exception e){ + writeLog("获取管理分权SQL片段异常"); + writeLog(e); + } + return sqlWhere; + } + +} diff --git a/src/com/engine/gainway/service/BasicResourceTableService.java b/src/com/engine/gainway/service/BasicResourceTableService.java new file mode 100644 index 0000000..2b9df85 --- /dev/null +++ b/src/com/engine/gainway/service/BasicResourceTableService.java @@ -0,0 +1,21 @@ +package com.engine.gainway.service; + +import java.util.Map; + +/** + * @Author liang.cheng + * @Date 2024/12/11 2:27 PM + * @Description: TODO + * @Version 1.0 + */ +public interface BasicResourceTableService { + + /** + * @Description: 改造人员基本状况报表,增加明细弹框和导出功能 + * @Author: liang.cheng + * @Date: 2024/12/11 2:39 PM + * @param: [params] + * @return: java.util.Map + */ + Map linkTable(Map params); +} diff --git a/src/com/engine/gainway/service/impl/BasicResourceTableServiceImpl.java b/src/com/engine/gainway/service/impl/BasicResourceTableServiceImpl.java new file mode 100644 index 0000000..2bb3cb5 --- /dev/null +++ b/src/com/engine/gainway/service/impl/BasicResourceTableServiceImpl.java @@ -0,0 +1,20 @@ +package com.engine.gainway.service.impl; + +import com.engine.core.impl.Service; +import com.engine.gainway.service.BasicResourceTableService; + +import java.util.Map; + +/** + * @Author liang.cheng + * @Date 2024/12/11 2:27 PM + * @Description: TODO + * @Version 1.0 + */ +public class BasicResourceTableServiceImpl extends Service implements BasicResourceTableService { + + @Override + public Map linkTable(Map params) { + return null; + } +} diff --git a/src/com/engine/gainway/web/BasicResourceTableAction.java b/src/com/engine/gainway/web/BasicResourceTableAction.java new file mode 100644 index 0000000..aacc722 --- /dev/null +++ b/src/com/engine/gainway/web/BasicResourceTableAction.java @@ -0,0 +1,50 @@ +package com.engine.gainway.web; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.gainway.service.BasicResourceTableService; +import com.engine.gainway.service.impl.BasicResourceTableServiceImpl; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.HashMap; +import java.util.Map; + +/** + * @Author liang.cheng + * @Date 2024/12/11 2:25 PM + * @Description: TODO + * @Version 1.0 + */ +public class BasicResourceTableAction { + + private BasicResourceTableService getService(User user) { + return ServiceUtil.getService(BasicResourceTableServiceImpl.class, user); + } + + @GET + @Path("/linkTable") + @Produces(MediaType.TEXT_PLAIN) + public String linkTable(@Context HttpServletRequest request, @Context HttpServletResponse response){ + Map data = new HashMap<>(8); + try { + User user = HrmUserVarify.getUser(request, response); + data.put("datas",getService(user).linkTable(ParamUtil.request2Map(request))); + data.put("api_status", true); + } catch (Exception e) { + data.put("api_status", false); + data.put("msg", "catch exception : " + e.getMessage()); + } + return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); + } + +}