1441 lines
55 KiB
Plaintext
1441 lines
55 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 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>
|