278 lines
9.7 KiB
Plaintext
278 lines
9.7 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||
<%@page import="weaver.general.Util"%>
|
||
<%@ page import="java.math.BigDecimal" %>
|
||
<%@ page import="weaver.conn.RecordSet" %>
|
||
<%@ page import="java.text.SimpleDateFormat" %>
|
||
<%@ page import="java.util.Calendar" %>
|
||
<%@ page import="java.util.Date" %>
|
||
<%@ page import="java.text.ParseException" %>
|
||
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
|
||
<jsp:useBean id="rs1" class="weaver.conn.RecordSet" scope="page" />
|
||
<jsp:useBean id="rst" class="weaver.conn.RecordSet" scope="page" />
|
||
<jsp:useBean id="bb" class="weaver.general.BaseBean" />
|
||
<%
|
||
int sum = 0;
|
||
String kqdate = Util.null2String(request.getParameter("kqdate"));
|
||
String resourceId = Util.null2String(request.getParameter("userid"));
|
||
|
||
double D_Mins = 0.00;
|
||
|
||
String dataSql = " select * from kq_flow_overtime where belongdate=? and resourceid=? ";
|
||
rs.executeQuery(dataSql,kqdate,resourceId);
|
||
rs.next();
|
||
String lcid = Util.null2String(rs.getString("requestid"));
|
||
String userid = Util.null2String(rs.getString("resourceid"));
|
||
String fromdate = Util.null2String(rs.getString("fromdate"));
|
||
String fromtimedb = Util.null2String(rs.getString("fromtimedb"));
|
||
String todate = Util.null2String(rs.getString("todate"));
|
||
String totimedb = Util.null2String(rs.getString("totimedb"));
|
||
|
||
// String totimedb = "23:00";
|
||
String fromtime = fromtimedb +":00";
|
||
String totime = totimedb + ":00";
|
||
|
||
//加班根据时间特殊计算,整点,半点
|
||
String truefromtime = getNewTrueFromTime(resourceId,fromdate,fromtime);
|
||
String truetotime = getNewTrueToTime(resourceId,todate,totime);
|
||
String truefromdatetime = fromdate +" "+ truefromtime;
|
||
String truetodatetime = todate +" "+ truetotime;
|
||
|
||
D_Mins = getTrueDuration(truefromdatetime,truetodatetime);
|
||
|
||
|
||
%>
|
||
|
||
<%!
|
||
/**
|
||
* 获取最新的开始时间
|
||
* @param time
|
||
* @return
|
||
*/
|
||
public static String getNewTrueFromTime(String userid,String date,String time){
|
||
String newtime = time;
|
||
RecordSet rs = new RecordSet();
|
||
RecordSet rs1 = new RecordSet();
|
||
String lasttime = addDateHour(time,-1);
|
||
String nexttime = addDateHour(time,1);
|
||
rs.executeQuery("select top 1 * from hrmschedulesign where userid = ? and signtype=1 and signdate=? and signtime>=? and signtime <= ? order by signdate desc,signtime desc ",userid,date,lasttime,time);
|
||
rs1.executeQuery("select top 1 * from hrmschedulesign where userid = ? and signtype=1 and signdate=? and signtime>=? and signtime <= ? order by signdate desc,signtime desc ",userid,date,time,nexttime);
|
||
if(rs.next()){
|
||
String signtime = Util.null2String(rs.getString("signtime"));
|
||
newtime = getNewFromTime(time);
|
||
}else if(rs1.next()){
|
||
String signtime = Util.null2String(rs1.getString("signtime"));
|
||
newtime = getNewFromTime(signtime);
|
||
}
|
||
return newtime;
|
||
}
|
||
|
||
/**
|
||
* 获取最新的结束时间
|
||
* @param time
|
||
* @return
|
||
*/
|
||
public static String getNewTrueToTime(String userid,String date,String time){
|
||
String newtime = time;
|
||
RecordSet rs = new RecordSet();
|
||
RecordSet rs1 = new RecordSet();
|
||
String lasttime = addDateHour(time,-1);
|
||
String nexttime = addDateHour(time,1);
|
||
rs.executeQuery("select top 1 * from hrmschedulesign where userid = ? and signtype=2 and signdate=? and signtime>=? and signtime <= ? order by signdate desc,signtime desc ",userid,date,time,nexttime);
|
||
rs1.executeQuery("select top 1 * from hrmschedulesign where userid = ? and signtype=2 and signdate=? and signtime>=? and signtime <= ? order by signdate desc,signtime desc ",userid,date,lasttime,time);
|
||
if(rs.next()){
|
||
String signtime = Util.null2String(rs.getString("signtime"));
|
||
newtime = getNewToTime(time);
|
||
}else if(rs1.next()){
|
||
String signtime = Util.null2String(rs1.getString("signtime"));
|
||
newtime = getNewToTime(signtime);
|
||
}
|
||
return newtime;
|
||
}
|
||
|
||
/**
|
||
* 开始时间 整点、半点比较判断
|
||
* @param time
|
||
* @return
|
||
*/
|
||
public static String getNewFromTime(String time){
|
||
String newtime = time;
|
||
if(time != null && !"".equals(time)){
|
||
String hours = time.substring(0,2);
|
||
String nexthours = floatAdd(hours,"1");
|
||
String newhour = Integer.parseInt(nexthours) < 10 ? "0"+nexthours : nexthours;
|
||
String zheng = hours+":00:00";
|
||
String ban = hours+":30:00";
|
||
String nextzheng = newhour+":00:00";
|
||
if(time.equals(zheng)){
|
||
newtime = time;
|
||
}else{
|
||
if(compareDate(time,zheng)){
|
||
if(time.equals(ban)){
|
||
newtime = ban;
|
||
}else {
|
||
if (!compareDate(time, ban)) {
|
||
newtime = hours + ":30:00";
|
||
} else {
|
||
if(time.equals(nextzheng)){
|
||
newtime = nextzheng;
|
||
}else {
|
||
if (!compareDate(time, nextzheng)) {
|
||
newtime = hours + ":30:00";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return newtime;
|
||
}
|
||
|
||
/**
|
||
* 结束时间 整点、半点比较判断
|
||
* @param time
|
||
* @return
|
||
*/
|
||
public static String getNewToTime(String time){
|
||
String newtime = time;
|
||
if(time != null && !"".equals(time)) {
|
||
String hours = time.substring(0, 2);
|
||
String nexthours = floatAdd(hours, "1");
|
||
String newhour = Integer.parseInt(nexthours) < 10 ? "0" + nexthours : nexthours;
|
||
String zheng = hours + ":00:00";
|
||
String ban = hours + ":30:00";
|
||
String nextzheng = newhour + ":00:00";
|
||
if(time.equals(zheng)){
|
||
newtime = zheng;
|
||
}else{
|
||
if(compareDate(time, zheng)){
|
||
if(time.equals(ban)){
|
||
newtime = ban;
|
||
}else{
|
||
if(!compareDate(time, ban)) {
|
||
newtime = hours + ":00:00";
|
||
}else{
|
||
if(time.equals(nextzheng)){
|
||
newtime = nextzheng;
|
||
}else{
|
||
if(!compareDate(time, nextzheng)) {
|
||
newtime = hours + ":30:00";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return newtime;
|
||
}
|
||
|
||
/**
|
||
* 方法描述 : 对两个字符串进行金额的相加
|
||
* @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 startTime
|
||
* @param endTime
|
||
* @return
|
||
* int
|
||
*/
|
||
public static int getTrueDuration(String startTime, String endTime) {
|
||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||
Calendar cal = Calendar.getInstance();
|
||
long time1 = 0;
|
||
long time2 = 0;
|
||
long between_days = 0;
|
||
try{
|
||
cal.setTime(sdf.parse(startTime));
|
||
time1 = cal.getTimeInMillis();
|
||
cal.setTime(sdf.parse(endTime));
|
||
time2 = cal.getTimeInMillis();
|
||
between_days = (time2-time1)/(1000*60);
|
||
}catch(Exception e){
|
||
e.printStackTrace();
|
||
}
|
||
return Integer.parseInt(String.valueOf(between_days));
|
||
}
|
||
|
||
/**
|
||
* 给时间加上几个小时
|
||
* @param day 时间的格式:yyyy-MM-dd HH:mm:ss
|
||
* @param hour 需要加的小时数 -1 则代表减1小时
|
||
* @return
|
||
*/
|
||
public static String addDateHour(String day, int hour){
|
||
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
|
||
Date date = null;
|
||
try {
|
||
date = format.parse(day);
|
||
if (date == null){
|
||
return "";
|
||
}
|
||
Calendar cal = Calendar.getInstance();
|
||
cal.setTime(date);
|
||
cal.add(Calendar.HOUR, hour);// 24小时制
|
||
date = cal.getTime();
|
||
cal = null;
|
||
return format.format(date);
|
||
} catch (Exception ex) {
|
||
ex.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
/**
|
||
* 比较时间的大小
|
||
* @param a
|
||
* @param b
|
||
* @return
|
||
* @throws ParseException
|
||
*/
|
||
public static boolean compareDate(String a, String b){
|
||
boolean flag = false;
|
||
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
|
||
try {
|
||
long t1 = sdf.parse(a).getTime();
|
||
long t2 = sdf.parse(b).getTime();
|
||
if (t1 >= t2) {
|
||
flag = true;
|
||
} else {
|
||
flag = false;
|
||
}
|
||
}catch (Exception e){
|
||
e.printStackTrace();
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
%>
|
||
|
||
<HEAD>
|
||
</HEAD>
|
||
<BODY>
|
||
|
||
<h1>Congratulation Mode 666666 !</h1>
|
||
|
||
<h2>加班真正计算的开始时间是 <%=truefromtime%></h2>
|
||
|
||
<h2>加班真正计算的结束时间是 <%=truetotime%></h2>
|
||
|
||
|
||
<h2> 真正的加班时长是 <%=D_Mins%> 分钟 </h2>
|
||
|
||
|
||
</BODY> |