机库类型、图片展示逻辑优化

This commit is contained in:
sdy 2026-06-01 11:13:48 +08:00
parent d6d624e705
commit 7081e66183
11 changed files with 59 additions and 15 deletions

View File

@ -84,4 +84,5 @@ public interface BusinessConstant {
String IMAGE_PATH = "image/"; String IMAGE_PATH = "image/";
String VIDEO_PATH = "video/"; String VIDEO_PATH = "video/";
String VIDEO_COVER_SUFFIX = "_cover.jpeg"; String VIDEO_COVER_SUFFIX = "_cover.jpeg";
String DJI_SIGN = "DJI";
} }

View File

@ -2,6 +2,7 @@ package com.multictrl.modules.business.dto;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.multictrl.common.constant.BusinessConstant;
import com.multictrl.common.validator.group.AddGroup; import com.multictrl.common.validator.group.AddGroup;
import com.multictrl.common.validator.group.UpdateGroup; import com.multictrl.common.validator.group.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -110,7 +111,7 @@ public class DockDTO implements Serializable {
@Schema(hidden = true) @Schema(hidden = true)
@AssertTrue(message = "机库型号不能为空", groups = {AddGroup.class, UpdateGroup.class}) @AssertTrue(message = "机库型号不能为空", groups = {AddGroup.class, UpdateGroup.class})
public boolean isDockModelValid() { public boolean isDockModelValid() {
if (!"DJI".equals(dockType)) { if (!BusinessConstant.DJI_SIGN.equals(dockType)) {
return StringUtils.isNotBlank(dockModel); return StringUtils.isNotBlank(dockModel);
} else { } else {
return true; return true;

View File

@ -21,6 +21,8 @@ import com.multictrl.modules.business.entity.DockEntity;
import com.multictrl.modules.business.service.DJIBaseService; import com.multictrl.modules.business.service.DJIBaseService;
import com.multictrl.modules.business.service.DockService; import com.multictrl.modules.business.service.DockService;
import com.multictrl.modules.security.service.ShiroService; import com.multictrl.modules.security.service.ShiroService;
import com.multictrl.modules.sys.dao.SysDictDataDao;
import com.multictrl.modules.sys.entity.SysDictDataEntity;
import com.multictrl.modules.sys.service.SysDictDataService; import com.multictrl.modules.sys.service.SysDictDataService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -42,7 +44,7 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
private final DockDeviceDao dockDeviceDao; private final DockDeviceDao dockDeviceDao;
private final DeviceDicDao deviceDicDao; private final DeviceDicDao deviceDicDao;
private final ShiroService shiroService; private final ShiroService shiroService;
private final SysDictDataService sysDictDataService; private final SysDictDataDao dictDataDao;
@Override @Override
public QueryWrapper<DockEntity> getWrapper(Map<String, Object> params) { public QueryWrapper<DockEntity> getWrapper(Map<String, Object> params) {
@ -101,8 +103,19 @@ public class DockServiceImpl extends CrudServiceImpl<DockDao, DockEntity, DockDT
} }
} }
String dockType = dockDTO.getDockType(); String dockType = dockDTO.getDockType();
if("DJI".equals(dockType)){ if (BusinessConstant.DJI_SIGN.equals(dockType)) {
// dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH+ DJIImage.); DockDeviceEntity dockDevice = dockDeviceDao.selectOne(new QueryWrapper<DockDeviceEntity>().eq("sn", dockDTO.getDockSn()));
if (dockDevice != null) {
dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + DJIImage.getImageUrlByName(dockDevice.getDeviceName()));
dockDTO.setDockModel(dockDevice.getDeviceName());
}
} else {
String dockMode = dockDTO.getDockMode();
List<SysDictDataEntity> list = dictDataDao.selectList(new QueryWrapper<SysDictDataEntity>()
.eq("dict_value", dockMode).orderByAsc("create_date"));
if (list != null) {
dockDTO.setImgUrl(BusinessConstant.IMAGE_PATH + list.get(0).getImageUrl());
}
} }
} }
return page; return page;

View File

