Merge branch 'master' into gaea

# Conflicts:
#	core/src/main/java/com/dite/znpt/domain/entity/ProjectEntity.java
This commit is contained in:
cuizhibin 2025-04-28 13:44:11 +08:00
commit b9900214cd
64 changed files with 1439 additions and 982 deletions

View File

@ -140,6 +140,17 @@
<artifactId>metadata-extractor</artifactId>
<version>2.15.0</version>
</dependency>
<!-- mapstruct驱动包 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.1.Final</version>
</dependency>
</dependencies>
<build>
<plugins>

View File

@ -0,0 +1,19 @@
package com.dite.znpt.constant;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 23:19
* @Description:
*/
public class Message implements Serializable {
@Serial
private static final long serialVersionUID = 4010434089386946123L;
public static final String IMAGE_IS_EMPTY = "图像信息为空";
public static final String IMAGE_PATH_IS_NOT_EXIST = "图像地址不存在";
public static final String IMAGE_ID_IS_NOT_EXIST = "图像id不存在";
public static final String DEFECT_ID_IS_NOT_EXIST = "缺陷id不存在";
}

View File

@ -0,0 +1,32 @@
package com.dite.znpt.converts;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.entity.ImageCollectEntity;
import com.dite.znpt.domain.entity.ImageEntity;
import com.dite.znpt.domain.vo.DefectReq;
import com.dite.znpt.domain.vo.DefectResp;
import com.dite.znpt.domain.vo.ImageCollectReq;
import com.dite.znpt.domain.vo.ImageReq;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 1:32
* @Description:
*/
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface Converts {
Converts INSTANCE = Mappers.getMapper(Converts.class);
List<ImageEntity> toImageEntity(List<ImageReq> list);
ImageCollectEntity toImageCollectEntity(ImageCollectReq req);
DefectEntity toDefectEntity(DefectReq req);
DefectResp toDefectResp(DefectEntity entity);
}

View File

