From 8e9842b4f956ee13347f10df967f143ddd71b600 Mon Sep 17 00:00:00 2001 From: jimlee Date: Wed, 22 Mar 2023 19:34:53 +0800 Subject: [PATCH] =?UTF-8?q?:ok:=20=E7=94=B1=E4=BA=8E=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E5=8F=98=E6=9B=B4=EF=BC=8C=E5=B7=B2=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=90=8E=E5=8F=B0=E7=99=BB=E5=BD=95=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BD=BF=E7=94=A8jsessionID=E7=99=BB=E5=BD=95=20:ok:?= =?UTF-8?q?=20=E5=85=BC=E5=AE=B9=E6=96=B0=E7=9A=84=E6=89=93=E5=8D=A1=20:ok?= =?UTF-8?q?:=20=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E6=89=93=E5=8D=A1?= =?UTF-8?q?=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hoperun/sign/api/HoperunDakaController.kt | 11 +++++++- .../sign/scheduler/AutoDakaScheduler.kt | 26 +++++++++++-------- src/main/resources/static/script.js | 18 ++++++++----- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/main/kotlin/com/pomelotea/hoperun/sign/api/HoperunDakaController.kt b/src/main/kotlin/com/pomelotea/hoperun/sign/api/HoperunDakaController.kt index dc27c27..ca45d34 100644 --- a/src/main/kotlin/com/pomelotea/hoperun/sign/api/HoperunDakaController.kt +++ b/src/main/kotlin/com/pomelotea/hoperun/sign/api/HoperunDakaController.kt @@ -12,6 +12,7 @@ import com.pomelotea.hoperun.sign.config.HoperunUserConfig.getUserConfig import com.pomelotea.hoperun.sign.config.HoperunUserConfig.userConfigMap import com.pomelotea.hoperun.sign.config.UserConfig import com.pomelotea.hoperun.sign.scheduler.AutoDakaScheduler +import com.pomelotea.hoperun.sign.scheduler.AutoDakaScheduler.Companion.dakaQueue import okhttp3.FormBody import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request @@ -143,6 +144,12 @@ class HoperunSignController { queryMonthAttData(employeeNo, jsessionId, getLastDateyyyy_MM() + "-01") val lastMonthAttLogs = lastMonthAttList.sortedByDescending { it.yearmonth }.filter { it.dateType == "1" } monthAttResult.addAll(lastMonthAttLogs) + val monthAttLog = monthAttResult.find { it.yearmonth == getNowDateyyyy_MM_dd() } + val autoDaka = dakaQueue.filter { it.dakaDate == getNowDateyyyy_MM_dd() }.findLast { it.employeeNo == employeeNo } + if (autoDaka != null && monthAttLog != null) { + monthAttLog.autoDakaBeginTime = autoDaka.beginTime + monthAttLog.autoDakaEndTime = autoDaka.endTime + } return monthAttResult } @@ -278,7 +285,9 @@ data class MonthAttLog( var project_id: String? = null, var projectcode: String? = null, var staff_code: String? = null, - var yearmonth: String? = null + var yearmonth: String? = null, + var autoDakaBeginTime: String? = null, + var autoDakaEndTime: String? = null, ) data class HoperunDakaRequest( diff --git a/src/main/kotlin/com/pomelotea/hoperun/sign/scheduler/AutoDakaScheduler.kt b/src/main/kotlin/com/pomelotea/hoperun/sign/scheduler/AutoDakaScheduler.kt index 27fa584..7c67335 100644 --- a/src/main/kotlin/com/pomelotea/hoperun/sign/scheduler/AutoDakaScheduler.kt +++ b/src/main/kotlin/com/pomelotea/hoperun/sign/scheduler/AutoDakaScheduler.kt @@ -25,6 +25,10 @@ class AutoDakaScheduler { val outFile = File("./daka.log") val bw: BufferedWriter = BufferedWriter(OutputStreamWriter(outFile.outputStream())) + val logFile = File("./scheduler.log") + val logBw: BufferedWriter = BufferedWriter(OutputStreamWriter(logFile.outputStream())) + + val timeThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(1) val schedulerThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(10) @@ -39,18 +43,16 @@ class AutoDakaScheduler { fun addAutoDakaScheduled(dakaDate: String = getNowDateyyyy_MM_dd()) { // 调休的工作日 if (isNeedDaka(dakaDate)) { - bw.use { - HoperunUserConfig.userConfigMap.forEach { (k, v) -> - if (v.autoDaka) { - // 没有当日的打卡信息才插入 - var daka = dakaQueue.find { it.dakaDate == dakaDate && it.employeeNo == v.employeeNo } - if (daka == null) { - daka = generateDakaInfo(v, dakaDate) - dakaQueue.add(daka) - } - bw.write("${v.username},${daka.toCsv()}") - bw.newLine() + HoperunUserConfig.userConfigMap.forEach { (_, v) -> + if (v.autoDaka) { + // 没有当日的打卡信息才插入 + var daka = dakaQueue.find { it.dakaDate == dakaDate && it.employeeNo == v.employeeNo } + if (daka == null) { + daka = generateDakaInfo(v, dakaDate) + dakaQueue.add(daka) } + bw.write("${v.username},${daka.toCsv()}") + bw.newLine() } } } @@ -75,11 +77,13 @@ class AutoDakaScheduler { private fun beginDaka(daka: Daka) { // println("begin:${daka.toCsv()}") + logBw.write("execute begin sign: ${daka.toCsv()}") beginTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.beginTime) } private fun endDaka(daka: Daka) { // println("end:${daka.toCsv()}") + logBw.write("execute end sign: ${daka.toCsv()}") endTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.beginTime) } diff --git a/src/main/resources/static/script.js b/src/main/resources/static/script.js index c4665f6..b15c1b4 100644 --- a/src/main/resources/static/script.js +++ b/src/main/resources/static/script.js @@ -28,6 +28,7 @@ if ($('#login-span').css('display') !== 'none') { let jsessonIdInput = document.querySelector('#jsessionId'); let autoDaka = document.querySelector("#toggle--switch") +autoDaka.checked = window.localStorage.getItem("autodaka") document.querySelector('#login').addEventListener("click", () => { window.localStorage.setItem("employeeNo", employeeNumberInput.value); @@ -77,7 +78,7 @@ function loginAndLoadRecord() { cocoMessage.error("登陆失败!" + result.message, 3000); } }, - error: function (e) { + error: function () { cocoMessage.error("请求失败!", 3000); } }) @@ -109,6 +110,8 @@ function loadDakaList() { '
' + '' + '' + + (signlog.autoDakaBeginTime == null ? "" : '
') + + (signlog.autoDakaEndTime == null ? "" : '') + (signlog.end_time != null && signlog.end_time.substr(11, 5) > "20:30" ? '' : '') + '
' + (index <= 3 ? '
' + @@ -130,7 +133,7 @@ function loadDakaList() { } closeLoading() }, - error: function (e) { + error: function () { cocoMessage.error("请求失败!", 3000); closeLoading() } @@ -205,7 +208,8 @@ function bindSaveDakaTime() { function bindAutoDakaToggle() { document.querySelectorAll("#toggle--switch").forEach((dakaButton) => { - $(dakaButton).off('change').on('change', function (e) { + $(dakaButton).off('change').on('change', function () { + window.localStorage.setItem("autodaka", this.checked); $.ajax({ method: "get", url: "/api/daka/auto/" + window.localStorage.getItem("employeeNo") + "/" + autoDaka.checked, @@ -214,7 +218,7 @@ function bindAutoDakaToggle() { cocoMessage.error("登陆失败!" + result.message, 3000); } }, - error: function (e) { + error: function () { cocoMessage.error("请求失败!", 3000); } }) @@ -260,7 +264,7 @@ function saveDakaTime(signDate, beginTime, endTime) { } } }, - error: function (e) { + error: function () { cocoMessage.error("请求失败!", 3000); } }); @@ -290,7 +294,7 @@ function saveDakaTime(signDate, beginTime, endTime) { } } }, - error: function (e) { + error: function () { cocoMessage.error("请求失败!", 3000); } }); @@ -308,7 +312,7 @@ function randomBeginTime() { function randomEndTime() { let hourArray = [18, 19, 20, 21, 22, 23, 20, 21, 22, 20, 20, 21]; let randomHour = hourArray[Math.round(Math.random() * 9)]; - let randomMinute = 0; + let randomMinute; if (randomHour === 18) { randomMinute = Math.round(Math.random() * 30) + 29; } else {