吉安感知网项目-后端
linwei
2026-01-19 fd3536cec7d55ef45afc92c07e211f665c69adc5
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
 
package org.sxkj.resource.entity;
 
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.util.StringUtils;
import org.sxkj.common.constant.CommonConstant;
import org.sxkj.common.utils.file.FileNameHarsher;
 
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
 
/**
 * 附件表实体类
 *
 * @author Chill
 */
@Data
@TableName(value = "blade_attach")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "Attach对象", description = "附件表")
public class Attach extends TenantEntity {
    /**
     * ai类型
     */
    public static final Integer RESULT_TYPE_AI = 2;
    /**
     * 图片类型
     */
    public static final Integer RESULT_TYPE_IMG = 0;
    /**
     * 视频类型(压缩)
     */
    public static final Integer RESULT_TYPE_VEDIO_SHOW = 9;
    /**
     * 视频类型
     */
    public static final Integer RESULT_TYPE_VEDIO = 1;
 
    private static final long serialVersionUID = 1L;
 
    /**
     * 附件地址
     */
    @ApiModelProperty(value = "附件地址")
    private String link;
    /**
     * 附件域名
     */
    @ApiModelProperty(value = "附件域名")
    private String domainUrl;
    /**
     * 附件名称
     */
    @ApiModelProperty(value = "附件名称")
    private String name;
    /**
     * 附件原名
     */
    @ApiModelProperty(value = "附件原名")
    private String originalName;
    /**
     * 附件拓展名
     */
    @ApiModelProperty(value = "附件拓展名")
    private String extension;
    /**
     * 附件大小
     */
    @ApiModelProperty(value = "附件大小")
    private Long attachSize;
 
 
    @ApiModelProperty(value = "任务id")
    @TableField(value = "wayline_job_id")
    private String wayLineJobId;
 
    @ApiModelProperty(value = "附件类型: 1=巡查类文档,2=巡检类文档,3=安保类文档,4=文旅类文档,5=采集数据类文档")
    private Integer resultType;
 
    @ApiModelProperty(value = "设备SN")
    private String deviceSn;
 
    @ApiModelProperty(value = "工作空间id")
    private String workspaceId;
 
    @TableField(exist = false)
    @ApiModelProperty(value = "备注")
    private String remark;
 
    @ApiModelProperty(value = "媒体元数据")
    private String metadata;
 
    @ApiModelProperty(value = "文件昵称")
    private String nickName;
    //区域
    @TableField(exist = false)
    private String areaCode;
 
    @TableField(exist = false)
    private List<String> wayLineJobIds;
 
    /**
     * 是否缩略图  0=原图 1=缩略图
     */
    @TableField(value = "is_thumbnail")
    private Boolean thumbnail;
    /**
     * 最末尾文件名称hash算法
     */
    @TableField("md5")
    private String md5;
 
    private Double longitude;
    private Double latitude;
    /**
     * 是否生成过ai 图 0 =未生成过 1=已生成过
     */
    private Integer isGenerateAiImg;
    @TableField("is_deleted")
    private Integer isDeleted;
 
    @ApiModelProperty(value = "媒体类型:0 可见光 1 红外")
    @TableField("media_category")
    private Integer mediaCategory;
 
    @ApiModelProperty(value = "媒体创建时间")
    @TableField("media_create_time")
    @JsonFormat(pattern = CommonConstant.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8")
    private LocalDateTime mediaCreateTime;
 
    @ApiModelProperty(value = "变化监测标识(0:否,1:是)")
    @TableField("is_change_monitor")
    private Integer isChangeMonitor;
 
 
    public String getMd5() {
        String link = this.link;
        if (!StringUtils.isEmpty(link)) {
            return FileNameHarsher.generateFileHash(link);
        }
        return null;
    }
 
 
    /**
     * 设置是否为缩略图
     */
    public Boolean getThumbnail() {
        if (StringUtil.isNotBlank(originalName)) {
            String result = Stream.of("_small", "_show")
                .filter(suffix -> originalName.indexOf(suffix) > 0)
                .findFirst().orElse(null);
            return StringUtil.isNotBlank(result);
        }
        return null;
    }
 
    /**
     * 获取昵称
     *
     * @param attach
     * @return
     */
    public static String getNickName(Attach attach) {
        if (Objects.isNull(attach)) {
            return "";
        }
        if (!StringUtils.isEmpty(attach.getNickName())) {
            return attach.getNickName();
        }
        if (StringUtils.isEmpty(attach.getName())) {
            return null;
        }
        return attach.getName().substring(attach.getName().lastIndexOf("/") + 1, attach.getName().lastIndexOf("."));
    }
 
 
    public Object getMetadata() {
        return JSON.parseObject(metadata);
    }
 
}