From 578a1595358692d4fad540ebe36d65ab1c67af52 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 6 Aug 2024 15:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E7=8F=AD=E5=BC=82=E5=B8=B8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/TestOvertimeRemind.jsp | 11 +++++ .../engine/jc/kq/AbnormalOvertimeRemind.java | 48 ++++++++++++++----- 2 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 interface/TestOvertimeRemind.jsp diff --git a/interface/TestOvertimeRemind.jsp b/interface/TestOvertimeRemind.jsp new file mode 100644 index 0000000..9694d5a --- /dev/null +++ b/interface/TestOvertimeRemind.jsp @@ -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); +%> \ No newline at end of file diff --git a/src/com/engine/jc/kq/AbnormalOvertimeRemind.java b/src/com/engine/jc/kq/AbnormalOvertimeRemind.java index 965cbbf..204a2ab 100644 --- a/src/com/engine/jc/kq/AbnormalOvertimeRemind.java +++ b/src/com/engine/jc/kq/AbnormalOvertimeRemind.java @@ -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,26 +26,28 @@ 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,判断是否有该日期的加班流程 + rs.writeLog("signMins=" + signMins); + String signInDate = rs.getString("signindate"); + String signInTime = rs.getString("signintime"); + String signInDateTime = signInDate + " " + signInTime; + + 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); + 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) { - String signInDate = rs.getString("signindate"); - String signInTime = rs.getString("signintime"); - String signInDateTime = signInDate + " " + signInTime; - - String signOutDate = rs.getString("signoutdate"); - String signOutTime = rs.getString("signouttime"); - String signOutDateTime = signOutDate + " " + signOutTime; // 打卡时长保留两位小数 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); + } }