854 lines
39 KiB
Plaintext
854 lines
39 KiB
Plaintext
package com.engine.kq.cmd.report;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.engine.common.biz.AbstractCommonCommand;
|
||
import com.engine.common.entity.BizLogContext;
|
||
import com.engine.core.interceptor.CommandContext;
|
||
import com.engine.kq.biz.*;
|
||
import com.engine.kq.log.KQLog;
|
||
import com.engine.kq.util.KQDurationCalculatorUtil;
|
||
import com.engine.kq.util.PageUidFactory;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
import org.apache.tools.ant.util.DateUtils;
|
||
import weaver.common.DateUtil;
|
||
import weaver.conn.RecordSet;
|
||
import weaver.general.BaseBean;
|
||
import weaver.general.TimeUtil;
|
||
import weaver.general.Util;
|
||
import weaver.hrm.User;
|
||
import weaver.hrm.company.DepartmentComInfo;
|
||
import weaver.hrm.company.SubCompanyComInfo;
|
||
import weaver.hrm.job.JobTitlesComInfo;
|
||
import weaver.hrm.resource.ResourceComInfo;
|
||
import weaver.systeminfo.SystemEnv;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.text.ParseException;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.*;
|
||
|
||
public class GetKQReportCmd extends AbstractCommonCommand<Map<String, Object>> {
|
||
|
||
public GetKQReportCmd(Map<String, Object> params, User user) {
|
||
this.user = user;
|
||
this.params = params;
|
||
}
|
||
|
||
@Override
|
||
public Map<String, Object> execute(CommandContext commandContext) {
|
||
Map<String,Object> retmap = new HashMap<String,Object>();
|
||
RecordSet rs = new RecordSet();
|
||
String sql = "";
|
||
try{
|
||
String pageUid = PageUidFactory.getHrmPageUid("KQReport");
|
||
|
||
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
|
||
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
|
||
ResourceComInfo resourceComInfo = new ResourceComInfo();
|
||
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
|
||
KQLeaveRulesBiz kqLeaveRulesBiz = new KQLeaveRulesBiz();
|
||
KQReportBiz kqReportBiz = new KQReportBiz();
|
||
|
||
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
|
||
String attendanceSerial = Util.null2String(jsonObj.get("attendanceSerial"));
|
||
String fromDate = Util.null2String(jsonObj.get("fromDate"));
|
||
String toDate = Util.null2String(jsonObj.get("toDate"));
|
||
String typeselect =Util.null2String(jsonObj.get("typeselect"));
|
||
if(typeselect.length()==0)typeselect = "3";
|
||
if(!typeselect.equals("") && !typeselect.equals("0")&& !typeselect.equals("6")){
|
||
if(typeselect.equals("1")){
|
||
fromDate = TimeUtil.getCurrentDateString();
|
||
toDate = TimeUtil.getCurrentDateString();
|
||
}else{
|
||
fromDate = TimeUtil.getDateByOption(typeselect,"0");
|
||
toDate = TimeUtil.getDateByOption(typeselect,"1");
|
||
}
|
||
}
|
||
//人员状态
|
||
String status = Util.null2String(jsonObj.get("status"));
|
||
String subCompanyId = Util.null2String(jsonObj.get("subCompanyId"));
|
||
String departmentId = Util.null2String(jsonObj.get("departmentId"));
|
||
String resourceId = Util.null2String(jsonObj.get("resourceId"));
|
||
String allLevel = Util.null2String(jsonObj.get("allLevel"));
|
||
String isNoAccount = Util.null2String(jsonObj.get("isNoAccount"));
|
||
String viewScope = Util.null2String(jsonObj.get("viewScope"));
|
||
String isFromMyAttendance = Util.null2String(jsonObj.get("isFromMyAttendance"));//是否是来自我的考勤的请求,如果是,不加载考勤报表权限共享的限制,不然我的考勤会提示无权限
|
||
int pageIndex = Util.getIntValue(Util.null2String(jsonObj.get("pageIndex")), 1);
|
||
int pageSize = KQReportBiz.getPageSize(Util.null2String(jsonObj.get("pageSize")),pageUid,user.getUID());
|
||
int count = 0;
|
||
int pageCount = 0;
|
||
int isHavePre = 0;
|
||
int isHaveNext = 0;
|
||
|
||
|
||
String rightSql = kqReportBiz.getReportRight("1",""+user.getUID(),"a");
|
||
if(isFromMyAttendance.equals("1")){
|
||
rightSql = "";
|
||
}
|
||
|
||
List<Map<String, Object>> leaveRules = kqLeaveRulesBiz.getAllLeaveRules();
|
||
List<Object> columns = new ArrayList();
|
||
Map<String,Object> column = null;
|
||
List<Object> datas = new ArrayList();
|
||
Map<String,Object> data = null;
|
||
Map<String,Object> mapChildColumnInfo = null;
|
||
List<Object> childColumns = null;
|
||
KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo();
|
||
while (kqReportFieldComInfo.next()){
|
||
if(Util.null2String(kqReportFieldComInfo.getParentid()).length()>0)continue;
|
||
if(kqReportFieldComInfo.getFieldname().equals("kqCalendar"))continue;
|
||
if(KQReportFieldComInfo.cascadekey2fieldname.keySet().contains(kqReportFieldComInfo.getFieldname()))continue;
|
||
if(!kqReportFieldComInfo.getReportType().equals("all") && !kqReportFieldComInfo.getReportType().equals("month"))continue;
|
||
if("leave".equalsIgnoreCase(kqReportFieldComInfo.getFieldname())&&leaveRules.size()==0)continue;
|
||
|
||
column = new HashMap();
|
||
column.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()));
|
||
column.put("unit", KQReportBiz.getUnitType(kqReportFieldComInfo, user));
|
||
column.put("dataIndex", kqReportFieldComInfo.getFieldname());
|
||
column.put("type", kqReportFieldComInfo.getFieldname());
|
||
column.put("key", kqReportFieldComInfo.getFieldname());
|
||
column.put("isSystem", kqReportFieldComInfo.getIsSystem());
|
||
mapChildColumnInfo = this.getChildColumnsInfo(kqReportFieldComInfo.getFieldname(),user);
|
||
childColumns = (List<Object>)mapChildColumnInfo.get("childColumns");
|
||
if(childColumns.size()>0) {//跨列width取子列的width
|
||
column.put("rowSpan", 1);
|
||
column.put("width", mapChildColumnInfo.get("sumChildColumnWidth"));
|
||
column.put("children", childColumns);
|
||
}else{
|
||
column.put("rowSpan", 3);
|
||
column.put("width", Util.getIntValue(kqReportFieldComInfo.getWidth()));
|
||
}
|
||
column.put("showDetial",kqReportFieldComInfo.getShowDetial());
|
||
columns.add(column);
|
||
columns.addAll(this.getCascadeKeyColumnsInfo(kqReportFieldComInfo.getCascadekey(),user));
|
||
}
|
||
|
||
boolean isEnd = false;
|
||
Calendar cal = DateUtil.getCalendar();
|
||
String today = DateUtil.getCurrentDate();
|
||
// if(DateUtil.compDate(today, toDate)>0){//结束日期不大于今天
|
||
// toDate = today;
|
||
// if(DateUtil.compDate(today, fromDate)>0){//结束日期不大于今天
|
||
// fromDate = today;
|
||
// }
|
||
// }
|
||
|
||
childColumns = new ArrayList<>();
|
||
for(String date=fromDate; !isEnd;) {
|
||
if(date.equals(toDate)) isEnd = true;
|
||
column = new HashMap();
|
||
column.put("title", DateUtil.geDayOfMonth(date));
|
||
column.put("dataIndex", date);
|
||
column.put("key", date);
|
||
column.put("type", date);
|
||
column.put("rowSpan", 1);
|
||
column.put("width", 90);
|
||
column.put("isCalendar", 1);
|
||
childColumns.add(column);
|
||
cal.setTime(DateUtil.parseToDate(date));
|
||
date = DateUtil.getDate(cal.getTime(), 1);
|
||
}
|
||
|
||
column = new HashMap();
|
||
column.put("title", SystemEnv.getHtmlLabelName(386476, user.getLanguage()));
|
||
column.put("dataIndex", "kqCalendar");
|
||
column.put("key", "kqCalendar");
|
||
if(childColumns.size()>0) {//跨列width取子列的width
|
||
column.put("rowSpan", 1);
|
||
column.put("width", childColumns.size()*90);
|
||
column.put("children", childColumns);
|
||
}
|
||
columns.add(column);
|
||
|
||
|
||
// 没有权限的人最大只支持查询本季
|
||
Map<String, String> getRealDate = new KQReportBiz().realDate(fromDate, toDate, user, "1");
|
||
fromDate = getRealDate.get("fromDate");
|
||
toDate = getRealDate.get("toDate");
|
||
|
||
String forgotBeginWorkCheck_field = " sum(b.forgotBeginWorkCheck) ";
|
||
|
||
if(rs.getDBType().equalsIgnoreCase("oracle")) {
|
||
forgotBeginWorkCheck_field = " sum(nvl(b.forgotBeginWorkCheck,0)) ";
|
||
}else if((rs.getDBType()).equalsIgnoreCase("mysql")){
|
||
forgotBeginWorkCheck_field = " sum(ifnull(b.forgotBeginWorkCheck,0)) ";
|
||
}else {
|
||
forgotBeginWorkCheck_field = " sum(isnull(b.forgotBeginWorkCheck,0)) ";
|
||
}
|
||
|
||
Map<String,Object> definedFieldInfo = new KQFormatBiz().getDefinedField();
|
||
String definedFieldSum = Util.null2String(definedFieldInfo.get("definedFieldSum"));
|
||
BaseBean bb = new BaseBean();
|
||
//一级部门字段
|
||
String yjbm = bb.getPropValue("jgKq_main","yjbm");
|
||
//二级部门字段
|
||
String ejbm = bb.getPropValue("jgKq_main","ejbm");
|
||
//三级部门字段
|
||
String sjbm = bb.getPropValue("jgKq_main","sjbm");
|
||
//四级部门字段
|
||
String sijbm = bb.getPropValue("jgKq_main","sijbm");
|
||
|
||
String backFields = " a.companystartdate,(select sum(gxbts) as gxbts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as gxbts,(select sum(xchu) as xcqts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as xcqts,(select sum(jjrbtjia*60) as jjrbtjb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as jjrbtjb,(select sum(jjrdksc*60) as jjrdksc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as jjrdksc,(select sum(xxb) as xxb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as xxb,(select sum(zrbtjbzdx*60) as zrbtjbztx from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zrbtjbztx,(select sum(gzsc) as gzsc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as gzsc,(select sum(psjbshic*60) as psjbsc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as psjbsc,(select sum(cb) as cb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as cb,(select sum(zlbtdksc*60) as zlzbsc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zlzbsc,(select sum(zrbtdksj*60) as zrbtdksc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zrbtdksc,(select sum(zlbtdksc*60) as zlbtdksc from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zlbtdksc," +
|
||
"(select sum(zrwsjb*60) as zrwsjb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zrwsjb,(select sum(zlwsjb*60) as zlwsjb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zlwsjb," +
|
||
"(select sum(zrbtjb*60) as zrbtjb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zrbtjb,(select sum(zlbtjb*60) as zlbtjb from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zlbtjb," +
|
||
"(select sum(sch*60) as zlxs from uf_lbjbsq u where u.sqr = a.id and u.ksrq>='"+fromDate+"' and u.ksrq<= '"+toDate+"') as zlxs,(select sum(ybts) as ybts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as ybts," +
|
||
"(select sum(jjrts) as jjrts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as jjrts,(select sum(yxjts) as yxjts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as yxjts," +
|
||
"(select sum(zcgzts) as zcgzts from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as zcgzts,(select sum(bkcs) as bkcs from uf_gshsj u where u.xm = a.id and u.rq>='"+fromDate+"' and u.rq<= '"+toDate+"') as bkcs," +
|
||
"(select "+sijbm+" from cus_fielddata cu where scope='HrmCustomFieldByInfoType' and scopeid=-1 and cu.id = a.id) as sijbm,(select "+sjbm+" from cus_fielddata cu where scope='HrmCustomFieldByInfoType' and scopeid=-1 and cu.id = a.id) as sjbm," +
|
||
"(select "+ejbm+" from cus_fielddata cu where scope='HrmCustomFieldByInfoType' and scopeid=-1 and cu.id = a.id) as ejbm,(select "+yjbm+" from cus_fielddata cu where scope='HrmCustomFieldByInfoType' and scopeid=-1 and cu.id = a.id) as yjbm," +
|
||
"a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1 as subcompanyid,a.departmentid,a.jobtitle " +
|
||
" sum(b.workdays) as workdays,sum(b.workMins) as workMins,sum(b.attendancedays) as attendancedays," +
|
||
" sum(b.attendanceMins) as attendanceMins,sum(b.beLate) as beLate,sum(b.beLateMins) as beLateMins, " +
|
||
" sum(b.graveBeLate) as graveBeLate, sum(b.graveBeLateMins) as graveBeLateMins,sum(b.leaveEearly) as leaveEearly," +
|
||
" sum(b.leaveEarlyMins) as leaveEarlyMins, sum(b.graveLeaveEarly) as graveLeaveEarly, " +
|
||
" sum(b.graveLeaveEarlyMins) as graveLeaveEarlyMins,sum(b.absenteeism) as absenteeism, " +
|
||
" sum(b.signdays) as signdays,sum(b.signmins) as signmins, "+
|
||
" sum(b.absenteeismMins) as absenteeismMins, sum(b.forgotCheck)+"+forgotBeginWorkCheck_field+" as forgotCheck "+(definedFieldSum.length()>0?","+definedFieldSum+"":"");
|
||
|
||
if(rs.getDBType().equals("oracle")){
|
||
backFields = "/*+ index(kq_format_total IDX_KQ_FORMAT_TOTAL_KQDATE) */ "+backFields;
|
||
}
|
||
String sqlFrom = " from hrmresource a, kq_format_total b where a.id= b.resourceid and b.kqdate >='"+fromDate+"' and b.kqdate <='"+toDate+"'";
|
||
String sqlWhere = rightSql;
|
||
String groupBy = " group by a.id,a.lastname,a.workcode,a.dsporder,b.resourceid,a.subcompanyid1,a.departmentid,a.jobtitle,a.companystartdate ";
|
||
if(subCompanyId.length()>0){
|
||
sqlWhere +=" and a.subcompanyid1 in("+subCompanyId+") ";
|
||
}
|
||
|
||
if(departmentId.length()>0){
|
||
sqlWhere +=" and a.departmentid in("+departmentId+") ";
|
||
}
|
||
|
||
if(resourceId.length()>0){
|
||
sqlWhere +=" and a.id in("+resourceId+") ";
|
||
}
|
||
|
||
if(viewScope.equals("4")){//我的下属
|
||
if(allLevel.equals("1")){//所有下属
|
||
sqlWhere+=" and a.managerstr like '%,"+user.getUID()+",%'";
|
||
}else{
|
||
sqlWhere+=" and a.managerid="+user.getUID();//直接下属
|
||
}
|
||
}
|
||
if (!"1".equals(isNoAccount)) {
|
||
sqlWhere += " and a.loginid is not null "+(rs.getDBType().equals("oracle")?"":" and a.loginid<>'' ");
|
||
}
|
||
|
||
if(status.length()>0){
|
||
if (!status.equals("8") && !status.equals("9")) {
|
||
sqlWhere += " and a.status = "+status+ "";
|
||
}else if (status.equals("8")) {
|
||
sqlWhere += " and (a.status = 0 or a.status = 1 or a.status = 2 or a.status = 3) ";
|
||
}
|
||
}
|
||
|
||
if("-1".equals(fromDate) || "-1".equals(toDate)) {
|
||
sqlWhere += " and 1=2 ";
|
||
}
|
||
sql = " select count(*) as c from ( select 1 as c "+sqlFrom+sqlWhere+groupBy+") t";
|
||
rs.execute(sql);
|
||
if (rs.next()){
|
||
count = rs.getInt("c");
|
||
}
|
||
|
||
if (count <= 0) {
|
||
pageCount = 0;
|
||
}
|
||
|
||
pageCount = count / pageSize + ((count % pageSize > 0) ? 1 : 0);
|
||
|
||
isHaveNext = (pageIndex + 1 <= pageCount) ? 1 : 0;
|
||
|
||
isHavePre = (pageIndex - 1 >= 1) ? 1 : 0;
|
||
|
||
String orderBy = " order by t.dsporder asc, t.lastname asc ";
|
||
String descOrderBy = " order by t.dsporder desc, t.lastname desc ";
|
||
|
||
//默认排序设置 start,有性能问题,先取消,后面再看看有没有好的方式
|
||
// String orderBySql = "select * from kq_report_order where userId=? and sort=1 order by orders";
|
||
// rs.executeQuery(orderBySql, user.getUID());
|
||
// if (rs.getCounts() <= 0) {
|
||
// orderBySql = "select * from kq_report_order where userId=0 and sort=1 order by orders";
|
||
// rs.executeQuery(orderBySql);
|
||
// }
|
||
// while (rs.next()) {
|
||
// String dataIndex = rs.getString("dataIndex");
|
||
// String ascOrDesc = rs.getString("ascOrDesc");
|
||
// String ascOrDesc1 = (ascOrDesc.equals("")||ascOrDesc.equals("asc"))?"desc":"asc";
|
||
// if (dataIndex.equals("organization")) {
|
||
// orderBy += ",showOrderOfDeptTree " + ascOrDesc + ",dept_id " + ascOrDesc;
|
||
// descOrderBy += ",showOrderOfDeptTree " + ascOrDesc1 + ",dept_id " + ascOrDesc1;
|
||
// }
|
||
// if (dataIndex.equalsIgnoreCase("dspOrder") || dataIndex.equalsIgnoreCase("lastName")) {
|
||
// orderBy += "," + dataIndex + " " + ascOrDesc + ",id " + ascOrDesc;
|
||
// descOrderBy += "," + dataIndex + " " + ascOrDesc1 + ",id " + ascOrDesc1;
|
||
// } else if (dataIndex.equalsIgnoreCase("deptShowOrder") || dataIndex.equalsIgnoreCase("deptName")) {
|
||
// orderBy += "," + dataIndex + " " + ascOrDesc + ",dept_id " + ascOrDesc;
|
||
// descOrderBy += "," + dataIndex + " " + ascOrDesc1 + ",dept_id " + ascOrDesc1;
|
||
// } else if (dataIndex.equalsIgnoreCase("subcomShowOrder") || dataIndex.equalsIgnoreCase("subcomName")) {
|
||
// orderBy += "," + dataIndex + " " + ascOrDesc + ",subcom_id " + ascOrDesc;
|
||
// descOrderBy += "," + dataIndex + " " + ascOrDesc1 + ",subcom_id " + ascOrDesc1;
|
||
// }
|
||
// }
|
||
// orderBy = orderBy.startsWith(",") ? orderBy.substring(1) : orderBy;
|
||
// descOrderBy = descOrderBy.startsWith(",") ? descOrderBy.substring(1) : descOrderBy;
|
||
// orderBy = orderBy.equals("") ? " t.dspOrder,t.id " : orderBy;
|
||
// descOrderBy = descOrderBy.equals("") ? " t.dspOrder,t.id " : descOrderBy;
|
||
// orderBy = "order by "+orderBy;
|
||
|
||
sql = backFields + sqlFrom + sqlWhere + groupBy;
|
||
|
||
if (pageIndex > 0 && pageSize > 0) {
|
||
if (rs.getDBType().equals("oracle")) {
|
||
sql = " select * from (select " + sql+") t "+orderBy;
|
||
sql = "select * from ( select row_.*, rownum rownum_ from ( " + sql + " ) row_ where rownum <= "
|
||
+ (pageIndex * pageSize) + ") where rownum_ > " + ((pageIndex - 1) * pageSize);
|
||
} else if (rs.getDBType().equals("mysql")) {
|
||
sql = " select * from (select " + sql+") t "+orderBy;
|
||
sql = "select t1.* from (" + sql + ") t1 limit " + ((pageIndex - 1) * pageSize) + "," + pageSize;
|
||
}
|
||
else if (rs.getDBType().equals("postgresql")) {
|
||
sql = " select * from (select " + sql+") t "+orderBy;
|
||
sql = "select t1.* from (" + sql + ") t1 limit " +pageSize + " offset " + ((pageIndex - 1) * pageSize);
|
||
}
|
||
else {
|
||
orderBy = " order by dsporder asc, lastname asc ";
|
||
descOrderBy = " order by dsporder desc, lastname desc ";
|
||
if (pageIndex > 1) {
|
||
int topSize = pageSize;
|
||
if (pageSize * pageIndex > count) {
|
||
topSize = count - (pageSize * (pageIndex - 1));
|
||
}
|
||
sql = " select top " + topSize + " * from ( select top " + topSize + " * from ( select top "
|
||
+ (pageIndex * pageSize) + sql + orderBy+ " ) tbltemp1 " + descOrderBy + ") tbltemp2 " + orderBy;
|
||
} else {
|
||
sql = " select top " + pageSize + sql+orderBy;
|
||
}
|
||
}
|
||
} else {
|
||
sql = " select " + sql;
|
||
}
|
||
|
||
|
||
// #1475814-概述:满足考勤报分部部门显示及导出时显示全路径
|
||
String fullPathMainKey = "show_full_path";
|
||
KQSettingsComInfo kqSettingsComInfo = new KQSettingsComInfo();
|
||
String isShowFullPath = Util.null2String(kqSettingsComInfo.getMain_val(fullPathMainKey),"0");
|
||
|
||
String show_card_source = Util.null2String(kqSettingsComInfo.getMain_val("show_card_source"),"0");//是否显示打卡数据,以及打卡数据来源
|
||
params.put("show_card_source",show_card_source);
|
||
KQOvertimeRulesBiz kqOvertimeRulesBiz = new KQOvertimeRulesBiz();
|
||
int uintType = kqOvertimeRulesBiz.getMinimumUnit();//当前加班单位
|
||
double hoursToDay = kqOvertimeRulesBiz.getHoursToDay();//当前天跟小时计算关系
|
||
params.put("uintType",uintType);
|
||
params.put("hoursToDay",hoursToDay);
|
||
Map<String,Object> flowData = kqReportBiz.getFlowData(params,user);
|
||
|
||
bb.writeLog("getKqReportCmd:"+sql);
|
||
rs.execute(sql);
|
||
while (rs.next()) {
|
||
data = new HashMap<>();
|
||
kqReportFieldComInfo.setTofirstRow();
|
||
String id = rs.getString("id");
|
||
data.put("resourceId",id);
|
||
while (kqReportFieldComInfo.next()){
|
||
if(!Util.null2String(kqReportFieldComInfo.getIsdataColumn()).equals("1"))continue;
|
||
if(!kqReportFieldComInfo.getReportType().equals("all") && !kqReportFieldComInfo.getReportType().equals("month"))continue;
|
||
if("leave".equalsIgnoreCase(kqReportFieldComInfo.getFieldname())&&leaveRules.size()==0){
|
||
continue;
|
||
}
|
||
String fieldName = kqReportFieldComInfo.getFieldname();
|
||
String fieldValue = "";
|
||
if(fieldName.equals("subcompany")){
|
||
String tmpSubcompanyId = Util.null2String(rs.getString("subcompanyid"));
|
||
if(tmpSubcompanyId.length()==0){
|
||
tmpSubcompanyId = Util.null2String(resourceComInfo.getSubCompanyID(id));
|
||
}
|
||
data.put("subcompanyId",tmpSubcompanyId);
|
||
|
||
fieldValue = "1".equals(isShowFullPath) ?
|
||
SubCompanyComInfo.getSubcompanyRealPath(tmpSubcompanyId, "/", "0") :
|
||
subCompanyComInfo.getSubCompanyname(tmpSubcompanyId);
|
||
|
||
// fieldValue = subCompanyComInfo.getSubCompanyname(tmpSubcompanyId);
|
||
}else if(fieldName.equals("department")){
|
||
String tmpDepartmentId = Util.null2String(rs.getString("departmentid"));
|
||
if(tmpDepartmentId.length()==0){
|
||
tmpDepartmentId = Util.null2String(resourceComInfo.getDepartmentID(id));
|
||
}
|
||
data.put("departmentId",tmpDepartmentId);
|
||
|
||
fieldValue = "1".equals(isShowFullPath) ?
|
||
departmentComInfo.getDepartmentRealPath(tmpDepartmentId, "/", "0") :
|
||
departmentComInfo.getDepartmentname(tmpDepartmentId);
|
||
|
||
// fieldValue = departmentComInfo.getDepartmentname(tmpDepartmentId);
|
||
}else if(fieldName.equals("jobtitle")){
|
||
String tmpJobtitleId = Util.null2String(rs.getString("jobtitle"));
|
||
if(tmpJobtitleId.length()==0){
|
||
tmpJobtitleId = Util.null2String(resourceComInfo.getJobTitle(id));
|
||
}
|
||
data.put("jobtitleId",tmpJobtitleId);
|
||
fieldValue = jobTitlesComInfo.getJobTitlesname(tmpJobtitleId);
|
||
}else if(fieldName.equals("cdfz")){
|
||
String beLateMins = Util.null2String(rs.getString("beLateMins"));
|
||
fieldValue = beLateMins;
|
||
}else if(fieldName.equals("ztfz")){
|
||
String graveBeLateMins = Util.null2String(rs.getString("graveBeLateMins"));
|
||
fieldValue = graveBeLateMins;
|
||
}else if(fieldName.equals("xcqts")){
|
||
String xcqtsDays = getXcqts(fromDate,id);
|
||
fieldValue = xcqtsDays;
|
||
}else if(fieldName.equals("attendanceSerial")){
|
||
List<String> serialIds = null;
|
||
if(attendanceSerial.length()>0){
|
||
serialIds = Util.splitString2List(attendanceSerial,",");
|
||
}
|
||
for(int i=0;serialIds!=null&&i<serialIds.size();i++){
|
||
data.put(serialIds.get(i), kqReportBiz.getSerialCount(id,fromDate,toDate,serialIds.get(i)));
|
||
}
|
||
}else if(kqReportFieldComInfo.getParentid().equals("overtime")||kqReportFieldComInfo.getParentid().equals("overtime_nonleave")
|
||
||kqReportFieldComInfo.getParentid().equals("overtime_4leave")||fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")){
|
||
if(fieldName.equals("overtimeTotal")){
|
||
double workingDayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|workingDayOvertime_4leave")));
|
||
workingDayOvertime_4leave = workingDayOvertime_4leave<0?0:workingDayOvertime_4leave;
|
||
double restDayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|restDayOvertime_4leave")));
|
||
restDayOvertime_4leave = restDayOvertime_4leave<0?0:restDayOvertime_4leave;
|
||
double holidayOvertime_4leave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|holidayOvertime_4leave")));
|
||
holidayOvertime_4leave = holidayOvertime_4leave<0?0:holidayOvertime_4leave;
|
||
|
||
double workingDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|workingDayOvertime_nonleave")));
|
||
workingDayOvertime_nonleave = workingDayOvertime_nonleave<0?0:workingDayOvertime_nonleave;
|
||
double restDayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|restDayOvertime_nonleave")));
|
||
restDayOvertime_nonleave = restDayOvertime_nonleave<0?0:restDayOvertime_nonleave;
|
||
double holidayOvertime_nonleave = Util.getDoubleValue(Util.null2String(flowData.get(id+"|holidayOvertime_nonleave")));
|
||
holidayOvertime_nonleave = holidayOvertime_nonleave<0?0:holidayOvertime_nonleave;
|
||
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(workingDayOvertime_4leave+restDayOvertime_4leave+holidayOvertime_4leave+
|
||
workingDayOvertime_nonleave+restDayOvertime_nonleave+holidayOvertime_nonleave));
|
||
}else if(fieldName.equals("businessLeave") || fieldName.equals("officialBusiness")){
|
||
String businessLeaveData = Util.null2s(Util.null2String(flowData.get(id+"|"+fieldName)),"0.0");
|
||
String backType = fieldName+"_back";
|
||
String businessLeavebackData = Util.null2s(Util.null2String(flowData.get(id+"|"+backType)),"0.0");
|
||
String businessLeave = "";
|
||
try{
|
||
//以防止出现精度问题
|
||
if(businessLeaveData.length() == 0){
|
||
businessLeaveData = "0.0";
|
||
}
|
||
if(businessLeavebackData.length() == 0){
|
||
businessLeavebackData = "0.0";
|
||
}
|
||
BigDecimal b_businessLeaveData = new BigDecimal(businessLeaveData);
|
||
BigDecimal b_businessLeavebackData = new BigDecimal(businessLeavebackData);
|
||
businessLeave = b_businessLeaveData.subtract(b_businessLeavebackData).toString();
|
||
if(Util.getDoubleValue(businessLeave, -1) < 0){
|
||
businessLeave = "0.0";
|
||
}
|
||
}catch (Exception e){
|
||
}
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(businessLeave);
|
||
}else{
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(Util.null2String(flowData.get(id+"|"+fieldName)));
|
||
}
|
||
} else {
|
||
fieldValue = Util.null2String(rs.getString(fieldName));
|
||
if(Util.null2String(kqReportFieldComInfo.getUnittype()).length()>0) {
|
||
if(fieldValue.length() == 0){
|
||
fieldValue="0";
|
||
}else{
|
||
if (kqReportFieldComInfo.getUnittype().equals("2")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(("" + (Util.getDoubleValue(fieldValue) / 60.0)));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
data.put(fieldName,fieldValue);
|
||
}
|
||
|
||
//请假
|
||
List<Map<String, Object>> allLeaveRules = kqLeaveRulesBiz.getAllLeaveRules();
|
||
Map<String, Object> leaveRule = null;
|
||
for(int i=0;allLeaveRules!=null&&i<allLeaveRules.size();i++){
|
||
leaveRule = (Map<String, Object>)allLeaveRules.get(i);
|
||
String flowType = Util.null2String("leaveType_"+leaveRule.get("id"));
|
||
String leaveData = Util.null2String(flowData.get(id+"|"+flowType));
|
||
String flowLeaveBackType = Util.null2String("leavebackType_"+leaveRule.get("id"));
|
||
String leavebackData = Util.null2s(Util.null2String(flowData.get(id+"|"+flowLeaveBackType)),"0.0");
|
||
String b_flowLeaveData = "";
|
||
String flowLeaveData = "";
|
||
try{
|
||
//以防止出现精度问题
|
||
if(leaveData.length() == 0){
|
||
leaveData = "0.0";
|
||
}
|
||
if(leavebackData.length() == 0){
|
||
leavebackData = "0.0";
|
||
}
|
||
BigDecimal b_leaveData = new BigDecimal(leaveData);
|
||
BigDecimal b_leavebackData = new BigDecimal(leavebackData);
|
||
b_flowLeaveData = b_leaveData.subtract(b_leavebackData).toString();
|
||
if(Util.getDoubleValue(b_flowLeaveData, -1) < 0){
|
||
b_flowLeaveData = "0.0";
|
||
}
|
||
}catch (Exception e){
|
||
writeLog("GetKQReportCmd:leaveData"+leaveData+":leavebackData:"+leavebackData+":"+e);
|
||
}
|
||
|
||
//考虑下冻结的数据
|
||
if(b_flowLeaveData.length() > 0){
|
||
flowLeaveData = KQDurationCalculatorUtil.getDurationRound(b_flowLeaveData);
|
||
}else{
|
||
flowLeaveData = KQDurationCalculatorUtil.getDurationRound(Util.null2String(Util.getDoubleValue(leaveData,0.0)-Util.getDoubleValue(leavebackData,0.0)));
|
||
}
|
||
data.put(flowType,flowLeaveData);
|
||
}
|
||
|
||
Map<String,Object> detialDatas = kqReportBiz.getDetialDatas(id,fromDate,toDate,user,flowData,false,uintType,show_card_source);
|
||
// new KQLog().info("id:"+id+":detialDatas:"+detialDatas);
|
||
isEnd = false;
|
||
for(String date=fromDate; !isEnd;) {
|
||
if(date.equals(toDate)) isEnd = true;
|
||
if(DateUtil.compDate(today, date)>0){
|
||
data.put(date,"");
|
||
}else{
|
||
// new KQLog().info("id:date:"+(id+"|"+date)+":detialDatas.get:"+detialDatas.get(id+"|"+date));
|
||
data.put(date,detialDatas.get(id+"|"+date)==null?SystemEnv.getHtmlLabelName(26593, user.getLanguage()):detialDatas.get(id+"|"+date));
|
||
}
|
||
cal.setTime(DateUtil.parseToDate(date));
|
||
date = DateUtil.getDate(cal.getTime(), 1);
|
||
}
|
||
datas.add(data);
|
||
}
|
||
|
||
List<Object> lsHolidays = KQHolidaySetBiz.getHolidaySetListByScope(""+user.getUID(),fromDate,toDate);
|
||
retmap.put("holidays", lsHolidays);
|
||
|
||
retmap.put("columns",columns);
|
||
retmap.put("datas",datas);
|
||
retmap.put("pagesize", pageSize);
|
||
retmap.put("pageindex", pageIndex);
|
||
retmap.put("count", count);
|
||
retmap.put("pagecount", pageCount);
|
||
retmap.put("ishavepre", isHavePre);
|
||
retmap.put("ishavenext", isHaveNext);
|
||
}catch (Exception e){
|
||
writeLog(e);
|
||
}
|
||
return retmap;
|
||
}
|
||
|
||
private Map<String,Object> getChildColumnsInfo(String parentid, User user){
|
||
Map<String,Object> returnMap = new HashMap<>();
|
||
List<Object> lsChildColumns = new ArrayList<>();
|
||
Map column = null;
|
||
int sumChildColumnWidth = 0;
|
||
if(parentid.equals("attendanceSerial")){//考勤班次
|
||
KQShiftManagementComInfo kqShiftManagementComInfo = new KQShiftManagementComInfo();
|
||
JSONObject jsonObj = JSON.parseObject(Util.null2String(params.get("data")));
|
||
List<String> serialIds = null;
|
||
if(Util.null2String(jsonObj.get("attendanceSerial")).length()>0){
|
||
serialIds = Util.splitString2List(Util.null2String(jsonObj.get("attendanceSerial")),",");
|
||
}
|
||
for(int i=0;serialIds!=null&&i<serialIds.size();i++){
|
||
column = new HashMap();
|
||
column.put("title", kqShiftManagementComInfo.getSerial(serialIds.get(i)));
|
||
column.put("unit", "");
|
||
column.put("width", 65);
|
||
column.put("dataIndex", serialIds.get(i));
|
||
column.put("key", serialIds.get(i));
|
||
column.put("rowSpan", 2);
|
||
column.put("colSpan", 1);
|
||
sumChildColumnWidth+=65;
|
||
lsChildColumns.add(column);
|
||
}
|
||
}else if(parentid.equals("leave")){
|
||
KQLeaveRulesBiz kqLeaveRulesBiz = new KQLeaveRulesBiz();
|
||
List<Map<String, Object>> leaveRules = kqLeaveRulesBiz.getAllLeaveRules();
|
||
for(int i=0;leaveRules!=null&&i<leaveRules.size();i++){
|
||
Map<String, Object> leaveRule = leaveRules.get(i);
|
||
String id = "leaveType_"+Util.null2String(leaveRule.get("id"));
|
||
String name = Util.null2String(leaveRule.get("name"));
|
||
String unitType = Util.null2String(leaveRule.get("unitType"));
|
||
column = new HashMap();
|
||
column.put("title", name);
|
||
column.put("unit", KQUnitBiz.isLeaveHour(unitType) ?SystemEnv.getHtmlLabelName(391, user.getLanguage()):SystemEnv.getHtmlLabelName(1925, user.getLanguage()));
|
||
column.put("width", 65);
|
||
column.put("dataIndex", id);
|
||
column.put("key", id);
|
||
column.put("rowSpan", 2);
|
||
column.put("colSpan", 1);
|
||
column.put("showDetial","1");
|
||
sumChildColumnWidth+=65;
|
||
lsChildColumns.add(column);
|
||
}
|
||
}else if(parentid.equals("overtime")){
|
||
String[] overtimeChild = {"overtime_nonleave","overtime_4leave","overtimeTotal"};
|
||
for(int i=0;i<overtimeChild.length;i++){
|
||
String id = overtimeChild[i];
|
||
column = new HashMap();
|
||
String fieldlabel = "";
|
||
column.put("unit", "");
|
||
if("overtime_nonleave".equalsIgnoreCase(id)){
|
||
fieldlabel = "125805";
|
||
}else if("overtime_4leave".equalsIgnoreCase(id)){
|
||
fieldlabel = "125804";
|
||
}else{
|
||
fieldlabel = "523";
|
||
column.put("showDetial","1");
|
||
String unitType = (KQOvertimeRulesBiz.getMinimumUnit()==3 || KQOvertimeRulesBiz.getMinimumUnit()==5 ||KQOvertimeRulesBiz.getMinimumUnit()==6)?"2":"1";
|
||
String unitTypeName = "";
|
||
if(Util.null2String(unitType).length()>0){
|
||
if(unitType.equals("1")){
|
||
unitTypeName=SystemEnv.getHtmlLabelName(1925, user.getLanguage());
|
||
}else if(unitType.equals("2")){
|
||
unitTypeName=SystemEnv.getHtmlLabelName(391, user.getLanguage());
|
||
}else if(unitType.equals("3")){
|
||
unitTypeName=SystemEnv.getHtmlLabelName(18083, user.getLanguage());
|
||
}
|
||
}
|
||
column.put("unit", unitTypeName);
|
||
}
|
||
column.put("title", SystemEnv.getHtmlLabelNames(fieldlabel, user.getLanguage()));
|
||
column.put("dataIndex", id);
|
||
column.put("key", id);
|
||
column.put("rowSpan", 1);
|
||
Map<String,Object> mapChildColumnInfo = getChildColumnsInfo(id, user);
|
||
int childWidth = 65;
|
||
List<Object> childColumns = (List<Object>)mapChildColumnInfo.get("childColumns");
|
||
if(childColumns.size()>0) {//跨列width取子列的width
|
||
column.put("children", childColumns);
|
||
childWidth = Util.getIntValue(Util.null2String(mapChildColumnInfo.get("sumChildColumnWidth")),65);
|
||
}
|
||
column.put("width", childWidth+"");
|
||
sumChildColumnWidth+=childWidth;
|
||
lsChildColumns.add(column);
|
||
}
|
||
}else{
|
||
KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo();
|
||
while (kqReportFieldComInfo.next()){
|
||
if(kqReportFieldComInfo.getParentid().equals(parentid)) {
|
||
if(!kqReportFieldComInfo.getReportType().equals("month"))continue;
|
||
column = new HashMap();
|
||
column.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()));
|
||
column.put("unit", KQReportBiz.getUnitType(kqReportFieldComInfo, user));
|
||
column.put("width", Util.getIntValue(kqReportFieldComInfo.getWidth()));
|
||
column.put("dataIndex", kqReportFieldComInfo.getFieldname());
|
||
column.put("key", kqReportFieldComInfo.getFieldname());
|
||
column.put("rowSpan", 1);
|
||
column.put("colSpan", 1);
|
||
column.put("showDetial",kqReportFieldComInfo.getShowDetial());
|
||
sumChildColumnWidth+=Util.getIntValue(kqReportFieldComInfo.getWidth());
|
||
lsChildColumns.add(column);
|
||
}
|
||
}
|
||
}
|
||
returnMap.put("childColumns",lsChildColumns);
|
||
returnMap.put("sumChildColumnWidth",sumChildColumnWidth);
|
||
return returnMap;
|
||
}
|
||
|
||
private List<Object> getCascadeKeyColumnsInfo(String cascadeKey, User user){
|
||
List<Object> lsChildColumns = new ArrayList<>();
|
||
if(Util.null2String(cascadeKey).length()==0){
|
||
return lsChildColumns;
|
||
}
|
||
Map<String,Object> column = null;
|
||
List<String> lsCascadeKey = Util.splitString2List(cascadeKey,",");
|
||
KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo();
|
||
for(int i=0;i<lsCascadeKey.size();i++){
|
||
kqReportFieldComInfo.setTofirstRow();
|
||
while (kqReportFieldComInfo.next()) {
|
||
if(!kqReportFieldComInfo.getReportType().equals("month"))continue;
|
||
if (kqReportFieldComInfo.getFieldname().equals(lsCascadeKey.get(i))){
|
||
column = new HashMap();
|
||
column.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()));
|
||
column.put("unit", KQReportBiz.getUnitType(kqReportFieldComInfo, user));
|
||
column.put("width", Util.getIntValue(kqReportFieldComInfo.getWidth()));
|
||
column.put("dataIndex", kqReportFieldComInfo.getFieldname());
|
||
column.put("key", kqReportFieldComInfo.getFieldname());
|
||
column.put("rowSpan", 1);
|
||
column.put("colSpan", 1);
|
||
column.put("showDetial",kqReportFieldComInfo.getShowDetial());
|
||
column.put("isSystem", kqReportFieldComInfo.getIsSystem());
|
||
lsChildColumns.add(column);
|
||
}
|
||
}
|
||
}
|
||
return lsChildColumns;
|
||
}
|
||
|
||
@Override
|
||
public BizLogContext getLogContext() {
|
||
return null;
|
||
}
|
||
|
||
|
||
|
||
public String getXcqts(String dateOri,String userId){
|
||
//本月第一天
|
||
String fromDate = TimeUtil.getMonthBeginDay(dateOri);
|
||
//本月最后一天
|
||
String toDate = TimeUtil.getMonthEndDay(dateOri);
|
||
Set<String> all = new HashSet<>();
|
||
all.add(fromDate);
|
||
List<String> back = days(fromDate,toDate);
|
||
all.addAll(back);
|
||
all.add(toDate);
|
||
|
||
BaseBean bb = new BaseBean();
|
||
//需出勤天数
|
||
Integer xcqtsAll = 0;
|
||
//考勤组大小周A
|
||
String dxzA = bb.getPropValue("jgKq_main","dxzA");
|
||
//考勤组大小周B
|
||
String dxzB = bb.getPropValue("jgKq_main","dxzB");
|
||
String rykqz = getCusFieldData(Integer.valueOf(userId),"field31",3);
|
||
|
||
for (String date : all) {
|
||
KQHolidaySetComInfo holidaySetComInfo = new KQHolidaySetComInfo();
|
||
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
|
||
/*获取考勤组的ID,因为考勤组有有效期,所以需要传入日期*/
|
||
String groupId = kqGroupMemberComInfo.getKQGroupId(userId, date);
|
||
String changeTypeNew = holidaySetComInfo.getChangeType(groupId, date);
|
||
String rzlxZdy = findRqlx(userId,date);
|
||
//日期类型,0是工作日、1是周六、2是周日
|
||
Integer rqlx = -1;
|
||
if("0".equals(rzlxZdy)){
|
||
rqlx = 0;
|
||
}else if("1".equals(rzlxZdy)){
|
||
rqlx = 1;
|
||
}else if("2".equals(rzlxZdy)){
|
||
rqlx = 2;
|
||
}else if(DateUtil.getWeek(date) == 6){
|
||
rqlx = 1;
|
||
}else if(DateUtil.getWeek(date) == 7){
|
||
rqlx = 2;
|
||
}else {
|
||
rqlx = 0;
|
||
}
|
||
Integer xcqts = 0;
|
||
if("4".equals(rykqz)){
|
||
//单休判断是不是周日,是的话不计
|
||
if(rqlx == 2){
|
||
xcqts = 0;
|
||
}else{
|
||
xcqts = 1;
|
||
}
|
||
}else if ("8".equals(rykqz)){
|
||
//双休判断是不是周六周日,是的话不计
|
||
if(rqlx == 1 || rqlx == 2){
|
||
xcqts = 0;
|
||
}else{
|
||
xcqts = 1;
|
||
}
|
||
}else if(dxzA.equals(rykqz) || dxzB.equals(rykqz)){
|
||
//双休判断是不是周六周日,是的话不计
|
||
if(rqlx == 2){
|
||
xcqts = 0;
|
||
}else if (rqlx == 1){
|
||
//周六是工作日的话计
|
||
if("2".equals(changeTypeNew)){
|
||
xcqts = 1;
|
||
}else{
|
||
xcqts = 0;
|
||
}
|
||
}else{
|
||
xcqts = 1;
|
||
}
|
||
}
|
||
xcqtsAll = xcqtsAll+xcqts;
|
||
}
|
||
|
||
return String.valueOf(xcqtsAll);
|
||
}
|
||
|
||
/**
|
||
* 获取两个日期之间所有的日期
|
||
* @param date1
|
||
* @param date2
|
||
* @return
|
||
*/
|
||
public static ArrayList days(String date1, String date2) {
|
||
String dateFormat = "yyyy-MM-dd";
|
||
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
|
||
ArrayList L = new ArrayList();
|
||
if (date1.equals(date2)) {
|
||
System.out.println("两个日期相等!");
|
||
return L;
|
||
}
|
||
|
||
String tmp;
|
||
if (date1.compareTo(date2) > 0) { // 确保 date1的日期不晚于date2
|
||
tmp = date1;
|
||
date1 = date2;
|
||
date2 = tmp;
|
||
}
|
||
|
||
tmp = format.format(str2Date(date1).getTime() + 3600 * 24 * 1000);
|
||
|
||
int num = 0;
|
||
while (tmp.compareTo(date2) < 0) {
|
||
L.add(tmp);
|
||
num++;
|
||
tmp = format.format(str2Date(tmp).getTime() + 3600 * 24 * 1000);
|
||
}
|
||
|
||
if (num == 0)
|
||
System.out.println("两个日期相邻!");
|
||
return L;
|
||
}
|
||
|
||
private static Date str2Date(String str) {
|
||
String dateFormat = "yyyy-MM-dd";
|
||
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
|
||
if (str == null)
|
||
return null;
|
||
|
||
try {
|
||
return format.parse(str);
|
||
} catch (ParseException e) {
|
||
e.printStackTrace();
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/**
|
||
* 自定义日期类型判断
|
||
* @param userId
|
||
* @param date
|
||
* @return
|
||
*/
|
||
public static String findRqlx(String userId,String date){
|
||
RecordSet rs = new RecordSet();
|
||
String sql = "select rqlx from uf_rqzdygs where CONCAT(xm,',') like('%"+userId+",%') and rq = '"+date+"'";
|
||
rs.executeQuery(sql);
|
||
String rqlx = "-1";
|
||
if(rs.next()){
|
||
rqlx = Util.null2String(rs.getString("rqlx"));
|
||
}
|
||
return StringUtils.isBlank(rqlx)?"-1":rqlx;
|
||
|
||
}
|
||
|
||
/**
|
||
* 查询自定义字段的值
|
||
* @param id
|
||
* @param fieldname
|
||
* @param scopeid
|
||
* @return
|
||
*/
|
||
public static String getCusFieldData(Integer id,String fieldname,int scopeid){
|
||
String fieldVal = "";
|
||
RecordSet rs = new RecordSet();
|
||
String sql = "select "+fieldname+" from cus_fielddata where id=? and scopeid=? and scope='HrmCustomFieldByInfoType' ";
|
||
rs.executeQuery(sql,id,scopeid);
|
||
if(rs.next()){
|
||
fieldVal = Util.null2String(rs.getString(fieldname));
|
||
}
|
||
return fieldVal;
|
||
}
|
||
|
||
}
|