feiyu02
2024-08-02 16b961c2210fe29fd494ac1f9d830dd93503961f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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.DeviceInfo
import cn.flightfeather.supervision.domain.ds1.entity.DeviceLocation
import cn.flightfeather.supervision.domain.ds1.repository.DeviceRep
import cn.flightfeather.supervision.lightshare.service.DeviceService
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) : DeviceService {
 
    companion object{
        private const val BASE_IMG_PATH = "${Constant.DEFAULT_FILE_PATH}/images/"
    }
 
    override fun findDevices(sceneId: String): List<DeviceInfo> {
        return deviceRep.findDeviceList(sceneId)
    }
 
    override fun insertDevice(deviceInfo: DeviceInfo): Int {
        return deviceRep.insertDevice(deviceInfo)
    }
 
    override fun updateDevice(deviceInfo: DeviceInfo): Int {
        return deviceRep.updateDevice(deviceInfo)
    }
 
    override fun findDeviceLocations(deviceId: Int): List<DeviceLocation> {
        return deviceRep.findLocations(deviceId)
    }
 
    override fun insertDeviceLocation(deviceLocation: String, files: Array<MultipartFile>): Int {
        val obj = JsonUtil.gson.fromJson(deviceLocation, DeviceLocation::class.java)
        val time = DateUtil.DateToString(obj.dlCreateTime, DateUtil.DateStyle.YYYY_MM_DD)
        val picPath = FileUtil.saveFiles(files, BASE_IMG_PATH, "device/${obj.dlId}/${time}")
        obj.dlPicUrl = picPath.joinToString(";")
        return deviceRep.insertLocation(obj)
    }
 
    override fun updateDeviceLocation(
        deviceLocation: String,
        deleteImg: List<String>,
        files: Array<MultipartFile>,
    ): Int {
        // 获取更新信息
        val obj = JsonUtil.gson.fromJson(deviceLocation, DeviceLocation::class.java)
 
        // 获取原位置信息,删除图片路径和对应图片
        val dL = deviceRep.findLocation(obj.dlId) ?: throw BizException("该设备位置信息不存在,无法修改")
        val oldImg = dL.dlPicUrl.split(";").toMutableList()
        deleteImg.forEach {
            if (oldImg.contains(it)) {
                if (FileUtil.delFile(BASE_IMG_PATH + it)) {
                    oldImg.remove(it)
                }
            }
        }
 
        // 保存新增图片
        val time = DateUtil.DateToString(obj.dlCreateTime, DateUtil.DateStyle.YYYY_MM_DD)
        val picPath = FileUtil.saveFiles(files, BASE_IMG_PATH, "device/${obj.dlId}/${time}")
 
        oldImg.addAll(picPath)
        obj.dlPicUrl = oldImg.joinToString(";")
        return deviceRep.updateLocation(obj)
    }
}