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.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 = "成果类型:0图片,1=视频,2=ai,3=三维,4=正射,5=全景, 6=图片压缩小(后缀small),7=图片压缩中(后缀show),8视频一帧图,9视频压缩,10ai压缩小,11ai压缩中,12水印,13 倾斜,14 工单上传,15精准复拍") 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 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); } }