feiyu02
2022-10-21 f22c4b9230808fed4fec80c435eccb4c833349a0
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package cn.flightfeather.supervision.lightshare.service.Impl
 
import cn.flightfeather.supervision.domain.entity.Mediafile
import cn.flightfeather.supervision.domain.mapper.MediafileMapper
import cn.flightfeather.supervision.infrastructure.utils.FileUtil
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 java.io.File
 
 
@Service
class MediafileServiceImpl(val mediafileMapper: MediafileMapper) : 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
    }
 
    //根据问题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 contentType = image.contentType
                val fileName = image.originalFilename
//                val filePath = "/Users/liwei/images/$path/"
                val filePath = "D:/02product/04supervision/images/$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 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()
        //先删图片
        File("D:/02product/04supervision/images/$path/$id.jpg").delete()
        return mediafileMapper.deleteByPrimaryKey(id)
    }
}