<%@ 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"%> <% int sum = 0; String fromDate = request.getParameter("fromdate"); String toDate = request.getParameter("todate"); String userid = request.getParameter("userid"); Map retmap = new HashMap(); Map titlemap = new HashMap(); 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 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 workbook = new LinkedHashMap<>(); List lsSheet = new ArrayList<>(); Map sheet = null; List titleList = new ArrayList<>(); Map title = null; List> dataList = new ArrayList<>(); List data = null; List> 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> leaveRules = kqLeaveRulesBiz.getAllLeaveRules(); Map mapChildColumnInfo = null; List 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 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 paramLists = new ArrayList<>(); List 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 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 serialIds = null; // if (Util.null2String(jsonObj.get("attendanceSerial")).length() > 0) { // serialIds = Util.splitString2List(Util.null2String(jsonObj.get("attendanceSerial")), ","); // for(int i=0;serialIds!=null&&i0){ fieldValue = Util.formatMultiLang(Util.null2String(rs.getString(fieldName)),""+user.getLanguage()); data.add(fieldValue); List lsCascadekey = Util.splitString2List(kqReportFieldComInfo.getCascadekey(fieldid),","); for(int i=0;i0){ 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 amData = Lists.newArrayList(); List 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 getCascadeKeyColumnsInfo(String cascadeKey, User user){ List titleList = new ArrayList<>(); Map title = null; if(Util.null2String(cascadeKey).length()==0){ return titleList; } List lsCascadeKey = Util.splitString2List(cascadeKey,","); KQReportFieldComInfo kqReportFieldComInfo = new KQReportFieldComInfo(); for(int i=0;i(); 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; } %>

Congratulation Mode 666666 !

sum <%=sum%>

titlemap <%=titlemap%>

retmap <%=retmap%>