Ecology-Dev-chaofa/昆山鸿仕达/interface/hsd/do.jsp

278 lines
9.7 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 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>