feiyu02
2025-07-30 a700aeb0a07d11da1e6b2ae999983ba17a415c70
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
@@ -31,8 +31,6 @@
    private val subTaskRep: SubTaskRep,
) : SubtaskService {
    val dateUtil = DateUtil()
    @Autowired
    lateinit var taskService: TaskService
    @Autowired
@@ -151,6 +149,7 @@
    @Transactional
    override fun saveList(subtasklist: List<Subtask>): Int {
        subtasklist.forEach {
            if (it.stguid == null) it.stguid = UUIDGenerator.generate16ShortUUID()
            subtaskMapper.insert(it)
        }
        return subtasklist.size
@@ -188,25 +187,25 @@
            dateString = date.substring(0, 7)
        }
        //判断参数是否正确
        if (dateUtil.StringToDate(dateString) == null) {
        if (DateUtil.StringToDate(dateString) == null) {
            return taskPackList
        }
        //根据type类型,得到具体是要哪三个月数据
        when (type) {
            "Middle" -> {
                one = dateUtil.addMonth(dateString, -1)
                one = DateUtil.addMonth(dateString, -1)
                two = dateString
                three = dateUtil.addMonth(dateString, 1)
                three = DateUtil.addMonth(dateString, 1)
            }
            "Left" -> {
                one = dateUtil.addMonth(dateString, 1)
                two = dateUtil.addMonth(dateString, 2)
                three = dateUtil.addMonth(dateString, 3)
                one = DateUtil.addMonth(dateString, 1)
                two = DateUtil.addMonth(dateString, 2)
                three = DateUtil.addMonth(dateString, 3)
            }
            "Right" -> {
                one = dateUtil.addMonth(dateString, -1)
                two = dateUtil.addMonth(dateString, -2)
                three = dateUtil.addMonth(dateString, -3)
                one = DateUtil.addMonth(dateString, -1)
                two = DateUtil.addMonth(dateString, -2)
                three = DateUtil.addMonth(dateString, -3)
            }
            else -> {
                //参数不正确就返回
@@ -242,25 +241,25 @@
            dateString = date.substring(0, 7)
        }
        //判断参数是否正确
        if (dateUtil.StringToDate(dateString) == null) {
        if (DateUtil.StringToDate(dateString) == null) {
            return taskPackList
        }
        //根据type类型,得到具体是要哪三个月数据
        when (type) {
            "Middle" -> {
                one = dateUtil.addMonth(dateString, -1)
                one = DateUtil.addMonth(dateString, -1)
                two = dateString
                three = dateUtil.addMonth(dateString, 1)
                three = DateUtil.addMonth(dateString, 1)
            }
            "Left" -> {
                one = dateUtil.addMonth(dateString, 1)
                two = dateUtil.addMonth(dateString, 2)
                three = dateUtil.addMonth(dateString, 3)
                one = DateUtil.addMonth(dateString, 1)
                two = DateUtil.addMonth(dateString, 2)
                three = DateUtil.addMonth(dateString, 3)
            }
            "Right" -> {
                one = dateUtil.addMonth(dateString, -1)
                two = dateUtil.addMonth(dateString, -2)
                three = dateUtil.addMonth(dateString, -3)
                one = DateUtil.addMonth(dateString, -1)
                two = DateUtil.addMonth(dateString, -2)
                three = DateUtil.addMonth(dateString, -3)
            }
            else -> {
                //参数不正确就返回
@@ -385,18 +384,21 @@
    override fun findAll(): MutableList<Subtask> = subtaskMapper.selectAll()
    override fun save(subtask: Subtask): Int = subtaskMapper.insert(subtask)
    override fun save(subtask: Subtask): Int {
        if (subtask.stguid == null) subtask.stguid = UUIDGenerator.generate16ShortUUID()
        return subtaskMapper.insert(subtask)
    }
    //更新子任务
    override fun update(subtask: Subtask): Int {
        var res = 0
        //根据子任务guid获取顶层任务
        val toptaskVo = taskService.findByID(subtask.tguid.toString())
//        //根据日期获取日任务
//        val daytaskVo = taskService.findByDate(dateUtil.getDate(subtask.planstarttime)!!)
        val daytaskVo = taskService.findByDate(subtask.tguid!!, DateUtil.getDate(subtask.planstarttime)!!)
        //应该直接根据子任务的日任务id查询日任务
        val daytaskVo = taskService.findByID(subtask.tsguid!!)
//        val daytaskVo = taskService.findByID(subtask.tsguid!!)
        //判断是否有日任务
        if (StringUtil.isEmpty(daytaskVo.tguid)) {
@@ -407,20 +409,20 @@
            task.tsguid = toptaskVo.tguid
            task.tguid = guid
            task.name = subtask.name
            task.starttime = dateUtil.StringToDate(dateUtil.getDate(subtask.planstarttime)!!.substring(0, 10))
            task.starttime = DateUtil.StringToDate(DateUtil.getDate(subtask.planstarttime)!!.substring(0, 10))
            task.endtime =
                    dateUtil.StringToDate(dateUtil.getDate(subtask.planstarttime)!!.substring(0, 10) + " 23:59:59")
                DateUtil.StringToDate(DateUtil.getDate(subtask.planstarttime)!!.substring(0, 10) + " 23:59:59")
            //****日任务执行状态继承子任务的状态*(修改)***
            task.runingstatus = subtask.status
            //********************************************
            taskService.save(task)
            subtask.tsguid = guid
            subtaskMapper.updateByPrimaryKeySelective(subtask)
            res = subtaskMapper.updateByPrimaryKeySelective(subtask)
        } else {
//            subtask.tsguid = daytaskVo.tguid
            subtask.tsguid = daytaskVo.tguid
            //*(修改)*日任务正在执行,子任务结束,遍历所有其余子任务,都是结束时才将日任务修改为结束****
            if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text
                    && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text){
                && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text){
                val subtaskVolist = findByDayTaskID(daytaskVo.tguid!!)
                var bool = false
                subtaskVolist.forEach {
@@ -441,9 +443,13 @@
            BeanUtils.copyProperties(daytaskVo, daytask)
            taskMapper.updateByPrimaryKeySelective(daytask)
            //****************************************************************************************
            subtaskMapper.updateByPrimaryKeySelective(subtask)
            res = subtaskMapper.updateByPrimaryKeySelective(subtask)
        }
        return res
    }
    override fun changeStatus(subtask: Subtask): Int {
        val res = update(subtask)
        //对已结束的子任务进行自动评分
        if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text) {
            val example = Example(Evaluation::class.java)
@@ -455,9 +461,10 @@
            }
        }
        return 1
        return res
    }
    @Transactional
    override fun delete(id: String): Int{
        val subtask = subtaskMapper.selectByPrimaryKey(id)
        val dayTaskId = subtask.tsguid
@@ -476,15 +483,13 @@
            createCriteria().andEqualTo("tid", topTaskId).andEqualTo("sguid", sceneId)
        })
        mList.forEach {
            if (it.monitornum == null) {
                it.monitornum = 0
            } else {
                it.monitornum = it.monitornum!! - 1
                if (it.monitornum!! < 0) {
                    it.monitornum = 0
                }
            var count = it.extension1?.toIntOrNull() ?: 0
            count--
            if (count < 0) {
                count = 0
            }
            monitorobjectversionMapper.insert(it)
            it.extension1 = count.toString()
            monitorobjectversionMapper.updateByPrimaryKeySelective(it)
        }
        // 同时删除对应问题和巡查记录
@@ -517,7 +522,7 @@
            cal.set(Calendar.MILLISECOND, 0)
            cal.time
        } else {
            DateUtil().StringToDate(startTime!!)
            DateUtil.StringToDate(startTime!!)
        }
        val _endTime = if (endTime.isNullOrBlank()) {
@@ -528,7 +533,7 @@
            cal.set(Calendar.MILLISECOND, 999)
            cal.time
        } else {
            DateUtil().StringToDate(endTime!!)?.apply {
            DateUtil.StringToDate(endTime!!)?.apply {
                time += 24 * 60 * 60 * 1000
            }
        }
@@ -593,7 +598,7 @@
        }
        val time = if (updateTime != null) {
            DateUtil().StringToDate(updateTime)
            DateUtil.StringToDate(updateTime)
        } else {
            null
        }
@@ -612,7 +617,7 @@
                cal.set(Calendar.MILLISECOND, 0)
                cal.time
            } else {
                DateUtil().StringToDate(startTime!!)
                DateUtil.StringToDate(startTime!!)
            }
            val _endTime = if (endTime.isNullOrBlank()) {
@@ -623,13 +628,13 @@
                cal.set(Calendar.MILLISECOND, 999)
                cal.time
            } else {
                DateUtil().StringToDate(endTime!!)?.apply {
                DateUtil.StringToDate(endTime!!)?.apply {
                    this.time += 24 * 60 * 60 * 1000
                }
            }
            val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
            val p = PageHelper.startPage<SubtaskSearchResultVo>(page ?: 1, perPage ?: 30)
            val subtasklist = subtaskMapper.getSubtask(_districtCode, _startTime, _endTime, _sceneType?.toByte())
@@ -744,7 +749,7 @@
        }
        val time = if (updateTime != null) {
            DateUtil().StringToDate(updateTime)
            DateUtil.StringToDate(updateTime)
        } else {
            null
        }
@@ -763,7 +768,7 @@
                cal.set(Calendar.MILLISECOND, 0)
                cal.time
            } else {
                DateUtil().StringToDate(startTime!!)
                DateUtil.StringToDate(startTime!!)
            }
            val _endTime = if (endTime.isNullOrBlank()) {
@@ -774,13 +779,13 @@
                cal.set(Calendar.MILLISECOND, 999)
                cal.time
            } else {
                DateUtil().StringToDate(endTime!!)?.apply {
                DateUtil.StringToDate(endTime!!)?.apply {
                    this.time += 24 * 60 * 60 * 1000
                }
            }
            val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
            val p = PageHelper.startPage<SubtaskSearchResultVo>(page ?: 1, perPage ?: 30)
            val subtasklist = subtaskMapper.getSubtask(_districtCode, _startTime, _endTime, _sceneType?.toByte())
@@ -895,7 +900,7 @@
    }
    override fun findByDate(date: String, userId: String): List<SubtaskVo> {
        val time = DateUtil().StringToDate(date)
        val time = DateUtil.StringToDate(date)
        val resultList = mutableListOf<SubtaskVo>()
@@ -942,7 +947,8 @@
                districtName = t.districtname
                townCode = t.towncode
                townName = t.townname
                subTaskSummary = subtaskMapper.getSummary(t.tguid!!, areaVo.scensetypeid?.toIntOrNull())
                areaVo.topTaskId = t.tguid
                subTaskSummary = subTaskRep.findSummary(areaVo)
            }
            res.add(pro)
        }