master
李小林 10 months ago
parent 10e5c05192
commit 709b6c2a7b
  1. 4
      src/main/java/com/bellmann/common/enums/FileUrlEnum.java
  2. 4
      src/main/java/com/bellmann/common/result/ResultCode.java
  3. 3
      src/main/java/com/bellmann/common/util/FTPUtils.java
  4. 66
      src/main/java/com/bellmann/common/util/PathUtils.java
  5. 45
      src/main/java/com/bellmann/controller/DeviceTypeVerController.java
  6. 6
      src/main/java/com/bellmann/controller/DomainController.java
  7. 8
      src/main/java/com/bellmann/controller/FileOptionController.java
  8. 3
      src/main/java/com/bellmann/converter/FileRecordConverter.java
  9. 9
      src/main/java/com/bellmann/manger/DeviceTypeVerDomainManager.java
  10. 12
      src/main/java/com/bellmann/manger/DomainManager.java
  11. 7
      src/main/java/com/bellmann/manger/FileRecordManager.java
  12. 27
      src/main/java/com/bellmann/manger/impl/DeviceTypeVerDomainManageImpl.java
  13. 36
      src/main/java/com/bellmann/manger/impl/DomainManagerImpl.java
  14. 12
      src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java
  15. 6
      src/main/java/com/bellmann/mapper/DomainMapper.java
  16. 5
      src/main/java/com/bellmann/mapper/FileRecordMapper.java
  17. 4
      src/main/java/com/bellmann/model/entity/DeviceTypeVerDomain.java
  18. 4
      src/main/java/com/bellmann/model/entity/Domain.java
  19. 20
      src/main/java/com/bellmann/model/form/VendorProfileForm.java
  20. 32
      src/main/java/com/bellmann/model/vo/DomainOption.java
  21. 17
      src/main/java/com/bellmann/service/DeviceTypeVerService.java
  22. 8
      src/main/java/com/bellmann/service/DomainService.java
  23. 7
      src/main/java/com/bellmann/service/FileOptionService.java
  24. 64
      src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java
  25. 16
      src/main/java/com/bellmann/service/impl/DomainServiceImpl.java
  26. 44
      src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java
  27. 1
      src/main/resources/mapper/DeviceTypeVerMapper.xml
  28. 16
      src/main/resources/mapper/DomainMapper.xml
  29. 12
      src/main/resources/mapper/FileRecordMapper.xml
  30. 1
      src/test/java/com/bellmann/BellmannBootApplicationTests.java

@ -4,8 +4,8 @@ import com.bellmann.common.base.IBaseEnum;
import lombok.Getter;
public enum FileUrlEnum implements IBaseEnum<String> {
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;

@ -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() {

@ -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();
}

@ -0,0 +1,66 @@
package com.bellmann.common.util;
import com.bellmann.model.entity.Domain;
import java.util.*;
public class PathUtils {
public static List<String> buildPath(List<Domain> nodes) {
Map<Long, Domain> nodeMap = new HashMap<>();
List<String> 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<Domain> objBuildPath(List<Domain> nodes) {
Map<Long, Domain> nodeMap = new HashMap<>();
List<Domain> 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;
}
}

@ -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<DeviceTypeToVerVO> 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<String> addVendorProfile(@RequestBody VendorProfileForm form){
return deviceTypeVerService.addVendorProfile(form);
}
@Operation(summary = "查看厂商配置文件信息")
@GetMapping("/list-vendor-profile/{typeAndVerId}")
public Result<List<FileRecordVO>> listVendorProfile(@PathVariable Long typeAndVerId){
List<FileRecordVO> list = deviceTypeVerService.listVendorProfile(typeAndVerId);
return Result.success(list);
}
@Operation(summary = "删除厂商配置文件信息")
@DeleteMapping("/delete-vendor-profile/{fileId}/{typeAndVerId}")
public Result<Integer> 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<String> pageSysDomain(@PathVariable Long typeAndVerId, BasePageQuery pageQuery){
Page<String> page = deviceTypeVerService.pageSysDomain(typeAndVerId,pageQuery);
return PageResult.success(page);
}
@Operation(summary = "获取软件版本系统管理域数据")
@GetMapping("/list-ver-domain/{typeAndVerId}")
public Result<List<Long>> listVerDomain(@PathVariable Long typeAndVerId){
List<Long> list = deviceTypeVerService.listVerDomain(typeAndVerId);
return Result.success(list);
}
@Operation(summary = "更新软件版本系统管理域数据")
@PostMapping("/edit-ver-domain/{typeAndVerId}")
public Result<Integer> editVerDomain(@PathVariable Long typeAndVerId,@RequestBody List<Long> list){
int rows = deviceTypeVerService.editVerDomain(typeAndVerId,list);
return Result.success(rows);
}
}

@ -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<DomainForm> getDomainByGroupId(@PathVariable Long groupId) {
return domainService.getDomainByGroupId(groupId);
}
@Operation(summary = "获取穿梭框数据")
@GetMapping("/transfer-option")
public Result<List<DomainOption<Long>>> transferOption(){
return domainService.transferOption();
}
}

