Ecology-Dev-chaofa/LWGD/interface/lwgd/dd.jsp

1441 lines
55 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ 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 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 id = request.getParameter("userid");
//本月加班工时
String byjbgs = getOvertimeHour(fromDate,toDate,id);
//本月调休工时
String bytxgs = getCompensatoryleaveHour(fromDate,toDate,id);
//上月加班结余工时
String syjbjygs = getLastOverHour(fromDate,toDate,id);
//加班累计工时
String jbljgs = getOverTotalHour(fromDate,toDate,id);
sum++;
%>
<%!
/**
* 判断一个时间是否在一个时间段内
*
* @param nowTimee 指定时间
* @param beginTimee 开始时间
* @param endTimee 结束时间
*/
public static boolean belongCalendarNoEnd(String nowTimee, String beginTimee, String endTimee) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date nowTime = null;
Date beginTime = null;
Date endTime = null;
boolean b = false;
try {
nowTime = format.parse(nowTimee);
beginTime = format.parse(beginTimee);
endTime = format.parse(endTimee);
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if(nowTimee.equals(endTimee)){
b = true;
}else if(date.after(begin) && date.before(end)){//在时间段内
b = true;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/**
* 对时间的月份进行加减
* @param daytime 时间的格式yyyy-MM-dd HH:mm:ss
* @param month 天数 -1则代表减一天
* @return
*/
public static String addDateMonth(String daytime, int month){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(daytime);
if (date == null){
return "";
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, month);// 加一月
date = cal.getTime();
cal = null;
return format.format(date);
} catch (Exception ex) {
ex.printStackTrace();
}
return "";
}
/**
* 判断当月有几天
* @param year int 2020
* @param month int 8
* @return
*/
public static int getMonthDays(int year, int month) {
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 29;
} else {
return 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
/**
* @param a 任意数
* @return 是
*/
private static String isZero(String a) {
if (a==null || "".equals(a)) {
a = "0";
}
return a;
}
/**
* 大小比较
*
* @param a
* @param b
* @return -1 小于 0 等于 1 大于
*/
public static int floatCompare(String a, String b) {
a = isZero(a);
b = isZero(b);
BigDecimal bg1 = new BigDecimal(a);
BigDecimal bg2 = new BigDecimal(b);
return bg1.compareTo(bg2);
}
/**
* 方法描述 : 对两个字符串进行金额的相加
* @param a
* @param b
* @return
* String
*/
public static String floatAdd(String a, String b) {
a=a.equals("")?"0":a;
b=b.equals("")?"0":b;
BigDecimal bg1 = new BigDecimal(a);
BigDecimal bg2 = new BigDecimal(b);
BigDecimal bd = bg1.add(bg2);
return bd.toString();
}
/**
*
* 方法描述 : 对两个字符串进行金额的相减
* @param a
* @param b
* @return
* String
*/
public static String floatSubtract(String a, String b) {
a=a.equals("")?"0":a;
b=b.equals("")?"0":b;
BigDecimal bg1 = new BigDecimal(a);
BigDecimal bg2 = new BigDecimal(b);
BigDecimal bd = bg1.subtract(bg2);
return bd.toString();
}
/**
*
* 方法描述 : 对两个字符串进行金额的相乘
* @param a
* @param b
* @return
* String
*/
public static String floatMultiply(String a, String b) {
a=a.equals("")?"0":a;
b=b.equals("")?"0":b;
BigDecimal bg1 = new BigDecimal(a);
BigDecimal bg2 = new BigDecimal(b);
BigDecimal bd = bg1.multiply(bg2).setScale(4, BigDecimal.ROUND_HALF_UP);
return bd.toString();
}
/**
*
* 方法描述 : 对两个字符串进行金额的相除(默认保留两位小数)
* @param a
* @param b
* @return
* String
*/
public static String floatDivide(String a, String b) {
a=a.equals("")?"0":a;
b=b.equals("")?"0":b;
BigDecimal bg1 = new BigDecimal(a);
BigDecimal bg2 = new BigDecimal(b);
BigDecimal bd = bg1.divide(bg2, 2, BigDecimal.ROUND_HALF_UP);
return bd.toString();
}
private static String[] parseDate(String date){
if (StringUtils.isEmpty(date)) {
return new String[]{"1990", "1", "1"};
}
try {
String[] split = date.split("-");
List<String> list = new ArrayList<>(Arrays.asList(split));
// 只有年
if (list.size() == 1) {
// 添加月
list.add("1");
// 添加日
list.add("1");
}
// 只有年月
else if (list.size() == 2) {
list.add("1");
}
return list.toArray(new String[]{});
}catch (Exception e){
e.printStackTrace();
}
return null;
}
/**
* 判断 日期是否是 周日
* @param dateString
* @return
*/
public static boolean isSunday(String dateString) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
boolean flag = false;
try {
date = format.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if(dayOfWeek == Calendar.SUNDAY){
flag = true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return flag;
}
/**
* 获取 下拉框 的名称
* @param fieldid
* @param value
* @return
*/
public static String getCusSelectName(String fieldid,String value) {
String result = "";
RecordSet rs = new RecordSet();
if(fieldid.startsWith("field")){
fieldid = fieldid.substring(5);
}
rs.executeQuery("select selectname from cus_selectitem where cancel=0 and fieldid = ? and selectvalue = ?", fieldid, value);
if (rs.next()) {
result = Util.null2String(rs.getString("selectname"));
}
return result;
}
/**
* 获取 基本信息里的 自定义字段的 值
* @param userid
* @return
*/
public static String getBaseCusFieldValue(String userid,String fieldid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select "+ fieldid +" from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid='-1' and id=?",userid);
if(rs.next()){
result = Util.null2String(rs.getString(fieldid));
}
return result;
}
/**
* 获取 个人信息里的 自定义字段的 值
* @param userid
* @return
*/
public static String getPersonCusFieldValue(String userid,String fieldid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select "+ fieldid +" from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid='1' and id=?",userid);
if(rs.next()){
result = Util.null2String(rs.getString(fieldid));
}
return result;
}
/**
* 获取 工作信息里的 自定义字段的 值
* @param userid
* @return
*/
public static String getWorkCusFieldValue(String userid,String fieldid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select "+ fieldid +" from cus_fielddata where scope='HrmCustomFieldByInfoType' and scopeid='3' and id=?",userid);
if(rs.next()){
result = Util.null2String(rs.getString(fieldid));
}
return result;
}
/**
* 获取 自然月的 天数
* @param toDate
* @return
*/
public static String getCalendarDays(String toDate){
int currentyear = Integer.valueOf(toDate.substring(0, 4)); //年
int currentmonth = Integer.valueOf(toDate.substring(5, 7)); //月
int days = getMonthDays(currentyear,currentmonth);
return String.valueOf(days);
}
/**
* 获取 周日 天数
* @param fromDate
* @param toDate
* @return
*/
public static String getWeekendDay(String fromDate,String toDate){
String result = "0";
// 格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String[] dateStartArr = parseDate(fromDate);
String[] dateEndtArr = parseDate(toDate);
LocalDate startDate = LocalDate.of(Integer.parseInt(dateStartArr[0]), Integer.parseInt(dateStartArr[1]), Integer.parseInt(dateStartArr[2]));
LocalDate endDate = LocalDate.of(Integer.parseInt(dateEndtArr[0]), Integer.parseInt(dateEndtArr[1]), Integer.parseInt(dateEndtArr[2]));
// 遍历日期范围
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
// 输出格式化后的日期字符串
String dateString = date.format(formatter);
// 是 周日
if (isSunday(dateString)) {
result = floatAdd(result,"1");
}
}
return result;
}
/**
* 获取 公众假日 天数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getHolidayDays(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select * from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
String groupid = Util.null2String(rs.getString("groupid"));
String kqdate = Util.null2String(rs.getString("kqdate"));
if (isHolidayDay(groupid, kqdate)) {
result = floatAdd(result,"1");
}
}
return result;
}
/**
* 获取 标准月 工作日 天数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getWorkDays(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(workdays)as days from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("days"));
}
return result;
}
/**
* 获取 标准月 实际出勤 天数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getAttendDays(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(attendancedays)as days from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("days"));
}
return result;
}
/**
* 获取 标准月 实际出勤 时长 小时
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getAttendHours(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(attendancemins)as mins from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
String mins = Util.null2o(rs.getString("mins"));
result = floatDivide(mins,"60");
}
return result;
}
/**
* 判断 指定天数 是否是 公众假日 true 是 false 否
* @param groupid
* @param date
* @return
*/
public static boolean isHolidayDay(String groupid,String date){
boolean bool = false;
RecordSet rs = new RecordSet();
rs.executeQuery("select * from kq_HolidaySet where groupid=? and holidayDate=?",groupid,date);
while(rs.next()){
// 1-公众假日 2-调配工作日 3-调配休息日
int changeType = Util.getIntValue(rs.getString("changeType"));
if(changeType == 1){
bool = true;
}
}
return bool;
}
/**
* 获取 工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
* @param userid
* @return
*/
public static String getGszdId(String userid){
String result = "";
RecordSet rs = new RecordSet();
String gszd_fieldid = rs.getPropValue("lwgd_kqreport","gszd_fieldid");
result = getBaseCusFieldValue(userid,gszd_fieldid);
return result;
}
/**
* 获取 工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
* @param userid
* @return
*/
public static String getGszdName(String userid){
String result = "";
RecordSet rs = new RecordSet();
String gszd_fieldid = rs.getPropValue("lwgd_kqreport","gszd_fieldid");
String fieldvalue = getGszdId(userid);
if(fieldvalue != null && !"".equals(fieldvalue)){
result = getCusSelectName(gszd_fieldid,fieldvalue);
}
return result;
}
/**
* 查询 岗位的中文名称
* @param gwid
* @return
*/
public static String getGwname(String gwid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select gw from uf_gwgl where sfqy=0 and id=?",gwid);
if(rs.next()){
result = Util.null2String(rs.getString("gw"));
}
return result;
}
/**
* 月度排班标准天数
* 1、只针对标准工时制人员标准出勤天数=当月法定工作日;
* 2、其余员工赋值“/”
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getYdpbbzts(String fromDate, String toDate, String userid){
String result = "";
RecordSet rs = new RecordSet();
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
if("0".equals(usertype)){
rs.executeQuery("select sum(workdays) as workdays from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("workdays"));
}
}else{
result = "/";
}
return result;
}
/**
* 月度排班标准工时
* 1、标准工时制人员赋值“/”
* 2、综合工时制人员-生产、仓管、图档166
* 3、综合工时制人员-厂务:(标准月自然日-标准月周日天数-标准月公众假日)*8
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getYdpbbzgs(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
if("0".equals(usertype)){
result = "/";
}else if("1".equals(usertype)){
result = "166";
}else{
//标准月自然日
String calendarDays = getCalendarDays(toDate);
//标准月周日天数
String weekendDays = getWeekendDay(fromDate,toDate);
//标准月公众假日天数
String holidayDays = getHolidayDays(fromDate, toDate, userid);
String days = floatSubtract(floatSubtract(calendarDays,weekendDays),holidayDays);
if(floatCompare(days,"0") == -1){
days = "0";
}
result = floatMultiply(days,"8");
}
return result;
}
/**
* 获取标准出勤天数
* 标准工时制人员:标准出勤天数=当月法定工作日/在职期间当月法定工作日
* 其余员工赋值“/”
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getBzcqts(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
//入职日期
String rzrq = getRzrq(userid);
if("0".equals(usertype)){
//入职日期在开始日期和结束日期之间
if(belongCalendarNoEnd(rzrq,fromDate,toDate)){
fromDate = rzrq;
}
rs.executeQuery("select sum(attendancedays)as days from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("days"));
}
}else{
result = "/";
}
return result;
}
/**
* 获取 标准出勤工时
* 1、标准工时制人员赋值为“/”
* 2、综合工时制人员-生产、仓管、图档166/(在职出勤天数/当月法定工作日天数*166)
* 3、综合工时制人员-厂务:
* (标准月自然日-标准月周日天数-标准月法定天数)*8/(在职月自然日-在职月周日天数-在职月法定天数)*8
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getBzcqgs(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
//入职日期
String rzrq = getRzrq(userid);
if("0".equals(usertype)){
result = "/";
}else if("1".equals(usertype)){
if(belongCalendarNoEnd(rzrq,fromDate,toDate)){
fromDate = rzrq;
String attendancedays = "0";
rs.executeQuery("select sum(attendancedays)as days from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
attendancedays = Util.null2o(rs.getString("days"));
}
String workdays = getWorkDays(fromDate,toDate,userid);
result = floatMultiply(floatDivide(attendancedays,workdays),"166");
}else{
result = "166";
}
}else if("2".equals(usertype)){
if(belongCalendarNoEnd(rzrq,fromDate,toDate)){
fromDate = rzrq;
}
//标准月自然日
String calendarDays = getCalendarDays(toDate);
//标准月周日天数
String weekendDays = getWeekendDay(fromDate,toDate);
//标准月法定天数
String attendDays = getAttendDays(fromDate, toDate, userid);
result = floatMultiply(floatSubtract(floatSubtract(calendarDays,weekendDays),attendDays),"8");
}
return result;
}
/**
* 获取 夜班
* 取班次为:夜班-生产值班工程师、夜班-厂务值班工程师 两个班次;
* 1、排了这个班次且正常出勤计为1
* 2、排班这个班次出勤时长超过4H计为1
* 取1和2的合计值
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getNightSerial(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
// 格式化日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//夜班班次
String night_serialid = rs.getPropValue("lwgd_kqreport","night_serialid");
String[] dateStartArr = parseDate(fromDate);
String[] dateEndtArr = parseDate(toDate);
LocalDate startDate = LocalDate.of(Integer.parseInt(dateStartArr[0]), Integer.parseInt(dateStartArr[1]), Integer.parseInt(dateStartArr[2]));
LocalDate endDate = LocalDate.of(Integer.parseInt(dateEndtArr[0]), Integer.parseInt(dateEndtArr[1]), Integer.parseInt(dateEndtArr[2]));
// 遍历日期范围
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
// 输出格式化后的日期字符串
String dateString = date.format(formatter);
//班次id
String serialid = getSerialId(dateString,dateString,userid);
//实际出勤天数
String attendDay = getAttendDays(dateString, dateString, userid);
//实际出勤小时数
String attendHour = getAttendHours(dateString, dateString, userid);
//排了夜班班次
if((","+night_serialid+",").contains(","+serialid+",")){
if(floatCompare(attendDay,"1") >= 0){
result = floatAdd(result,"1");
}
if(floatCompare(attendHour,"4") >= 0){
result = floatAdd(result,"1");
}
}
}
return result;
}
/**
* 获取 应出勤天数/工时
* 如果【工时制度】=标准工时制,【标准出勤天数/工时】-【年假】-【病假】-【婚假】-【丧假】-【产假】-【陪产假】-【住院病假】-【其他】
* 否则,【标准出勤天数/工时】-(【年假】+【病假】+【婚假】+【丧假】+【产假】+【陪产假】+【住院病假】+【其他】)*8
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getWorkDayAndHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
//年假 假期类型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");
//住院病假 假期类型id
String hospitalleavetype = rs.getPropValue("lwgd_kqreport","hospitalleavetype");
//其他 假期类型id
String otherleavetype = rs.getPropValue("lwgd_kqreport","otherleavetype");
//标准实际出勤天数
String attendDays = getAttendDays(fromDate, toDate, userid);
// 年假
String annualleaveday = getLeaveDaysByType(annualleavetype, fromDate, toDate, userid);
// 病假
String sickleaveday = getLeaveDaysByType(sickleavetype, fromDate, toDate, userid);
// 婚假
String marriageleaveday = getLeaveDaysByType(marriageleavetype, fromDate, toDate, userid);
// 丧假
String bereavementleaveday = getLeaveDaysByType(bereavementleavetype, fromDate, toDate, userid);
// 产假
String maternityleaveday = getLeaveDaysByType(maternityleavetype, fromDate, toDate, userid);
// 陪产假
String paternityleaveday = getLeaveDaysByType(paternityleavetype, fromDate, toDate, userid);
// 住院病假
String hospitalleaveday = getLeaveDaysByType(hospitalleavetype, fromDate, toDate, userid);
// 其他假
String otherleaveday = getLeaveDaysByType(otherleavetype, fromDate, toDate, userid);
//
String totalLeaveDays = floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(annualleaveday,sickleaveday),marriageleaveday),bereavementleaveday),maternityleaveday),paternityleaveday),hospitalleaveday),otherleaveday);
if("0".equals(usertype)){
result = floatSubtract(attendDays,totalLeaveDays);
}else{
result = floatMultiply(floatSubtract(attendDays,totalLeaveDays),"8");
}
return result;
}
/**
* 【员工月度加班汇总台账】中【ONCALL·时长+ONCALL·调整时长】
* @param toDate
* @param userid
* @return
*/
public static String getOncallHours(String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
String currentyearmonth = toDate.substring(0, 7); //年月
rs.executeQuery("select sum(oncallsc)+sum(oncalldzsc) as count from uf_ygydjbhz where xm = ? and yf = ?",userid,currentyearmonth);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 【员工月度加班汇总台账】中【周末-时长 + 周末-调整时长】
* @param toDate
* @param userid
* @return
*/
public static String getWeekendHours(String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
String currentyearmonth = toDate.substring(0, 7); //年月
rs.executeQuery("select sum(zmsc)+sum(zmdzsc) as count from uf_ygydjbhz where xm = ? and yf = ?",userid,currentyearmonth);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 获取 本月加班工时/ONCALL工时
* 如果考勤组=【工程师三班倒】、【设备研发部】取【员工月度加班汇总台账】中【ONCALL·时长+ONCALL·调整时长】
* 如果考勤组!=【工程师三班倒、设备研发部】,且实际出勤天数/工时>应出勤天数/工时,【实际出勤天数/工时-应出勤天数/工时】否则取0
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getOvertimeHourThisMonth(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
// 工程师三班倒 考勤组id
String gcssbd_groupid = rs.getPropValue("lwgd_kqreport","gcssbd_groupid");
// 工程师三班倒 考勤组id
String sbyfb_groupid = rs.getPropValue("lwgd_kqreport","sbyfb_groupid");
// 【员工月度加班汇总台账】中【ONCALL·时长+ONCALL·调整时长】
String oncallHours = getOncallHours(toDate,userid);
// 应出勤天数/工时
// String workdayandhour = getWorkDayAndHour(fromDate, toDate, userid);
String workdayandhour = "0";
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
//年假 假期类型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");
//住院病假 假期类型id
String hospitalleavetype = rs.getPropValue("lwgd_kqreport","hospitalleavetype");
//其他 假期类型id
String otherleavetype = rs.getPropValue("lwgd_kqreport","otherleavetype");
//标准实际出勤天数
String attendDays = getAttendDays(fromDate, toDate, userid);
// 年假
String annualleaveday = getLeaveDaysByType(annualleavetype, fromDate, toDate, userid);
// 病假
String sickleaveday = getLeaveDaysByType(sickleavetype, fromDate, toDate, userid);
// 婚假
String marriageleaveday = getLeaveDaysByType(marriageleavetype, fromDate, toDate, userid);
// 丧假
String bereavementleaveday = getLeaveDaysByType(bereavementleavetype, fromDate, toDate, userid);
// 产假
String maternityleaveday = getLeaveDaysByType(maternityleavetype, fromDate, toDate, userid);
// 陪产假
String paternityleaveday = getLeaveDaysByType(paternityleavetype, fromDate, toDate, userid);
// 住院病假
String hospitalleaveday = getLeaveDaysByType(hospitalleavetype, fromDate, toDate, userid);
// 其他假
String otherleaveday = getLeaveDaysByType(otherleavetype, fromDate, toDate, userid);
//
String totalLeaveDays = floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(annualleaveday,sickleaveday),marriageleaveday),bereavementleaveday),maternityleaveday),paternityleaveday),hospitalleaveday),otherleaveday);
if("0".equals(usertype)){
workdayandhour = floatSubtract(attendDays,totalLeaveDays);
}else{
workdayandhour = floatMultiply(floatSubtract(attendDays,totalLeaveDays),"8");
}
// 实际出勤天数/工时
String actualdayandhour = getActualDayAndHour(fromDate, toDate, userid);
// String actualdayandhour = "0";
rs.executeQuery("select distinct groupid from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
String groupid = Util.null2String(rs.getString("groupid"));
if(gcssbd_groupid.equals(groupid) || sbyfb_groupid.equals(groupid)){
result = oncallHours;
}else{
if(floatCompare(actualdayandhour,workdayandhour) > 0){
result = floatSubtract(actualdayandhour,workdayandhour);
}else{
result = "0";
}
}
}
return result;
}
/**
* 获取 周末加班工时
* 如果考勤组=【工程师三班倒】、【设备研发部】,取【员工月度加班汇总台账】中【周末·时长+周末·调整时长】 否则取0
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getWeekendOverHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
// 工程师三班倒 考勤组id
String gcssbd_groupid = rs.getPropValue("lwgd_kqreport","gcssbd_groupid");
// 工程师三班倒 考勤组id
String sbyfb_groupid = rs.getPropValue("lwgd_kqreport","sbyfb_groupid");
// 【员工月度加班汇总台账】中【周末-时长 + 周末-调整时长】
String weekendHours = getWeekendHours(toDate,userid);
rs.executeQuery("select distinct groupid from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
String groupid = Util.null2String(rs.getString("groupid"));
if(gcssbd_groupid.equals(groupid) || sbyfb_groupid.equals(groupid)){
result = weekendHours;
}else{
result = "0";
}
}
return result;
}
/**
* 获取 本月加班工时
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getOvertimeHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(duration_min)as mins from KQ_FLOW_OVERTIME where paidleaveenable=1 and changetype in ('2','3') and resourceid=? and belongdate>=? and belongdate <=?",userid,fromDate,toDate);
while(rs.next()){
String mins = Util.null2o(rs.getString("mins"));
result = floatDivide(mins,"60");
}
return result;
}
/**
* 获取 本月调休工时 【调休(天)】*8
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getCompensatoryleaveHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
// 调休假 假期类型id
String compensatoryleavetype = rs.getPropValue("lwgd_kqreport","compensatoryleavetype");
// 调休假天数
String compensatoryleaveday = getLeaveDaysByType(compensatoryleavetype, fromDate, toDate, userid);
result = floatMultiply(compensatoryleaveday,"8");
return result;
}
/**
* 获取 上月加班结余工时 上月考勤表·【加班累计工时】
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getLastOverHour(String fromDate, String toDate, String userid){
String result = "0";
String lastFromDate = addDateMonth(fromDate,-1);
String lastToDate = addDateMonth(toDate,-1);
result = getOverTotalHour(lastFromDate, lastToDate, userid);
return result;
}
/**
* 获取 加班累计工时 上月加班结余工时+本月加班工时-本月调休工时
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getOverTotalHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
String lastFromDate = addDateMonth(fromDate,-1);
String lastToDate = addDateMonth(toDate,-1);
// 上月加班结余工时
String lastoveroverhour = getLastOverHour(fromDate,toDate,userid);
// 本月加班工时
String overtimehour = getOvertimeHour(fromDate, toDate, userid);
// 本月调休工时
String compensatoryleaveHour = getCompensatoryleaveHour(fromDate, toDate, userid);
result = floatSubtract(floatAdd(lastoveroverhour,overtimehour),compensatoryleaveHour);
return result;
}
/**
* 获取 全勤
* 1.(事+病+产+陪产+其他+年+婚+丧)假期天数≠0
* 2.补签流程表·是否全勤=否
* 3.当月入职、离职人员(可以根据月标准出勤天数/工时≠标准出勤天数/工时判断)
* 4.迟到、早退次数/严重迟到早退次数、旷工天数>0
* 5.漏签次数>0
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getPerfectAttendance(String fromDate, String toDate, String userid){
String result = "0";
// 获取 事+病+产+陪产+其他+年+婚+丧 假期天数 是否 大于0
boolean isSomeLeaveDays = checkSomeLeaveDays(fromDate, toDate, userid);
// 补卡流程明细 是否全勤为 否 是否有数据
boolean isCardReplaceIsAllAttend = checkCardReplaceIsAllAttend(fromDate, toDate, userid);
// 人员是否在 同一个月 入职、离职
boolean isRzAndLzIsSameMonth = checkIsRzAndLzIsSameMonth(fromDate, toDate, userid);
// 日期范围内 是否有 迟到、早退、严重迟到、严重早退、旷工、漏签
boolean isAttendanceException = checkAttendanceException(fromDate, toDate, userid);
if(isSomeLeaveDays || isCardReplaceIsAllAttend || isRzAndLzIsSameMonth || isAttendanceException){
result = "否";
}else{
result = "是";
}
return result;
}
/**
* 判断 日期范围内 是否有 迟到、早退、严重迟到、严重早退、旷工
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static boolean checkAttendanceException(String fromDate, String toDate, String userid){
boolean bool = false;
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(belate)as lates,sum(leaveeearly)as leaveeearlys,sum(gravebelate)as gravebelates,sum(graveleaveearly)as graveleaveearlys,sum(absenteeism)as absenteeisms,sum(forgotCheck)+sum(b.forgotBeginWorkCheck) as forgotChecks from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
String lates = Util.null2o(rs.getString("lates"));
String leaveeearlys = Util.null2o(rs.getString("leaveeearlys"));
String gravebelates = Util.null2o(rs.getString("gravebelates"));
String graveleaveearlys = Util.null2o(rs.getString("graveleaveearlys"));
String absenteeisms = Util.null2o(rs.getString("absenteeisms"));
String forgotChecks = Util.null2o(rs.getString("forgotChecks"));
if(floatCompare(lates,"0") > 0){
bool = true;
break;
}else if(floatCompare(leaveeearlys,"0") > 0){
bool = true;
break;
}else if(floatCompare(gravebelates,"0") > 0){
bool = true;
break;
}else if(floatCompare(graveleaveearlys,"0") > 0){
bool = true;
break;
}else if(floatCompare(absenteeisms,"0") > 0){
bool = true;
break;
}else if(floatCompare(forgotChecks,"0") > 0){
bool = true;
break;
}
}
return bool;
}
/**
* 判断 人员是否在 同一个月 入职、离职
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static boolean checkIsRzAndLzIsSameMonth(String fromDate, String toDate, String userid){
boolean bool = false;
RecordSet rs = new RecordSet();
// 入职日期
String rzrq = getRzrq(userid);
String rz_ny = rzrq.substring(0,7);
// 离职日期
String lzrq = getLzrq(userid);
if(lzrq != null && !"".equals(lzrq)){
String lz_ny = lzrq.substring(0,7);
if(rz_ny.equals(lz_ny)){
bool = true;
}
}
return bool;
}
/**
* 获取 事+病+产+陪产+其他+年+婚+丧 假期天数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static boolean checkSomeLeaveDays(String fromDate, String toDate, String userid){
boolean result = false;
RecordSet rs = new RecordSet();
//年假 假期类型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");
//事假 假期类型id
String leaveabsencetype = rs.getPropValue("lwgd_kqreport","leaveabsencetype");
//其他 假期类型id
String otherleavetype = rs.getPropValue("lwgd_kqreport","otherleavetype");
// 年假
String annualleaveday = getLeaveDaysByType(annualleavetype, fromDate, toDate, userid);
// 病假
String sickleaveday = getLeaveDaysByType(sickleavetype, fromDate, toDate, userid);
// 婚假
String marriageleaveday = getLeaveDaysByType(marriageleavetype, fromDate, toDate, userid);
// 丧假
String bereavementleaveday = getLeaveDaysByType(bereavementleavetype, fromDate, toDate, userid);
// 产假
String maternityleaveday = getLeaveDaysByType(maternityleavetype, fromDate, toDate, userid);
// 陪产假
String paternityleaveday = getLeaveDaysByType(paternityleavetype, fromDate, toDate, userid);
// 事假
String leaveabsenceday = getLeaveDaysByType(leaveabsencetype, fromDate, toDate, userid);
// 其他假
String otherleaveday = getLeaveDaysByType(otherleavetype, fromDate, toDate, userid);
String somenums = floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(floatAdd(annualleaveday,sickleaveday),marriageleaveday),bereavementleaveday),maternityleaveday),paternityleaveday),leaveabsenceday),otherleaveday);
if(floatCompare(somenums,"0") > 0){
result = true;
}
return result;
}
/**
* 判断 补卡流程明细 是否全勤为 否 是否有数据
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static boolean checkCardReplaceIsAllAttend(String fromDate, String toDate, String userid){
boolean bool = false;
RecordSet rs = new RecordSet();
String table = rs.getPropValue("","");
String tableDt1 = table+"_dt1";
rs.executeQuery("select b.id from "+ table +" a,"+ tableDt1 +" b,workflow_requestbase c where a.requestid=c.requestid and a.id=b.mainid and c.currentnodetype='3' and b.sfqq='1' and b.xm=? and b.detail_signdate>=? and b.detail_signdate<=?",userid,fromDate,toDate);
if(rs.next()){
bool = true;
}
return bool;
}
/**
* 获取 实际出勤天数/工时
* 如果【工时制度】=标准工时制,【应出勤天数/工时】-【出差天数】-【旷工】-【调休天数】-【事假】
* 否则,【应出勤天数/工时】-(【出差天数】+【旷工】+【调休天数】+【事假】)*8+【加班费·本月加班工时/ONCALL工时】
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getActualDayAndHour(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
//调休假
String compensatoryleavetype = rs.getPropValue("lwgd_kqreport","compensatoryleavetype");
//事假
String leaveabsencetype = rs.getPropValue("lwgd_kqreport","leaveabsencetype");
//工时制度 0为标准工时制、1为综合工时制-厂务、2为综合工时制-生产、仓管、图档
String usertype = getGszdId(userid);
//应出勤天数
String workdays = getWorkDays(fromDate,toDate,userid);
// 调休假天数
String compensatoryleaveday = getLeaveDaysByType(compensatoryleavetype, fromDate, toDate, userid);
// 事假
String leaveabsenceday = getLeaveDaysByType(leaveabsencetype, fromDate, toDate, userid);
// 矿工
String absenteeismsday = getAbsenteeisms(fromDate, toDate, userid);
// 出差
String eventionday = getEvectionDays(fromDate, toDate, userid);
// 【加班费·本月加班工时/ONCALL工时】
String overtimehoursthismonth = getOvertimeHourThisMonth(fromDate, toDate, userid);
//
String totalday = floatAdd(floatAdd(floatAdd(eventionday,absenteeismsday),compensatoryleaveday),leaveabsenceday);
if("0".equals(usertype)){
result = floatSubtract(workdays,totalday);
}else{
result = floatAdd(floatMultiply(floatSubtract(workdays,totalday),"8"),overtimehoursthismonth);
}
return result;
}
/**
* 获取 法定节假日加班工时 【不关联调休·节假日加班(小时)】
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getFdjjrjbsc(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(duration_min)as mins from KQ_FLOW_OVERTIME where paidleaveenable='0' and changetype='1' and resourceid=? and belongdate>=? and belongdate <=?",userid,fromDate,toDate);
while(rs.next()){
String mins = Util.null2o(rs.getString("mins"));
result = floatDivide(mins,"60");
}
return result;
}
/**
* 获取 旷工 次数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getAbsenteeisms(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(absenteeism)as count from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 获取 出差天数
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getEvectionDays(String fromDate, String toDate, String userid){
String result = "0";
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(duration) as count from kq_flow_split_evection where belongdate >= ? and belongdate <= ? and resourceid = ? ",fromDate,toDate,userid);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 获取 班次id
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getSerialId(String fromDate, String toDate,String userid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select distinct a.serialid from kq_format_total a,kq_ShiftManagement b " +
" where a.serialid=b.id and a.resourceid = ? and a.kqdate >= ? and a.kqdate <= ? and b.is_rest=0 ",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2String(rs.getString("serialid"));
}
return result;
}
/**
* 获取 指定假期的时长
* @param type
* @param fromdate
* @param todate
* @param userid
* @return
*/
public static String getLeaveDaysByType(String type,String fromdate,String todate,String userid){
String result = "0";
RecordSet rs = new RecordSet();
String halfdays = "0";
String halfbackdays = "0";
// 假期 时长
rs.executeQuery("select sum(duration) as count from kq_flow_split_leave where belongdate >= ? and belongdate <= ? and newleavetype in ("+ type +") and resourceid = ? ",fromdate,todate,userid);
while(rs.next()){
halfdays = Util.null2o(rs.getString("count"));
}
// 销假时长
rs.executeQuery("select sum(duration) as count from kq_flow_split_leaveback where belongdate >= ? and belongdate <= ? and newleavetype in ("+ type +") and resourceid = ? ",fromdate,todate,userid);
while(rs.next()){
halfbackdays = Util.null2o(rs.getString("count"));
}
result = floatSubtract(halfdays,halfbackdays);
return result;
}
/**
* 获取 岗位名称
* @param userid
* @return
*/
public static String getNewGw(String userid){
String result = "";
RecordSet rs = new RecordSet();
String gw_fieldid = rs.getPropValue("lwgd_kqreport","gw_fieldid");
String fieldvalue = getBaseCusFieldValue(userid,gw_fieldid);
if(fieldvalue != null && !"".equals(fieldvalue)){
result = getGwname(fieldvalue);
}
return result;
}
/**
* 获取 入职日期
* @param userid
* @return
*/
public static String getRzrq(String userid){
String result = "";
RecordSet rs = new RecordSet();
String rzsj_fieldid = rs.getPropValue("lwgd_kqreport","rzsj_fieldid");
result = getWorkCusFieldValue(userid,rzsj_fieldid);
return result;
}
/**
* 获取 调动日期
* @param userid
* @return
*/
public static String getTransferDate(String userid){
String result = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select ksrq from uf_rzxxb where rzry=?",userid);
if(rs.next()){
result = Util.null2String(rs.getString("ksrq"));
}
return result;
}
/**
* 获取 离职日期
* @param userid
* @return
*/
public static String getLzrq(String userid){
String result = "";
RecordSet rs = new RecordSet();
String lzrq_fieldid = rs.getPropValue("lwgd_kqreport","lzrq_fieldid");
result = getWorkCusFieldValue(userid,lzrq_fieldid);
return result;
}
/**
* 获取 迟到/早退(30分钟以内)/次
* 迟到(次)+早退(次)
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static double getBeLateLeaveEearly30(String fromDate, String toDate, String userid){
double result = 0.00;
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(isnull(belate,0))+sum(isnull(leaveeearly,0)) as count from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.getDoubleValue(rs.getString("count"),0);
}
return result;
}
/**
* 获取 迟到/早退(30分钟以上)/次
* 严重迟到(次)+严重早退(次)
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static double getBeLateLeaveEearly30More(String fromDate, String toDate, String userid){
double result = 0.00;
RecordSet rs = new RecordSet();
rs.executeQuery("select sum(isnull(gravebelate,0))+sum(isnull(graveleaveearly,0)) as count from kq_format_total where resourceid=? and kqdate >= ? and kqdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.getDoubleValue(rs.getString("count"),0);
}
return result;
}
/**
* 获取 签卡(次数)-am
* 取【补卡流程表·签卡原因】=个人原因,签卡类型=上班卡
* 签卡类型 detail_signtype 0-上班卡 1-下班卡
* 签卡原因 bkyy 0-机器故障 1-入职补卡 2-工作日延长 3-个人原因
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getQkcsam(String fromDate,String toDate,String userid){
String result = "0";
RecordSet rs = new RecordSet();
String table = rs.getPropValue("lwgd_kqreport","bklc_tablename");
String tableDt = table+"_dt1";
rs.executeQuery("select count(b.id)as count from "+ table +" a,"+tableDt+" b,workflow_requestbase c where a.requestid=c.requestid and a.id=b.mainid and c.currentnodetype=3 " +
"and b.detail_signtype=0 and b.bkyy=3 and b.xm=? and b.detail_signdate >= ? and b.detail_signdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 获取 签卡(次数)-pm
* 取【补卡流程表·签卡原因】=个人原因,签卡类型=上班卡
* 签卡类型 detail_signtype 0-上班卡 1-下班卡
* 签卡原因 bkyy 0-机器故障 1-入职补卡 2-工作日延长 3-个人原因
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getQkcspm(String fromDate,String toDate,String userid){
String result = "0";
RecordSet rs = new RecordSet();
String table = rs.getPropValue("lwgd_kqreport","bklc_tablename");
String tableDt = table+"_dt1";
rs.executeQuery("select count(b.id)as count from "+ table +" a,"+tableDt+" b,workflow_requestbase c where a.requestid=c.requestid and a.id=b.mainid and c.currentnodetype=3 " +
"and b.detail_signtype=1 and b.bkyy=3 and b.xm=? and b.detail_signdate >= ? and b.detail_signdate <= ?",userid,fromDate,toDate);
while(rs.next()){
result = Util.null2o(rs.getString("count"));
}
return result;
}
/**
* 获取 签卡(次数)
* 签卡(次数)-am+签卡(次数)-pm
* @param fromDate
* @param toDate
* @param userid
* @return
*/
public static String getQkcs(String fromDate,String toDate,String userid){
String result = "0";
String qkcsam = getQkcsam(fromDate,toDate,userid);
String qkcspm = getQkcspm(fromDate,toDate,userid);
result = floatAdd(qkcsam,qkcspm);
return result;
}
%>
<BODY>
<h1>Congratulation Mode 666666 !</h1>
<h1> sum <%=sum%> </h1>
<h1> 本月加班工时 <%=byjbgs%> </h1>
<h1> 本月调休工时 <%=bytxgs%> </h1>
<h1> 上月加班结余工时 <%=syjbjygs%> </h1>
<h1> 加班累计工时 <%=jbljgs%> </h1>
</BODY>