feiyu02
2025-08-14 f373bbf83d9d2a7e5f96118d7dcd658c9fea8bc8
src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt
@@ -13,16 +13,33 @@
@Repository
class TaskRep(private val taskMapper: TaskMapper, private val monitorobjectversionMapper: MonitorobjectversionMapper) {
    private fun exampleTask(areaVo: AreaVo): Task?{
    private fun exampleTask(areaVo: AreaVo, levelNum: Int? = null): Example? {
        areaVo.starttime ?: return null
        val mStart = areaVo.starttime!!.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0)
        val mEnd = mStart.plusMonths(1).minusSeconds(1)
        return Task().apply {
            provincecode = areaVo.provincecode
            citycode = areaVo.citycode
            districtcode = areaVo.districtcode
            starttime = Date.from(mStart.atZone(ZoneId.systemDefault()).toInstant())
            endtime = Date.from(mEnd.atZone(ZoneId.systemDefault()).toInstant())
//        return Task().apply {
//            provincecode = areaVo.provincecode
//            citycode = areaVo.citycode
//            districtcode = areaVo.districtcode
//            starttime = Date.from(mStart.atZone(ZoneId.systemDefault()).toInstant())
//            endtime = Date.from(mEnd.atZone(ZoneId.systemDefault()).toInstant())
//        }
        return Example(Task::class.java).apply {
            createCriteria()
                .apply {
                    if (levelNum != null) {
                        andEqualTo("levelnum", levelNum)
                    } else {
                        andIsNull("levelnum")
                    }
                }
                .andEqualTo("provincecode", areaVo.provincecode)
                .andEqualTo("citycode", areaVo.citycode)
                .andEqualTo("districtcode", areaVo.districtcode)
                .andGreaterThanOrEqualTo("starttime", mStart)
                .andLessThanOrEqualTo("endtime", mEnd)
            orderBy("starttime")
        }
    }
@@ -34,13 +51,17 @@
     * 查找一个总任务
     */
    fun findOneTask(areaVo: AreaVo): Task? {
        val example = exampleTask(areaVo) ?: return null
        return taskMapper.selectOne(example)
        val list = findTasks(areaVo)
        return if (list.isEmpty()) {
            null
        } else {
            list[0]
        }
    }
    fun findTasks(areaVo: AreaVo): List<Task?> {
        val example = exampleTask(areaVo) ?: return emptyList()
        return taskMapper.select(example)
        val example = exampleTask(areaVo, 2) ?: return emptyList()
        return taskMapper.selectByExample(example)
    }
    fun findTasks(task: Task): List<Task?> {
@@ -58,10 +79,13 @@
    /**
     * 获取日任务
     * @param taskId 顶层任务id
     * @param userId 执行用户id
     */
    fun findDayTasks(taskId: String?): List<Task?> {
    fun findDayTasks(taskId: String?, userId: String? = null): List<Task?> {
        return taskMapper.selectByExample(Example(Task::class.java).apply {
            createCriteria().andEqualTo("tsguid", taskId)
            createCriteria().andEqualTo("tsguid", taskId).apply {
                userId?.let { andLike("executorguids", "%$it%") }
            }
            orderBy("starttime").desc()
        })
    }