821 lines
45 KiB
Plaintext
821 lines
45 KiB
Plaintext
<%@ page import="weaver.general.Util" %>
|
||
<%@ page import="weaver.conn.RecordSet" %>
|
||
<%@ page import="java.text.SimpleDateFormat" %>
|
||
<%@ page import="java.math.BigDecimal" %>
|
||
<%@ page import="org.apache.commons.lang.StringUtils" %>
|
||
<%@ page import="java.util.*" %>
|
||
<%@ page import="java.text.ParseException" %>
|
||
<%@ page import="java.time.format.DateTimeFormatter" %>
|
||
<%@ page import="java.time.LocalDate" %>
|
||
<%@ page import="weaver.hrm.*" %>
|
||
<%@ page import="weaver.hrm.company.SubCompanyComInfo" %>
|
||
<%@ page import="weaver.hrm.company.DepartmentComInfo" %>
|
||
<%@ page import="weaver.hrm.resource.ResourceComInfo" %>
|
||
<%@ page import="weaver.hrm.job.JobTitlesComInfo" %>
|
||
<%@ page import="com.alibaba.fastjson.JSONObject" %>
|
||
<%@ page import="com.alibaba.fastjson.JSON" %>
|
||
<%@ page import="weaver.general.TimeUtil" %>
|
||
<%@ page import="weaver.systeminfo.SystemEnv" %>
|
||
<%@ page import="weaver.common.DateUtil" %>
|
||
<%@ page import="com.engine.kq.biz.*" %>
|
||
<%@ page import="com.google.common.collect.Lists" %>
|
||
<%@ page import="com.engine.kq.util.*" %>
|
||
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
|
||
<jsp:useBean id="rst" class="weaver.conn.RecordSet" scope="page" />
|
||
<%
|
||
int sum = 0;
|
||
|
||
String fromDate = request.getParameter("fromdate");
|
||
String toDate = request.getParameter("todate");
|
||
String userid = request.getParameter("userid");
|
||
|
||
Map<String, Object> retmap = new HashMap<String, Object>();
|
||
Map<String, Object> titlemap = new HashMap<String, Object>();
|
||
|
||
User user = HrmUserVarify.getUser(request,response);
|
||
|
||
String sql = "";
|
||
//分部id
|
||
String subcomid = ""+user.getUserSubCompany1();
|
||
|
||
boolean isKqReportHalfOpen = "1".equals(new KQSettingsComInfo().getMain_val("kq_report_half"));
|
||
|
||
List<String> lsFieldDataKey = new ArrayList<>();
|
||
try {
|
||
SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo();
|
||
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
|
||
ResourceComInfo resourceComInfo = new ResourceComInfo();
|
||
JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo();
|
||
KQLeaveRulesBiz kqLeaveRulesBiz = new KQLeaveRulesBiz();
|
||
KQSettingsComInfo kqSettingsComInfo = new KQSettingsComInfo();
|
||
String leavetype_is_on = Util.null2String(kqSettingsComInfo.getMain_val("leavetype_is_on"),"0");
|
||
|
||
String rightSql = new KQReportBiz().getReportRight("1", "" + user.getUID(), "a");
|
||
|
||
LinkedHashMap<String, Object> workbook = new LinkedHashMap<>();
|
||
List<Object> lsSheet = new ArrayList<>();
|
||
Map<String, Object> sheet = null;
|
||
List<Object> titleList = new ArrayList<>();
|
||
Map<String, Object> title = null;
|
||
List<List<Object>> dataList = new ArrayList<>();
|
||
List<Object> data = null;
|
||
List<Map<String, Object>> constraintList = null;
|
||
|
||
sheet = new HashMap<>();
|
||
sheet.put("sheetName", SystemEnv.getHtmlLabelName(390351, user.getLanguage()));
|
||
sheet.put("sheetTitle", SystemEnv.getHtmlLabelName(390351, user.getLanguage()));
|
||
boolean isEnd = false;
|
||
Calendar cal = DateUtil.getCalendar();
|
||
|
||
List<Map<String, Object>> leaveRules = kqLeaveRulesBiz.getAllLeaveRules();
|
||
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;
|
||
}
|
||
title = new HashMap<>();
|
||
String unitType = KQReportBiz.getUnitType(kqReportFieldComInfo, user);
|
||
if(unitType.length()>0){
|
||
title.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage())+ "(" + unitType + ")");
|
||
}else{
|
||
title.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()));
|
||
}
|
||
title.put("width", 30 * 256);
|
||
lsFieldDataKey.add(kqReportFieldComInfo.getFieldname());
|
||
//集团总部的人,深圳分公司
|
||
if("3".equals(subcomid)){
|
||
if("ydpbbzts".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"ydpbbzgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"qkcs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bzcqts".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bzcqgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"nightSerial".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"workDayAndHour".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"actualDayAndHour".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"fdjjrjbsc".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"byjbgsoncall".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"zmjbgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"byjbgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bytxgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"jbljgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"workdays".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"workmins".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendancedays".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendanceMins".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"leave".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_4".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_5".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_13".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_14".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_15".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"officialBusiness".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"businessLeave".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"overtime".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"forgotCheck".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveLeaveEarlyMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveLeaveEarly".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveEarlyMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveEearly".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveBeLateMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveBeLate".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"beLateMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"beLate".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"absenteeism".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendanceSerial".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"quanqin".equals(kqReportFieldComInfo.getFieldname())){
|
||
continue;
|
||
}
|
||
}else{
|
||
if("jbgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"jbts".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"sjcqts".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"sjcqgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"chuchai".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"zmjb".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"fdjb".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"yd5bjb".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"qingjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"tiaoxiu".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"workdays".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"workmins".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendancedays".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendanceMins".equalsIgnoreCase(kqReportFieldComInfo.getFieldname()) ||
|
||
"bzgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bydygs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"byktxgs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bysygs".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"qkcsam".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"qkcspm".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_4".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_5".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_13".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_14".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveType_15".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"overtime".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
// "forgotCheck".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveLeaveEarlyMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveLeaveEarly".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveEarlyMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"leaveEearly".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveBeLateMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"graveBeLate".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"beLateMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"beLate".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"absenteeismMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendanceSerial".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"signmins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendanceMins".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"shijia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"nianjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"bingjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"hunjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"sangjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"chanjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"peichanjia".equals(kqReportFieldComInfo.getFieldname()) ||
|
||
"attendancedays".equals(kqReportFieldComInfo.getFieldname())){
|
||
continue;
|
||
}
|
||
}
|
||
titleList.add(title);
|
||
|
||
titlemap.put(kqReportFieldComInfo.getFieldname(),kqReportFieldComInfo.getFieldname());
|
||
}
|
||
|
||
String today = DateUtil.getCurrentDate();
|
||
|
||
sheet.put("titleList", titleList);
|
||
|
||
// 没有权限的人最大只支持查询本季
|
||
Map<String, String> getRealDate = new KQReportBiz().realDate(fromDate, toDate, user, "1");
|
||
fromDate = getRealDate.get("fromDate");
|
||
toDate = getRealDate.get("toDate");
|
||
if("-1".equals(fromDate) || "-1".equals(toDate)) {
|
||
retmap.put("status", "1");
|
||
}
|
||
|
||
List<List> paramLists = new ArrayList<>();
|
||
List<Object> paramList = null;
|
||
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"));
|
||
String backFields = " 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 ";
|
||
|
||
String orderBy = " order by a.dsporder asc, a.lastname asc ";
|
||
String descOrderBy = " order by a.dsporder desc, a.lastname desc ";
|
||
sql = "select " + backFields + sqlFrom + sqlWhere + groupBy + orderBy;
|
||
|
||
//System.out.println("start" + DateUtil.getFullDate());
|
||
|
||
|
||
String show_card_source = Util.null2String(kqSettingsComInfo.getMain_val("show_card_source"),"0");//是否显示打卡数据,以及打卡数据来源
|
||
KQOvertimeRulesBiz kqOvertimeRulesBiz = new KQOvertimeRulesBiz();
|
||
int uintType = kqOvertimeRulesBiz.getMinimumUnit();//当前加班单位
|
||
double hoursToDay = kqOvertimeRulesBiz.getHoursToDay();//当前天跟小时计算关系
|
||
//System.out.println("end" + DateUtil.getFullDate());
|
||
|
||
// #1475814-概述:满足考勤报分部部门显示及导出时显示全路径
|
||
String fullPathMainKey = "show_full_path";
|
||
String isShowFullPath = Util.null2String(kqSettingsComInfo.getMain_val(fullPathMainKey),"0");
|
||
|
||
rs.executeQuery(sql, paramLists);
|
||
int calIndex = -1;
|
||
while (rs.next()) {
|
||
data = new ArrayList<>();
|
||
String id = rs.getString("id");
|
||
for (int fieldDataKeyIdx =0;fieldDataKeyIdx<lsFieldDataKey.size();fieldDataKeyIdx++) {
|
||
String fieldName = lsFieldDataKey.get(fieldDataKeyIdx);
|
||
String fieldid = KQReportFieldComInfo.field2Id.get(fieldName);
|
||
String fieldValue = "";
|
||
//集团总部的人,深圳分公司
|
||
if("3".equals(subcomid)){
|
||
if("ydpbbzts".equals(fieldName) ||
|
||
"ydpbbzgs".equals(fieldName) ||
|
||
"qkcs".equals(fieldName) ||
|
||
"bzcqts".equals(fieldName) ||
|
||
"bzcqgs".equals(fieldName) ||
|
||
"nightSerial".equals(fieldName) ||
|
||
"workDayAndHour".equals(fieldName) ||
|
||
"actualDayAndHour".equals(fieldName) ||
|
||
"fdjjrjbsc".equals(fieldName) ||
|
||
"byjbgsoncall".equals(fieldName) ||
|
||
"zmjbgs".equals(fieldName) ||
|
||
"byjbgs".equals(fieldName) ||
|
||
"bytxgs".equals(fieldName) ||
|
||
"jbljgs".equals(fieldName) ||
|
||
"workdays".equalsIgnoreCase(fieldName) ||
|
||
"workmins".equalsIgnoreCase(fieldName) ||
|
||
"attendancedays".equalsIgnoreCase(fieldName) ||
|
||
"attendanceMins".equalsIgnoreCase(fieldName) ||
|
||
"leave".equals(fieldName) ||
|
||
"leaveType_4".equals(fieldName) ||
|
||
"leaveType_5".equals(fieldName) ||
|
||
"leaveType_13".equals(fieldName) ||
|
||
"leaveType_14".equals(fieldName) ||
|
||
"leaveType_15".equals(fieldName) ||
|
||
"officialBusiness".equals(fieldName) ||
|
||
"businessLeave".equals(fieldName) ||
|
||
"overtime".equals(fieldName) ||
|
||
"forgotCheck".equals(fieldName) ||
|
||
"graveLeaveEarlyMins".equals(fieldName) ||
|
||
"graveLeaveEarly".equals(fieldName) ||
|
||
"leaveEarlyMins".equals(fieldName) ||
|
||
"leaveEearly".equals(fieldName) ||
|
||
"graveBeLateMins".equals(fieldName) ||
|
||
"graveBeLate".equals(fieldName) ||
|
||
"beLateMins".equals(fieldName) ||
|
||
"beLate".equals(fieldName) ||
|
||
"absenteeism".equals(fieldName) ||
|
||
"attendanceSerial".equals(fieldName) ||
|
||
"quanqin".equals(fieldName)){
|
||
continue;
|
||
}
|
||
//事假 假期类型id
|
||
String leaveabsencetype = rs.getPropValue("lwgd_kqreport","leaveabsencetype");
|
||
//年假 假期类型id
|
||
String annualleavetype = rs.getPropValue("lwgd_kqreport","annualleavetype");
|
||
//病假 假期类型id
|
||
String sickleavetype = rs.getPropValue("lwgd_kqreport","sickleavetype");
|
||
//婚假 假期类型id
|
||
String marriageleavetype = rs.getPropValue("lwgd_kqreport","marriageleavetype");
|
||
//丧假 假期类型id
|
||
String bereavementleavetype = rs.getPropValue("lwgd_kqreport","bereavementleavetype");
|
||
//产假 假期类型id
|
||
String maternityleavetype = rs.getPropValue("lwgd_kqreport","maternityleavetype");
|
||
//陪产假 假期类型id
|
||
String paternityleavetype = rs.getPropValue("lwgd_kqreport","paternityleavetype");
|
||
|
||
//迟到/早退30分钟以内
|
||
if (fieldName.equals("beLateLeaveEearly30")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getBeLateLeaveEearly30(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//迟到/早退30分钟以上
|
||
else if (fieldName.equals("beLateLeaveEearly30More")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getBeLateLeaveEearly30More(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//签卡(次数)-am
|
||
else if (fieldName.equals("qkcsam")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getQkcsam(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//签卡(次数)-pm
|
||
else if (fieldName.equals("qkcspm")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getQkcspm(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//事假
|
||
else if (fieldName.equals("shijia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(leaveabsencetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//年假
|
||
else if (fieldName.equals("nianjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(annualleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//病假
|
||
else if (fieldName.equals("bingjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(sickleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//婚假
|
||
else if (fieldName.equals("hunjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(marriageleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//丧假
|
||
else if (fieldName.equals("sangjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(bereavementleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//产假
|
||
else if (fieldName.equals("chanjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(maternityleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//陪产假
|
||
else if (fieldName.equals("peichanjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getLeaveDaysByType(paternityleavetype, fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//加班工时
|
||
else if (fieldName.equals("jbgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getJbgs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//加班天数
|
||
else if (fieldName.equals("jbts")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getJbts(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//实际出勤天数
|
||
else if (fieldName.equals("sjcqts")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getSjcqts(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//实际出勤工时
|
||
else if (fieldName.equals("sjcqgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getSjcqgs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//周末加班
|
||
else if (fieldName.equals("zmjb")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getZmjb(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//法定加班
|
||
else if (fieldName.equals("fdjb")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getFdjb(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//1.5倍加班
|
||
else if (fieldName.equals("yd5bjb")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getYd5bjb(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//请假(H)
|
||
else if (fieldName.equals("qingjia")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getQingjiaH(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//调休(H)
|
||
else if (fieldName.equals("tiaoxiu")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getTiaoxiuH(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//标准工时
|
||
else if (fieldName.equals("bzgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getBzgs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月多余工时
|
||
else if (fieldName.equals("bydygs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getBydygs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//上月加班结余工时
|
||
else if (fieldName.equals("syjbjygs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getSyjbjygs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月可调休工时
|
||
else if (fieldName.equals("byktxgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getByktxgs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月剩余工时
|
||
else if (fieldName.equals("bysygs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(SzLwgdKqUtil.getBysygs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
}else {
|
||
if("jbgs".equals(fieldName) ||
|
||
"jbts".equals(fieldName) ||
|
||
"sjcqts".equals(fieldName) ||
|
||
"sjcqgs".equals(fieldName) ||
|
||
"chuchai".equals(fieldName) ||
|
||
"zmjb".equals(fieldName) ||
|
||
"fdjb".equals(fieldName) ||
|
||
"yd5bjb".equals(fieldName) ||
|
||
"qingjia".equals(fieldName) ||
|
||
"tiaoxiu".equals(fieldName) ||
|
||
"bzgs".equals(fieldName) ||
|
||
"bydygs".equals(fieldName) ||
|
||
"byktxgs".equals(fieldName) ||
|
||
"bysygs".equals(fieldName) ||
|
||
"workdays".equalsIgnoreCase(fieldName) ||
|
||
"workmins".equalsIgnoreCase(fieldName) ||
|
||
"leaveType_4".equals(fieldName) ||
|
||
"leaveType_5".equals(fieldName) ||
|
||
"leaveType_13".equals(fieldName) ||
|
||
"leaveType_14".equals(fieldName) ||
|
||
"leaveType_15".equals(fieldName) ||
|
||
"overtime".equals(fieldName) ||
|
||
// "forgotCheck".equals(fieldName) ||
|
||
"graveLeaveEarlyMins".equals(fieldName) ||
|
||
"graveLeaveEarly".equals(fieldName) ||
|
||
"leaveEarlyMins".equals(fieldName) ||
|
||
"leaveEearly".equals(fieldName) ||
|
||
"graveBeLateMins".equals(fieldName) ||
|
||
"graveBeLate".equals(fieldName) ||
|
||
"beLateMins".equals(fieldName) ||
|
||
"beLate".equals(fieldName) ||
|
||
"absenteeismMins".equals(fieldName) ||
|
||
"attendanceSerial".equals(fieldName) ||
|
||
"signmins".equals(fieldName) ||
|
||
"attendanceMins".equals(fieldName) ||
|
||
"shijia".equals(fieldName) ||
|
||
"nianjia".equals(fieldName) ||
|
||
"bingjia".equals(fieldName) ||
|
||
"hunjia".equals(fieldName) ||
|
||
"sangjia".equals(fieldName) ||
|
||
"chanjia".equals(fieldName) ||
|
||
"peichanjia".equals(fieldName) ||
|
||
"attendancedays".equals(fieldName)){
|
||
continue;
|
||
}
|
||
//月度排班标准天数
|
||
if (fieldName.equals("ydpbbzts")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(LwgdKqUtil.getYdpbbzts(fromDate, toDate, id));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//月度排班标准工时
|
||
else if (fieldName.equals("ydpbbzgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(LwgdKqUtil.getYdpbbzgs(fromDate, toDate, id));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//迟到/早退30分钟以内
|
||
else if (fieldName.equals("beLateLeaveEearly30")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getBeLateLeaveEearly30(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//迟到/早退30分钟以上
|
||
else if (fieldName.equals("beLateLeaveEearly30More")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getBeLateLeaveEearly30More(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
// //签卡(次数)-am
|
||
// else if (fieldName.equals("qkcsam")) {
|
||
// fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getQkcsam(fromDate, toDate, id)));
|
||
// data.add(fieldValue);
|
||
// continue;
|
||
// }
|
||
// //签卡(次数)-pm
|
||
// else if (fieldName.equals("qkcspm")) {
|
||
// fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getQkcspm(fromDate, toDate, id)));
|
||
// data.add(fieldValue);
|
||
// continue;
|
||
// }
|
||
//签卡(次数)
|
||
else if (fieldName.equals("qkcs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getQkcs(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//标准出勤天数
|
||
else if (fieldName.equals("bzcqts")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(LwgdKqUtil.getBzcqts(fromDate, toDate, id));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//标准出勤工时
|
||
else if (fieldName.equals("bzcqgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(LwgdKqUtil.getBzcqgs(fromDate, toDate, id));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//夜班
|
||
else if (fieldName.equals("nightSerial")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getNightSerial(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//应出勤天数/工时
|
||
else if (fieldName.equals("workDayAndHour")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getWorkDayAndHour(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//实际出勤天数/工时
|
||
else if (fieldName.equals("actualDayAndHour")) {
|
||
fieldValue = LwgdKqUtil.getActualDayAndHour(fromDate,toDate,id);
|
||
// fieldValue = KQDurationCalculatorUtil.getDurationRound("0");
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//法定节假日加班工时
|
||
else if (fieldName.equals("fdjjrjbsc")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getFdjjrjbsc(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月加班工时/ONCALL工时
|
||
else if (fieldName.equals("byjbgsoncall")) {
|
||
// fieldValue = LwgdKqUtil.getOvertimeHourThisMonth(fromDate,toDate,id);
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound("0");
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//周末加班工时
|
||
else if (fieldName.equals("zmjbgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getWeekendOverHour(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月加班工时
|
||
else if (fieldName.equals("byjbgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getOvertimeHour(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//本月调休工时
|
||
else if (fieldName.equals("bytxgs")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(String.valueOf(LwgdKqUtil.getCompensatoryleaveHour(fromDate, toDate, id)));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//上月加班结余工时
|
||
else if (fieldName.equals("syjbjygs")) {
|
||
// fieldValue = LwgdKqUtil.getLastOverHour(fromDate,toDate,id);
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(KQDurationCalculatorUtil.getDurationRound("0"));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//加班累计工时
|
||
else if (fieldName.equals("jbljgs")) {
|
||
// fieldValue = LwgdKqUtil.getOverTotalHour(fromDate,toDate,id);
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(KQDurationCalculatorUtil.getDurationRound("0"));
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//全勤
|
||
else if (fieldName.equals("quanqin")) {
|
||
fieldValue = LwgdKqUtil.getPerfectAttendance(fromDate, toDate, id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
}
|
||
|
||
|
||
if (fieldName.equals("subcompany")) {
|
||
String tmpSubcompanyId = Util.null2String(rs.getString("subcompanyid"));
|
||
if (tmpSubcompanyId.length() == 0) {
|
||
tmpSubcompanyId = Util.null2String(resourceComInfo.getSubCompanyID(id));
|
||
}
|
||
|
||
fieldValue = "1".equals(isShowFullPath) ?
|
||
SubCompanyComInfo.getSubcompanyRealPath(tmpSubcompanyId, "/", "0") :
|
||
subCompanyComInfo.getSubCompanyname(tmpSubcompanyId);
|
||
|
||
// fieldValue = subCompanyComInfo.getSubCompanyname(tmpSubcompanyId);
|
||
}
|
||
//工时制度
|
||
else if (fieldName.equals("gszd")) {
|
||
fieldValue = LwgdKqUtil.getGszdName(id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//岗位
|
||
else if (fieldName.equals("gw")) {
|
||
fieldValue = LwgdKqUtil.getNewGw(id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//入职日期
|
||
else if (fieldName.equals("rzrq")) {
|
||
fieldValue = LwgdKqUtil.getRzrq(id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//调动日期
|
||
else if (fieldName.equals("ddrq")) {
|
||
fieldValue = LwgdKqUtil.getTransferDate(id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
//离职日期
|
||
else if (fieldName.equals("lzrq")) {
|
||
fieldValue = LwgdKqUtil.getLzrq(id);
|
||
data.add(fieldValue);
|
||
continue;
|
||
}
|
||
else if (fieldName.equals("department")) {
|
||
String tmpDepartmentId = Util.null2String(rs.getString("departmentid"));
|
||
if (tmpDepartmentId.length() == 0) {
|
||
tmpDepartmentId = Util.null2String(resourceComInfo.getDepartmentID(id));
|
||
}
|
||
|
||
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));
|
||
// }
|
||
// fieldValue = jobTitlesComInfo.getJobTitlesname(tmpJobtitleId);
|
||
// } else if (fieldName.equals("attendanceSerial")) {
|
||
// 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++){
|
||
// data.add(kqReportBiz.getSerialCount(id,fromDate,toDate,serialIds.get(i)));
|
||
// }
|
||
// }else{
|
||
// data.add("");
|
||
// }
|
||
// continue;
|
||
// }
|
||
|
||
else if(Util.null2String(kqReportFieldComInfo.getCascadekey(fieldid)).length()>0){
|
||
fieldValue = Util.formatMultiLang(Util.null2String(rs.getString(fieldName)),""+user.getLanguage());
|
||
data.add(fieldValue);
|
||
|
||
List<String> lsCascadekey = Util.splitString2List(kqReportFieldComInfo.getCascadekey(fieldid),",");
|
||
for(int i=0;i<lsCascadekey.size();i++){
|
||
if(Util.null2String(rs.getString(lsCascadekey.get(i))).length()>0){
|
||
fieldid = KQReportFieldComInfo.field2Id.get(lsCascadekey.get(i));
|
||
fieldValue = getFieldValueByUnitType(rs.getString(lsCascadekey.get(i)),kqReportFieldComInfo.getUnittype(fieldid));
|
||
}else{
|
||
fieldValue = "0";
|
||
}
|
||
data.add(fieldValue);
|
||
}
|
||
continue;
|
||
}else {
|
||
fieldValue = Util.formatMultiLang(Util.null2String(rs.getString(fieldName)),""+user.getLanguage());
|
||
fieldValue = getFieldValueByUnitType(fieldValue,kqReportFieldComInfo.getUnittype(fieldid));
|
||
}
|
||
fieldValue = Util.formatMultiLang(fieldValue,""+user.getLanguage());
|
||
data.add(fieldValue);
|
||
}
|
||
|
||
List<Object> amData = Lists.newArrayList();
|
||
List<Object> pmData = Lists.newArrayList();
|
||
if(isKqReportHalfOpen) {
|
||
amData.addAll(data);
|
||
pmData.addAll(data);
|
||
calIndex = data.size();
|
||
}
|
||
|
||
if(isKqReportHalfOpen) {
|
||
dataList.add(amData);
|
||
dataList.add(pmData);
|
||
} else {
|
||
dataList.add(data);
|
||
}
|
||
}
|
||
sheet.put("dataList", dataList);
|
||
if(isKqReportHalfOpen) {
|
||
sheet.put("calIndex", calIndex);
|
||
}
|
||
sheet.put("constraintList", constraintList);
|
||
sheet.put("createFile", "1");
|
||
lsSheet.add(sheet);
|
||
|
||
retmap.put("status", "1");
|
||
} catch (Exception e) {
|
||
retmap.put("status", "-1");
|
||
retmap.put("message", SystemEnv.getHtmlLabelName(382661, user.getLanguage()));
|
||
rs.writeLog(e);
|
||
}
|
||
|
||
sum++;
|
||
%>
|
||
|
||
<%!
|
||
|
||
|
||
private List<Object> getCascadeKeyColumnsInfo(String cascadeKey, User user){
|
||
List<Object> titleList = new ArrayList<>();
|
||
Map<String, Object> title = null;
|
||
if(Util.null2String(cascadeKey).length()==0){
|
||
return titleList;
|
||
}
|
||
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))){
|
||
title = new HashMap<>();
|
||
title.put("title", SystemEnv.getHtmlLabelNames(kqReportFieldComInfo.getFieldlabel(), user.getLanguage()) + "(" + KQReportBiz.getUnitType(kqReportFieldComInfo, user) + ")");
|
||
title.put("width", 30 * 256);
|
||
|
||
titleList.add(title);
|
||
}
|
||
}
|
||
}
|
||
return titleList;
|
||
}
|
||
|
||
private String getFieldValueByUnitType(String fieldValue,String unittype){
|
||
if (Util.null2String(unittype).length() > 0) {
|
||
if (fieldValue.length() == 0) {
|
||
fieldValue = "0";
|
||
} else {
|
||
if (unittype.equals("2")) {
|
||
fieldValue = KQDurationCalculatorUtil.getDurationRound(("" + (Util.getDoubleValue(fieldValue) / 60.0)));
|
||
}
|
||
}
|
||
}
|
||
return fieldValue;
|
||
}
|
||
%>
|
||
|
||
<BODY>
|
||
|
||
<h1>Congratulation Mode 666666 !</h1>
|
||
|
||
<h1> sum <%=sum%> </h1>
|
||
|
||
<h1> titlemap <%=titlemap%> </h1>
|
||
|
||
<h1> retmap <%=retmap%> </h1>
|
||
|
||
|
||
</BODY> |