package cn.flightfeather.supervision.lightshare.service.impl
|
|
import cn.flightfeather.supervision.common.exception.BizException
|
import cn.flightfeather.supervision.common.utils.Constant
|
import cn.flightfeather.supervision.common.utils.DateUtil
|
import cn.flightfeather.supervision.common.utils.FileUtil
|
import cn.flightfeather.supervision.common.utils.JsonUtil
|
import cn.flightfeather.supervision.domain.ds1.entity.*
|
import cn.flightfeather.supervision.domain.ds1.repository.DeviceRep
|
import cn.flightfeather.supervision.lightshare.service.DeviceService
|
import com.google.gson.Gson
|
import org.springframework.beans.factory.annotation.Value
|
import org.springframework.stereotype.Service
|
import org.springframework.web.multipart.MultipartFile
|
import java.util.*
|
|
/**
|
*
|
* @date 2024/7/24
|
* @author feiyu02
|
*/
|
@Service
|
class DeviceServiceImpl(
|
private val deviceRep: DeviceRep,
|
@Value("\${filePath}") var filePath: String,
|
@Value("\${imgPath}") var imgPath: String,
|
) : DeviceService {
|
|
override fun findDevices(sceneId: String, deviceType: Constant.DeviceType): List<BaseDevice> {
|
return deviceRep.findDeviceList(sceneId, deviceType)
|
}
|
|
override fun insertDevice(deviceInfo: String, deviceType: Constant.DeviceType): Int {
|
return when (deviceType) {
|
Constant.DeviceType.MONITOR_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, MonitorDeviceInfo::class.java)
|
deviceRep.insertDevice(info)
|
}
|
Constant.DeviceType.TREATMENT_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, TreatmentDeviceInfo::class.java)
|
deviceRep.insertDevice(info)
|
}
|
Constant.DeviceType.PRODUCTION_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, ProductionDeviceInfo::class.java)
|
deviceRep.insertDevice(info)
|
}
|
}
|
}
|
|
override fun updateDevice(deviceInfo: String, deviceType: Constant.DeviceType): Int {
|
return when (deviceType) {
|
Constant.DeviceType.MONITOR_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, MonitorDeviceInfo::class.java)
|
deviceRep.updateDevice(info)
|
}
|
Constant.DeviceType.TREATMENT_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, TreatmentDeviceInfo::class.java)
|
deviceRep.updateDevice(info)
|
}
|
Constant.DeviceType.PRODUCTION_DEVICE -> {
|
val info = Gson().fromJson(deviceInfo, ProductionDeviceInfo::class.java)
|
deviceRep.updateDevice(info)
|
}
|
}
|
}
|
|
override fun findDeviceLocations(
|
sceneId: String?,
|
deviceId: Int,
|
deviceType: Constant.DeviceType,
|
): List<DeviceStatus> {
|
return deviceRep.findStatuses(DeviceStatus().apply {
|
dlDeviceId = deviceId
|
dlDeviceType = deviceType.value
|
dlSceneGuid = sceneId
|
})
|
}
|
|
override fun insertDeviceLocation(deviceLocation: String, files: Array<MultipartFile>): Int {
|
val obj = JsonUtil.gson.fromJson(deviceLocation, DeviceStatus::class.java)
|
val time = DateUtil.DateToString(obj.dlCreateTime, DateUtil.DateStyle.YYYY_MM_DD)
|
val picPath = FileUtil.saveFiles(files, imgPath, "device/${obj.dlSceneGuid}/${obj.dlDeviceId}/${time}")
|
obj.dlPicUrl = picPath.joinToString(";")
|
obj.dlCreateTime = Date()
|
return deviceRep.insertStatus(obj)
|
}
|
|
override fun updateDeviceLocation(
|
deviceLocation: String,
|
deleteImg: List<String>,
|
files: Array<MultipartFile>,
|
): Int {
|
// 获取更新信息
|
val obj = JsonUtil.gson.fromJson(deviceLocation, DeviceStatus::class.java)
|
|
// 获取原位置信息,删除图片路径和对应图片
|
val dL = deviceRep.findStatus(obj.dlId) ?: throw BizException("该设备位置信息不存在,无法修改")
|
val oldImg = dL.dlPicUrl.split(";").toMutableList()
|
deleteImg.forEach {
|
if (oldImg.contains(it)) {
|
if (FileUtil.delFile(imgPath + it)) {
|
oldImg.remove(it)
|
}
|
}
|
}
|
|
// 保存新增图片
|
val time = DateUtil.DateToString(obj.dlCreateTime, DateUtil.DateStyle.YYYY_MM_DD)
|
val picPath = FileUtil.saveFiles(files, imgPath, "device/${obj.dlId}/${time}")
|
|
oldImg.addAll(picPath)
|
obj.dlPicUrl = oldImg.joinToString(";")
|
return deviceRep.updateStatus(obj)
|
}
|
}
|