package com.flightfeather.uav.lightshare.service.impl
|
|
import com.flightfeather.uav.biz.FactorFilter
|
import com.flightfeather.uav.biz.report.MissionReport
|
import com.flightfeather.uav.common.exception.BizException
|
import com.flightfeather.uav.domain.entity.Mission
|
import com.flightfeather.uav.domain.entity.RealTimeDataVehicle
|
import com.flightfeather.uav.domain.mapper.MissionMapper
|
import com.flightfeather.uav.domain.mapper.RealTimeDataVehicleMapper
|
import com.flightfeather.uav.lightshare.bean.BaseResponse
|
import com.flightfeather.uav.lightshare.bean.DataHead
|
import com.flightfeather.uav.lightshare.service.MissionService
|
import com.github.pagehelper.PageHelper
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
import java.io.File
|
import java.util.*
|
import javax.servlet.http.HttpServletResponse
|
|
@Service
|
class MissionServiceImpl(
|
private val missionMapper: MissionMapper,
|
private val realTimeDataVehicleMapper: RealTimeDataVehicleMapper,
|
private val missionReport: MissionReport,
|
) : MissionService {
|
override fun getMission(type: String?, page: Int?, perPage: Int?): BaseResponse<List<Mission>> {
|
val _perPage = perPage ?: 60
|
val _page = page ?: 1
|
val pageInfo = PageHelper.startPage<Mission>(_page, _perPage)
|
val result = mutableListOf<Mission>()
|
missionMapper.selectByExample(Example(Mission::class.java).apply {
|
type?.let {
|
createCriteria().andEqualTo("deviceType", type)
|
}
|
orderBy("startTime").desc()
|
}).forEach { it?.let { result.add(it) } }
|
return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages),data = result)
|
}
|
|
@Synchronized
|
override fun createMission(mission: Mission): BaseResponse<Boolean> {
|
missionMapper.selectByPrimaryKey(mission.missionCode)?.run {
|
return BaseResponse(false, "任务编号已存在")
|
}
|
missionMapper.insert(mission).let {
|
return BaseResponse(it == 1)
|
}
|
}
|
|
override fun updateMission(mission: Mission): BaseResponse<Boolean> {
|
missionMapper.updateByPrimaryKey(mission).let {
|
return BaseResponse(it == 1)
|
}
|
}
|
|
override fun deleteMission(missionCode: String): BaseResponse<Boolean> {
|
missionMapper.deleteByPrimaryKey(missionCode).let {
|
return BaseResponse(it == 1)
|
}
|
}
|
|
override fun deleteMissionAndData(missionCode: String): Boolean {
|
val mission = missionMapper.selectByPrimaryKey(missionCode) ?: throw BizException("任务不存在")
|
missionMapper.deleteByPrimaryKey(missionCode)
|
realTimeDataVehicleMapper.deleteByExample(Example(RealTimeDataVehicle::class.java).apply {
|
createCriteria().andEqualTo("deviceCode", mission.deviceCode)
|
.andBetween("dataTime", mission.startTime, mission.endTime)
|
})
|
return true
|
}
|
|
override fun getReport(missionCode: String, response: HttpServletResponse) {
|
val path = missionReport.execute(missionCode, FactorFilter.default())
|
val pathArr = path.split("/")
|
val file = File(path)
|
if (file.exists()) {
|
response.contentType = "application/vnd.ms-excel;charset=UTF-8"
|
val name = Base64.getEncoder().encodeToString(pathArr.last().toByteArray())
|
response.setHeader("fileName", name)
|
response.outputStream.write(file.readBytes())
|
}
|
return
|
}
|
}
|