feiyu02
2025-03-28 7d74f3fd087d4a8192ed556a6c2e3a2ea3c81cff
src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt
@@ -23,8 +23,6 @@
 */
class DataSource(val config: ExcelConfigVo, val dbMapper: DbMapper){
    private val dateUtil = DateUtil()
    private val sourceList = mutableListOf<Subtask>()
    var year = 0
@@ -61,7 +59,7 @@
     */
    fun reset() {
        rowData.index = 0
        rowData.subTask = sourceList.first()
        rowData.subTask = if (sourceList.isEmpty()) null else sourceList.first()
        rowData.clear()
    }
@@ -70,7 +68,7 @@
     */
    fun areaName(): String {
        val t = dbMapper.taskMapper.selectByPrimaryKey(config.topTaskGuid)
        return "${dateUtil.DateToString(t.starttime, DateUtil.DateStyle.YYYY_MM_CN)}${t.districtname}${if (area != t.districtname) area else ""}${Constant.SceneType.getDes(config.sceneType)}"
        return "${DateUtil.DateToString(config.startTime, DateUtil.DateStyle.YYYY_MM_CN)}${t.districtname}${if (area != t.districtname) area else ""}${Constant.SceneType.getDes(config.sceneType)}"
    }
    /**
@@ -87,52 +85,52 @@
            })?.takeIf { it.isNotEmpty() }?.get(0)?.let { area = it.townname ?: "" }
        }
        dbMapper.taskMapper.selectByPrimaryKey(config.topTaskGuid).let {
        dbMapper.taskMapper.selectByPrimaryKey(config.topTaskGuid)?.let {
            val time = LocalDateTime.ofInstant(it.starttime?.toInstant(), ZoneId.systemDefault())
            this.year = time.year
            this.month = time.monthValue
            if (area.isBlank()) area = it.districtname ?: ""
        }
        //1. 查找特定的巡查任务或者所有的计划巡查任务
        var taskSceneIdList = listOf<String>()
        val subTaskList = if (config.subTaskIdList?.isNotEmpty() == true ||
            (config.startTime != null || config.endTime != null)
        ) {
            dbMapper.subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
                createCriteria().apply {
                    if (config.subTaskIdList?.isNotEmpty() == true) {
                        andIn("stguid", config.subTaskIdList)
                    }
                    config.startTime?.let { andGreaterThanOrEqualTo("planstarttime", it) }
                    config.endTime?.let { andLessThanOrEqualTo("planendtime", it) }
                    config.districtCode?.let { andEqualTo("districtcode", it) }
//                    andEqualTo("tguid", config.topTaskGuid)
                }
            })
        } else {
            taskSceneIdList = dbMapper.scenseMapper.getSceneByType(config.topTaskGuid, config
                .sceneType, config.townCode).map { it.guid ?: "" }
            dbMapper.subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
                createCriteria().andIn("scenseid", taskSceneIdList)
                    .andEqualTo("tguid", config.topTaskGuid)
            })
        }
        // 统计总任务下所有场景
        if (config.allScene) {
            //1. 查找特定的巡查任务或者所有的计划巡查任务
            val taskSceneIdList = dbMapper.scenseMapper.getSceneByType(config.topTaskGuid, config.sceneType,
                config.townCode).map { it.guid ?: "" }
        if (taskSceneIdList.isNotEmpty()) {
            taskSceneIdList.forEach {
                var subtask: Subtask? = null
                for (s in subTaskList) {
                    if (s.scenseid == it) {
                        subtask = s
                        result.add(s)
            val subTaskList = dbMapper.subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
                createCriteria().apply {
                    if (taskSceneIdList.isNotEmpty()) andIn("scenseid", taskSceneIdList)
                }.andEqualTo("tguid", config.topTaskGuid)
            })
            // 给还未巡查的场景生成空的子任务对象
            if (taskSceneIdList.isNotEmpty()) {
                taskSceneIdList.forEach {
                    var subtask: Subtask? = null
                    for (s in subTaskList) {
                        if (s.scenseid == it) {
                            subtask = s
                            result.add(s)
                        }
                    }
                    if (subtask == null) {
                        result.add(Subtask().apply { scenseid = it })
                    }
                }
                if (subtask == null) {
                    result.add(Subtask().apply { scenseid = it })
                }
            } else {
                result.addAll(subTaskList)
            }
        } else {
        }
        else {
            val subTaskList = dbMapper.subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
                    createCriteria().apply {
                        if (config.subTaskIdList?.isNotEmpty() == true) andIn("stguid", config.subTaskIdList)
                        config.startTime?.let { andGreaterThanOrEqualTo("planstarttime", it) }
                        config.endTime?.let { andLessThanOrEqualTo("planendtime", it) }
                        config.districtCode?.let { andEqualTo("districtcode", it) }
                        andEqualTo("tguid", config.topTaskGuid)
                    }
                })
            result.addAll(subTaskList)
        }