diff --git a/src/main/java/com/bellmann/common/enums/FileUrlEnum.java b/src/main/java/com/bellmann/common/enums/FileUrlEnum.java index 1dba6fc..5284677 100644 --- a/src/main/java/com/bellmann/common/enums/FileUrlEnum.java +++ b/src/main/java/com/bellmann/common/enums/FileUrlEnum.java @@ -4,8 +4,8 @@ import com.bellmann.common.base.IBaseEnum; import lombok.Getter; public enum FileUrlEnum implements IBaseEnum { - SOFT_VER_FILE_URL("0","/devtypever/firmware/%s/"), - CORP_CONF_FILE_URL("1","/devtypever/conf/%s/"), + SOFT_VER_FILE_URL("0","devtypever/firmware/%s/"), + CORP_CONF_FILE_URL("1","devtypever/conf/%s/"), ; @Getter private String value; diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 2f45934..4c7abe9 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -53,6 +53,7 @@ public enum ResultCode implements IResultCode, Serializable { FILE_NOT_EXIST("A0705", "文件不存在"), FILE_DELETE_FAIL("A0706", "文件删除失败"), + FILE_NOT_EXTENSION("A0707","文件没有后缀名"), SYSTEM_EXECUTION_ERROR("B0001", "系统执行出错"), SYSTEM_EXECUTION_TIMEOUT("B0100", "系统执行超时"), SYSTEM_ORDER_PROCESSING_TIMEOUT("B0100", "系统订单处理超时"), @@ -91,7 +92,8 @@ public enum ResultCode implements IResultCode, Serializable { DEVICE_TYPE_VER_FILE_NOT_EXIST("F0003","该版本文件不存在,无法复制"), DEVICE_TYPE_VER_EXIST_OR_BINDING("F0004","存在该设备类型软件版本的设备或者绑定!"), FILE_NOT_OF_TYPE_VER("F0005","文件不属于该设备类型软件版本"), - DATA_NOT_FOUND("F0006", "查不到数据"); + DATA_NOT_FOUND("F0006", "查不到数据"), + ; @Override public String getCode() { diff --git a/src/main/java/com/bellmann/common/util/FTPUtils.java b/src/main/java/com/bellmann/common/util/FTPUtils.java index e53237e..ad43acd 100644 --- a/src/main/java/com/bellmann/common/util/FTPUtils.java +++ b/src/main/java/com/bellmann/common/util/FTPUtils.java @@ -305,7 +305,6 @@ public class FTPUtils { String path = changeEncoding(fileUrl); changeAndMakeWorkingDir(path); String[] fileNames = ftpClient.listNames(); - log.info(Arrays.toString(fileNames)); if (fileNames == null || fileNames.length == 0) { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } @@ -318,7 +317,7 @@ public class FTPUtils { } return isSuccess; } catch (Exception e) { - throw new RuntimeException(e); + log.error(e.getMessage()); } finally { closeConnect(); } diff --git a/src/main/java/com/bellmann/common/util/PathUtils.java b/src/main/java/com/bellmann/common/util/PathUtils.java new file mode 100644 index 0000000..46fb1f3 --- /dev/null +++ b/src/main/java/com/bellmann/common/util/PathUtils.java @@ -0,0 +1,66 @@ +package com.bellmann.common.util; + +import com.bellmann.model.entity.Domain; + +import java.util.*; + +public class PathUtils { + + public static List buildPath(List nodes) { + Map nodeMap = new HashMap<>(); + List paths = new ArrayList<>(); + for (Domain node : nodes) { + if (node.getParentGroupId() == -1) { + paths.add("/"); + nodes.remove(node); + break; + } + } + for (Domain node : nodes) { + nodeMap.put(node.getGroupId(), node); + } + for (Domain node : nodes) { + StringBuilder path = new StringBuilder(); + Domain current = node; + while (current != null) { + path.insert(0, "/" + current.getGroupName()); + current = nodeMap.get(current.getParentGroupId()); + } + paths.add(path.toString()); + } + return paths; + } + + public static List objBuildPath(List nodes) { + Map nodeMap = new HashMap<>(); + List paths = new ArrayList<>(); + for (Domain node : nodes) { + if (node.getParentGroupId() == -1) { + node.setGroupName("/"); + paths.add(node); + nodes.remove(node); + break; + } + } + for (Domain node : nodes) { + nodeMap.put(node.getGroupId(), node); + } + for (Domain node : nodes) { + StringBuilder path = new StringBuilder(); + Domain current = node; + while (current != null) { + if (path.length() > 0 && path.charAt(0) == '/') { + path.insert(0, current.getGroupName()); + + } else { + path.insert(0, "/" + current.getGroupName()); + } + current = nodeMap.get(current.getParentGroupId()); + } + assert node != null; + node.setGroupName(path.toString()); + paths.add(node); + } + return paths; + } +} diff --git a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java index 94f0e86..3445ce1 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java @@ -1,13 +1,18 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; import com.bellmann.model.form.DeviceTypeVerForm; +import com.bellmann.model.form.VendorProfileForm; import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceTypeToVerVO; +import com.bellmann.model.vo.DomainOption; +import com.bellmann.model.vo.FileRecordVO; import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.DeviceTypeVerService; +import com.bellmann.service.FileRecordService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -15,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.util.List; @Tag(name = "12.设备类型软件接口") @RestController @@ -24,7 +30,6 @@ public class DeviceTypeVerController { private final DeviceTypeVerService deviceTypeVerService; - @PostMapping("/device-type/page") @Operation(summary = "设备类型对应的设备软件版本列表分页接口") public PageResult deviceTypeToVerPage(@RequestBody @Valid DeviceTypeToVerQuery query){ @@ -81,5 +86,43 @@ public class DeviceTypeVerController { int rows = deviceTypeVerService.editDevTypeVerForm(deviceTypeVerForm); return Result.success(rows); } + @Operation(summary = "新增厂商配置文件信息") + @PostMapping("/add-vendor-profile") + public Result addVendorProfile(@RequestBody VendorProfileForm form){ + return deviceTypeVerService.addVendorProfile(form); + } + @Operation(summary = "查看厂商配置文件信息") + @GetMapping("/list-vendor-profile/{typeAndVerId}") + public Result> listVendorProfile(@PathVariable Long typeAndVerId){ + + List list = deviceTypeVerService.listVendorProfile(typeAndVerId); + return Result.success(list); + } + + @Operation(summary = "删除厂商配置文件信息") + @DeleteMapping("/delete-vendor-profile/{fileId}/{typeAndVerId}") + public Result deleteVendorProfile(@PathVariable Long fileId, @PathVariable Long typeAndVerId){ + int rows = deviceTypeVerService.deleteVendorProfile(fileId,typeAndVerId); + return Result.success(rows); + } + @Operation(summary = "获取系统管理域分页数据") + @GetMapping("/page-sys-domain/{typeAndVerId}") + public PageResult pageSysDomain(@PathVariable Long typeAndVerId, BasePageQuery pageQuery){ + Page page = deviceTypeVerService.pageSysDomain(typeAndVerId,pageQuery); + return PageResult.success(page); + } + + @Operation(summary = "获取软件版本系统管理域数据") + @GetMapping("/list-ver-domain/{typeAndVerId}") + public Result> listVerDomain(@PathVariable Long typeAndVerId){ + List list = deviceTypeVerService.listVerDomain(typeAndVerId); + return Result.success(list); + } + @Operation(summary = "更新软件版本系统管理域数据") + @PostMapping("/edit-ver-domain/{typeAndVerId}") + public Result editVerDomain(@PathVariable Long typeAndVerId,@RequestBody List list){ + int rows = deviceTypeVerService.editVerDomain(typeAndVerId,list); + return Result.success(rows); + } } diff --git a/src/main/java/com/bellmann/controller/DomainController.java b/src/main/java/com/bellmann/controller/DomainController.java index dbe8f6a..edafaf0 100644 --- a/src/main/java/com/bellmann/controller/DomainController.java +++ b/src/main/java/com/bellmann/controller/DomainController.java @@ -4,6 +4,7 @@ import com.bellmann.common.model.Option; import com.bellmann.common.result.Result; import com.bellmann.model.form.DomainForm; import com.bellmann.model.query.DomainQuery; +import com.bellmann.model.vo.DomainOption; import com.bellmann.model.vo.DomainVO; import com.bellmann.service.DomainService; import io.swagger.v3.oas.annotations.Operation; @@ -57,5 +58,10 @@ public class DomainController { public Result getDomainByGroupId(@PathVariable Long groupId) { return domainService.getDomainByGroupId(groupId); } + @Operation(summary = "获取穿梭框数据") + @GetMapping("/transfer-option") + public Result>> transferOption(){ + return domainService.transferOption(); + } } diff --git a/src/main/java/com/bellmann/controller/FileOptionController.java b/src/main/java/com/bellmann/controller/FileOptionController.java index 5c995d9..4d869a8 100644 --- a/src/main/java/com/bellmann/controller/FileOptionController.java +++ b/src/main/java/com/bellmann/controller/FileOptionController.java @@ -24,12 +24,14 @@ public class FileOptionController { private final FileOptionService fileOptionService; - @PostMapping("upload") + @PostMapping("upload/{fileName}/{fileType}") @PreAuthorize("@ss.hasPerm('resource:file:upload')") @PreventDuplicateSubmit @Operation(summary = "上传文件接口") - public Result upload(@RequestPart("file") MultipartFile file, HttpServletResponse response){ - String filePath = fileOptionService.upload(file,response); + public Result upload(@RequestPart("file") MultipartFile file, + @PathVariable String fileName, + @PathVariable String fileType){ + String filePath = fileOptionService.upload(file,fileType,fileName); return Result.success(filePath); } diff --git a/src/main/java/com/bellmann/converter/FileRecordConverter.java b/src/main/java/com/bellmann/converter/FileRecordConverter.java index e3ab57b..c2dcd4c 100644 --- a/src/main/java/com/bellmann/converter/FileRecordConverter.java +++ b/src/main/java/com/bellmann/converter/FileRecordConverter.java @@ -5,6 +5,8 @@ import com.bellmann.model.entity.FileRecord; import com.bellmann.model.vo.FileRecordVO; import org.mapstruct.Mapper; +import java.util.List; + /** * 文件对象转换器 @@ -22,4 +24,5 @@ public interface FileRecordConverter { */ Page entityPage2VOPage(Page pageData); + List entityList2VOList(List fileRecords); } \ No newline at end of file diff --git a/src/main/java/com/bellmann/manger/DeviceTypeVerDomainManager.java b/src/main/java/com/bellmann/manger/DeviceTypeVerDomainManager.java index 5378e62..186bf55 100644 --- a/src/main/java/com/bellmann/manger/DeviceTypeVerDomainManager.java +++ b/src/main/java/com/bellmann/manger/DeviceTypeVerDomainManager.java @@ -1,7 +1,16 @@ package com.bellmann.manger; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; + +import java.util.List; + public interface DeviceTypeVerDomainManager { int insertDevTypeVerSysDomainMap(Long typeAndVerId); int deleteByTypeAndVerId(Long typeAndVerId); + + List listVerDomain(Long typeAndVerId); + + int editVerDomain(Long typeAndVerId, List list); } diff --git a/src/main/java/com/bellmann/manger/DomainManager.java b/src/main/java/com/bellmann/manger/DomainManager.java new file mode 100644 index 0000000..d3ba412 --- /dev/null +++ b/src/main/java/com/bellmann/manger/DomainManager.java @@ -0,0 +1,12 @@ +package com.bellmann.manger; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.model.vo.DomainOption; + +import java.util.List; + +public interface DomainManager { + Page pageJoinTypeVerByTypeAndVerId(Long typeAndVerId, BasePageQuery pageQuery); + +} diff --git a/src/main/java/com/bellmann/manger/FileRecordManager.java b/src/main/java/com/bellmann/manger/FileRecordManager.java index ccaadc8..6ecdd58 100644 --- a/src/main/java/com/bellmann/manger/FileRecordManager.java +++ b/src/main/java/com/bellmann/manger/FileRecordManager.java @@ -2,6 +2,9 @@ package com.bellmann.manger; import com.bellmann.model.bo.DevTypeVerFileBO; import com.bellmann.model.entity.FileRecord; +import com.bellmann.model.vo.FileRecordVO; + +import java.util.List; public interface FileRecordManager { FileRecord insetDevTypeVerFile(DevTypeVerFileBO devTypeVerFileBO); @@ -9,4 +12,8 @@ public interface FileRecordManager { FileRecord findFileRecordById(Long fileId); int deleteByFileId(Long fileId); + + void addVendorProfile(FileRecord fileRecord); + + List listVendorProfile(Long typeAndVerId); } diff --git a/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDomainManageImpl.java b/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDomainManageImpl.java index 48aebd6..4ab1ebb 100644 --- a/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDomainManageImpl.java +++ b/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDomainManageImpl.java @@ -1,11 +1,17 @@ package com.bellmann.manger.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; import com.bellmann.manger.DeviceTypeVerDomainManager; import com.bellmann.mapper.DeviceTypeVerDomainMapper; import com.bellmann.model.entity.DeviceTypeVerDomain; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; @Component @RequiredArgsConstructor @@ -26,4 +32,25 @@ public class DeviceTypeVerDomainManageImpl implements DeviceTypeVerDomainManager .eq(DeviceTypeVerDomain::getTypeAndVerId,typeAndVerId) ); } + + @Override + public List listVerDomain(Long typeAndVerId) { + List list = deviceTypeVerDomainMapper.selectList(new LambdaQueryWrapper() + .eq(DeviceTypeVerDomain::getTypeAndVerId, typeAndVerId) + ); + return list.stream().map(DeviceTypeVerDomain::getSysDomainId).collect(Collectors.toList()); + } + + @Override + @Transactional + public int editVerDomain(Long typeAndVerId, List list) { + int row = deviceTypeVerDomainMapper.delete(new LambdaQueryWrapper() + .eq(DeviceTypeVerDomain::getTypeAndVerId,typeAndVerId) + ); + list.forEach(domainId->{ + DeviceTypeVerDomain deviceTypeVerDomain = new DeviceTypeVerDomain(typeAndVerId,domainId); + deviceTypeVerDomainMapper.insert(deviceTypeVerDomain); + }); + return row; + } } diff --git a/src/main/java/com/bellmann/manger/impl/DomainManagerImpl.java b/src/main/java/com/bellmann/manger/impl/DomainManagerImpl.java new file mode 100644 index 0000000..9555a3d --- /dev/null +++ b/src/main/java/com/bellmann/manger/impl/DomainManagerImpl.java @@ -0,0 +1,36 @@ +package com.bellmann.manger.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.util.PathUtils; +import com.bellmann.manger.DomainManager; +import com.bellmann.mapper.DomainMapper; +import com.bellmann.model.entity.Domain; +import com.bellmann.model.vo.DomainOption; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Component +@RequiredArgsConstructor +public class DomainManagerImpl implements DomainManager { + + private final DomainMapper domainMapper; + + @Override + public Page pageJoinTypeVerByTypeAndVerId(Long typeAndVerId, BasePageQuery pageQuery) { + int pageSize = pageQuery.getPageSize(); + int pageNum = pageQuery.getPageNum(); + Page page = new Page<>(pageNum, pageSize); + List list = domainMapper.pageJoinTypeVerByTypeAndVerId(page, typeAndVerId); + Page stringPage = new Page<>(); + stringPage.setTotal(page.getTotal()); + stringPage.setRecords(PathUtils.buildPath(list)); + return stringPage; + } + +} diff --git a/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java b/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java index 7165f1b..9a2cc1a 100644 --- a/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java +++ b/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java @@ -8,10 +8,12 @@ import com.bellmann.manger.FileRecordManager; import com.bellmann.mapper.FileRecordMapper; import com.bellmann.model.bo.DevTypeVerFileBO; import com.bellmann.model.entity.FileRecord; +import com.bellmann.model.vo.FileRecordVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.Date; +import java.util.List; @Component @RequiredArgsConstructor @@ -45,4 +47,14 @@ public class FileRecordManagerImpl implements FileRecordManager { .eq(FileRecord::getFileId,fileId) ); } + + @Override + public void addVendorProfile(FileRecord fileRecord) { + fileRecordMapper.insert(fileRecord); + } + + @Override + public List listVendorProfile(Long typeAndVerId) { + return fileRecordMapper.listVendorProfile(typeAndVerId); + } } diff --git a/src/main/java/com/bellmann/mapper/DomainMapper.java b/src/main/java/com/bellmann/mapper/DomainMapper.java index 9ece4cb..1d0165d 100644 --- a/src/main/java/com/bellmann/mapper/DomainMapper.java +++ b/src/main/java/com/bellmann/mapper/DomainMapper.java @@ -1,9 +1,15 @@ package com.bellmann.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.model.entity.Domain; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface DomainMapper extends BaseMapper { + List pageJoinTypeVerByTypeAndVerId(Page page, @Param("typeAndVerId") Long typeAndVerId); + } diff --git a/src/main/java/com/bellmann/mapper/FileRecordMapper.java b/src/main/java/com/bellmann/mapper/FileRecordMapper.java index d73a895..b0a6fba 100644 --- a/src/main/java/com/bellmann/mapper/FileRecordMapper.java +++ b/src/main/java/com/bellmann/mapper/FileRecordMapper.java @@ -2,7 +2,11 @@ package com.bellmann.mapper; import com.bellmann.model.entity.FileRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bellmann.model.vo.FileRecordVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface FileRecordMapper extends BaseMapper { + List listVendorProfile(@Param("typeAndVerId") Long typeAndVerId); } diff --git a/src/main/java/com/bellmann/model/entity/DeviceTypeVerDomain.java b/src/main/java/com/bellmann/model/entity/DeviceTypeVerDomain.java index 6c150e8..b6263fc 100644 --- a/src/main/java/com/bellmann/model/entity/DeviceTypeVerDomain.java +++ b/src/main/java/com/bellmann/model/entity/DeviceTypeVerDomain.java @@ -1,12 +1,16 @@ package com.bellmann.model.entity; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; @Data @TableName("itms_devtypever_sysdomain_map") +@AllArgsConstructor +@NoArgsConstructor public class DeviceTypeVerDomain implements Serializable { private static final long serialVersionUID = 4644400487976157619L; diff --git a/src/main/java/com/bellmann/model/entity/Domain.java b/src/main/java/com/bellmann/model/entity/Domain.java index a47cb5d..e7737da 100644 --- a/src/main/java/com/bellmann/model/entity/Domain.java +++ b/src/main/java/com/bellmann/model/entity/Domain.java @@ -3,12 +3,16 @@ package com.bellmann.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; @Data @TableName("domain") +@AllArgsConstructor +@NoArgsConstructor public class Domain implements Serializable { private static final long serialVersionUID = 6172303580509593508L; diff --git a/src/main/java/com/bellmann/model/form/VendorProfileForm.java b/src/main/java/com/bellmann/model/form/VendorProfileForm.java new file mode 100644 index 0000000..18cf932 --- /dev/null +++ b/src/main/java/com/bellmann/model/form/VendorProfileForm.java @@ -0,0 +1,20 @@ +package com.bellmann.model.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +@Data +@Schema(description = "厂商配置文件表单") +public class VendorProfileForm { + + private Long typeAndVerId; + + private String fileName; + + private String fileDesc; + + private String fileType; + + private String fileUrl; +} diff --git a/src/main/java/com/bellmann/model/vo/DomainOption.java b/src/main/java/com/bellmann/model/vo/DomainOption.java new file mode 100644 index 0000000..1836fce --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DomainOption.java @@ -0,0 +1,32 @@ +package com.bellmann.model.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 下拉选项对象 + * + * + * @since 2022/1/22 + */ +@Schema(description ="穿梭框选择对象") +@Data +@NoArgsConstructor +public class DomainOption { + + public DomainOption(T key, String label) { + this.key = key; + this.label = label; + } + @Schema(description="穿梭框值") + private T key; + + @Schema(description="穿梭框标签") + private String label; + + +} \ No newline at end of file diff --git a/src/main/java/com/bellmann/service/DeviceTypeVerService.java b/src/main/java/com/bellmann/service/DeviceTypeVerService.java index 8d25b05..8c6bdef 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeVerService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeVerService.java @@ -1,10 +1,16 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; import com.bellmann.common.result.Result; import com.bellmann.model.form.DeviceTypeVerForm; +import com.bellmann.model.form.VendorProfileForm; import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceTypeToVerVO; +import com.bellmann.model.vo.DomainOption; +import com.bellmann.model.vo.FileRecordVO; + +import java.util.List; public interface DeviceTypeVerService { Page deviceTypeToVerPage(DeviceTypeToVerQuery query); @@ -23,4 +29,15 @@ public interface DeviceTypeVerService { int editDevTypeVerForm(DeviceTypeVerForm deviceTypeVerForm); + Result addVendorProfile(VendorProfileForm form); + + List listVendorProfile(Long typeAndVerId); + + int deleteVendorProfile(Long fileId, Long typeAndVerId); + + Page pageSysDomain(Long typeAndVerId, BasePageQuery pageQuery); + + List listVerDomain(Long typeAndVerId); + + int editVerDomain(Long typeAndVerId, List list); } diff --git a/src/main/java/com/bellmann/service/DomainService.java b/src/main/java/com/bellmann/service/DomainService.java index 649f83d..0099f03 100644 --- a/src/main/java/com/bellmann/service/DomainService.java +++ b/src/main/java/com/bellmann/service/DomainService.java @@ -4,6 +4,7 @@ import com.bellmann.common.model.Option; import com.bellmann.common.result.Result; import com.bellmann.model.form.DomainForm; import com.bellmann.model.query.DomainQuery; +import com.bellmann.model.vo.DomainOption; import com.bellmann.model.vo.DomainVO; import java.util.List; @@ -45,4 +46,11 @@ public interface DomainService { Result editDomain(DomainForm domainForm); + + /** + * 获取domain穿梭框数据 + * @return + */ + Result>> transferOption(); + } diff --git a/src/main/java/com/bellmann/service/FileOptionService.java b/src/main/java/com/bellmann/service/FileOptionService.java index 4723512..332d3f0 100644 --- a/src/main/java/com/bellmann/service/FileOptionService.java +++ b/src/main/java/com/bellmann/service/FileOptionService.java @@ -7,10 +7,12 @@ import javax.servlet.http.HttpServletResponse; public interface FileOptionService { /** * 文件上传 + * * @param file + * @param fileType * @return */ - String upload(MultipartFile file, HttpServletResponse response); + String upload(MultipartFile file, HttpServletResponse response, String fileType); /** * 文件下载 @@ -22,4 +24,7 @@ public interface FileOptionService { void copyFile(String sourceFileUrl, String fileName, String targetFileUrl1); boolean removeFile(String fileUrl, String fileName); + + String upload(MultipartFile file, String fileType,String fileName); + } diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java index fb9ee23..092da33 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java @@ -3,6 +3,7 @@ package com.bellmann.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; import com.bellmann.common.constant.StringUtilsConstants; import com.bellmann.common.enums.DevTypeVerStatusEnum; import com.bellmann.common.enums.ProvisionFlagEnum; @@ -11,6 +12,7 @@ import com.bellmann.common.result.Result; import com.bellmann.common.result.ResultCode; import com.bellmann.converter.DeviceTypeVerConverter; import com.bellmann.converter.DeviceTypeVerDetailConverter; +import com.bellmann.converter.FileRecordConverter; import com.bellmann.manger.*; import com.bellmann.mapper.DeviceTypeVerMapper; import com.bellmann.model.bo.DevTypeVerFileBO; @@ -20,8 +22,11 @@ import com.bellmann.model.entity.DeviceTypeVer; import com.bellmann.model.entity.DeviceTypeVerDetail; import com.bellmann.model.entity.FileRecord; import com.bellmann.model.form.DeviceTypeVerForm; +import com.bellmann.model.form.VendorProfileForm; import com.bellmann.model.query.DeviceTypeToVerQuery; import com.bellmann.model.vo.DeviceTypeToVerVO; +import com.bellmann.model.vo.DomainOption; +import com.bellmann.model.vo.FileRecordVO; import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.DeviceTypeVerService; import com.bellmann.service.FileOptionService; @@ -32,6 +37,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -57,6 +63,10 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { private final FileOptionService fileOptionService; private final DeviceTypeVerDetailConverter deviceTypeVerDetailConverter; + + private final FileRecordConverter fileRecordConverter; + + private final DomainManager domainManager; @Override public Page deviceTypeToVerPage(DeviceTypeToVerQuery query) { int pageNum = query.getPageNum(); @@ -250,4 +260,58 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { int row2 = deviceTypeVerDetailManager.updateByVerForm(deviceTypeVerDetail); return row1+row2; } + + @Override + public Result addVendorProfile(VendorProfileForm form) { + DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(form.getTypeAndVerId()); + if (deviceTypeVer==null){ + return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); + } + FileRecord fileRecord = new FileRecord(); + fileRecord.setFileName(form.getFileName()); + fileRecord.setFileType(form.getFileType()); + fileRecord.setFileServId(1L); + fileRecord.setFileUrl(form.getFileUrl()); + fileRecord.setFileDesc(form.getFileDesc()); + fileRecord.setFileCreateTime(new Date()); + fileRecord.setUserName(SecurityUtils.getUsername()); + fileRecordManager.addVendorProfile(fileRecord); + fileDevTypeMapManager.insertFileDevTypeVerMap(fileRecord.getFileId(), form.getTypeAndVerId()); + return Result.success(); + } + + @Override + public List listVendorProfile(Long typeAndVerId) { + List fileRecords = fileRecordManager.listVendorProfile(typeAndVerId); + return fileRecordConverter.entityList2VOList(fileRecords); + } + + @Override + @Transactional + public int deleteVendorProfile(Long fileId, Long typeAndVerId) { + FileRecord fileRecord = fileRecordManager.findFileRecordById(fileId); + boolean removed = fileOptionService.removeFile(fileRecord.getFileUrl(), fileRecord.getFileName()); + if (!removed){ + throw new BusinessException(ResultCode.FILE_DELETE_FAIL); + } + int i = fileRecordManager.deleteByFileId(fileId); + int i1 = fileDevTypeMapManager.deleteByTypeAndVerId(typeAndVerId, fileId); + return i+i1; + } + + @Override + public Page pageSysDomain(Long typeAndVerId, BasePageQuery pageQuery) { + return domainManager.pageJoinTypeVerByTypeAndVerId(typeAndVerId,pageQuery); + } + + @Override + public List listVerDomain(Long typeAndVerId) { + return deviceTypeVerDomainManager.listVerDomain(typeAndVerId); + } + + @Override + public int editVerDomain(Long typeAndVerId, List list) { + return deviceTypeVerDomainManager.editVerDomain(typeAndVerId,list); + + } } diff --git a/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java b/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java index 29a8fb0..2862084 100644 --- a/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java @@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bellmann.common.enums.StatusEnum; import com.bellmann.common.model.Option; import com.bellmann.common.result.Result; +import com.bellmann.common.util.PathUtils; import com.bellmann.converter.DomainConverter; import com.bellmann.mapper.DomainMapper; import com.bellmann.model.entity.Domain; import com.bellmann.model.entity.SysDept; import com.bellmann.model.form.DomainForm; import com.bellmann.model.query.DomainQuery; +import com.bellmann.model.vo.DomainOption; import com.bellmann.model.vo.DomainVO; import com.bellmann.service.DomainService; import lombok.RequiredArgsConstructor; @@ -145,4 +147,18 @@ public class DomainServiceImpl implements DomainService { int row = domainMapper.update(domain, new LambdaQueryWrapper().eq(Domain::getId, domain.getId())); return row>0?Result.success():Result.failed(); } + + @Override + public Result>> transferOption() { + List list = domainMapper.selectList(new LambdaQueryWrapper<>()); + List newDomains = PathUtils.objBuildPath(list); + List> collect = newDomains.stream().map(domain -> { + DomainOption longDomainOption = new DomainOption<>(); + longDomainOption.setKey(domain.getGroupId()); + longDomainOption.setLabel(domain.getGroupName()); + return longDomainOption; + }).collect(Collectors.toList()); + return Result.success(collect); + + } } diff --git a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java index 9ba0798..98f423a 100644 --- a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java @@ -1,5 +1,7 @@ package com.bellmann.service.impl; +import com.bellmann.common.base.IBaseEnum; +import com.bellmann.common.enums.FileUrlEnum; import com.bellmann.common.exception.BusinessException; import com.bellmann.common.result.ResultCode; import com.bellmann.common.util.FTPUtils; @@ -13,13 +15,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -33,7 +31,7 @@ public class FileOptionServiceImpl implements FileOptionService { private final FileRecordService fileRecordService; @Override - public String upload(MultipartFile file, HttpServletResponse response) { + public String upload(MultipartFile file, HttpServletResponse response, String fileType) { //获取FTP用户名、密码、端口... FileServer fileServer = fileServerService.getFileServer(); if (fileServer == null) { @@ -41,12 +39,9 @@ public class FileOptionServiceImpl implements FileOptionService { } //文件原始名称 xxx.后缀名 String originalFilename = file.getOriginalFilename(); - LocalDateTime now = LocalDateTime.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); //文件存放地址 - String folder = now.format(formatter); //文件在FTP服务器所在文件夹目录 - String dirPath = fileServer.getFtpRootDir() + folder; + String dirPath = fileServer.getFtpRootDir() + String.format(IBaseEnum.getLabelByValue(fileType,FileUrlEnum.class),fileType); try(InputStream in = file.getInputStream()) { boolean upload = FTPUtils.upload(fileServer, originalFilename, dirPath, in); if (!upload){ @@ -96,4 +91,35 @@ public class FileOptionServiceImpl implements FileOptionService { return FTPUtils.removeFile(fileServer,fileUrl,fileName); } + + public String upload(MultipartFile file, String fileType,String fileName) { + //获取FTP用户名、密码、端口... + FileServer fileServer = fileServerService.getFileServer(); + if (fileServer == null) { + throw new BusinessException(ResultCode.FILE_SERVER_IS_NULL); + } + //文件原始名称 xxx.后缀名 + String originalFilename = file.getOriginalFilename(); + assert originalFilename != null; + int dotIndex = originalFilename.lastIndexOf('.'); + if (dotIndex == -1) { + throw new BusinessException(ResultCode.FILE_NOT_EXTENSION); + } + String extension = originalFilename.substring(dotIndex + 1); + String newFileName = String.format("%s.%s",fileName,extension); + //文件存放地址 + //文件在FTP服务器所在文件夹目录 + String dirPath = fileServer.getFtpRootDir() + String.format(IBaseEnum.getLabelByValue(fileType,FileUrlEnum.class),fileType); + try(InputStream in = file.getInputStream()) { + boolean upload = FTPUtils.upload(fileServer, newFileName, dirPath, in); + if (!upload){ + throw new BusinessException(ResultCode.USER_UPLOAD_FILE_ERROR); + } + log.info("文件上传成功"); + return dirPath; + } catch (IOException e) { + throw new RuntimeException(e); + } + + } } diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index c16c1d7..246c9d0 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -20,6 +20,7 @@ LEFT JOIN itms_file ON itms_file.file_id = ifdtvm.file_id WHERE idtv.dev_type_id = #{devTypeId} + AND itms_file.file_type = '0' + SELECT + domain.* + + FROM + DOMAIN INNER JOIN itms_devtypever_sysdomain_map ON DOMAIN.group_id = itms_devtypever_sysdomain_map.sys_domain_id + WHERE + itms_devtypever_sysdomain_map.type_and_ver_id= #{typeAndVerId} + + diff --git a/src/main/resources/mapper/FileRecordMapper.xml b/src/main/resources/mapper/FileRecordMapper.xml index dafd28c..36776d3 100644 --- a/src/main/resources/mapper/FileRecordMapper.xml +++ b/src/main/resources/mapper/FileRecordMapper.xml @@ -19,4 +19,16 @@ file_id, user_name, file_type, file_name, file_create_time, file_desc, file_serv_id, file_url + diff --git a/src/test/java/com/bellmann/BellmannBootApplicationTests.java b/src/test/java/com/bellmann/BellmannBootApplicationTests.java index 0d00b22..3b7aa31 100644 --- a/src/test/java/com/bellmann/BellmannBootApplicationTests.java +++ b/src/test/java/com/bellmann/BellmannBootApplicationTests.java @@ -8,6 +8,7 @@ class BellmannBootApplicationTests { @Test void contextLoads() { + System.out.println(123); } }