feiyu02
2025-09-17 8c15c9cc0d6474ed77e313258f9b09f7f2d6366e
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt
@@ -1,11 +1,18 @@
package cn.flightfeather.supervision.lightshare.service.impl
import cn.flightfeather.supervision.common.exception.BizException
import cn.flightfeather.supervision.domain.ds1.entity.Mediafile
import cn.flightfeather.supervision.domain.ds1.mapper.MediafileMapper
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.FileUtil
import cn.flightfeather.supervision.domain.ds1.entity.Inspection
import cn.flightfeather.supervision.domain.ds1.repository.InspectionRep
import cn.flightfeather.supervision.domain.ds1.repository.MediaFileRep
import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
import cn.flightfeather.supervision.lightshare.service.DomainitemService
import cn.flightfeather.supervision.lightshare.service.MediafileService
import cn.flightfeather.supervision.lightshare.vo.MediafileVo
import cn.flightfeather.supervision.lightshare.vo.MediaFileVo
import com.fasterxml.jackson.core.type.TypeReference
import org.springframework.beans.BeanUtils
import org.springframework.stereotype.Service
@@ -13,11 +20,21 @@
import com.fasterxml.jackson.databind.ObjectMapper
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import java.io.File
@Service
class MediafileServiceImpl(val mediafileMapper: MediafileMapper) : MediafileService {
class MediafileServiceImpl(
    val mediafileMapper: MediafileMapper,
    private val mediaFileRep: MediaFileRep,
    private val inspectionRep: InspectionRep,
    private val subTaskRep: SubTaskRep,
    private val sceneRep: SceneRep,
    private val domainItemService: DomainitemService,
    @Value("\${filePath}") var filePath: String,
    @Value("\${imgPath}") var imgPath: String,
) : MediafileService {
    private val logging: Logger = LoggerFactory.getLogger(MediafileServiceImpl::class.java)
@@ -31,21 +48,43 @@
        return mediafilelist
    }
    /**
     * 获取所有任意拍常规记录图片
     * @param iGuid
     */
    override fun getRoutineRecord(iGuid: String?, stGuid: String?): List<Mediafile?> {
        var inspectionGuid = iGuid
        val sceneId = if (iGuid != null) {
            inspectionRep.findOne(iGuid)?.sguid
        } else if (stGuid != null) {
            val s = subTaskRep.findOne(stGuid)
            val ins = inspectionRep.findOne(Inspection().apply { stguid = stGuid })
            inspectionGuid = ins?.guid
            s?.scenseid
        } else {
            throw BizException("巡查记录id和巡查任务id至少填写其中一个")
        }
        sceneId ?: throw BizException("记录对应的场景不存在")
        val sceneInfo = sceneRep.findScene(sceneId = sceneId) ?: throw BizException("场景不存在,获取场景图片失败")
        val mediaFileTypeList = domainItemService.getMediaFileType(sceneInfo.typeid?.toInt()).entries.map { it.key?.toInt() }
        return mediaFileRep.findList(inspectionGuid, mediaFileTypeList)
    }
    //根据问题id获取媒体文件
    override fun findByProblemID(id: String): List<MediafileVo> {
        val mediafileVos = mutableListOf<MediafileVo>()
    override fun findByProblemID(id: String): List<MediaFileVo> {
        val mediaFileVos = mutableListOf<MediaFileVo>()
        val mediafile = Mediafile()
        mediafile.iguid = id
        val mediafiles = mediafileMapper.select(mediafile)
        if (mediafiles.isNotEmpty()) {
            mediafiles.forEach {
                val mediafileVo = MediafileVo()
                val mediafileVo = MediaFileVo()
                BeanUtils.copyProperties(it, mediafileVo)
                mediafileVos.add(mediafileVo)
                mediaFileVos.add(mediafileVo)
            }
        }
        mediafileVos.sortBy { it.savetime }
        return mediafileVos
        mediaFileVos.sortBy { it.savetime }
        return mediaFileVos
    }
    //新增媒体文件
@@ -55,11 +94,11 @@
        val mapper = ObjectMapper()
        //json转object
        val mediafileVos =
            mapper.readValue<List<MediafileVo>>(mediafileVoList, object : TypeReference<List<MediafileVo>>() {})
        val mediaFileVos =
            mapper.readValue<List<MediaFileVo>>(mediafileVoList, object : TypeReference<List<MediaFileVo>>() {})
        if (mediafileVos.isNotEmpty()) {
            mediafileVos.forEach {
        if (mediaFileVos.isNotEmpty()) {
            mediaFileVos.forEach {
                val mediafile = Mediafile()
                BeanUtils.copyProperties(it, mediafile)
@@ -72,11 +111,11 @@
            }
            //根据扩展字段1获取保存路径
            val path = mediafileVos[0].extension1
            val path = mediaFileVos[0].extension1
            for (image in files) {
                val fileName = image.originalFilename
                val filePath = "${Constant.DEFAULT_FILE_PATH}/images/$path/"
                val filePath = "${imgPath}/$path/"
                try {
                    //调用文件保存方法
                    FileUtil.uploadFile(image.bytes, filePath, fileName!!)
@@ -89,17 +128,17 @@
    //根据业务类型ID获取媒体文件
    override fun findByBusinessGUID(businessGuid: String): List<MediafileVo> {
        val mediafileVoList = mutableListOf<MediafileVo>()
    override fun findByBusinessGUID(businessGuid: String): List<MediaFileVo> {
        val mediaFileVoList = mutableListOf<MediaFileVo>()
        val mediafile = Mediafile()
        mediafile.businessguid = businessGuid
        val mediafiles = mediafileMapper.select(mediafile)
        mediafiles.forEach {
            val mediafileVo = MediafileVo()
            val mediafileVo = MediaFileVo()
            BeanUtils.copyProperties(it, mediafileVo)
            mediafileVoList.add(mediafileVo)
            mediaFileVoList.add(mediafileVo)
        }
        return mediafileVoList
        return mediaFileVoList
    }
    override fun findOne(id: String): Mediafile = mediafileMapper.selectByPrimaryKey(id)
@@ -107,6 +146,26 @@
    override fun findAll(): MutableList<Mediafile> = mediafileMapper.selectAll()
    override fun save(mediafile: Mediafile): Int = mediafileMapper.updateByPrimaryKey(mediafile)
    override fun saveMediaFile(files: Array<MultipartFile>, getMediaFile: () -> Mediafile): Int {
        var res = 0
        // 保存图片
        for (image in files) {
            val mediaFile = getMediaFile()
            res += mediafileMapper.insert(mediaFile)
            val path = mediaFile.extension1
            val fileName = mediaFile.guid + ".jpg"
            val filePath = "${imgPath}/$path/"
            try {
                //调用文件保存方法
                FileUtil.uploadFile(image.bytes, filePath, fileName)
            } catch (e: Exception) {
                // TODO: handle exception
            }
        }
        return res
    }
    override fun update(mediafile: Mediafile): Int = mediafileMapper.updateByPrimaryKey(mediafile)
@@ -117,10 +176,26 @@
        val path = mediafile.extension1
        //File("/Users/liwei/images/${path}/${id}.jpg").delete()
        //先删图片
        val  f = File("${Constant.DEFAULT_FILE_PATH}/images/$path/$id.jpg")
        val f = File("${imgPath}/$path/$id.jpg")
        if (f.exists()) {
            f.delete()
        }
        return mediafileMapper.deleteByPrimaryKey(id)
    }
    override fun deleteList(idList: List<String>): Int {
        var res = 0
        if (idList.isEmpty()) return res
        mediaFileRep.findList(idList).forEach {
            //服务器保存路径
            val path = it?.extension1
            //先删图片
            val f = File("${imgPath}/$path/${it?.guid}.jpg")
            if (f.exists()) {
                f.delete()
            }
            res += mediaFileRep.deleteOne(it?.guid)
        }
        return res
    }
}