@ -34,7 +34,6 @@ import java.util.Map;
public class SysDictDataController { public class SysDictDataController {
private final SysDictDataService sysDictDataService; private final SysDictDataService sysDictDataService;
private final static String DOCK_TYPE = "dockType"; private final static String DOCK_TYPE = "dockType";
private final static String DOCK_MODEL = "dockModel";
@GetMapping("page") @GetMapping("page")
@Operation(summary = "字典数据") @Operation(summary = "字典数据")
@ -112,8 +111,8 @@ public class SysDictDataController {
@GetMapping("/getDockModel") @GetMapping("/getDockModel")
@Operation(summary = "获取机库型号") @Operation(summary = "获取机库型号")
public Result<List<SysDictDataDTO>> getDockModel() { public Result<List<SysDictDataDTO>> getDockModel(@RequestParam String dockType) {
List<SysDictDataDTO> list = sysDictDataService.getDictDataByType(DOCK_MODEL); List<SysDictDataDTO> list = sysDictDataService.getDictDataByType(dockType);
return new Result<List<SysDictDataDTO>>().ok(list); return new Result<List<SysDictDataDTO>>().ok(list);
} }

View File

@ -93,8 +93,8 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
.eq("dict_type_id", typeEntity.getId()).orderByAsc("sort")); .eq("dict_type_id", typeEntity.getId()).orderByAsc("sort"));
for (SysDictDataEntity dictDataEntity : dataList) { for (SysDictDataEntity dictDataEntity : dataList) {
String dictValue = dictDataEntity.getDictValue(); String dictValue = dictDataEntity.getDictValue();
if ("DJI".equals(dictValue)) { if (BusinessConstant.DJI_SIGN.equals(dictValue)) {
String imageUrl = DJIImage.getImageUrlByName("DJI"); String imageUrl = DJIImage.getImageUrlByName(BusinessConstant.DJI_SIGN);
dictDataEntity.setImageUrl(BusinessConstant.IMAGE_PATH + imageUrl); dictDataEntity.setImageUrl(BusinessConstant.IMAGE_PATH + imageUrl);
} else { } else {
String imageUrl = dictDataEntity.getImageUrl(); String imageUrl = dictDataEntity.getImageUrl();

View File

@ -1,5 +1,6 @@
package com.multictrl.modules.sys.service.impl; package com.multictrl.modules.sys.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -33,8 +34,8 @@ import java.util.Map;
public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysDictTypeEntity> implements SysDictTypeService { public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysDictTypeEntity> implements SysDictTypeService {
private final SysDictDataDao sysDictDataDao; private final SysDictDataDao sysDictDataDao;
private final static List<String> DICT_TYPE_LIST = new ArrayList<>() {{ private final static List<String> DICT_TYPE_LIST = new ArrayList<>() {{
add("dockTyp"); add("dockType");
add("dockModel"); // add("dockModel");
}}; }};
@Override @Override
@ -68,6 +69,11 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void save(SysDictTypeDTO dto) { public void save(SysDictTypeDTO dto) {
List<SysDictTypeEntity> list = baseDao.selectList(new QueryWrapper<SysDictTypeEntity>()
.eq("dict_type", dto.getDictType()));
if (CollectionUtil.isNotEmpty(list)) {
throw new RenException(ErrorCode.DICT_EXIST, dto.getDictType());
}
SysDictTypeEntity entity = ConvertUtils.sourceToTarget(dto, SysDictTypeEntity.class); SysDictTypeEntity entity = ConvertUtils.sourceToTarget(dto, SysDictTypeEntity.class);
insert(entity); insert(entity);
@ -80,6 +86,11 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
if (DICT_TYPE_LIST.contains(typeEntity.getDictType())) { if (DICT_TYPE_LIST.contains(typeEntity.getDictType())) {
dto.setDictType(typeEntity.getDictType()); dto.setDictType(typeEntity.getDictType());
} }
List<SysDictTypeEntity> list = baseDao.selectList(new QueryWrapper<SysDictTypeEntity>()
.eq("dict_type", dto.getDictType()).ne("id", dto.getId()));
if (CollectionUtil.isNotEmpty(list)) {
throw new RenException(ErrorCode.DICT_EXIST, dto.getDictType());
}
SysDictTypeEntity entity = ConvertUtils.sourceToTarget(dto, SysDictTypeEntity.class); SysDictTypeEntity entity = ConvertUtils.sourceToTarget(dto, SysDictTypeEntity.class);
updateById(entity); updateById(entity);
@ -99,7 +110,7 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
} }
} }
if (idList.isEmpty()) { if (idList.isEmpty()) {
throw new RenException(ErrorCode.DICT_NOT_DELETE, "[机库类型、机库型号]"); throw new RenException(ErrorCode.DICT_NOT_DELETE, "[机库类型]");
} }
//删除 //删除
deleteBatchIds(idList); deleteBatchIds(idList);

View File

@ -66,4 +66,5 @@ public interface ErrorCode {
int FILE_NOT_EXIST = 20025; int FILE_NOT_EXIST = 20025;
int UAV_LIGHT_INDEX_NOT_EXIST = 20026; int UAV_LIGHT_INDEX_NOT_EXIST = 20026;
int DICT_NOT_DELETE = 20027; int DICT_NOT_DELETE = 20027;
int DICT_EXIST = 20028;
} }

View File

@ -54,4 +54,5 @@
20024=\u558A\u8BDD\u5668\u6A21\u7248\u540D\u79F0\u5DF2\u5B58\u5728 20024=\u558A\u8BDD\u5668\u6A21\u7248\u540D\u79F0\u5DF2\u5B58\u5728
20025={0}\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E 20025={0}\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u786E
20026=\u98DE\u673A\u63A2\u7167\u706F\u8D1F\u8F7D\u4F4D\u7F6E\u672A\u83B7\u53D6\uFF0C\u8BF7\u68C0\u67E5\u98DE\u673A\u662F\u5426\u5F00\u673A 20026=\u98DE\u673A\u63A2\u7167\u706F\u8D1F\u8F7D\u4F4D\u7F6E\u672A\u83B7\u53D6\uFF0C\u8BF7\u68C0\u67E5\u98DE\u673A\u662F\u5426\u5F00\u673A
20027={0}\u5B57\u5178\u7981\u6B62\u5220\u9664 20027={0}\u5B57\u5178\u7981\u6B62\u5220\u9664
20028={0}\u5B57\u5178\u5DF2\u7ECF\u5B58\u5728

View File

@ -809,7 +809,8 @@ CREATE TABLE "public"."sys_dict_data"
"creator" int8, "creator" int8,
"create_date" timestamp(6), "create_date" timestamp(6),
"updater" int8, "updater" int8,
"update_date" timestamp(6) "update_date" timestamp(6),
"image_url" varchar(255) COLLATE "pg_catalog"."default"
) )
; ;
COMMENT COMMENT
@ -833,6 +834,8 @@ ON COLUMN "public"."sys_dict_data"."updater" IS '更新者';
COMMENT COMMENT
ON COLUMN "public"."sys_dict_data"."update_date" IS '更新时间'; ON COLUMN "public"."sys_dict_data"."update_date" IS '更新时间';
COMMENT COMMENT
ON COLUMN "public"."sys_dict_data"."image_url" IS '图片地址';
COMMENT
ON TABLE "public"."sys_dict_data" IS '字典数据'; ON TABLE "public"."sys_dict_data" IS '字典数据';
-- ---------------------------- -- ----------------------------
@ -2125,5 +2128,19 @@ VALUES (2060252437705494529, 'dockType', '机库类型', '', 1, 1067246875800000
1067246875800000001, '2026-05-29 14:50:33.446'); 1067246875800000001, '2026-05-29 14:50:33.446');
INSERT INTO "public"."sys_dict_type" ("id", "dict_type", "dict_name", "remark", "sort", "creator", "create_date", INSERT INTO "public"."sys_dict_type" ("id", "dict_type", "dict_name", "remark", "sort", "creator", "create_date",
"updater", "update_date") "updater", "update_date")
VALUES (2060253239434121218, 'dockModel', '机库型号', '', 2, 1067246875800000001, '2026-05-29 14:53:44.593', VALUES (2060253239434121218, 'AROS', '阿罗斯机库', '', 2, 1067246875800000001, '2026-05-29 14:53:44.593',
1067246875800000001, '2026-05-29 14:53:44.593'); 1067246875800000001, '2026-05-29 14:53:44.593');
--20260601
INSERT INTO "public"."sys_dict_data" ("id", "dict_type_id", "dict_label", "dict_value", "remark", "sort", "creator",
"create_date", "updater", "update_date", "image_url")
VALUES (2060252576792809474, 2060252437705494529, '大疆机场', 'DJI', '', 1, 1067246875800000001,
'2026-05-29 14:51:06.607', 1067246875800000001, '2026-05-29 14:51:06.607', NULL);
INSERT INTO "public"."sys_dict_data" ("id", "dict_type_id", "dict_label", "dict_value", "remark", "sort", "creator",
"create_date", "updater", "update_date", "image_url")
VALUES (2060252722469376002, 2060252437705494529, '阿罗斯', 'AROS', '', 0, 1067246875800000001,
'2026-05-29 14:51:41.339', 1067246875800000001, '2026-05-29 14:51:41.339', 'source-material/Aros.png');
INSERT INTO "public"."sys_dict_data" ("id", "dict_type_id", "dict_label", "dict_value", "remark", "sort", "creator",
"create_date", "updater", "update_date", "image_url")
VALUES (2060253516358848514, 2060253239434121218, 'Ars550', 'Ars550', '', 0, 1067246875800000001,
'2026-05-29 14:54:50.617', 1067246875800000001, '2026-05-29 14:54:50.617', 'source-material/Ars550.png');

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB