dev-2025 #1

Merged
luobei merged 14 commits from dev-2025 into main 2025-03-21 15:26:29 +08:00
6 changed files with 27 additions and 42 deletions
Showing only changes of commit e26ef9fa3b - Show all commits

View File

@@ -1,5 +1,6 @@
package com.pomelotea.hoperun.sign package com.pomelotea.hoperun.sign
import org.slf4j.Logger
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import org.springframework.boot.SpringApplication import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.SpringBootApplication
@@ -17,6 +18,9 @@ import java.util.*
open class DakaApplication { open class DakaApplication {
} }
val <T : Any> T.logger: Logger
get() = LoggerFactory.getLogger(this::class.java)
val holidays: List<String> = listOf( val holidays: List<String> = listOf(
"2023-04-05", "2023-04-05",
"2023-04-29", "2023-04-30", "2023-05-01", "2023-05-01", "2023-05-03", "2023-04-29", "2023-04-30", "2023-05-01", "2023-05-01", "2023-05-03",

View File

@@ -364,7 +364,13 @@ data class DakaResponse(
var result: String? = null, var result: String? = null,
var comment: String? = null, var comment: String? = null,
var data: String? = null var data: String? = null
)
) {
override fun toString(): String {
return "DakaResponse(result=$result, comment=$comment, data=$data)"
}
}
class WebResult<T> protected constructor() : java.io.Serializable { class WebResult<T> protected constructor() : java.io.Serializable {
var data: T? = null var data: T? = null

View File

@@ -1,11 +1,10 @@
package com.pomelotea.hoperun.sign.scheduler package com.pomelotea.hoperun.sign.scheduler
import com.pomelotea.hoperun.sign.api.DakaResponse
import com.pomelotea.hoperun.sign.common.* import com.pomelotea.hoperun.sign.common.*
import com.pomelotea.hoperun.sign.config.HoperunUserConfig import com.pomelotea.hoperun.sign.config.HoperunUserConfig
import com.pomelotea.hoperun.sign.config.UserConfig import com.pomelotea.hoperun.sign.config.UserConfig
import java.io.BufferedWriter import com.pomelotea.hoperun.sign.logger
import java.io.File
import java.io.OutputStreamWriter
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
import java.util.* import java.util.*
@@ -22,13 +21,6 @@ import java.util.concurrent.TimeUnit
**/ **/
class AutoDakaScheduler { 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 timeThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(1)
val schedulerThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(10) val schedulerThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(10)
@@ -51,9 +43,7 @@ class AutoDakaScheduler {
daka = generateDakaInfo(v, dakaDate) daka = generateDakaInfo(v, dakaDate)
dakaQueue.add(daka) dakaQueue.add(daka)
} }
bw.write("${v.username},${daka.toCsv()}") logger.info("${v.username},${daka.toCsv()}")
bw.newLine()
bw.flush()
} }
} }
} }
@@ -65,15 +55,11 @@ class AutoDakaScheduler {
val beginSeconds = beginDate.toEpochSecond(DEFAULT_ZONE) - (System.currentTimeMillis() / 1000) val beginSeconds = beginDate.toEpochSecond(DEFAULT_ZONE) - (System.currentTimeMillis() / 1000)
val endSeconds = endDate.toEpochSecond(DEFAULT_ZONE) - (System.currentTimeMillis() / 1000) val endSeconds = endDate.toEpochSecond(DEFAULT_ZONE) - (System.currentTimeMillis() / 1000)
if (beginSeconds > 0) { if (beginSeconds > 0) {
logBw.write("[ADD-SCHEDULE]BEGIN:${it.employeeNo}:DATE:${it.dakaDate}TIME:${it.beginTime}") logger.info("[ADD-SCHEDULE]BEGIN:${it.employeeNo}:DATE:${it.dakaDate}TIME:${it.beginTime}")
logBw.newLine()
logBw.flush()
schedulerThreadPool.schedule({beginDaka(it)}, beginSeconds, TimeUnit.SECONDS) schedulerThreadPool.schedule({beginDaka(it)}, beginSeconds, TimeUnit.SECONDS)
} }
if (endSeconds > 0) { if (endSeconds > 0) {
logBw.write("[ADD-SCHEDULE]END:${it.employeeNo}:DATE:${it.dakaDate}TIME:${it.endTime}") logger.info("[ADD-SCHEDULE]END:${it.employeeNo}:DATE:${it.dakaDate}TIME:${it.endTime}")
logBw.newLine()
logBw.flush()
schedulerThreadPool.schedule({endDaka(it)}, endSeconds, TimeUnit.SECONDS) schedulerThreadPool.schedule({endDaka(it)}, endSeconds, TimeUnit.SECONDS)
} }
// schedulerThreadPool.schedule({beginDaka(it)}, 5, TimeUnit.SECONDS) // schedulerThreadPool.schedule({beginDaka(it)}, 5, TimeUnit.SECONDS)
@@ -85,18 +71,16 @@ class AutoDakaScheduler {
private fun beginDaka(daka: Daka) { private fun beginDaka(daka: Daka) {
// println("begin:${daka.toCsv()}") // println("begin:${daka.toCsv()}")
logBw.write("[EXECUTE]BEGIN:${daka.employeeNo}:DATE:${daka.dakaDate}:TIME:${daka.beginTime}") logger.info("[EXECUTE]BEGIN:${daka.employeeNo}:DATE:${daka.dakaDate}:TIME:${daka.beginTime}")
logBw.newLine() val resp: DakaResponse = beginTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.beginTime)
logBw.flush() logger.info(resp.toString())
beginTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.beginTime)
} }
private fun endDaka(daka: Daka) { private fun endDaka(daka: Daka) {
// println("end:${daka.toCsv()}") // println("end:${daka.toCsv()}")
logBw.write("[EXECUTE]END:${daka.employeeNo}:DATE:${daka.dakaDate}:TIME:${daka.endTime}") logger.info("[EXECUTE]END:${daka.employeeNo}:DATE:${daka.dakaDate}:TIME:${daka.endTime}")
logBw.newLine() val resp: DakaResponse = endTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.endTime)
logBw.flush() logger.info(resp.toString())
endTime(employeeNo = daka.employeeNo, date = daka.dakaDate, time = daka.endTime)
} }
private fun generateDakaInfo(userConfig: UserConfig, dakaDate: String): Daka { private fun generateDakaInfo(userConfig: UserConfig, dakaDate: String): Daka {

View File

@@ -2,11 +2,9 @@ package com.pomelotea.hoperun.sign.scheduler
import com.pomelotea.hoperun.sign.common.client import com.pomelotea.hoperun.sign.common.client
import com.pomelotea.hoperun.sign.common.sessionMap import com.pomelotea.hoperun.sign.common.sessionMap
import com.pomelotea.hoperun.sign.logger
import okhttp3.Request import okhttp3.Request
import org.jsoup.Jsoup import org.jsoup.Jsoup
import java.io.BufferedWriter
import java.io.File
import java.io.OutputStreamWriter
import java.util.* import java.util.*
import java.util.concurrent.Executors import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService import java.util.concurrent.ScheduledExecutorService
@@ -21,9 +19,6 @@ import java.util.concurrent.TimeUnit
**/ **/
class AutoRenewSessionScheduler { class AutoRenewSessionScheduler {
val outFile = File("./renewsession.log")
val bw: BufferedWriter = BufferedWriter(OutputStreamWriter(outFile.outputStream()))
val schedulerThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(1) val schedulerThreadPool: ScheduledExecutorService = Executors.newScheduledThreadPool(1)
init { init {
@@ -37,13 +32,9 @@ class AutoRenewSessionScheduler {
item.value?.let { item.value?.let {
val result = index(it) val result = index(it)
if (result != null) { if (result != null) {
bw.write("[RENEW-SESSION]:SUCCESS:USER:$result") logger.info("[RENEW-SESSION]:SUCCESS:USER:$result")
bw.newLine()
bw.flush()
} else { } else {
bw.write("[REMOVE-SESSION]:USER:$result") logger.info("[REMOVE-SESSION]:USER:$result")
bw.newLine()
bw.flush()
iterator.remove() iterator.remove()
} }
} }

View File

@@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8082
hoperun: hoperun:
address: "浙江省杭州市西湖区转塘街道凌家桥路飞天园区120" address: "浙江省杭州市西湖区转塘街道凌家桥路飞天园区120"

View File

@@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8082
error: error:
path: /error path: /error