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

205 lines
11 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="weaver.conn.RecordSet" %>
<%@ page import="com.engine.kq.entity.KQOvertimeRulesDetailEntity" %>
<%@ page import="com.engine.kq.biz.KQGroupMemberComInfo" %>
<%@ page import="com.engine.kq.biz.chain.cominfo.ShiftInfoCominfoBean" %>
<%@ page import="com.engine.kq.biz.KQWorkTime" %>
<%@ page import="com.engine.kq.biz.KQHolidaySetBiz" %>
<jsp:useBean id="rs" 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 userid = Util.null2String(request.getParameter("userid"));
String fromdate = Util.null2String(request.getParameter("fromdate"));
String todate = Util.null2String(request.getParameter("todate"));
int commode = getComputingMode(userid,fromdate);
String result = changeBelongDate2(userid,fromdate);
%>
<%!
public static int getComputingMode(String resourceId, String date) {
int computingMode = -1;
KQOvertimeRulesDetailEntity kqOvertimeRulesDetail = new KQOvertimeRulesDetailEntity();
kqOvertimeRulesDetail = getOvertimeRulesDetail(resourceId, date);
computingMode = kqOvertimeRulesDetail.getComputingMode();
return computingMode;
}
public static int getChangeType(String resourceId, String date) {
int changeType = -1;
/*获取考勤组的ID因为考勤组有有效期所以需要传入日期*/
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
String groupId = kqGroupMemberComInfo.getKQGroupId(resourceId, date);
/*该人员不存在于任意一个考勤组中,请为其设置考勤组*/
if(groupId.equals("")){
// logger.writeLog("该人员不存在于任意一个考勤组中请为其设置考勤组。resourceId=" + resourceId + ",date=" + date);
}
changeType = KQHolidaySetBiz.getChangeType(groupId, date);
if (changeType != 1 && changeType != 2 && changeType != 3) {
KQWorkTime kqWorkTime = new KQWorkTime();
changeType = kqWorkTime.isWorkDay(resourceId, date) ? 2 : 3;
}
return changeType;
}
public static KQOvertimeRulesDetailEntity getOvertimeRulesDetail(String resourceId, String date) {
KQOvertimeRulesDetailEntity kqOvertimeRulesDetail = new KQOvertimeRulesDetailEntity();
try {
/*获取考勤组的ID因为考勤组有有效期所以需要传入日期*/
KQGroupMemberComInfo kqGroupMemberComInfo = new KQGroupMemberComInfo();
String groupIds = kqGroupMemberComInfo.getKQGroupId(resourceId, date);
if (groupIds.equals("")) {
/*该人员不存在于任意一个考勤组中,请为其设置考勤组*/
// logger.writeLog("该人员不存在于任意一个考勤组中请为其设置考勤组。resourceId=" + resourceId + ",date=" + date);
}
int changeType = getChangeType(resourceId, date);
/*获取当前日期的日期类型错误*/
if (changeType != 1 && changeType != 2 && changeType != 3) {
// logger.writeLog("获取当前日期的日期类型错误。resourceId=" + resourceId + ",date=" + date + ",changeType=" + changeType);
}
//查询员工在指定日期时的班次
String shiftId = "";
ShiftInfoCominfoBean shiftBean = new KQWorkTime().getShiftInfoCominfoBeanIncludeHoliday(resourceId, date);
if(shiftBean != null) {
shiftId = shiftBean.getSerialid();
}
if(shiftId.length() == 0){
// logger.writeLog("该人员在指定日期没有排班班次请为其设置。resourceId=" + resourceId + ",date=" + date+", groupId="+groupIds);
}
RecordSet recordSet = new RecordSet();
int overtimeRuleId = 0;//加班规则的ID
String sql = "select id from kq_OvertimeRules where (isDelete is null or isDelete !=1) ";
if (recordSet.getDBType().equalsIgnoreCase("sqlserver")) {
sql += " and ','+shiftIds+',' like '%," + shiftId + ",%'";
} else if (recordSet.getDBType().equalsIgnoreCase("mysql")) {
sql += " and concat(',',shiftIds,',') like '%," + shiftId + ",%'";
} else {
sql += " and ','||shiftIds||',' like '%," + shiftId + ",%'";
}
recordSet.executeQuery(sql);
if (recordSet.next()) {
overtimeRuleId = recordSet.getInt("id");
sql = "select * from kq_OvertimeRulesDetail where ruleId=" + overtimeRuleId + " and dayType=" + changeType;
recordSet.executeQuery(sql);
if (recordSet.next()) {
int ruleId = recordSet.getInt("ruleId");
int dayType = recordSet.getInt("dayType");
int overtimeEnable = recordSet.getInt("overtimeEnable");
int computingMode = recordSet.getInt("computingMode");
int startTime = recordSet.getInt("startTime");
int minimumLen = recordSet.getInt("minimumLen");
int paidLeaveEnable = recordSet.getInt("paidLeaveEnable");
double lenOfOvertime = Util.getDoubleValue(recordSet.getString("lenOfOvertime"), 1.00);
double lenOfLeave = Util.getDoubleValue(recordSet.getString("lenOfLeave"), 1.00);
int hasRestTime = Util.getIntValue(recordSet.getString("hasRestTime"));
kqOvertimeRulesDetail.setRuleId(ruleId);
kqOvertimeRulesDetail.setDayType(dayType);
kqOvertimeRulesDetail.setOvertimeEnable(overtimeEnable);
kqOvertimeRulesDetail.setComputingMode(computingMode);
kqOvertimeRulesDetail.setStartTime(startTime);
kqOvertimeRulesDetail.setMinimumLen(minimumLen);
kqOvertimeRulesDetail.setPaidLeaveEnable(paidLeaveEnable);
kqOvertimeRulesDetail.setLenOfOvertime(lenOfOvertime);
kqOvertimeRulesDetail.setLenOfLeave(lenOfLeave);
kqOvertimeRulesDetail.setHasRestTime(hasRestTime);
}
} else {
// logger.writeLog("该人员所属的考勤组没有设置过任何加班规则请为其设置加班规则。resourceId=" + resourceId + ",date="+date+",changeType=" + changeType);
}
} catch (Exception e) {
// logger.writeLog("根据人员ID获取加班规则的规则内容出错。resourceId=" + resourceId + ",date=" + date);
e.printStackTrace();
}
return kqOvertimeRulesDetail;
}
public String changeBelongDate2(String userid,String date){
String result = "";
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
RecordSet rst = new RecordSet();
rs.executeQuery("select * from kq_format_detail where resourceid = ? and kqdate = ?",userid,date);
rs.writeLog("select * from kq_format_detail where resourceid = "+userid+" and kqdate ="+ date);
while(rs.next()){
String resourceid = Util.null2String(rs.getString("resourceid"));
String kqdate = Util.null2String(rs.getString("kqdate"));
String groupid = Util.null2String(rs.getString("groupid"));
String serialid = Util.null2String(rs.getString("serialid"));
String workbegindate = Util.null2String(rs.getString("workbegindate")).trim();
String workbegintime = Util.null2String(rs.getString("workbegintime")).trim();
String workenddate = Util.null2String(rs.getString("workenddate")).trim();
String workendtime = Util.null2String(rs.getString("workendtime")).trim();
rs.writeLog("====== changeBelongDate2 workbegindate ======= "+ workbegindate);
rs.writeLog("====== changeBelongDate2 workbegintime ======= "+ workbegintime);
rs.writeLog("====== changeBelongDate2 workenddate ======= "+ workenddate);
rs.writeLog("====== changeBelongDate2 workendtime ======= "+ workendtime);
rs1.executeQuery("select * from kq_flow_overtime where resourceid = " + resourceid + " and belongdate ='" + kqdate + "'");
rs1.writeLog("select * from kq_flow_overtime where resourceid = " + resourceid + " and belongdate ="+ kqdate);
while(rs1.next()){
String mxid = Util.null2String(rs1.getString("id"));
int computingmode = Util.getIntValue(rs1.getString("computingMode"));
String fromdate = Util.null2String(rs1.getString("fromdate"));
String fromdatedb = Util.null2String(rs1.getString("fromdatedb"));
String fromtime = Util.null2String(rs1.getString("fromtime"));
String totime = Util.null2String(rs1.getString("totime"));
String fromtimedb = Util.null2String(rs1.getString("fromtimedb"));
String totimedb = Util.null2String(rs1.getString("totimedb"));
// 无需审批,根据打卡时间计算加班时长 . 取 fromdate、fromtime
if(computingmode == 3){
//开始日期不等于并且大于归属日期。需要将归属日期更新为 开始日期
if(!fromdate.equals(date)){
if(fromtime.equals(workendtime) || totime.equals(workbegintime)){
// rst.executeUpdate("update kq_flow_overtime set belongdate = ? where id = ? ",fromdate,mxid);
rs.writeLog("update kq_flow_overtime set belongdate = "+fromdate+" where id ="+ mxid);
result += "update kq_flow_overtime set belongdate = "+fromdate+",kf_flag=1 where id ="+ mxid;
}
}
}
// 需审批,以打卡为准,取流程和打卡的交集 取 fromdatedb、fromtimedb
if(computingmode == 4){
//开始日期不等于并且大于归属日期。需要将归属日期更新为 开始日期
if(!fromdatedb.equals(date)){
if(fromdatedb.equals(workendtime) || totimedb.equals(workbegintime)) {
rst.executeUpdate("update kq_flow_overtime set belongdate = ? where id = ? ", fromdatedb, mxid);
rs.writeLog("update kq_flow_overtime set belongdate = " + fromdatedb + " where id =" + mxid);
result += "update kq_flow_overtime set belongdate = "+ fromdatedb +",kf_flag=1 where id ="+ mxid;
}
}
}
}
}
return result;
}
%>
<HEAD>
</HEAD>
<BODY>
<h1>Congratulation Mode 666666 !</h1>
<h1> 加班规则 <%=commode%></h1>
<h2>结果是什么? <%=result%></h2>
</BODY>