@ -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<String> upload(@RequestPart("file") MultipartFile file, HttpServletResponse response){
String filePath = fileOptionService.upload(file,response);
public Result<String> upload(@RequestPart("file") MultipartFile file,
@PathVariable String fileName,
@PathVariable String fileType){
String filePath = fileOptionService.upload(file,fileType,fileName);
return Result.success(filePath);
}

@ -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<FileRecordVO> entityPage2VOPage(Page<FileRecord> pageData);
List<FileRecordVO> entityList2VOList(List<FileRecord> fileRecords);
}

@ -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<Long> listVerDomain(Long typeAndVerId);
int editVerDomain(Long typeAndVerId, List<Long> list);
}

@ -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<String> pageJoinTypeVerByTypeAndVerId(Long typeAndVerId, BasePageQuery pageQuery);
}

@ -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<FileRecord> listVendorProfile(Long typeAndVerId);
}

@ -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<Long> listVerDomain(Long typeAndVerId) {
List<DeviceTypeVerDomain> list = deviceTypeVerDomainMapper.selectList(new LambdaQueryWrapper<DeviceTypeVerDomain>()
.eq(DeviceTypeVerDomain::getTypeAndVerId, typeAndVerId)
);
return list.stream().map(DeviceTypeVerDomain::getSysDomainId).collect(Collectors.toList());
}
@Override
@Transactional
public int editVerDomain(Long typeAndVerId, List<Long> list) {
int row = deviceTypeVerDomainMapper.delete(new LambdaQueryWrapper<DeviceTypeVerDomain>()
.eq(DeviceTypeVerDomain::getTypeAndVerId,typeAndVerId)
);
list.forEach(domainId->{
DeviceTypeVerDomain deviceTypeVerDomain = new DeviceTypeVerDomain(typeAndVerId,domainId);
deviceTypeVerDomainMapper.insert(deviceTypeVerDomain);
});
return row;
}
}

@ -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<String> pageJoinTypeVerByTypeAndVerId(Long typeAndVerId, BasePageQuery pageQuery) {
int pageSize = pageQuery.getPageSize();
int pageNum = pageQuery.getPageNum();
Page<Domain> page = new Page<>(pageNum, pageSize);
List<Domain> list = domainMapper.pageJoinTypeVerByTypeAndVerId(page, typeAndVerId);
Page<String> stringPage = new Page<>();
stringPage.setTotal(page.getTotal());
stringPage.setRecords(PathUtils.buildPath(list));
return stringPage;
}
}

@ -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<FileRecord> listVendorProfile(Long typeAndVerId) {
return fileRecordMapper.listVendorProfile(typeAndVerId);
}
}

@ -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<Domain> {
List<Domain> pageJoinTypeVerByTypeAndVerId(Page<Domain> page, @Param("typeAndVerId") Long typeAndVerId);
}

