package org.sxkj.resource.entity; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; 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.handler.GenericListTypeHandler; import org.sxkj.common.utils.file.FileNameHarsher; 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 String RESULT_TYPE_AI = "2"; /** * 图片类型 */ public static final String RESULT_TYPE_IMG = "0"; /** * 视频类型(压缩) */ public static final String RESULT_TYPE_VEDIO_SHOW = "9"; /** * 视频类型 */ public static final String 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 = "patrol_task_id") private String patrolTaskId; @ApiModelProperty(value = "附件类型: 1=巡查类文档,2=巡检类文档,3=安保类文档,4=文旅类文档,5=采集数据类文档") @TableField(typeHandler = GenericListTypeHandler.class) private List> 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; /** * 最末尾文件名称hash算法 */ @TableField("md5") private String md5; @TableField("is_deleted") private Integer isDeleted; //区域 @TableField(exist = false) private String areaCode; 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); } }