道路线索应急巡查系统服务后台
feiyu02
2025-09-30 84569abda51ecf6c5549dec4cadee8d043422379
src/main/kotlin/com/flightfeather/grid/service/impl/ClueTaskServiceImpl.kt
@@ -1,10 +1,20 @@
package com.flightfeather.grid.service.impl
import com.flightfeather.grid.config.exception.BizException
import com.flightfeather.grid.constant.ConstantHttp
import com.flightfeather.grid.domain.ds1.entity.ClueTask
import com.flightfeather.grid.domain.ds1.mapper.ClueInternalMapper
import com.flightfeather.grid.domain.ds1.mapper.ClueTaskMapper
import com.flightfeather.grid.service.ClueTaskService
import com.flightfeather.grid.vo.ClueInternalTaskVo
import com.flightfeather.grid.vo.ClueTaskOptions
import com.flightfeather.grid.vo.ClueTaskSummaryVo
import com.flightfeather.grid.vo.DataHead
import com.flightfeather.grid.web.responsePack
import com.github.pagehelper.PageHelper
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import tk.mybatis.mapper.entity.Example
import java.util.*
/**
@@ -13,7 +23,32 @@
 * @author feiyu02
 */
@Service
class ClueTaskServiceImpl(private val clueTaskMapper: ClueTaskMapper) : ClueTaskService {
class ClueTaskServiceImpl(
    private val clueTaskMapper: ClueTaskMapper,
    private val clueInternalMapper: ClueInternalMapper,
) : ClueTaskService {
    @Transactional
    override fun createInternalClueTask(clueInternalTaskVo: ClueInternalTaskVo): Int {
        clueInternalTaskVo.clueInternal?.cReleaseTime = Date()
        clueInternalTaskVo.clueInternal?.cCreateTime = Date()
        clueInternalTaskVo.clueInternal?.cUploaded = false
        clueInternalMapper.insert(clueInternalTaskVo.clueInternal)
        //
        clueInternalTaskVo.clueTask?.clueId = clueInternalTaskVo.clueInternal?.cId
        if (clueInternalTaskVo.clueTask?.guid == null) {
            clueInternalTaskVo.clueTask?.guid = UUID.randomUUID().toString()
        }
        if (clueInternalTaskVo.clueTask?.hasUav == null) {
            clueInternalTaskVo.clueTask?.hasUav = false
        }
        clueInternalTaskVo.clueTask?.createTime = Date()
        clueInternalTaskVo.clueTask?.updateTime = Date()
        clueInternalTaskVo.clueTask?.internalTask = true
        clueInternalTaskVo.clueTask?.finished = false
        return clueTaskMapper.insert(clueInternalTaskVo.clueTask)
    }
    override fun createClueTask(clueTask: ClueTask): Int {
        if (clueTask.guid == null) {
@@ -21,6 +56,8 @@
        }
        clueTask.createTime = Date()
        clueTask.updateTime = Date()
        clueTask.internalTask = false
        clueTask.finished = false
        return clueTaskMapper.insert(clueTask)
    }
@@ -34,4 +71,46 @@
    override fun getClueTask(clueTask: ClueTask): List<ClueTask?> {
        return clueTaskMapper.select(clueTask)
    }
    override fun searchClueTask(options: ClueTaskOptions, page: Int?, perPage: Int?): Pair<DataHead, List<ClueTask?>> {
        val p = PageHelper.startPage<ClueTask>(
            page ?: ConstantHttp.DEFAULT_PAGE_NUM,
            perPage ?: ConstantHttp.DEFAULT_PAGE_SIZE
        )
        clueTaskMapper.selectByExample(Example(ClueTask::class.java).apply {
            createCriteria().apply {
                andEqualTo("internalTask", options.internal)
                andGreaterThanOrEqualTo("taskTime", options.startTime)
                andLessThanOrEqualTo("taskTime", options.endTime)
                andEqualTo("provinceCode", options.provinceCode)
                andEqualTo("provinceName", options.provinceName)
                andEqualTo("cityCode", options.cityCode)
                andEqualTo("cityName", options.cityName)
                andEqualTo("districtCode", options.districtCode)
                andEqualTo("districtName", options.districtName)
                andEqualTo("townCode", options.townCode)
                andEqualTo("townName", options.townName)
                andEqualTo("finished", options.finished)
            }
            orderBy(options.sortBy ?: "taskTime").apply { if (options.sort == "desc") desc() else asc() }
        })
        return responsePack(p)
    }
    override fun deleteClueTask(clueTask: ClueTask): Int {
        clueTask.guid ?: throw BizException("删除线索任务失败,缺少任务主键guid")
        return clueTaskMapper.delete(clueTask)
    }
    override fun getClueTaskSummary(options: ClueTaskOptions): ClueTaskSummaryVo {
        return clueTaskMapper.selectSummaryCount(options)
    }
    override fun finishClueTask(clueTaskId: String): Int {
        return clueTaskMapper.updateByPrimaryKeySelective(ClueTask().apply {
            guid = clueTaskId
            finished = true
        })
    }
}