@ -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;
/**
* <p>
@ -15,4 +19,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FileRecordMapper extends BaseMapper<FileRecord> {
List<FileRecord> listVendorProfile(@Param("typeAndVerId") Long typeAndVerId);
}

@ -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;

@ -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;

@ -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;
}

@ -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<T> {
public DomainOption(T key, String label) {
this.key = key;
this.label = label;
}
@Schema(description="穿梭框值")
private T key;
@Schema(description="穿梭框标签")
private String label;
}

@ -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<DeviceTypeToVerVO> deviceTypeToVerPage(DeviceTypeToVerQuery query);
@ -23,4 +29,15 @@ public interface DeviceTypeVerService {
int editDevTypeVerForm(DeviceTypeVerForm deviceTypeVerForm);
Result<String> addVendorProfile(VendorProfileForm form);
List<FileRecordVO> listVendorProfile(Long typeAndVerId);
int deleteVendorProfile(Long fileId, Long typeAndVerId);
Page<String> pageSysDomain(Long typeAndVerId, BasePageQuery pageQuery);
List<Long> listVerDomain(Long typeAndVerId);
int editVerDomain(Long typeAndVerId, List<Long> list);
}

@ -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<String> editDomain(DomainForm domainForm);
/**
* 获取domain穿梭框数据
* @return
*/
Result<List<DomainOption<Long>>> transferOption();
}

@ -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);
}

@ -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<DeviceTypeToVerVO> 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<String> 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<FileRecordVO> listVendorProfile(Long typeAndVerId) {
List<FileRecord> 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<String> pageSysDomain(Long typeAndVerId, BasePageQuery pageQuery) {
return domainManager.pageJoinTypeVerByTypeAndVerId(typeAndVerId,pageQuery);
}
@Override
public List<Long> listVerDomain(Long typeAndVerId) {
return deviceTypeVerDomainManager.listVerDomain(typeAndVerId);
}
@Override
public int editVerDomain(Long typeAndVerId, List<Long> list) {
return deviceTypeVerDomainManager.editVerDomain(typeAndVerId,list);
}
}

@ -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<Domain>().eq(Domain::getId, domain.getId()));
return row>0?Result.success():Result.failed();
}
@Override
public Result<List<DomainOption<Long>>> transferOption() {
List<Domain> list = domainMapper.selectList(new LambdaQueryWrapper<>());
List<Domain> newDomains = PathUtils.objBuildPath(list);
List<DomainOption<Long>> collect = newDomains.stream().map(domain -> {
DomainOption<Long> longDomainOption = new DomainOption<>();
longDomainOption.setKey(domain.getGroupId());
longDomainOption.setLabel(domain.getGroupName());
return longDomainOption;
}).collect(Collectors.toList());
return Result.success(collect);
}
}

@ -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);
}
}
}

@ -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>
<select id="findByTypeAndDevID" resultType="com.bellmann.model.entity.DeviceTypeVer">

@ -0,0 +1,16 @@
<?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.bellmann.mapper.DomainMapper">
<select id="pageJoinTypeVerByTypeAndVerId" resultType="com.bellmann.model.entity.Domain">
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}
</select>
</mapper>

@ -19,4 +19,16 @@
file_id, user_name, file_type, file_name, file_create_time, file_desc, file_serv_id, file_url
</sql>
<select id="listVendorProfile" resultType="com.bellmann.model.entity.FileRecord">
SELECT
itms_file.*
FROM
itms_file
INNER JOIN itms_file_dev_type_ver_map ON itms_file.file_id = itms_file_dev_type_ver_map.file_id
WHERE
itms_file_dev_type_ver_map.type_and_ver_id = #{typeAndVerId}
and itms_file.file_type = '1'
</select>
</mapper>

@ -8,6 +8,7 @@ class BellmannBootApplicationTests {
@Test
void contextLoads() {
System.out.println(123);
}
}

Loading…
Cancel
Save