From ef2dc6a6f6159eb29d8f7dede760b949c30c88c6 Mon Sep 17 00:00:00 2001 From: DragonWenLong <552045633@qq.com> Date: Mon, 12 Jan 2026 11:06:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(equipment):=20=E6=B7=BB=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在DeviceType实体类中新增devicePic字段用于存储设备图片 - 修改控制器方法参数从RequestBody改为ModelAttribute以支持文件上传 - 更新DeviceTypeForm表单类添加MultipartFile类型的file字段 - 实现图片上传服务集成OSS存储和文件哈希处理 - 添加HTTP到HTTPS的URL强制转换机制 - 更新数据库操作逻辑以支持图片路径存储 - 在设备创建流程中集成设备类型图片信息传递 --- .../device/DeviceXinghanBizService.java | 1 + .../controller/DeviceTypeController.java | 5 +- .../equipment/domain/DeviceType.java | 3 ++ .../equipment/domain/form/DeviceTypeForm.java | 6 +++ .../excel/UploadDeviceDataListener.java | 5 +- .../equipment/service/DeviceTypeService.java | 5 +- .../service/impl/DeviceTypeServiceImpl.java | 47 +++++++++++++++---- 7 files changed, 59 insertions(+), 13 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceXinghanBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceXinghanBizService.java index 3a92058..d599f4c 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceXinghanBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceXinghanBizService.java @@ -739,6 +739,7 @@ public class DeviceXinghanBizService { device.setCreateByName(loginUser.getNickname()); device.setTypeName(deviceTypes.getTypeName()); device.setDeviceType(deviceTypes.getId()); + device.setDevicePic(deviceTypes.getDevicePic()); if (device.getDeviceImei() != null) { device.setPubTopic("A/" + device.getDeviceImei()); device.setSubTopic("B/" + device.getDeviceImei()); diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java index 8aacedd..630e482 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/controller/DeviceTypeController.java @@ -15,6 +15,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** @@ -50,7 +51,7 @@ public class DeviceTypeController { // @Log("新增设备类型") @Operation(summary = "新增设备类型") @PostMapping(value = "/add") - public R createDeviceType(@Validated @RequestBody DeviceType resources) { + public R createDeviceType(@Validated @ModelAttribute DeviceTypeForm resources) throws IOException { deviceTypeService.create(resources); return R.ok(); } @@ -59,7 +60,7 @@ public class DeviceTypeController { // @Log("修改设备类型") @Operation(summary = "修改设备类型") @PutMapping(value = "/update") - public R updateDeviceType(@Validated @RequestBody DeviceTypeForm resources) { + public R updateDeviceType(@Validated @ModelAttribute DeviceTypeForm resources) throws IOException { deviceTypeService.update(resources); return R.ok(); } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/DeviceType.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/DeviceType.java index f274023..034dad1 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/DeviceType.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/DeviceType.java @@ -85,5 +85,8 @@ public class DeviceType extends TenantEntity { @Schema(title = "型号字典用于PC页面跳转") private String pcModelDictionary; + @Schema(title = "设备图片") + private String devicePic; + } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/form/DeviceTypeForm.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/form/DeviceTypeForm.java index 271611d..2b5b533 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/form/DeviceTypeForm.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/form/DeviceTypeForm.java @@ -2,6 +2,7 @@ package com.fuyuanshen.equipment.domain.form; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.springframework.web.multipart.MultipartFile; /** * @Description: 设备类型 @@ -48,5 +49,10 @@ public class DeviceTypeForm { */ @Schema(title = "型号字典用于PC页面跳转") private String pcModelDictionary; + @Schema(title = "设备图片") + private String devicePic; + + @Schema(title = "设备图片") + private MultipartFile file; } diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/excel/UploadDeviceDataListener.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/excel/UploadDeviceDataListener.java index ba7e7b7..c6b8416 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/excel/UploadDeviceDataListener.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/excel/UploadDeviceDataListener.java @@ -12,6 +12,7 @@ import com.fuyuanshen.equipment.domain.DeviceType; import com.fuyuanshen.equipment.domain.dto.DeviceExcelImportDTO; import com.fuyuanshen.equipment.domain.dto.ImportResult; import com.fuyuanshen.equipment.domain.form.DeviceForm; +import com.fuyuanshen.equipment.domain.form.DeviceTypeForm; import com.fuyuanshen.equipment.handler.ImageWriteHandler; import com.fuyuanshen.system.domain.vo.SysOssVo; import lombok.extern.slf4j.Slf4j; @@ -437,8 +438,10 @@ public class UploadDeviceDataListener implements ReadListener { * * @param resources / */ - void create(DeviceType resources); + void create(DeviceTypeForm resources) throws IOException; /** * 修改设备类型 * * @param resources / */ - void update(DeviceTypeForm resources); + void update(DeviceTypeForm resources) throws IOException; /** * 多选删除 diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java index b4628fa..91c241d 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/service/impl/DeviceTypeServiceImpl.java @@ -19,12 +19,16 @@ import com.fuyuanshen.equipment.mapper.DeviceMapper; import com.fuyuanshen.equipment.mapper.DeviceTypeGrantsMapper; import com.fuyuanshen.equipment.mapper.DeviceTypeMapper; import com.fuyuanshen.equipment.service.DeviceTypeService; +import com.fuyuanshen.equipment.utils.FileHashUtil; +import com.fuyuanshen.system.domain.vo.SysOssVo; import com.fuyuanshen.system.domain.vo.SysRoleVo; +import com.fuyuanshen.system.service.ISysOssService; import com.fuyuanshen.system.service.ISysRoleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -46,6 +50,8 @@ public class DeviceTypeServiceImpl extends ServiceImpl typeName = deviceTypeMapper.selectList(new QueryWrapper().eq("type_name", resources.getTypeName())); if (CollectionUtil.isNotEmpty(typeName)) { throw new RuntimeException("设备类型名称已存在,无法新增!!!"); } + // 保存图片并获取URL + if (resources.getFile() != null) { + String fileHash = fileHashUtil.hash(resources.getFile()); + SysOssVo upload = ossService.updateHash(resources.getFile(), fileHash); + // 强制将HTTP替换为HTTPS + if (upload.getUrl() != null && upload.getUrl().startsWith("http://")) { + upload.setUrl(upload.getUrl().replaceFirst("^http://", "https://")); + } + // 设置图片路径 + resources.setDevicePic(upload.getUrl()); + } + + DeviceType deviceType = new DeviceType(); + BeanUtil.copyProperties(resources, deviceType, true); LoginUser loginUser = LoginHelper.getLoginUser(); - resources.setCustomerId(loginUser.getUserId()); - resources.setOwnerCustomerId(loginUser.getUserId()); - resources.setOriginalOwnerId(loginUser.getUserId()); - resources.setCreateByName(loginUser.getNickname()); - deviceTypeMapper.insert(resources); + deviceType.setCustomerId(loginUser.getUserId()); + deviceType.setOwnerCustomerId(loginUser.getUserId()); + deviceType.setOriginalOwnerId(loginUser.getUserId()); + deviceType.setCreateByName(loginUser.getNickname()); + deviceTypeMapper.insert(deviceType); // 自动授权给自己 DeviceTypeGrants deviceTypeGrants = new DeviceTypeGrants(); - deviceTypeGrants.setDeviceTypeId(resources.getId()); + deviceTypeGrants.setDeviceTypeId(deviceType.getId()); deviceTypeGrants.setCustomerId(loginUser.getUserId()); deviceTypeGrants.setGrantorCustomerId(loginUser.getUserId()); deviceTypeGrants.setGrantedAt(new Date()); @@ -213,7 +233,7 @@ public class DeviceTypeServiceImpl extends ServiceImpl