generated from dxfeng/secondev-chapanda-feishu
加班异常功能开发
This commit is contained in:
parent
afee1b02f7
commit
578a159535
|
|
@ -0,0 +1,11 @@
|
|||
<%@ page import="com.engine.jc.kq.AbnormalOvertimeRemind" %>
|
||||
<%@ page import="cn.hutool.core.convert.Convert" %>
|
||||
<%@ page contentType="text/html; charset=UTF-8" %>
|
||||
<%
|
||||
// 测试
|
||||
String userId = request.getParameter("userId");
|
||||
String kqDate = request.getParameter("kqDate");
|
||||
|
||||
AbnormalOvertimeRemind.remind(Convert.toInt(userId, 0), kqDate);
|
||||
out.println("执行完成,userId="+userId+",kqDate="+kqDate);
|
||||
%>
|
||||
|
|
@ -9,6 +9,8 @@ import weaver.conn.RecordSet;
|
|||
import weaver.workflow.webservices.*;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
@ -24,19 +26,14 @@ public class AbnormalOvertimeRemind {
|
|||
return;
|
||||
}
|
||||
RecordSet rs = new RecordSet();
|
||||
rs.writeLog("AbnormalOvertimeRemind任务开始,userId=" + userId + ",kqDate=" + kqDate);
|
||||
// 查询当前人员、当前日期的最早、最晚打卡时间
|
||||
rs.executeQuery("select signindate ,signintime ,signoutdate ,signouttime,signMins from kq_format_detail where resourceid = ? and kqdate = ?", userId, kqDate);
|
||||
if (rs.next()) {
|
||||
String signMins = rs.getString("signMins");
|
||||
double signHourInt = Convert.toDouble(signMins, 0.0) / 60;
|
||||
// 如果当天打卡时间超过10H,判断是否有该日期的加班流程
|
||||
if (signHourInt > 10) {
|
||||
// 没有加班流程,记录为加班异常
|
||||
rs.executeQuery("select * from formtable_main_18 where resourceId = ? and fromDate <= ? and toDate >= ?", userId, kqDate);
|
||||
if (rs.getCounts() == 0) {
|
||||
// 判断是否已经被记录异常,已经记录的不重复记录
|
||||
rs.executeQuery("select * from uf_jbycb where ycry = ? and ycrq = ?", userId, kqDate);
|
||||
if (rs.getCounts() == 0) {
|
||||
rs.writeLog("signMins=" + signMins);
|
||||
String signInDate = rs.getString("signindate");
|
||||
String signInTime = rs.getString("signintime");
|
||||
String signInDateTime = signInDate + " " + signInTime;
|
||||
|
|
@ -44,6 +41,13 @@ public class AbnormalOvertimeRemind {
|
|||
String signOutDate = rs.getString("signoutdate");
|
||||
String signOutTime = rs.getString("signouttime");
|
||||
String signOutDateTime = signOutDate + " " + signOutTime;
|
||||
if (signHourInt > 10) {
|
||||
// 没有加班流程,记录为加班异常
|
||||
rs.executeQuery("select * from formtable_main_18 where resourceId = ? and fromDate <= ? and toDate >= ?", userId, kqDate, kqDate);
|
||||
if (rs.getCounts() == 0) {
|
||||
// 判断是否已经被记录异常,已经记录的不重复记录
|
||||
rs.executeQuery("select * from uf_jbycb where ycry = ? and ycrq = ?", userId, kqDate);
|
||||
if (rs.getCounts() == 0) {
|
||||
// 打卡时长保留两位小数
|
||||
DecimalFormat df = new DecimalFormat("#.##");
|
||||
String formattedHours = df.format(signHourInt);
|
||||
|
|
@ -63,6 +67,7 @@ public class AbnormalOvertimeRemind {
|
|||
dataMap.put("dtdksc", formattedHours);
|
||||
RecruitRecordSet.insertData(dataMap, "uf_jbycb");
|
||||
RecruitRecordSet.refreshRight(uuid, "uf_jbycb", formModeId, 1);
|
||||
rs.writeLog("异常数据插入完成");
|
||||
|
||||
// 给异常员工发送“加班异常确认流程”
|
||||
// 姓名
|
||||
|
|
@ -70,18 +75,19 @@ public class AbnormalOvertimeRemind {
|
|||
// 日期
|
||||
WorkflowRequestTableField rq = createWorkflowRequestTableField("rq", kqDate, true);
|
||||
// 上班打卡时间
|
||||
WorkflowRequestTableField sbdksj = createWorkflowRequestTableField("sbdksj", signInDateTime, true);
|
||||
WorkflowRequestTableField sbdksj = createWorkflowRequestTableField("sbdksj", getFormatTime(signInTime), true);
|
||||
// 下班打卡时间
|
||||
WorkflowRequestTableField xbdksj = createWorkflowRequestTableField("xbdksj", signOutDateTime, true);
|
||||
WorkflowRequestTableField xbdksj = createWorkflowRequestTableField("xbdksj", getFormatTime(signOutTime), true);
|
||||
// 打卡时长
|
||||
WorkflowRequestTableField dksc = createWorkflowRequestTableField("dksc", formattedHours, true);
|
||||
WorkflowRequestTableField[] workflowRequestTableField = {xm, rq, sbdksj, xbdksj, dksc};
|
||||
createWorkflow(workflowRequestTableField);
|
||||
|
||||
rs.writeLog("流程创建完成");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rs.writeLog("AbnormalOvertimeRemind任务结束,userId=" + userId + ",kqDate=" + kqDate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -113,7 +119,7 @@ public class AbnormalOvertimeRemind {
|
|||
//主表
|
||||
workflowRequestInfo.setWorkflowMainTableInfo(workflowMainTableInfo);
|
||||
//是否提交下一节点
|
||||
workflowRequestInfo.setIsnextflow("0");
|
||||
workflowRequestInfo.setIsnextflow("1");
|
||||
|
||||
WorkflowService workflow = new WorkflowServiceImpl();
|
||||
return workflow.doCreateWorkflowRequest(workflowRequestInfo, 1);
|
||||
|
|
@ -129,4 +135,22 @@ public class AbnormalOvertimeRemind {
|
|||
tableField.setEdit(true);
|
||||
return tableField;
|
||||
}
|
||||
|
||||
|
||||
private static String getFormatTime(String timeString){
|
||||
if(StringUtils.isBlank(timeString)){
|
||||
return null;
|
||||
}
|
||||
// 定义输入时间字符串的格式
|
||||
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
|
||||
|
||||
// 解析时间字符串为 LocalTime 对象
|
||||
LocalTime time = LocalTime.parse(timeString, inputFormatter);
|
||||
|
||||
// 定义输出时间字符串的格式
|
||||
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("HH:mm");
|
||||
|
||||
// 格式化 LocalTime 对象为所需的字符串格式
|
||||
return time.format(outputFormatter);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue