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 com.fasterxml.jackson.core.type.TypeReference
|
import org.springframework.beans.BeanUtils
|
import org.springframework.stereotype.Service
|
import org.springframework.web.multipart.MultipartFile
|
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,
|
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)
|
|
//根据子任务id及业务类型ID查询
|
override fun findBysubtaskbtid(id: String, btid: String): MutableList<Mediafile>? {
|
val mediafile = Mediafile()
|
mediafile.businesstypeid = btid.toByte()
|
mediafile.iguid = id
|
val mediafilelist = mediafileMapper.select(mediafile)
|
mediafilelist.sortBy { it.savetime }
|
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>()
|
val mediafile = Mediafile()
|
mediafile.iguid = id
|
val mediafiles = mediafileMapper.select(mediafile)
|
if (mediafiles.isNotEmpty()) {
|
mediafiles.forEach {
|
val mediafileVo = MediaFileVo()
|
BeanUtils.copyProperties(it, mediafileVo)
|
mediaFileVos.add(mediafileVo)
|
}
|
}
|
mediaFileVos.sortBy { it.savetime }
|
return mediaFileVos
|
}
|
|
//新增媒体文件
|
override fun addMedifile(mediafileVoList: String, files: Array<MultipartFile>) {
|
// logging.info("上传文件方法调用")
|
// logging.info("mediafileVoList:" + mediafileVoList)
|
val mapper = ObjectMapper()
|
|
//json转object
|
val mediaFileVos =
|
mapper.readValue<List<MediaFileVo>>(mediafileVoList, object : TypeReference<List<MediaFileVo>>() {})
|
|
if (mediaFileVos.isNotEmpty()) {
|
mediaFileVos.forEach {
|
val mediafile = Mediafile()
|
BeanUtils.copyProperties(it, mediafile)
|
|
//查询数据库有没有当前数据,有就不新增
|
//次操作解决延迟后手机重复提交问题
|
val reme = mediafileMapper.selectByPrimaryKey(mediafile.guid)
|
if (reme == null) {
|
mediafileMapper.insert(mediafile)
|
}
|
}
|
|
//根据扩展字段1获取保存路径
|
val path = mediaFileVos[0].extension1
|
for (image in files) {
|
val fileName = image.originalFilename
|
|
val filePath = "${imgPath}/$path/"
|
try {
|
//调用文件保存方法
|
FileUtil.uploadFile(image.bytes, filePath, fileName!!)
|
} catch (e: Exception) {
|
// TODO: handle exception
|
}
|
}
|
}
|
}
|
|
|
//根据业务类型ID获取媒体文件
|
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()
|
BeanUtils.copyProperties(it, mediafileVo)
|
mediaFileVoList.add(mediafileVo)
|
}
|
return mediaFileVoList
|
}
|
|
override fun findOne(id: String): Mediafile = mediafileMapper.selectByPrimaryKey(id)
|
|
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)
|
|
//删除媒体文件
|
override fun delete(id: String): Int {
|
val mediafile = mediafileMapper.selectByPrimaryKey(id)
|
//服务器保存路径
|
val path = mediafile.extension1
|
//File("/Users/liwei/images/${path}/${id}.jpg").delete()
|
//先删图片
|
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
|
}
|
}
|