@ -20,7 +20,6 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
@SuperBuilder(toBuilder = true)
public class AuditableEntity implements Serializable {
private static final long serialVersionUID = 141481953116476081L;

View File

@ -2,6 +2,7 @@ package com.dite.znpt.domain.entity;
import java.math.BigDecimal;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
@ -29,15 +30,25 @@ public class DefectEntity extends AuditableEntity implements Serializable {
@TableId(value = "defect_id", type = IdType.ASSIGN_UUID)
private String defectId;
@ExcelProperty("机组id")
@ApiModelProperty("机组id")
@TableField("turbine_code")
private String turbineId;
@ExcelProperty("图像id")
@ApiModelProperty("图像id")
@TableField("image_id")
private String imageId;
@ExcelProperty("部件id")
@ApiModelProperty("部件id")
@TableField("part_id")
private String partId;
@ExcelProperty("缺陷编码")
@ApiModelProperty("缺陷编码")
@TableField("defect_code")
private String defectCode;
@ExcelProperty("缺陷名称")
@ApiModelProperty("缺陷名称")
@TableField("defect_name")
private String defectName;
@ExcelProperty("缺陷部位")
@ApiModelProperty("缺陷部位")
@TableField("defect_position")
private String defectPosition;
@ExcelProperty("缺陷类型枚举DefectTypeEnum")
@ApiModelProperty("缺陷类型枚举DefectTypeEnum")
@ -49,15 +60,45 @@ public class DefectEntity extends AuditableEntity implements Serializable {
@TableField("defect_level")
private String defectLevel;
@ExcelProperty("维修状态枚举RepairStatusEnum")
@ApiModelProperty("维修状态枚举RepairStatusEnum")
@TableField("repair_status")
private String repairStatus;
@ExcelProperty("图片路径")
@ApiModelProperty("图片路径")
@TableField("defect_image_path")
private String defectImagePath;
@ExcelProperty("检测时间")
@ApiModelProperty("检测时间")
@TableField("detection_time")
private LocalDateTime detectionTime;
@ExcelProperty("来源")
@ApiModelProperty("来源")
@TableField("source")
private String source;
@ExcelProperty("弦向")
@ApiModelProperty("弦向")
@TableField("chordwise")
private Integer chordwise;
@ExcelProperty("轴向")
@ApiModelProperty("轴向")
@TableField("axial")
private Integer axial;
@ExcelProperty("标注信息")
@ApiModelProperty("标注信息")
@TableField("label_info")
private String labelInfo;
@ExcelProperty("说明")
@ApiModelProperty("说明")
@TableField("description")
private String description;
@ExcelProperty("维修建议")
@ApiModelProperty("维修建议")
@TableField("repair_idea")
private String repairIdea;
}

View File

@ -29,9 +29,13 @@ public class ImageCollectEntity extends AuditableEntity implements Serializable
private static final long serialVersionUID = -2957687117182827156L;
@ApiModelProperty("图像采集id")
@TableId(value = "collect", type = IdType.ASSIGN_UUID)
@TableId(value = "collect_id", type = IdType.ASSIGN_UUID)
private String collectId;
@ApiModelProperty("部件id")
@TableField("part_id")
private String partId;
@ApiModelProperty("拍摄时间-起")
@TableField("shooting_time_begin")
private LocalDateTime shootingTimeBegin;
@ -40,8 +44,8 @@ public class ImageCollectEntity extends AuditableEntity implements Serializable
@TableField("shooting_time_end")
private LocalDateTime shootingTimeEnd;
@ApiModelProperty("天气")
@TableField("weather枚举WeatherEnum")
@ApiModelProperty("天气枚举WeatherEnum")
@TableField("weather")
private String weather;
@ApiModelProperty("湿度(百分比)")
@ -64,10 +68,14 @@ public class ImageCollectEntity extends AuditableEntity implements Serializable
@TableField("shooting_method")
private String shootingMethod;
@ApiModelProperty("拍摄方式枚举ShootingDistanceEnum")
@ApiModelProperty("拍摄距离")
@TableField("shooting_distance")
private Integer shootingDistance;
@ApiModelProperty("采集员id")
@TableField("collector_id")
private String collectorId;
@ApiModelProperty("采集员姓名")
@TableField("collector_name")
private String collectorName;

View File

@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@ -36,30 +37,46 @@ public class ImageEntity extends AuditableEntity implements Serializable {
@TableField("collect_id")
private String collectId;
@ApiModelProperty("部件id")
@TableField("part_id")
private String partId;
@ApiModelProperty("项目id")
@TableField("project_id")
private String projectId;
@ApiModelProperty("机组id")
@TableField("turbine_id")
private String turbineId;
@ApiModelProperty("图像名称")
@TableField("image_name")
private String imageName;
@ApiModelProperty("图像尺寸")
@ApiModelProperty("图像大小")
@TableField("image_size")
private String imageSize;
@ApiModelProperty("图像宽")
@TableField("image_width")
private String imageWidth;
@ApiModelProperty("图像高")
@TableField("image_height")
private String imageHeight;
@ApiModelProperty("图像分辨率")
@TableField("image_resolution")
private String imageResolution;
@ApiModelProperty("焦平面X轴分辨率")
@TableField("x_resolution")
private String xResolution;
@ApiModelProperty("焦平面Y轴分辨率")
@TableField("y_resolution")
private String YResolution;
@ApiModelProperty("焦平面分辨率单位")
@TableField("resolution_units")
private String ResolutionUnits;
@ApiModelProperty("焦距")
@TableField("focal_distance")
private String focalDistance;
@ApiModelProperty("35毫米焦距")
@TableField("focal_distance35")
private String focalDistance35;
@ApiModelProperty("拍摄时间")
@TableField("shooting_time")
private LocalDateTime shootingTime;
@ -84,8 +101,12 @@ public class ImageEntity extends AuditableEntity implements Serializable {
@TableField("altitude")
private String altitude;
@ApiModelProperty("GPS")
@TableField("GPS")
private String GPS;
@ApiModelProperty("影像类型")
@TableField("image_type枚举ImageTypeEnum")
@TableField("image_type")
private String imageType;
@ApiModelProperty("图片路径")

View File

@ -38,11 +38,6 @@ public class PersonnelEntity extends AuditableEntity implements Serializable {
@TableField("role_type")
private String roleType;
@ExcelProperty("公司id")
@ApiModelProperty("公司id")
@TableField("company_id")
private String companyId;
@ExcelProperty("密码")
@ApiModelProperty("密码")
@TableField("password")

View File

@ -1,41 +0,0 @@
package com.dite.znpt.domain.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("project_company")
@ApiModel(value="ProjectCompanyEntity对象", description="项目-公司关联信息表")
public class ProjectCompanyEntity extends AuditableEntity implements Serializable {
private static final long serialVersionUID = -98876147355655939L;
@ExcelProperty("项目id")
@ApiModelProperty("项目id")
@TableId(value = "project_id", type = IdType.ASSIGN_UUID)
private String projectId;
@ExcelProperty("公司id")
@ApiModelProperty("公司id")
@TableField("company_id")
private String companyId;
@ExcelProperty("单位类型(检查/委托)")
@ApiModelProperty("单位类型(检查/委托)")
@TableField("relation_type")
private String relationType;
}

View File

@ -4,6 +4,7 @@ import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -33,6 +34,10 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@TableField("project_name")
private String projectName;
@ApiModelProperty("项目封面")
@TableField("cover_url")
private String coverUrl;
@ExcelProperty("风场名称")
@ApiModelProperty("风场名称")
@TableField("farm_name")
@ -43,10 +48,29 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@TableField("farm_address")
private String farmAddress;
@ExcelProperty("检查方式字典method_id")
@ApiModelProperty("检查方式字典method_id")
@TableField("method_id")
private String methodId;
@ApiModelProperty("委托单位")
@TableField("client")
private String client;
@ApiModelProperty("委托单位联系人")
@TableField("client_contact")
private String clientContact;
@ApiModelProperty("委托单位联系电话")
@TableField("client_phone")
private String clientPhone;
@ApiModelProperty("检查单位")
@TableField("inspection_unit")
private String inspectionUnit;
@ApiModelProperty("检查单位联系人")
@TableField("inspection_contact")
private String inspectionContact;
@ApiModelProperty("检查单位联系电话")
@TableField("inspection_phone")
private String inspectionPhone;
@ExcelProperty("项目规模")
@ApiModelProperty("项目规模")
@ -58,16 +82,61 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@TableField("turbine_model")
private String turbineModel;
@ExcelProperty("项目状态字典project_status")
@ApiModelProperty("项目状态字典project_status")
@TableField("status")
private String status;
@ApiModelProperty("施工人员")
@TableField("construction_personnel")
private String constructionPersonnel;
@ApiModelProperty(value = "项目工作类型 可能有多项,逗号分隔", example = "1", notes = "项目工作类型 可能有多项,逗号分隔")
@ApiModelProperty("施工人员id")
@TableField("construction_personnel_id")
private String constructionPersonnelId;
@ApiModelProperty("安全员id")
@TableField("auditor_id")
private String auditorId;
@ApiModelProperty("质量员id")
@TableField("quality_officer_id")
private String qualityOfficerId;
@ApiModelProperty("项目经理id")
@TableField("project_manager_id")
private String projectManagerId;
@ApiModelProperty("施工组长id")
@TableField("construction_team_leader_id")
private String constructionTeamLeaderId;
@ApiModelProperty("技术方案图片,多个用逗号隔开")
@JsonIgnore
@TableField("technical_image")
private String technicalImage;
@ApiModelProperty("技术方案内容")
@TableField("technical_content")
private String technicalContent;
@ApiModelProperty("安全措施图片,多个用逗号隔开")
@JsonIgnore
@TableField("safety_image")
private String safetyImage;
@ApiModelProperty("安全措施内容")
@TableField("safety_content")
private String safetyContent;
@ApiModelProperty("交底内容")
@TableField("disclose_content")
private String discloseContent;
@ApiModelProperty("状态0待施工1施工中2已完工3已审核4已验收")
@TableField("status")
private Integer status;
@ApiModelProperty("项目工作类型 可能有多项,逗号分隔")
@TableField("work_type")
private String workType;
@ApiModelProperty(value = "项目工作岗位 可能有多项,逗号分隔", example = "1", notes = "项目工作岗位 可能有多项,逗号分隔")
@ApiModelProperty("项目工作岗位 可能有多项,json对象保存")
@TableField("job")
private String job;

View File

@ -1,51 +0,0 @@
package com.dite.znpt.domain.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_company")
@ApiModel(value="TCompanyEntity对象", description="公司信息表")
public class TCompanyEntity extends AuditableEntity implements Serializable {
private static final long serialVersionUID = 348031306551320799L;
@ExcelProperty("公司id")
@ApiModelProperty("公司id")
@TableId(value = "company_id", type = IdType.ASSIGN_UUID)
private String companyId;
@ExcelProperty("公司名称")
@ApiModelProperty("公司名称")
@TableField("company_name")
private String companyName;
@ExcelProperty("公司地址")
@ApiModelProperty("公司地址")
@TableField("address")
private String address;
@ExcelProperty("联系人")
@ApiModelProperty("联系人")
@TableField("contact")
private String contact;
@ExcelProperty("电话")
@ApiModelProperty("电话")
@TableField("phone")
private String phone;
}

View File

@ -52,5 +52,13 @@ public class TurbineEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("机组型号")
@TableField("model")
private String model;
@ApiModelProperty("封面图")
@TableField("cover_url")
private String coverUrl;
@ApiModelProperty("状态0待施工1施工中2已完工3已审核4已验收")
@TableField("status")
private Integer status;
}

View File

@ -27,9 +27,6 @@ public class DefectListReq implements Serializable {
@ApiModelProperty("机组id")
private String turbineId;
@ApiModelProperty("部件id")
private String partId;
@ApiModelProperty("缺陷类型枚举DefectTypeEnum")
private String defectType;

View File

@ -0,0 +1,35 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/4/27 21:23
* @Description:
*/
@Data
@ApiModel("缺陷记录列表响应实体")
public class DefectListResp implements Serializable {
@ApiModelProperty("缺陷id")
private String defectId;
@ApiModelProperty("缺陷名称")
private String defectName;
@ApiModelProperty("缺陷编码")
private String defectCode;
@ApiModelProperty("部件名称")
private String partName;
@ApiModelProperty("缺陷未知")
private String defectPosition;
@ApiModelProperty("说明")
private String description;
}

View File

@ -0,0 +1,59 @@
package com.dite.znpt.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @Author: gaoxiong
* @Date: 2025/4/27 21:16
* @Description:
*/
@Data
@ApiModel("缺陷记录请求实体")
public class DefectReq implements Serializable {
@ApiModelProperty("缺陷编码")
private String defectCode;
@ApiModelProperty("缺陷名称")
private String defectName;
@ApiModelProperty("缺陷部位")
private String defectPosition;
@ApiModelProperty("缺陷类型枚举DefectTypeEnum")
private String defectType;
@ApiModelProperty("危重等级枚举DefectLevelEnum")
private String defectLevel;
@ApiModelProperty("维修状态枚举RepairStatusEnum")
private String repairStatus;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("检测时间")
private LocalDate detectionDate;
@ApiModelProperty("来源枚举DefectSourceEnum")
private String source;
@ApiModelProperty("弦向")
private Integer chordwise;
@ApiModelProperty("轴向")
private Integer axial;
@ApiModelProperty("标注信息")
private String labelInfo;
@ApiModelProperty("说明")
private String description;
@ApiModelProperty("维修建议")
private String repairIdea;
}

View File

@ -1,9 +1,16 @@
package com.dite.znpt.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.DefectEntity;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
/**
* @author huise23
@ -11,8 +18,26 @@ import com.dite.znpt.domain.entity.DefectEntity;
* @Description: 缺陷记录响应实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("缺陷记录响应实体")
public class DefectResp extends DefectEntity {
public class DefectResp extends DefectReq implements Serializable {
@Serial
private static final long serialVersionUID = 7723957970600470768L;
@ApiModelProperty("缺陷id")
private String defectId;
@ApiModelProperty("缺陷类型描述")
private String defectTypeLabel;
@ApiModelProperty("危重等级描述")
private String defectLevelLabel;
@ApiModelProperty("维修状态描述")
private String repairStatusLabel;
@ApiModelProperty("来源描述")
private String sourceLabel;
}

View File

@ -0,0 +1,50 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @Author: gaoxiong
* @Date: 2025/4/24 21:16
* @Description:
*/
@Data
@ApiModel("图像拍摄信息")
public class ImageCollectInfo implements Serializable {
@Serial
private static final long serialVersionUID = 6594307991137605975L;
@ApiModelProperty("图像采集信息id")
private String collectId;
@ApiModelProperty("天气,枚举WeatherEnum")
private String weather;
@ApiModelProperty("天气描述")
private String weatherLabel;
@ApiModelProperty("湿度(百分比)")
private Integer humidness;
@ApiModelProperty("温度")
private String temperature;
@ApiModelProperty("风力等级")
private Integer windLevel;
@ApiModelProperty("拍摄方式枚举ShootingMethodEnum")
private String shootingMethod;
@ApiModelProperty("拍摄方式描述")
private String shootingMethodLabel;
@ApiModelProperty("拍摄距离")
private Integer shootingDistance;
@ApiModelProperty("采集员姓名")
private String collectorName;
}

View File

@ -0,0 +1,63 @@
package com.dite.znpt.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 1:11
* @Description:
*/
@Data
@ApiModel("图像采集信息请求实体")
public class ImageCollectReq implements Serializable {
@Serial
private static final long serialVersionUID = 8937301872925896770L;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("拍摄时间-起")
private LocalDateTime shootingTimeBegin;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("拍摄时间-讫")
private LocalDateTime shootingTimeEnd;
@ApiModelProperty("天气,枚举WeatherEnum")
private String weather;
@ApiModelProperty("湿度(百分比)")
private Integer humidness;
@ApiModelProperty("温度-低")
private Double temperatureMin;
@ApiModelProperty("温度-高")
private Double temperatureMax;
@ApiModelProperty("风力等级")
private Integer windLevel;
@ApiModelProperty("拍摄方式枚举ShootingMethodEnum")
private String shootingMethod;
@ApiModelProperty("拍摄距离")
private Integer shootingDistance;
@ApiModelProperty("采集员id")
private String collectorId;
@ApiModelProperty("采集员姓名")
private String collectorName;
@ApiModelProperty("图像信息")
private List<ImageReq> imageList;
}

View File

@ -1,9 +0,0 @@
package com.dite.znpt.domain.vo;
/**
* @Author: gaoxiong
* @Date: 2025/4/24 21:16
* @Description:
*/
public class ImageCollectResp {
}

View File

@ -0,0 +1,67 @@
package com.dite.znpt.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 23:35
* @Description:
*/
@Data
@ApiModel("图像Exif信息")
public class ImageExifInfo implements Serializable {
@ApiModelProperty("图像宽")
private String imageWidth;
@ApiModelProperty("图像高")
private String imageHeight;
@ApiModelProperty("图像分辨率")
private String imageResolution;
@ApiModelProperty("焦距")
private String focalDistance;
@ApiModelProperty("35毫米焦距")
private String focalDistance35;
@ApiModelProperty("焦平面X轴分辨率")
@TableField("x_resolution")
private String xResolution;
@ApiModelProperty("焦平面Y轴分辨率")
@TableField("y_resolution")
private String yResolution;
@ApiModelProperty("焦平面分辨率单位")
@TableField("resolution_units")
private String resolutionUnits;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("拍摄时间")
private LocalDateTime shootingTime;
@ApiModelProperty("相机制造商")
private String cameraManufacturer;
@ApiModelProperty("相机型号")
private String cameraModel;
@ApiModelProperty("经度")
private String longitude;
@ApiModelProperty("纬度")
private String latitude;
@ApiModelProperty("海拔")
private String altitude;
}

View File

@ -1,6 +1,7 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
@ -12,8 +13,18 @@ import java.io.Serializable;
* @description
*/
@Data
@ApiModel("图像信息列表查询实体")
@ApiModel("图像采集信息列表查询实体")
public class ImageListReq implements Serializable {
@Serial
private static final long serialVersionUID = 671014582625089979L;
@ApiModelProperty("关键字")
private String keyword;
@ApiModelProperty("机组id")
private String turbineId;
@ApiModelProperty("图像类型")
private String[] imageTypes;
}

View File

@ -0,0 +1,86 @@
package com.dite.znpt.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 21:07
* @Description:
*/
@Data
@ApiModel("图像列表信息响应实体")
public class ImageListResp implements Serializable {
@Serial
private static final long serialVersionUID = 3168482118066685077L;
@ApiModelProperty("图像id")
private String imageId;
@ApiModelProperty("图像名称")
@TableField("image_name")
private String imageName;
@ApiModelProperty("部件名称")
private String partName;
@ApiModelProperty("图像分辨率")
private String imageResolution;
@ApiModelProperty("焦距")
private String focalDistance;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("拍摄时间")
private LocalDateTime shootingTime;
@ApiModelProperty("相机制造商")
private String cameraManufacturer;
@ApiModelProperty("相机型号")
private String cameraModel;
@ApiModelProperty("GPS")
private String GPS;
@ApiModelProperty("天气,枚举WeatherEnum")
private String weather;
@ApiModelProperty("天气描述")
private String weatherLabel;
@ApiModelProperty("湿度(百分比)")
private Integer humidness;
@ApiModelProperty("温度")
private String temperature;
@ApiModelProperty("风力等级")
private Integer windLevel;
@ApiModelProperty("拍摄方式枚举ShootingMethodEnum")
private String shootingMethod;
@ApiModelProperty("拍摄方式描述")
private String shootingMethodLabel;
@ApiModelProperty("拍摄距离")
private Integer shootingDistance;
@ApiModelProperty("采集员姓名")
private String collectorName;
@ApiModelProperty("影像类型,枚举ImageTypeEnum")
private String imageType;
@ApiModelProperty("影像类型描述")
private String imageTypeLabel;
}

View File

@ -0,0 +1,44 @@
package com.dite.znpt.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author: gaoxiong
* @Date: 2025/4/26 1:18
* @Description:
*/
@Data
@ApiModel("图像信息请求实体")
public class ImageReq extends ImageExifInfo implements Serializable {
@Serial
private static final long serialVersionUID = -1726859254176864573L;
@ApiModelProperty("图像id")
private String imageId;
@ApiModelProperty("图像名称")
@TableField("image_name")
private String imageName;
@ApiModelProperty("图像大小")
private String imageSize;
@ApiModelProperty("图像分辨率")
private String imageResolution;
@ApiModelProperty("图片路径")
private String imagePath;
@ApiModelProperty("GPS")
private String GPS;
}

View File

@ -1,10 +1,14 @@
package com.dite.znpt.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author Bear.G
@ -16,4 +20,26 @@ import java.io.Serializable;
public class ImageResp implements Serializable {
@Serial
private static final long serialVersionUID = -5215414858454232077L;
@ApiModelProperty("图像id")
private String imageId;
@ApiModelProperty("图像名称")
private String imageName;
@ApiModelProperty("图像路径")
private String imagePath;
@ApiModelProperty("图像大小")
private String imageSize;
@ApiModelProperty("图像分辨率")
private String imageResolution;
@ApiModelProperty("图像Exif信息")
private ImageExifInfo imageExifInfo;
@ApiModelProperty("图像拍摄信息")
private ImageCollectInfo imageCollectInfo;
}

View File

@ -1,33 +0,0 @@
package com.dite.znpt.domain.vo;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息请求实体
*/
@Data
@ApiModel("项目-公司关联信息列表请求实体")
public class ProjectCompanyListReq implements Serializable {
private static final long serialVersionUID = 598388421634125600L;
@ApiModelProperty("查询关键字")
private String keyword;
@ApiModelProperty("项目-公司关联信息Id")
private String projectId;
@ApiModelProperty("公司id")
private String companyId;
@ApiModelProperty("单位类型(检查/委托)")
private String relationType;
}

View File

@ -1,18 +0,0 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.ProjectCompanyEntity;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息响应实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("项目-公司关联信息响应实体")
public class ProjectCompanyResp extends ProjectCompanyEntity {
}

View File

@ -1,39 +0,0 @@
package com.dite.znpt.domain.vo;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息请求实体
*/
@Data
@ApiModel("公司信息列表请求实体")
public class TCompanyListReq implements Serializable {
private static final long serialVersionUID = 710069618133737043L;
@ApiModelProperty("查询关键字")
private String keyword;
@ApiModelProperty("公司信息Id")
private String companyId;
@ApiModelProperty("公司名称")
private String companyName;
@ApiModelProperty("公司地址")
private String address;
@ApiModelProperty("联系人")
private String contact;
@ApiModelProperty("电话")
private String phone;
}

View File

@ -1,18 +0,0 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.TCompanyEntity;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息响应实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("公司信息响应实体")
public class TCompanyResp extends TCompanyEntity {
}

View File

@ -1,10 +1,14 @@
package com.dite.znpt.domain.vo;
import com.dite.znpt.domain.entity.PartEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.dite.znpt.domain.entity.TurbineEntity;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
@ -14,5 +18,44 @@ import com.dite.znpt.domain.entity.TurbineEntity;
@EqualsAndHashCode(callSuper = true)
@ApiModel("机组-项目关联响应实体")
public class TurbineResp extends TurbineEntity {
@ApiModelProperty("部件")
private List<PartEntity> partsList;
@ApiModelProperty("内部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String antiThunderWorkStatus;
@ApiModelProperty("外部工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String inWorkStatus;
@ApiModelProperty("防雷工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String outWorkStatus;
@ApiModelProperty("数据报告工作状态, -1不存在0未开始、1开始施工、2已提交报告、3审核通过")
private String summaryWorkStatus;
@ApiModelProperty("内部工作安全员审核状态, -1不存在0未审核、1审核通过")
private String antiThunderWorkSafetyStatus;
@ApiModelProperty("外部工作安全员审核状态, -1不存在0未审核、1审核通过")
private String inWorkSafetyStatus;
@ApiModelProperty("防雷工作安全员审核状态, -1不存在0未审核、1审核通过")
private String outWorkSafetyStatus;
@ApiModelProperty("内部工作质量员审核状态, -1不存在0未审核、1审核通过")
private String antiThunderWorkQualityStatus;
@ApiModelProperty("外部工作质量员审核状态, -1不存在0未审核、1审核通过")
private String inWorkQualityStatus;
@ApiModelProperty("防雷工作质量员审核状态, -1不存在0未审核、1审核通过")
private String outWorkQualityStatus;
@ApiModelProperty("防雷是否不合格1不合格0合格")
private Boolean lightningUnqualified;
@ApiModelProperty("来源, appbackend后台不传参默认后台")
private String source;
}

View File

@ -1,9 +0,0 @@
package com.dite.znpt.enums;
/**
* @Author: gaoxiong
* @Date: 2025/4/24 21:44
* @Description:
*/
public enum DefectLevel {
}

View File

@ -0,0 +1,52 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/24 21:44
* @Description:
*/
@Getter
public enum DefectLevelEnum {
SLIGHT("SLIGHT", "轻微缺陷"),
GENERAL("GENERAL", "一般缺陷"),
SERIOUS("SERIOUS", "比较严重"),
CRITICAL("CRITICAL", "非常严重");
private final String code;
private final String desc;
DefectLevelEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static DefectLevelEnum getByCode(String code){
for (DefectLevelEnum e : DefectLevelEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
DefectLevelEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(DefectLevelEnum.values().length);
for (DefectLevelEnum e : DefectLevelEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -0,0 +1,50 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/27 20:55
* @Description:
*/
@Getter
public enum DefectSourceEnum {
AI("AI", "智能识别"),
MANUAL("MANUAL", "人工标注");
private final String code;
private final String desc;
DefectSourceEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static DefectSourceEnum getByCode(String code){
for (DefectSourceEnum e : DefectSourceEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
DefectSourceEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(DefectSourceEnum.values().length);
for (DefectSourceEnum e : DefectSourceEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -1,9 +1,60 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/24 21:43
* @Description:
*/
@Getter
public enum DefectTypeEnum {
CRAZE("CRAZE", "合缝开裂"),
ABRASION("ABRASION", "合缝磨损"),
LEATHER_BREAKAGE("LEATHER_BREAKAGE", "蒙皮破损"),
FABRIC_BREAKAGE("FABRIC_BREAKAGE", "布层破损"),
PART_BREAKAGE(" PART_BREAKAGE", "局部破损"),
TOTAL_DAMAGE("TOTAL_DAMAGE", "累计损伤"),
LAYER_SHED("LAYER_SHED", "涂层脱落"),
PAINT_SHEDDING("PAINT_SHEDDING", "风损掉漆"),
SURFACE_CRACK("SURFACE_CRACK", "表面裂纹"),
CHORDWISE_CRACK("CHORDWISE_CRACK", "弦向裂纹"),
AXIAL_CRACK("AXIAL_CRACK", "轴向裂纹"),
WRINKLE("WRINKLE", "褶皱");
private final String code;
private final String desc;
DefectTypeEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static DefectTypeEnum getByCode(String code){
for (DefectTypeEnum e : DefectTypeEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
DefectTypeEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(DefectTypeEnum.values().length);
for (DefectTypeEnum e : DefectTypeEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -1,6 +1,7 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
@ -10,6 +11,7 @@ import java.util.List;
* @Date: 2025/4/24 21:25
* @Description:
*/
@Getter
public enum ImageTypeEnum {
DEFECT("DEFECT", "缺陷影像"),
TYPICAL("TYPICAL", "典型影像"),
@ -31,6 +33,11 @@ public enum ImageTypeEnum {
return null;
}
public static String getDescByCode(String code){
ImageTypeEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(ImageTypeEnum.values().length);
for (ImageTypeEnum e : ImageTypeEnum.values() ) {

View File

@ -0,0 +1,51 @@
package com.dite.znpt.enums;
import cn.hutool.json.JSONObject;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: gaoxiong
* @Date: 2025/4/27 20:55
* @Description:
*/
@Getter
public enum RepairStatusEnum {
INCOMPLETE("INCOMPLETE","未维修"),
COMPLETED("COMPLETED","已维修"),
UNKNOWN("UNKNOWN","未知");
private final String code;
private final String desc;
RepairStatusEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static RepairStatusEnum getByCode(String code){
for (RepairStatusEnum e : RepairStatusEnum.values() ) {
if(e.code.equals(code)){
return e;
}
}
return null;
}
public static String getDescByCode(String code){
RepairStatusEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(RepairStatusEnum.values().length);
for (RepairStatusEnum e : RepairStatusEnum.values() ) {
JSONObject jsonObject = new JSONObject();
jsonObject.set(e.code, e.desc);
list.add(jsonObject);
}
return list;
}
}

View File

@ -24,7 +24,7 @@ public enum ShootingMethodEnum {
this.desc = desc;
}
private ShootingMethodEnum getByCode(String code){
public static ShootingMethodEnum getByCode(String code){
for (ShootingMethodEnum e : ShootingMethodEnum.values() ) {
if(e.code.equals(code)){
return e;
@ -33,6 +33,11 @@ public enum ShootingMethodEnum {
return null;
}
public static String getDescByCode(String code){
ShootingMethodEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(ShootingMethodEnum.values().length);
for (ShootingMethodEnum e : ShootingMethodEnum.values() ) {

View File

@ -53,6 +53,11 @@ public enum WeatherEnum {
return null;
}
public static String getDescByCode(String code){
WeatherEnum e = getByCode(code);
return null == e ? null : e.desc;
}
public static List<JSONObject> listAll(){
List<JSONObject> list = new ArrayList<>(WeatherEnum.values().length);
for (WeatherEnum e : WeatherEnum.values() ) {

View File

@ -15,5 +15,6 @@ import java.util.List;
*/
public interface DefectMapper extends BaseMapper<DefectEntity> {
List<DefectResp> queryBySelective(DefectListReq defectReq);
DefectResp detail(String defectId);
}

View File

@ -2,10 +2,7 @@ package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.ImageEntity;
import com.dite.znpt.domain.vo.ImageListReq;
import com.dite.znpt.domain.vo.ImageResp;
import com.dite.znpt.domain.vo.PartListReq;
import com.dite.znpt.domain.vo.PartResp;
import com.dite.znpt.domain.vo.*;
import java.util.List;
@ -15,5 +12,7 @@ import java.util.List;
* @description
*/
public interface ImageMapper extends BaseMapper<ImageEntity> {
List<ImageResp> queryBySelective(ImageListReq req);
List<ImageListResp> queryImageList(ImageListReq req);
ImageResp detail(String imageId);
}

View File

@ -1,19 +0,0 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.ProjectCompanyEntity;
import com.dite.znpt.domain.vo.ProjectCompanyListReq;
import com.dite.znpt.domain.vo.ProjectCompanyResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息表数据库访问层
*/
public interface ProjectCompanyMapper extends BaseMapper<ProjectCompanyEntity> {
List<ProjectCompanyResp> queryBySelective(ProjectCompanyListReq projectCompanyReq);
}

View File

@ -1,19 +0,0 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.TCompanyEntity;
import com.dite.znpt.domain.vo.TCompanyListReq;
import com.dite.znpt.domain.vo.TCompanyResp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息表数据库访问层
*/
public interface TCompanyMapper extends BaseMapper<TCompanyEntity> {
List<TCompanyResp> queryBySelective(TCompanyListReq tCompanyReq);
}

View File

@ -3,6 +3,7 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.vo.DefectListReq;
import com.dite.znpt.domain.vo.DefectReq;
import com.dite.znpt.domain.vo.DefectResp;
import java.util.List;
@ -17,12 +18,14 @@ public interface DefectService extends IService<DefectEntity> {
/**
* 功能描述查询缺陷记录列表
*
* @param defectReq 缺陷记录
* @param req 缺陷记录
* @return {@link List }<{@link DefectEntity }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<DefectResp> selectList(DefectListReq defectReq);
List<DefectResp> page(DefectListReq req);
List<DefectResp> list(DefectListReq req);
/**
* 功能描述查询单条缺陷记录
@ -32,25 +35,27 @@ public interface DefectService extends IService<DefectEntity> {
* @author huise23
* @date 2025/04/11 23:17
**/
DefectResp selectById(String defectId);
DefectResp detail(String defectId);
/**
* 功能描述新增缺陷记录
*
* @param defect 缺陷记录
* @param imageId 缺陷记录
* @param req 缺陷记录
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(DefectEntity defect);
void save(String imageId, DefectReq req);
/**
* 功能描述更新缺陷记录
*
* @param defect 缺陷记录
* @param defectId 缺陷记录
* @param req 缺陷记录
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(DefectEntity defect);
void update(String defectId, DefectReq req);
/**
* 功能描述删除缺陷记录

View File

@ -2,6 +2,7 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.ImageCollectEntity;
import com.dite.znpt.domain.vo.ImageCollectReq;
/**
* @Author: gaoxiong
@ -9,4 +10,5 @@ import com.dite.znpt.domain.entity.ImageCollectEntity;
* @Description:
*/
public interface ImageCollectService extends IService<ImageCollectEntity> {
void save(String departId, ImageCollectReq req);
}

View File

@ -3,7 +3,10 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.ImageEntity;
import com.dite.znpt.domain.vo.ImageListReq;
import com.dite.znpt.domain.vo.ImageListResp;
import com.dite.znpt.domain.vo.ImageReq;
import com.dite.znpt.domain.vo.ImageResp;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -14,5 +17,13 @@ import java.util.List;
*/
public interface ImageService extends IService<ImageEntity> {
List<ImageResp> selectList(ImageListReq req);
List<ImageListResp> list(ImageListReq req);
List<ImageListResp> page(ImageListReq req);
ImageResp detail(String imageId);
List<ImageReq> batchUpload(String departId, MultipartFile[] files);
void delete(String imageId);
}

View File

@ -1,64 +0,0 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.ProjectCompanyEntity;
import com.dite.znpt.domain.vo.ProjectCompanyListReq;
import com.dite.znpt.domain.vo.ProjectCompanyResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息表服务接口
*/
public interface ProjectCompanyService extends IService<ProjectCompanyEntity> {
/**
* 功能描述查询项目-公司关联信息列表
*
* @param projectCompanyReq 项目-公司关联信息
* @return {@link List }<{@link ProjectCompanyEntity }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<ProjectCompanyResp> selectList(ProjectCompanyListReq projectCompanyReq);
/**
* 功能描述查询单条项目-公司关联信息
*
* @param projectId 项目-公司关联信息Id
* @return {@link ProjectCompanyResp }
* @author huise23
* @date 2025/04/11 23:17
**/
ProjectCompanyResp selectById(String projectId);
/**
* 功能描述新增项目-公司关联信息
*
* @param projectCompany 项目-公司关联信息
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(ProjectCompanyEntity projectCompany);
/**
* 功能描述更新项目-公司关联信息
*
* @param projectCompany 项目-公司关联信息
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(ProjectCompanyEntity projectCompany);
/**
* 功能描述删除项目-公司关联信息
*
* @param projectId 项目-公司关联信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
void deleteById(String projectId);
}

View File

@ -1,64 +0,0 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.TCompanyEntity;
import com.dite.znpt.domain.vo.TCompanyListReq;
import com.dite.znpt.domain.vo.TCompanyResp;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息表服务接口
*/
public interface TCompanyService extends IService<TCompanyEntity> {
/**
* 功能描述查询公司信息列表
*
* @param tCompanyReq 公司信息
* @return {@link List }<{@link TCompanyEntity }>
* @author huise23
* @date 2025/04/11 23:17
**/
List<TCompanyResp> selectList(TCompanyListReq tCompanyReq);
/**
* 功能描述查询单条公司信息
*
* @param companyId 公司信息Id
* @return {@link TCompanyResp }
* @author huise23
* @date 2025/04/11 23:17
**/
TCompanyResp selectById(String companyId);
/**
* 功能描述新增公司信息
*
* @param tCompany 公司信息
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(TCompanyEntity tCompany);
/**
* 功能描述更新公司信息
*
* @param tCompany 公司信息
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(TCompanyEntity tCompany);
/**
* 功能描述删除公司信息
*
* @param companyId 公司信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
void deleteById(String companyId);
}

View File

@ -1,16 +1,26 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.vo.DefectListReq;
import com.dite.znpt.domain.vo.DefectReq;
import com.dite.znpt.domain.vo.DefectResp;
import com.dite.znpt.enums.DefectSourceEnum;
import com.dite.znpt.enums.DefectTypeEnum;
import com.dite.znpt.enums.RepairStatusEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.DefectService;
import com.dite.znpt.mapper.DefectMapper;
import com.dite.znpt.service.ImageService;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
@ -21,22 +31,26 @@ import java.util.List;
@Service
@RequiredArgsConstructor
public class DefectServiceImpl extends ServiceImpl<DefectMapper, DefectEntity> implements DefectService {
@Resource
private ImageService imageService;
/**
* 功能描述查询缺陷记录列表
*
* @param defectReq 缺陷记录信息
* @param req 缺陷记录信息
* @return {@link List }<{@link DefectResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<DefectResp> selectList(DefectListReq defectReq) {
public List<DefectResp> page(DefectListReq req) {
PageUtil.startPage();
List<DefectResp> defectList= this.baseMapper.queryBySelective(defectReq);
defectList.forEach(resp -> {
return this.list(req);
}
});
@Override
public List<DefectResp> list(DefectListReq req) {
List<DefectResp> defectList= this.baseMapper.queryBySelective(req);
return defectList;
}
@ -49,37 +63,49 @@ public class DefectServiceImpl extends ServiceImpl<DefectMapper, DefectEntity> i
* @date 2025/04/11 23:17
**/
@Override
public DefectResp selectById(String defectId) {
DefectListReq defectReq = new DefectListReq();
defectReq.setDefectId(defectId);
List<DefectResp> list = selectList(defectReq);
return list.isEmpty() ? CollUtil.getFirst(list) : new DefectResp();
public DefectResp detail(String defectId) {
DefectResp defectResp = this.baseMapper.detail(defectId);
defectResp.setDefectTypeLabel(DefectTypeEnum.getDescByCode(defectResp.getDefectType()));
defectResp.setDefectLevel(DefectTypeEnum.getDescByCode(defectResp.getDefectLevel()));
defectResp.setRepairStatusLabel(RepairStatusEnum.getDescByCode(defectResp.getRepairStatus()));
defectResp.setSourceLabel(DefectSourceEnum.getDescByCode(defectResp.getSourceLabel()));
return defectResp;
}
/**
* 功能描述新增缺陷记录
*
* @param defect 缺陷记录
* @param imageId
* @param req
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveData(DefectEntity defect) {
// todo 校验
save(defect);
public void save(String imageId, DefectReq req) {
if(null == imageService.getById(imageId)){
throw new ServiceException(Message.IMAGE_ID_IS_NOT_EXIST);
}
DefectEntity defectEntity = Converts.INSTANCE.toDefectEntity(req);
this.save(defectEntity);
}
/**
* 功能描述更新缺陷记录
*
* @param defect 缺陷记录
* @param defectId
* @param req
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void updateData(DefectEntity defect) {
// todo 校验
updateById(defect);
public void update(String defectId, DefectReq req) {
if(null == this.getById(defectId)){
throw new ServiceException(Message.DEFECT_ID_IS_NOT_EXIST);
}
DefectEntity defectEntity = Converts.INSTANCE.toDefectEntity(req);
this.updateById(defectEntity);
}
/**
@ -89,10 +115,10 @@ public class DefectServiceImpl extends ServiceImpl<DefectMapper, DefectEntity> i
* @author huise23
* @date 2025/04/11 23:17
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void deleteById(String defectId) {
// todo 校验
removeById(defectId);
this.removeById(defectId);
}
}

View File

@ -1,10 +1,25 @@
package com.dite.znpt.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.ImageCollectEntity;
import com.dite.znpt.domain.entity.ImageEntity;
import com.dite.znpt.domain.vo.ImageCollectReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.ImageCollectMapper;
import com.dite.znpt.service.ImageCollectService;
import com.dite.znpt.service.ImageService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.util.List;
/**
* @Author: gaoxiong
@ -14,4 +29,39 @@ import org.springframework.stereotype.Service;
@Service
public class ImageCollectServiceImpl extends ServiceImpl<ImageCollectMapper, ImageCollectEntity> implements ImageCollectService {
@Value("${upload.perm-path}")
private String permPath;
@Resource
private ImageService imageService;
@Transactional(rollbackFor = Exception.class)
@Override
public void save(String partId, ImageCollectReq req) {
if(CollUtil.isEmpty(req.getImageList())){
throw new ServiceException(Message.IMAGE_IS_EMPTY);
}
ImageCollectEntity imageCollect = Converts.INSTANCE.toImageCollectEntity(req);
imageCollect.setPartId(partId);
this.save(imageCollect);
List<ImageEntity> imageList = Converts.INSTANCE.toImageEntity(req.getImageList());
String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(partId).concat(StrUtil.BACKSLASH);
imageList.stream().forEach(image -> {
image.setCollectId(imageCollect.getCollectId());
String path = path_prefix + image.getImageName();
File file = new File(image.getImagePath());
if (file.exists()) {
byte[] bytes = FileUtil.readBytes(file);
FileUtil.writeBytes(bytes, path);
FileUtil.del(file);
image.setImagePath(path);
}else {
imageList.remove(image);
}
});
if(CollUtil.isEmpty(imageList)){
throw new ServiceException(Message.IMAGE_PATH_IS_NOT_EXIST);
}
imageService.saveOrUpdateBatch(imageList);
}
}

View File

@ -1,28 +1,173 @@
package com.dite.znpt.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.constant.Message;
import com.dite.znpt.domain.entity.ImageEntity;
import com.dite.znpt.domain.vo.ImageListReq;
import com.dite.znpt.domain.vo.ImageListResp;
import com.dite.znpt.domain.vo.ImageReq;
import com.dite.znpt.domain.vo.ImageResp;
import com.dite.znpt.enums.ImageTypeEnum;
import com.dite.znpt.enums.ShootingMethodEnum;
import com.dite.znpt.enums.WeatherEnum;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.ImageMapper;
import com.dite.znpt.service.ImageCollectService;
import com.dite.znpt.service.ImageService;
import com.dite.znpt.util.EXIFUtil;
import com.dite.znpt.util.PageUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Bear.G
* @date 2025/4/24/周四 13:23
* @description
*/
@Service
public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> implements ImageService {
@Override
public List<ImageResp> selectList(ImageListReq req) {
PageUtil.startPage();
List<ImageResp> imageList= this.baseMapper.queryBySelective(req);
imageList.forEach(resp -> {
@Resource
private ImageCollectService imageCollectService;
@Value("${upload.temp-path}")
private String tempPath;
@Override
public List<ImageListResp> list(ImageListReq req) {
List<ImageListResp> partList= this.baseMapper.queryImageList(req);
partList.forEach(resp -> {
resp.setWeatherLabel(WeatherEnum.getDescByCode(resp.getWeather()));
resp.setShootingMethodLabel(ShootingMethodEnum.getDescByCode(resp.getShootingMethod()));
resp.setImageTypeLabel(ImageTypeEnum.getDescByCode(resp.getImageType()));
});
return imageList;
return partList;
}
@Override
public List<ImageListResp> page(ImageListReq req) {
PageUtil.startPage();
return this.list(req);
}
@Override
public ImageResp detail(String imageId) {
ImageResp imageResp = this.baseMapper.detail(imageId);
imageResp.getImageCollectInfo().setWeatherLabel(WeatherEnum.getDescByCode(imageResp.getImageCollectInfo().getWeather()));
imageResp.getImageCollectInfo().setShootingMethodLabel(ShootingMethodEnum.getDescByCode(imageResp.getImageCollectInfo().getShootingMethodLabel()));
return imageResp;
}
@Transactional(rollbackFor = Exception.class)
@Override
public List<ImageReq> batchUpload(String departId, MultipartFile[] files) {
if(null == files || files.length == 0){
throw new ServiceException(Message.IMAGE_IS_EMPTY);
}
List<ImageReq> list = new ArrayList<>(files.length);
String path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(departId).concat(StrUtil.BACKSLASH);
for (MultipartFile file : files) {
if (!file.isEmpty()) {
try {
String path = path_prefix + file.getOriginalFilename();
FileUtil.writeBytes(file.getBytes(),path);
list.add(imageRespBuilder(path));
} catch (Exception e) {
e.printStackTrace();
}
}
}
return list;
}
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(String imageId) {
ImageEntity image = this.getById(imageId);
if(null ==image){
throw new ServiceException(Message.IMAGE_ID_IS_NOT_EXIST);
}
this.removeById(image);
List<ImageEntity> imageList = this.list(Wrappers.<ImageEntity>lambdaQuery().eq(ImageEntity::getCollectId, image.getCollectId()));
if(CollUtil.isEmpty(imageList)){
imageCollectService.removeById(image.getCollectId());
}
File file = new File(image.getImagePath());
if (file.exists()) {
FileUtil.del(file);
}
}
private ImageReq imageRespBuilder(String path) throws Exception {
ImageReq req = new ImageReq();
File file = new File(path);
JSONObject obj = EXIFUtil.printImageTags(file);
req.setCameraManufacturer(obj.getStr("Make"));
req.setCameraModel(obj.getStr("Model"));
req.setImageName(obj.getStr("File Name"));
req.setImagePath(path);
BigDecimal imageSize = new BigDecimal(extractDigit(obj.getStr("File Size"))).divide(new BigDecimal(1024*1024), 4, RoundingMode.HALF_UP);
req.setImageSize(imageSize.toString().concat("M"));
req.setImageWidth(extractDigit(obj.getStr("Image Width")));
req.setImageHeight(extractDigit(obj.getStr("Image Height")));
req.setImageResolution(req.getImageWidth().concat("x").concat(req.getImageHeight()));
req.setFocalDistance35(extractDigit(obj.getStr("Focal Length 35")));
req.setXResolution(extractDigit(obj.getStr("X Resolution")));
req.setYResolution(extractDigit(obj.getStr("Y Resolution")));
req.setResolutionUnits(obj.getStr("Resolution Units"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy:MM:dd HH:mm:ss");
req.setShootingTime(LocalDateTime.parse( obj.getStr("Date/Time Original"),formatter));
req.setFocalDistance(extractDigit(obj.getStr("Focal Length")));
req.setLatitude(obj.getStr("GPS Latitude"));
req.setLongitude(obj.getStr("GPS Longitude"));
req.setAltitude(extractDigit(obj.getStr("GPS Altitude")));
String gps = req.getLatitude().concat("°").concat(directionTranslator(obj.getStr("GPS Latitude Ref"))).concat(StrUtil.COMMA)
.concat(req.getLongitude()).concat("°").concat(directionTranslator(obj.getStr("GPS Longitude Ref"))).concat(StrUtil.COMMA)
.concat("海拔").concat(req.getAltitude()).concat("m");
req.setGPS(gps);
return req;
}
private String directionTranslator(String direction){
if(direction.equalsIgnoreCase("N")){
return "";
} else if (direction.equalsIgnoreCase("S")) {
return "";
} else if (direction.equalsIgnoreCase("E")) {
return "";
}else if (direction.equalsIgnoreCase("W")) {
return "西";
}else {
return "未知";
}
}
private static String extractDigit(String str) {
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
return matcher.group();
} else {
return null;
}
}
}

View File

@ -1,99 +0,0 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.ProjectCompanyEntity;
import com.dite.znpt.domain.vo.ProjectCompanyListReq;
import com.dite.znpt.domain.vo.ProjectCompanyResp;
import com.dite.znpt.service.ProjectCompanyService;
import com.dite.znpt.mapper.ProjectCompanyMapper;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 项目-公司关联信息表服务实现类
*/
@Service
@RequiredArgsConstructor
public class ProjectCompanyServiceImpl extends ServiceImpl<ProjectCompanyMapper, ProjectCompanyEntity> implements ProjectCompanyService {
/**
* 功能描述查询项目-公司关联信息列表
*
* @param projectCompanyReq 项目-公司关联信息信息
* @return {@link List }<{@link ProjectCompanyResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<ProjectCompanyResp> selectList(ProjectCompanyListReq projectCompanyReq) {
PageUtil.startPage();
List<ProjectCompanyResp> projectCompanyList= this.baseMapper.queryBySelective(projectCompanyReq);
projectCompanyList.forEach(resp -> {
});
return projectCompanyList;
}
/**
* 功能描述查询单条项目-公司关联信息
*
* @param projectId 项目-公司关联信息Id
* @return {@link ProjectCompanyResp }
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public ProjectCompanyResp selectById(String projectId) {
ProjectCompanyListReq projectCompanyReq = new ProjectCompanyListReq();
projectCompanyReq.setProjectId(projectId);
List<ProjectCompanyResp> list = selectList(projectCompanyReq);
return list.isEmpty() ? CollUtil.getFirst(list) : new ProjectCompanyResp();
}
/**
* 功能描述新增项目-公司关联信息
*
* @param projectCompany 项目-公司关联信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void saveData(ProjectCompanyEntity projectCompany) {
// todo 校验
save(projectCompany);
}
/**
* 功能描述更新项目-公司关联信息
*
* @param projectCompany 项目-公司关联信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void updateData(ProjectCompanyEntity projectCompany) {
// todo 校验
updateById(projectCompany);
}
/**
* 功能描述删除项目-公司关联信息
*
* @param projectId 项目-公司关联信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void deleteById(String projectId) {
// todo 校验
removeById(projectId);
}
}

View File

@ -1,99 +0,0 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.TCompanyEntity;
import com.dite.znpt.domain.vo.TCompanyListReq;
import com.dite.znpt.domain.vo.TCompanyResp;
import com.dite.znpt.service.TCompanyService;
import com.dite.znpt.mapper.TCompanyMapper;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.util.PageUtil;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @Description: 公司信息表服务实现类
*/
@Service
@RequiredArgsConstructor
public class TCompanyServiceImpl extends ServiceImpl<TCompanyMapper, TCompanyEntity> implements TCompanyService {
/**
* 功能描述查询公司信息列表
*
* @param tCompanyReq 公司信息信息
* @return {@link List }<{@link TCompanyResp }>
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public List<TCompanyResp> selectList(TCompanyListReq tCompanyReq) {
PageUtil.startPage();
List<TCompanyResp> tCompanyList= this.baseMapper.queryBySelective(tCompanyReq);
tCompanyList.forEach(resp -> {
});
return tCompanyList;
}
/**
* 功能描述查询单条公司信息
*
* @param companyId 公司信息Id
* @return {@link TCompanyResp }
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public TCompanyResp selectById(String companyId) {
TCompanyListReq tCompanyReq = new TCompanyListReq();
tCompanyReq.setCompanyId(companyId);
List<TCompanyResp> list = selectList(tCompanyReq);
return list.isEmpty() ? CollUtil.getFirst(list) : new TCompanyResp();
}
/**
* 功能描述新增公司信息
*
* @param tCompany 公司信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void saveData(TCompanyEntity tCompany) {
// todo 校验
save(tCompany);
}
/**
* 功能描述更新公司信息
*
* @param tCompany 公司信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void updateData(TCompanyEntity tCompany) {
// todo 校验
updateById(tCompany);
}
/**
* 功能描述删除公司信息
*
* @param companyId 公司信息Id
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void deleteById(String companyId) {
// todo 校验
removeById(companyId);
}
}

View File

@ -2,29 +2,35 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.DefectMapper">
<sql id="Base_Column_List">
a.defect_id, a.turbine_id, a.part_id, a.defect_code, a.defect_name, a.defect_type, a.defect_level, a.defect_image_path, a.description
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.DefectResp">
select
<include refid="Base_Column_List"/>
from defect a
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.DefectListResp">
SELECT
d.defect_id, d.defect_name, d.defect_code, p.part_name, d.defect_position, d.description
FROM defect d
LEFT JOIN image i ON d.image_id = i.image_id
LEFT JOIN image_collect ic ON ic.collect_id = i.collect_id
LEFT JOIN part p ON ic.part_id = p.part_id
<where>
<if test="keyword != null and keyword != ''">
# and (a.defect_name like concat('%', #{keyword,jdbcType=VARCHAR}, '%') or a.defect_code like concat('%', #{keyword,jdbcType=VARCHAR}, '%'))
# AND (d.defect_name LIKE concat('%', #{keyword,jdbcType=VARCHAR}, '%') OR d.defect_code LIKE concat('%', #{keyword,jdbcType=VARCHAR}, '%'))
</if>
<if test="partId != null and partId != ''">
and a.part_id = #{turbineCode}
<if test="turbineId != null and turbineId != ''">
AND p.turbine_id = #{turbineId}
</if>
<if test="defectType != null and defectType != ''">
and a.defect_type = #{defectType}
AND d.defect_type = #{defectType}
</if>
<if test="defectLevel != null and defectLevel != ''">
and a.defect_level = #{defectLevel}
AND d.defect_level = #{defectLevel}
</if>
</where>
</select>
<select id="detail" resultType="com.dite.znpt.domain.vo.DefectResp">
SELECT
d.defect_id, d.defect_code, d.defect_name, d.defect_position, d.defect_type, d.defect_level, d.repair_status, d.detection_date, d.source,
d.chordwise, d.axial, d.area, d.label_info, d.description, d.description
FROM defect d
WHERE d.defect_id = #{defectId}
</select>
</mapper>

View File

@ -2,15 +2,5 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.ImageCollectMapper">
<sql id="Base_Column_List">
a.collect_id, a.shooting_time_begin, a.shooting_time_end, a.weather, a.humidness, a.temperature_min, a.temperature_max, a.wind_level, a.shooting_method,
a.shooting_distance, a.collector_name,
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.ImageCollectResp">
select
<include refid="Base_Column_List"/>
from image_collect_info a
</select>
</mapper>

View File

@ -1,20 +1,68 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.ImageMapper">
<sql id="Base_Column_List">
a.image, a.part_id, a.turbine_id, a.project_id, a.image_name, a.image_size, a.focal_distance,
a.shooting_time, a.camera_manufacture, a.camera_model, a.longitude, a.latitude, a.altitude,
a.image_type, a.image_path
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.ImageResp">
select
<include refid="Base_Column_List"/>
from image a
<select id="queryImageList" resultType="com.dite.znpt.domain.vo.ImageListResp">
SELECT
i.image_id, i.image_name, ic.part_id, p.part_name, i.image_resolution, i.focal_distance, i.shooting_time, i.camera_manufacturer,
i.camera_model, i.GPS, ic.weather, ic.humidness, CONCAT(ic.temperature_min, '℃', '~',temperature_max, '℃') AS temperature, ic.wind_level,
ic.shooting_method, ic.shooting_distance,ic.collector_name, i.image_type
FROM image i
LEFT JOIN image_collect ic ON i.collect_id = ic.collect_id
LEFT JOIN part p ON ic.part_id = p.part_id
<where>
<if test="keyword != null and keyword != ''">
and a.image_name like concat('%', #{keyword,jdbcType=VARCHAR}, '%')
AND i.image_name LIKE concat('%', #{keyword}, '%')
</if>
<if test="turbineId != null and turbineId != ''">
AND p.turbine_id = #{turbineId}
</if>
<if test="imageTypes != null and imageTypes.length > 0">
AND i.image_type in <foreach collection="imageTypes" item="imageType" open="(" close=")" separator=",">#{imageType}</foreach>
</if>
</where>
</select>
<resultMap id="imageRespMap" type="com.dite.znpt.domain.vo.ImageResp">
<id property="imageId" column="image_id"></id>
<result property="imageName" column="image_name"></result>
<result property="imagePath" column="image_path"></result>
<result property="imageSize" column="image_size"></result>
<result property="imageResolution" column="image_resolution"></result>
<association property="imageExifInfo">
<result property="imageWidth" column="image_width"></result>
<result property="imageHeight" column="image_height"></result>
<result property="imageResolution" column="image_resolution"></result>
<result property="focalDistance" column="focal_distance"></result>
<result property="focalDistance35" column="focal_distance35"></result>
<result property="xResolution" column="x_resolution"></result>
<result property="yResolution" column="y_resolution"></result>
<result property="resolutionUnits" column="resolution_units"></result>
<result property="shootingTime" column="shooting_time"></result>
<result property="cameraManufacturer" column="camera_manufacturer"></result>
<result property="cameraModel" column="camera_model"></result>
<result property="longitude" column="latitude"></result>
<result property="latitude" column="latitude"></result>
<result property="altitude" column="altitude"></result>
</association>
<association property="imageCollectInfo">
<id property="collectId" column="collect_id" ></id>
<result property="weather" column="weather"></result>
<result property="humidness" column="humidness"></result>
<result property="temperature" column="temperature"></result>
<result property="windLevel" column="wind_level"></result>
<result property="shootingMethod" column="shooting_method"></result>
<result property="shootingDistance" column="shooting_distance"></result>
<result property="collectorName" column="collector_name"></result>
</association>
</resultMap>
<select id="detail" resultMap="imageRespMap">
SELECT i.image_id, i.image_name, i.image_path, i.image_height, i.image_resolution, i.image_width, i.image_height, i.focal_distance,
i.focal_distance35, i.x_resolution, i.y_resolution, i.resolution_units, i.shooting_time, i.camera_manufacturer, i.camera_model,
i.latitude, i.latitude, i.altitude, ic.collect_id, ic.weather, CONCAT(ic.temperature_min, '℃', '~',temperature_max, '℃') AS temperature,
ic.wind_level, ic.shooting_method, ic.shooting_distance, ic.collector_name
FROM image i
LEFT JOIN image_collect ic ON i.collect_id = ic.collect_id
WHERE i.image_id = #{imageId}
</select>
</mapper>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.ProjectCompanyMapper">
<sql id="Base_Column_List">
a.project_id, a.company_id, a.relation_type
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.ProjectCompanyResp">
select
<include refid="Base_Column_List"/>
from project_company a
<where>
<if test="keyword != null and keyword != ''">
# and (a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%') or a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%'))
</if>
<if test="projectId != null and projectId != ''">
and a.project_id like concat ('%', #{projectId}, '%')
</if>
<if test="companyId != null and companyId != ''">
and a.company_id like concat ('%', #{companyId}, '%')
</if>
<if test="relationType != null and relationType != ''">
and a.relation_type like concat ('%', #{relationType}, '%')
</if>
</where>
</select>
</mapper>

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.TCompanyMapper">
<sql id="Base_Column_List">
a.company_id, a.company_name, a.address, a.contact,
a.phone
</sql>
<select id="queryBySelective" resultType="com.dite.znpt.domain.vo.TCompanyResp">
select
<include refid="Base_Column_List"/>
from t_company a
<where>
<if test="keyword != null and keyword != ''">
# and (a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%') or a.TODO like concat('%', #{keyword,jdbcType=VARCHAR}, '%'))
</if>
<if test="companyId != null and companyId != ''">
and a.company_id like concat ('%', #{companyId}, '%')
</if>
<if test="companyName != null and companyName != ''">
and a.company_name like concat ('%', #{companyName}, '%')
</if>
<if test="address != null and address != ''">
and a.address like concat ('%', #{address}, '%')
</if>
<if test="contact != null and contact != ''">
and a.contact like concat ('%', #{contact}, '%')
</if>
<if test="phone != null and phone != ''">
and a.phone like concat ('%', #{phone}, '%')
</if>
</where>
</select>
</mapper>

View File

@ -29,10 +29,10 @@
<artifactId>core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dite.znpt</groupId>
<artifactId>data-bus</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.dite.znpt</groupId>-->
<!-- <artifactId>data-bus</artifactId>-->
<!-- <version>1.0.0-SNAPSHOT</version>-->
<!-- </dependency>-->
</dependencies>
</project>

View File

@ -3,6 +3,7 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.DefectListReq;
import com.dite.znpt.domain.vo.DefectReq;
import com.dite.znpt.domain.vo.DefectResp;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.service.DefectService;
@ -30,35 +31,41 @@ public class DefectController {
@Resource
private DefectService defectService;
@ApiOperation(value = "获取缺陷记录列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<DefectResp> list(DefectListReq defectReq) {
return PageResult.ok(defectService.selectList(defectReq));
@ApiOperation(value = "分页查询缺陷记录列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<DefectResp> page(@RequestBody DefectListReq req) {
return PageResult.ok(defectService.page(req));
}
@ApiOperation(value = "根据缺陷记录Id获取详细信息", httpMethod = "GET")
@GetMapping("/{defectId}")
public Result<DefectResp> getInfo(@PathVariable String defectId) {
return Result.ok(defectService.selectById(defectId));
@ApiOperation(value = "查询缺陷记录列表", httpMethod = "GET")
@GetMapping("/page")
public Result<List<DefectResp>> list(@RequestBody DefectListReq req) {
return Result.ok(defectService.list(req));
}
@ApiOperation(value = "查询缺详细", httpMethod = "GET")
@GetMapping("/detail/{defectId}")
public Result<DefectResp> detail(@PathVariable String defectId) {
return Result.ok(defectService.detail(defectId));
}
@ApiOperation(value = "新增缺陷记录", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody DefectEntity defect) {
defectService.saveData(defect);
@PostMapping("/{imageId}")
public Result save(@PathVariable String imageId, @RequestBody DefectReq req) {
defectService.save(imageId, req);
return Result.ok();
}
@ApiOperation(value = "修改缺陷记录", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody DefectEntity defect) {
defectService.updateData(defect);
@PutMapping("/{defectId}")
public Result edit(@PathVariable String defectId, @RequestBody DefectReq req) {
defectService.update(defectId, req);
return Result.ok();
}
@ApiOperation(value = "删除缺陷记录", httpMethod = "DELETE")
@DeleteMapping("/{defectId}")
public Result<Object> remove(@PathVariable String defectId) {
public Result remove(@PathVariable String defectId) {
defectService.deleteById(defectId);
return Result.ok();
}
@ -67,7 +74,7 @@ public class DefectController {
@GetMapping("/export")
@ResponseExcel(name = "缺陷记录")
public List<DefectResp> export(DefectListReq defectReq) {
return defectService.selectList(defectReq);
return defectService.page(defectReq);
}
@ApiOperation(value = "导入缺陷记录", httpMethod = "POST")

View File

@ -2,28 +2,69 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.vo.ImageListReq;
import com.dite.znpt.domain.vo.ImageResp;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.vo.*;
import com.dite.znpt.service.ImageCollectService;
import com.dite.znpt.service.ImageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.List;
/**
* @author Bear.G
* @date 2025/4/24/周四 12:46
* @description
*/
@Api(tags = "图像信息")
@RestController
@RequestMapping("/image")
public class ImageController {
@Resource
private ImageService imageService;
@Resource
private ImageCollectService imageCollectService;
@ApiOperation(value = "分页查询图像列表", httpMethod = "GET")
@GetMapping("/page")
public PageResult<ImageResp> list(ImageListReq req) {
return PageResult.ok(imageService.selectList(req));
public PageResult<ImageListResp> page(@RequestBody ImageListReq req) {
return PageResult.ok(imageService.page(req));
}
@ApiOperation(value = "查询图像列表", httpMethod = "GET")
@GetMapping("/list")
public Result<List<ImageListResp>> list(@RequestBody ImageListReq req){
return Result.ok(imageService.list(req));
}
@ApiOperation(value = "查询图像详情", httpMethod = "GET")
@GetMapping("/detail/{imageId}")
public Result<ImageResp> detail(@PathVariable String imageId){
return Result.ok(imageService.detail(imageId));
}
@ApiOperation(value = "批量上传图像", httpMethod = "POST")
@PostMapping("/upload-batch/{departId}")
public Result<List<ImageReq>> uploadBatch(@PathVariable String departId, @RequestParam("files") MultipartFile[] files) {
return Result.ok(imageService.batchUpload(departId, files));
}
@ApiOperation(value = "设置信息", httpMethod = "POST")
@PostMapping("/setting-info/{departId}")
public Result save(@PathVariable String departId, @RequestBody ImageCollectReq req) {
imageCollectService.save(departId, req);
return Result.ok();
}
@ApiOperation(value = "删除图像", httpMethod = "DELETE")
@DeleteMapping("/{imageId}")
public Result remove(@PathVariable String imageId){
imageService.delete(imageId);
return Result.ok();
}
}

View File

@ -23,7 +23,7 @@ import java.util.List;
* @author huise23
* @date 2025/04/11 23:17
*/
@Api(tags = "")
@Api(tags = "部件信息")
@RestController
@RequestMapping("/part")
public class PartController {

View File

@ -1,84 +0,0 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.ProjectCompanyListReq;
import com.dite.znpt.domain.vo.ProjectCompanyResp;
import com.dite.znpt.domain.entity.ProjectCompanyEntity;
import com.dite.znpt.service.ProjectCompanyService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
*/
@Api(tags = "项目-公司关联信息")
@RestController
@RequestMapping("/project-company")
public class ProjectCompanyController {
@Resource
private ProjectCompanyService projectCompanyService;
@ApiOperation(value = "获取项目-公司关联信息列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<ProjectCompanyResp> list(ProjectCompanyListReq projectCompanyReq) {
return PageResult.ok(projectCompanyService.selectList(projectCompanyReq));
}
@ApiOperation(value = "根据项目-公司关联信息Id获取详细信息", httpMethod = "GET")
@GetMapping("/{projectId}")
public Result<ProjectCompanyResp> getInfo(@PathVariable String projectId) {
return Result.ok(projectCompanyService.selectById(projectId));
}
@ApiOperation(value = "新增项目-公司关联信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody ProjectCompanyEntity projectCompany) {
projectCompanyService.saveData(projectCompany);
return Result.ok();
}
@ApiOperation(value = "修改项目-公司关联信息", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody ProjectCompanyEntity projectCompany) {
projectCompanyService.updateData(projectCompany);
return Result.ok();
}
@ApiOperation(value = "删除项目-公司关联信息", httpMethod = "DELETE")
@DeleteMapping("/{projectId}")
public Result<Object> remove(@PathVariable String projectId) {
projectCompanyService.deleteById(projectId);
return Result.ok();
}
@ApiOperation(value = "导出项目-公司关联信息", httpMethod = "GET")
@GetMapping("/export")
@ResponseExcel(name = "项目-公司关联信息")
public List<ProjectCompanyResp> export(ProjectCompanyListReq projectCompanyReq) {
return projectCompanyService.selectList(projectCompanyReq);
}
@ApiOperation(value = "导入项目-公司关联信息", httpMethod = "POST")
@PostMapping("/import")
public Result<Object> importData(@RequestExcel List<ProjectCompanyEntity> dataList, BindingResult bindingResult) {
// JSR 303 校验通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
if (errorMessageList != null && !errorMessageList.isEmpty()) {
return Result.error(Constants.SERVICE_EXCEPTION, "导入失败");
}
return Result.okM("导入"+dataList.size()+"条数据");
}
}

View File

@ -1,84 +0,0 @@
package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.TCompanyListReq;
import com.dite.znpt.domain.vo.TCompanyResp;
import com.dite.znpt.domain.entity.TCompanyEntity;
import com.dite.znpt.service.TCompanyService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
*/
@Api(tags = "公司信息")
@RestController
@RequestMapping("/t-company")
public class TCompanyController {
@Resource
private TCompanyService tCompanyService;
@ApiOperation(value = "获取公司信息列表", httpMethod = "GET")
@GetMapping("/list")
public PageResult<TCompanyResp> list(TCompanyListReq tCompanyReq) {
return PageResult.ok(tCompanyService.selectList(tCompanyReq));
}
@ApiOperation(value = "根据公司信息Id获取详细信息", httpMethod = "GET")
@GetMapping("/{companyId}")
public Result<TCompanyResp> getInfo(@PathVariable String companyId) {
return Result.ok(tCompanyService.selectById(companyId));
}
@ApiOperation(value = "新增公司信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody TCompanyEntity tCompany) {
tCompanyService.saveData(tCompany);
return Result.ok();
}
@ApiOperation(value = "修改公司信息", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody TCompanyEntity tCompany) {
tCompanyService.updateData(tCompany);
return Result.ok();
}
@ApiOperation(value = "删除公司信息", httpMethod = "DELETE")
@DeleteMapping("/{companyId}")
public Result<Object> remove(@PathVariable String companyId) {
tCompanyService.deleteById(companyId);
return Result.ok();
}
@ApiOperation(value = "导出公司信息", httpMethod = "GET")
@GetMapping("/export")
@ResponseExcel(name = "公司信息")
public List<TCompanyResp> export(TCompanyListReq tCompanyReq) {
return tCompanyService.selectList(tCompanyReq);
}
@ApiOperation(value = "导入公司信息", httpMethod = "POST")
@PostMapping("/import")
public Result<Object> importData(@RequestExcel List<TCompanyEntity> dataList, BindingResult bindingResult) {
// JSR 303 校验通用校验获取失败的数据
List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
if (errorMessageList != null && !errorMessageList.isEmpty()) {
return Result.error(Constants.SERVICE_EXCEPTION, "导入失败");
}
return Result.okM("导入"+dataList.size()+"条数据");
}
}

View File

@ -5,6 +5,7 @@ import com.dite.znpt.domain.Constants;
import com.dite.znpt.domain.vo.TurbineListReq;
import com.dite.znpt.domain.vo.TurbineResp;
import com.dite.znpt.domain.entity.TurbineEntity;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
@ -17,6 +18,7 @@ import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
/**
@ -31,7 +33,7 @@ public class TurbineController {
private TurbineService turbineService;
@ApiOperation(value = "获取机组-项目关联列表", httpMethod = "GET")
@GetMapping("/list")
@GetMapping({"/list", "/getByProjectId"})
public PageResult<TurbineResp> list(TurbineListReq turbineReq) {
return PageResult.ok(turbineService.selectList(turbineReq));
}

View File

@ -1,7 +1,7 @@
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 8080
port: 8888
# 数据源配置
spring:
@ -10,7 +10,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://39.99.201.243:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: h67&E98HS8^6
password: BUw8YW6%@^8q
druid:
# 初始连接数
initialSize: 5
@ -59,11 +59,15 @@ spring:
max-wait: 3000
host: 39.99.201.243
port: 6379
password: yfeng@123
password: diTeZn@123
timeout: 3000
# 0 gaea系统3 gaea-dev/gaea-test系统4 znpt开发5 znpt测试 6 znpt生产
database: 4
rabbitmq:
host: 39.99.201.243
port: 3389
username: dite
password: diTezN@123
## MINIO配置
#minio:
# url: http://10.20.32.11:9000
@ -80,7 +84,7 @@ spring:
sip-config:
name: 信令服务
ip: 10.17.12.203
ip: 192.168.0.207
port: 1074
charset: gb2312
domain: 3402000000
@ -96,18 +100,23 @@ zlm-config:
# 公网ip
publicHost:
# 接口ip
apiHost: 10.17.12.203
apiHost: 192.168.0.207
# 接口端口
apiPort: 30186
apiPort: 8080
# 密钥
secretKey: JvVotkdN01y4qZHlrJsdq4gD7n9rK6wV
secretKey: 6Q76ivvVOQDsnnfOSKbtVzcYpbgy4n1G
# 流id前缀
streamPrefix:
# rtp ip
rtpHost: 10.17.12.203
rtpHost: 192.168.0.207
# rtp 端口
rtpPort: 30186
rtpPort: 8080
# 动态端口起始值
dynamicPortStart: 30150
# 动态端口结束值
dynamicPortEnd: 30185
upload:
temp-path: F:\Upload\Temp
perm-path: F:\Upload\Perm