205 lines
11 KiB
Plaintext
205 lines
11 KiB
Plaintext
<%@ 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> |