From e28d4aa9212f01847fbe324e85ec7d7984881a3a Mon Sep 17 00:00:00 2001 From: sdy Date: Mon, 15 Jun 2026 14:43:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/BusinessConstant.java | 1 + .../controller/MaintenanceController.java | 99 ++++++++++++++ .../business/controller/MinioController.java | 15 ++- .../modules/business/dao/MaintenanceDao.java | 21 +++ .../business/dao/MaintenanceImgDao.java | 16 +++ .../modules/business/dto/MaintenanceDTO.java | 62 +++++++++ .../business/entity/MaintenanceEntity.java | 54 ++++++++ .../business/entity/MaintenanceImgEntity.java | 29 ++++ .../business/service/MaintenanceService.java | 32 +++++ .../business/service/MinioService.java | 3 + .../service/impl/MaintenanceServiceImpl.java | 127 ++++++++++++++++++ .../service/impl/MinioServiceImpl.java | 14 ++ .../mapper/business/MaintenanceDao.xml | 23 ++++ prj-deploy/file/pgsql/init.sql | 54 +++++++- 14 files changed, 547 insertions(+), 3 deletions(-) create mode 100644 admin/src/main/java/com/multictrl/modules/business/controller/MaintenanceController.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceDao.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceImgDao.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/dto/MaintenanceDTO.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceEntity.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceImgEntity.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/service/MaintenanceService.java create mode 100644 admin/src/main/java/com/multictrl/modules/business/service/impl/MaintenanceServiceImpl.java create mode 100644 admin/src/main/resources/mapper/business/MaintenanceDao.xml diff --git a/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java b/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java index e4e1006..7962151 100644 --- a/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java +++ b/admin/src/main/java/com/multictrl/common/constant/BusinessConstant.java @@ -22,6 +22,7 @@ public interface BusinessConstant { String SPEAKER_AUDIO_BUCKET = "speaker-audio";//喊话器音频桶 String GEO_MARK_BUCKET = "geo-mark";//地图标注文件桶 String DICT_IMAGE_BUCKET = "source-material";//字典图片桶 + String MAINTENANCE_IMAGE_BUCKET = "maintenance-images";//字典图片桶 //********************************* route action *********************************// String DEFAULT_ACTION_TRIGGER_TYPE = "reachPoint";//默认动作触发器类型 到达航点执行 diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/MaintenanceController.java b/admin/src/main/java/com/multictrl/modules/business/controller/MaintenanceController.java new file mode 100644 index 0000000..abd1ce0 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/controller/MaintenanceController.java @@ -0,0 +1,99 @@ +package com.multictrl.modules.business.controller; + +import com.multictrl.common.annotation.ApiOrder; +import com.multictrl.common.annotation.LogOperation; +import com.multictrl.common.constant.Constant; +import com.multictrl.common.page.PageData; +import com.multictrl.common.utils.Result; +import com.multictrl.common.validator.AssertUtils; +import com.multictrl.common.validator.ValidatorUtils; +import com.multictrl.common.validator.group.AddGroup; +import com.multictrl.common.validator.group.UpdateGroup; +import com.multictrl.modules.business.dto.MaintenanceDTO; +import com.multictrl.modules.business.service.MaintenanceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; + +import java.util.Map; + + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@RestController +@RequestMapping("business/maintenance") +@Tag(name = "设备维护") +@ApiOrder(23) +@RequiredArgsConstructor +public class MaintenanceController { + private final MaintenanceService maintenanceService; + + @GetMapping("page") + @Operation(summary = "分页") + @Parameters({ + @Parameter(name = Constant.PAGE, description = "当前页码,从1开始"), + @Parameter(name = Constant.LIMIT, description = "每页显示记录数"), + @Parameter(name = "dockSn", description = "机库SN"), + @Parameter(name = "date", description = "维保日期 yyyy-MM-dd") + }) + @RequiresPermissions("bus:maintenance:page") + public Result> page(@Parameter(hidden = true) @RequestParam Map params) { + PageData page = maintenanceService.pageList(params); + + return new Result>().ok(page); + } + + @GetMapping("{id}") + @Operation(summary = "信息") + @RequiresPermissions("bus:maintenance:info") + public Result get(@PathVariable("id") Long id) { + MaintenanceDTO data = maintenanceService.getInfo(id); + + return new Result().ok(data); + } + + @PostMapping + @Operation(summary = "保存") + @LogOperation("保存") + @RequiresPermissions("bus:maintenance:save") + public Result save(@RequestBody MaintenanceDTO dto) { + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class); + maintenanceService.addMaintenance(dto); + + return new Result<>(); + } + + @PutMapping + @Operation(summary = "修改") + @LogOperation("修改") + @RequiresPermissions("bus:maintenance:update") + public Result update(@RequestBody MaintenanceDTO dto) { + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class); + maintenanceService.updateMaintenance(dto); + + return new Result<>(); + } + + @DeleteMapping + @Operation(summary = "删除") + @LogOperation("删除") + @RequiresPermissions("bus:maintenance:delete") + public Result delete(@RequestBody Long[] ids) { + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + maintenanceService.deleteMaintenance(ids); + + return new Result<>(); + } + +} diff --git a/admin/src/main/java/com/multictrl/modules/business/controller/MinioController.java b/admin/src/main/java/com/multictrl/modules/business/controller/MinioController.java index 2f3d503..8132b3e 100644 --- a/admin/src/main/java/com/multictrl/modules/business/controller/MinioController.java +++ b/admin/src/main/java/com/multictrl/modules/business/controller/MinioController.java @@ -59,11 +59,22 @@ public class MinioController { @Operation(summary = "上传字典图片") @PostMapping("/uploadDictImage") public Result uploadDictImage( - @RequestParam("file") MultipartFile file) { + @RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return new Result().error(ErrorCode.UPLOAD_FILE_EMPTY); } - return new Result().ok(minioService.uploadDictImage( file)); + return new Result().ok(minioService.uploadDictImage(file)); + } + + @Operation(summary = "上传维保图片") + @PostMapping("/uploadMaintenanceImage/{dockSn}") + public Result uploadMaintenanceImage(@PathVariable String dockSn, + @RequestParam("file") MultipartFile file) { + if (file.isEmpty()) { + return new Result().error(ErrorCode.UPLOAD_FILE_EMPTY); + } + + return new Result().ok(minioService.uploadMaintenanceImage(dockSn, file)); } } diff --git a/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceDao.java b/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceDao.java new file mode 100644 index 0000000..540a53a --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceDao.java @@ -0,0 +1,21 @@ +package com.multictrl.modules.business.dao; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.multictrl.common.dao.BaseDao; +import com.multictrl.modules.business.entity.MaintenanceEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@Mapper +public interface MaintenanceDao extends BaseDao { + + //分页列表查询 + IPage pageList(IPage page, @Param("ew") QueryWrapper wrapper); +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceImgDao.java b/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceImgDao.java new file mode 100644 index 0000000..628fcf9 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/dao/MaintenanceImgDao.java @@ -0,0 +1,16 @@ +package com.multictrl.modules.business.dao; + +import com.multictrl.common.dao.BaseDao; +import com.multictrl.modules.business.entity.MaintenanceImgEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 维保图片 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@Mapper +public interface MaintenanceImgDao extends BaseDao { + +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/dto/MaintenanceDTO.java b/admin/src/main/java/com/multictrl/modules/business/dto/MaintenanceDTO.java new file mode 100644 index 0000000..031a547 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/dto/MaintenanceDTO.java @@ -0,0 +1,62 @@ +package com.multictrl.modules.business.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.multictrl.common.validator.group.AddGroup; +import com.multictrl.common.validator.group.UpdateGroup; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Null; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@Data +@Schema(name = "设备维护信息") +public class MaintenanceDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + @Null(message = "标识必须为空", groups = {AddGroup.class}) + @NotNull(message = "标识不能为空", groups = {UpdateGroup.class}) + @Schema(description = "标识") + private Long id; + + @NotBlank(message = "机库SN不能为空", groups = {AddGroup.class, UpdateGroup.class}) + @Schema(description = "机库SN") + private String dockSn; + + @Schema(description = "维护内容") + private String content; + + @NotBlank(message = "操作人不能为空", groups = {AddGroup.class, UpdateGroup.class}) + @Schema(description = "操作人") + private String operator; + + @NotNull(message = "操作时间不能为空", groups = {AddGroup.class, UpdateGroup.class}) + @Schema(description = "操作时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date operationDate; + + @Schema(description = "图片集合") + private List imageUrls; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + @Schema(description = "机库名称") + private String dockName; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + @Schema(description = "机库型号") + private String dockModel; +} diff --git a/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceEntity.java b/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceEntity.java new file mode 100644 index 0000000..ab99e4f --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceEntity.java @@ -0,0 +1,54 @@ +package com.multictrl.modules.business.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.multictrl.common.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("bus_maintenance") +public class MaintenanceEntity extends BaseEntity { + /** + * 机库SN + */ + private String dockSn; + /** + * 维护内容 + */ + private String content; + /** + * 操作人 + */ + private String operator; + /** + * 操作时间 + */ + private Date operationDate; + + /** + * $column.comments + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long updater; + /** + * $column.comments + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateDate; + + @TableField(exist = false) + private String dockName; + @TableField(exist = false) + private String dockModel; +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceImgEntity.java b/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceImgEntity.java new file mode 100644 index 0000000..099e8f7 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/entity/MaintenanceImgEntity.java @@ -0,0 +1,29 @@ +package com.multictrl.modules.business.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 维保图片 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@Data +@TableName("bus_maintenance_img") +public class MaintenanceImgEntity { + + @TableId + private Long id; + /** + * $column.comments + */ + private Long maintenanceId; + /** + * $column.comments + */ + private String imageUrl; +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/service/MaintenanceService.java b/admin/src/main/java/com/multictrl/modules/business/service/MaintenanceService.java new file mode 100644 index 0000000..1a0f010 --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/service/MaintenanceService.java @@ -0,0 +1,32 @@ +package com.multictrl.modules.business.service; + +import com.multictrl.common.page.PageData; +import com.multictrl.common.service.CrudService; +import com.multictrl.modules.business.dto.MaintenanceDTO; +import com.multictrl.modules.business.entity.MaintenanceEntity; + +import java.util.Map; + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +public interface MaintenanceService extends CrudService { + + //分页列表 + PageData pageList(Map params); + + //获取详情 + MaintenanceDTO getInfo(Long id); + + //新增设备维护 + void addMaintenance(MaintenanceDTO dto); + + //修改设备维护 + void updateMaintenance(MaintenanceDTO dto); + + //删除设备维护 + void deleteMaintenance(Long[] ids); +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/service/MinioService.java b/admin/src/main/java/com/multictrl/modules/business/service/MinioService.java index 886d9b8..5254508 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/MinioService.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/MinioService.java @@ -45,4 +45,7 @@ public interface MinioService { //上传字典图片 String uploadDictImage(MultipartFile file); + + //上传维保图片 + String uploadMaintenanceImage(String dockSn, MultipartFile file); } diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/MaintenanceServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/MaintenanceServiceImpl.java new file mode 100644 index 0000000..0fe2e2f --- /dev/null +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/MaintenanceServiceImpl.java @@ -0,0 +1,127 @@ +package com.multictrl.modules.business.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.multictrl.common.constant.BusinessConstant; +import com.multictrl.common.page.PageData; +import com.multictrl.common.service.impl.CrudServiceImpl; +import com.multictrl.common.utils.ConvertUtils; +import com.multictrl.common.utils.DateUtils; +import com.multictrl.modules.business.dao.MaintenanceDao; +import com.multictrl.modules.business.dao.MaintenanceImgDao; +import com.multictrl.modules.business.dto.MaintenanceDTO; +import com.multictrl.modules.business.entity.MaintenanceEntity; +import com.multictrl.modules.business.entity.MaintenanceImgEntity; +import com.multictrl.modules.business.service.DockService; +import com.multictrl.modules.business.service.MaintenanceService; +import cn.hutool.core.util.StrUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 设备维护信息 + * + * @author Sdy + * @since 1.0.0 2026-06-12 + */ +@Service +@RequiredArgsConstructor +public class MaintenanceServiceImpl extends CrudServiceImpl implements MaintenanceService { + private final MaintenanceImgDao maintenanceImgDao; + private final DockService dockService; + + @Override + public QueryWrapper getWrapper(Map params) { + String id = (String) params.get("id"); + String dockSn = (String) params.get("dockSn"); + String date = (String) params.get("date"); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StrUtil.isNotBlank(id), "m.id", id); + wrapper.eq(StrUtil.isNotBlank(dockSn), "m.dock_sn", dockSn); + if (StrUtil.isNotBlank(date)) { + wrapper.between("m.operation_date", DateUtils.parse(date + " 00:00:00", DateUtils.DATE_TIME_PATTERN) + , DateUtils.parse(date + " 23:59:59", DateUtils.DATE_TIME_PATTERN)); + } + wrapper.orderByDesc("m.update_date"); + + return wrapper; + } + + @Override + public PageData pageList(Map params) { + IPage iPage = baseDao.pageList(getPage(params, null, false), getWrapper(params)); + List list = ConvertUtils.sourceToTarget(iPage.getRecords(), MaintenanceDTO.class); + if (CollUtil.isNotEmpty(list)) { + for (MaintenanceDTO dto : list) { + List entityList = maintenanceImgDao.selectList(new QueryWrapper() + .eq("maintenance_id", dto.getId())); + if (CollUtil.isNotEmpty(entityList)) { + List imageList = entityList.stream().map(v -> BusinessConstant.IMAGE_PATH + v.getImageUrl()).toList(); + dto.setImageUrls(imageList); + } + } + } + return new PageData<>(list, iPage.getTotal()); + } + + @Override + public MaintenanceDTO getInfo(Long id) { + MaintenanceEntity maintenanceEntity = selectById(id); + MaintenanceDTO dto = ConvertUtils.sourceToTarget(maintenanceEntity, MaintenanceDTO.class); + List imgEntities = maintenanceImgDao.selectList(new QueryWrapper() + .eq("maintenance_id", id)); + List imgList = Optional.ofNullable(imgEntities).orElse(Collections.emptyList()) + .stream().map(MaintenanceImgEntity::getImageUrl).collect(Collectors.toList()); + dto.setImageUrls(imgList); + return dto; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void addMaintenance(MaintenanceDTO dto) { + MaintenanceEntity maintenanceEntity = ConvertUtils.sourceToTarget(dto, MaintenanceEntity.class); + insert(maintenanceEntity); + + //增加图片 + addImages(maintenanceEntity.getId(), dto.getImageUrls()); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void updateMaintenance(MaintenanceDTO dto) { + MaintenanceEntity maintenanceEntity = ConvertUtils.sourceToTarget(dto, MaintenanceEntity.class); + updateById(maintenanceEntity); + + //删除图片 + maintenanceImgDao.delete(new QueryWrapper().eq("maintenance_id", maintenanceEntity.getId())); + //新增照片 + addImages(maintenanceEntity.getId(), dto.getImageUrls()); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteMaintenance(Long[] ids) { + delete(ids); + + //删除图片 + maintenanceImgDao.delete(new QueryWrapper().in("maintenance_id", Arrays.asList(ids))); + } + + //新增照片 + private void addImages(Long maintenanceId, List imageUrls) { + if (CollUtil.isNotEmpty(imageUrls)) { + for (String imageUrl : imageUrls) { + MaintenanceImgEntity imgEntity = new MaintenanceImgEntity(); + imgEntity.setMaintenanceId(maintenanceId); + imgEntity.setImageUrl(imageUrl); + maintenanceImgDao.insert(imgEntity); + } + } + } +} \ No newline at end of file diff --git a/admin/src/main/java/com/multictrl/modules/business/service/impl/MinioServiceImpl.java b/admin/src/main/java/com/multictrl/modules/business/service/impl/MinioServiceImpl.java index 4063f57..29fd4a4 100644 --- a/admin/src/main/java/com/multictrl/modules/business/service/impl/MinioServiceImpl.java +++ b/admin/src/main/java/com/multictrl/modules/business/service/impl/MinioServiceImpl.java @@ -211,6 +211,20 @@ public class MinioServiceImpl implements MinioService { return BusinessConstant.DICT_IMAGE_BUCKET + "/" + path; } + @Override + public String uploadMaintenanceImage(String dockSn, MultipartFile file) { + //文件路径 + String path = dockSn + "/" + DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN_COMPACT) + "." + FileNameUtil.extName(file.getOriginalFilename()); + try { + uploadFile(file.getInputStream(), BusinessConstant.MAINTENANCE_IMAGE_BUCKET, path); + } catch (Exception e) { + log.error(ExceptionUtils.getErrorStackTrace(e)); + throw new RenException(ErrorCode.OSS_UPLOAD_FILE_ERROR, file.getOriginalFilename()); + } + + return BusinessConstant.MAINTENANCE_IMAGE_BUCKET + "/" + path; + } + private String getMimeType(String fileName) { if (fileName == null) return "application/octet-stream"; diff --git a/admin/src/main/resources/mapper/business/MaintenanceDao.xml b/admin/src/main/resources/mapper/business/MaintenanceDao.xml new file mode 100644 index 0000000..6e2f2a8 --- /dev/null +++ b/admin/src/main/resources/mapper/business/MaintenanceDao.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/prj-deploy/file/pgsql/init.sql b/prj-deploy/file/pgsql/init.sql index ff6a1f0..06af099 100644 --- a/prj-deploy/file/pgsql/init.sql +++ b/prj-deploy/file/pgsql/init.sql @@ -2294,4 +2294,56 @@ ON TABLE "public"."bus_nofly_zone" IS '禁飞区'; -- Primary Key structure for table bus_nofly_zone -- ---------------------------- ALTER TABLE "public"."bus_nofly_zone" - ADD CONSTRAINT "uav_no_flying_pkey" PRIMARY KEY ("id"); \ No newline at end of file + ADD CONSTRAINT "uav_no_flying_pkey" PRIMARY KEY ("id"); + +--2026/6/15 +DROP TABLE IF EXISTS "public"."bus_maintenance"; +CREATE TABLE "public"."bus_maintenance" +( + "id" int8 NOT NULL, + "dock_sn" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "content" text COLLATE "pg_catalog"."default", + "operator" varchar(255) COLLATE "pg_catalog"."default", + "operation_date" timestamp(6), + "creator" int8, + "create_date" timestamp(6), + "updater" int8, + "update_date" timestamp(6) +) +; +COMMENT +ON COLUMN "public"."bus_maintenance"."dock_sn" IS '机库SN'; +COMMENT +ON COLUMN "public"."bus_maintenance"."content" IS '维护内容'; +COMMENT +ON COLUMN "public"."bus_maintenance"."operator" IS '操作人'; +COMMENT +ON COLUMN "public"."bus_maintenance"."operation_date" IS '操作时间'; +COMMENT +ON TABLE "public"."bus_maintenance" IS '设备维护信息'; + +-- ---------------------------- +-- Table structure for bus_maintenance_img +-- ---------------------------- +DROP TABLE IF EXISTS "public"."bus_maintenance_img"; +CREATE TABLE "public"."bus_maintenance_img" +( + "id" int8 NOT NULL, + "maintenance_id" int8 NOT NULL, + "image_url" varchar(255) COLLATE "pg_catalog"."default" +) +; +COMMENT +ON TABLE "public"."bus_maintenance_img" IS '维保图片'; + +-- ---------------------------- +-- Primary Key structure for table bus_maintenance +-- ---------------------------- +ALTER TABLE "public"."bus_maintenance" + ADD CONSTRAINT "bus_maintenance_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bus_maintenance_img +-- ---------------------------- +ALTER TABLE "public"."bus_maintenance_img" + ADD CONSTRAINT "bus_maintenance_img_pkey" PRIMARY KEY ("id"); \ No newline at end of file