diff --git a/src/main/java/com/bellmann/common/enums/DevTypeVerStatusEnum.java b/src/main/java/com/bellmann/common/enums/DevTypeVerStatusEnum.java index 62b449a..4ba197f 100644 --- a/src/main/java/com/bellmann/common/enums/DevTypeVerStatusEnum.java +++ b/src/main/java/com/bellmann/common/enums/DevTypeVerStatusEnum.java @@ -7,8 +7,10 @@ import lombok.Getter; @Schema(enumAsRef = true) public enum DevTypeVerStatusEnum implements IBaseEnum { UNAUDITED("0","未审核"), - AUDITED("1","已审核"); + AUDITED("1","已审核"), + EMPTY("-999",""); + ; @Getter private String value; diff --git a/src/main/java/com/bellmann/common/enums/FileUrlEnum.java b/src/main/java/com/bellmann/common/enums/FileUrlEnum.java index 5284677..a929782 100644 --- a/src/main/java/com/bellmann/common/enums/FileUrlEnum.java +++ b/src/main/java/com/bellmann/common/enums/FileUrlEnum.java @@ -6,6 +6,8 @@ import lombok.Getter; public enum FileUrlEnum implements IBaseEnum { SOFT_VER_FILE_URL("0","devtypever/firmware/%s/"), CORP_CONF_FILE_URL("1","devtypever/conf/%s/"), + + TR069_FILE_URL("3","tr069/%s"), ; @Getter private String value; diff --git a/src/main/java/com/bellmann/common/model/Tr069Xml.java b/src/main/java/com/bellmann/common/model/Tr069Xml.java new file mode 100644 index 0000000..4813472 --- /dev/null +++ b/src/main/java/com/bellmann/common/model/Tr069Xml.java @@ -0,0 +1,19 @@ +package com.bellmann.common.model; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class Tr069Xml { + private String tagName; + private String read; + private String write; + private String type; + private List children = new ArrayList<>(); + public void addChild(Tr069Xml tr069Xml) { + this.children.add(tr069Xml); + } + +} diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 4c7abe9..fbb45b5 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -93,8 +93,10 @@ public enum ResultCode implements IResultCode, Serializable { DEVICE_TYPE_VER_EXIST_OR_BINDING("F0004","存在该设备类型软件版本的设备或者绑定!"), FILE_NOT_OF_TYPE_VER("F0005","文件不属于该设备类型软件版本"), DATA_NOT_FOUND("F0006", "查不到数据"), - ; + IDS_IS_NULL("F0007", "ids为空"), + DEVICE_TYPE_VER("F008","存在该设备类型的软件版本或设备"), + ; @Override public String getCode() { return code; diff --git a/src/main/java/com/bellmann/common/util/FTPUtils.java b/src/main/java/com/bellmann/common/util/FTPUtils.java index ad43acd..2f92adc 100644 --- a/src/main/java/com/bellmann/common/util/FTPUtils.java +++ b/src/main/java/com/bellmann/common/util/FTPUtils.java @@ -182,12 +182,13 @@ public class FTPUtils { String path = changeEncoding(dirPath); changeAndMakeWorkingDir(path); String[] fileNames = ftpClient.listNames(); + log.info(Arrays.toString(fileNames)); if (fileNames == null || fileNames.length == 0) { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } - if(!Arrays.stream(fileNames).allMatch(element -> element.equals(filename))){ - throw new BusinessException(ResultCode.FILE_NOT_EXIST); - }; +// if(!Arrays.stream(fileNames).allMatch(element -> element.equals(filename))){ +// throw new BusinessException(ResultCode.FILE_NOT_EXIST); +// }; for (String fileName : fileNames) { String ftpName = new String(fileName.getBytes(SERVER_CHARSET), LOCAL_CHARSET); if (StringUtils.equals(ftpName,filename)) { @@ -202,6 +203,32 @@ public class FTPUtils { } } } + public static InputStream download (FileServer oaFtp, String filename, String dirPath) { + // 登录 + login(oaFtp); + if (ftpClient != null) { + try { + String path = changeEncoding(dirPath); + changeAndMakeWorkingDir(path); + String[] fileNames = ftpClient.listNames(); + log.info(Arrays.toString(fileNames)); + if (fileNames == null || fileNames.length == 0) { + throw new BusinessException(ResultCode.FILE_NOT_EXIST); + } + for (String fileName : fileNames) { + String ftpName = new String(fileName.getBytes(SERVER_CHARSET), LOCAL_CHARSET); + if (StringUtils.equals(ftpName,filename)) { + return ftpClient.retrieveFileStream(fileName); + } + } + } catch (IOException e) { + log.error("",e); + } finally { + closeConnect(); + } + } + return null; + } private static void print(HttpServletResponse response,InputStream in,String fileName){ byte[] buffer = new byte[1024*10]; @@ -255,9 +282,9 @@ public class FTPUtils { if (fileNames == null || fileNames.length == 0) { throw new BusinessException(ResultCode.FILE_NOT_EXIST); } - if(!Arrays.stream(fileNames).allMatch(element -> element.equals(sourceRemoteFileName))){ - throw new BusinessException(ResultCode.FILE_NOT_EXIST); - }; +// if(!Arrays.stream(fileNames).allMatch(element -> element.equals(sourceRemoteFileName))){ +// throw new BusinessException(ResultCode.FILE_NOT_EXIST); +// }; for (String fileName : fileNames) { String ftpName = new String(fileName.getBytes(SERVER_CHARSET), LOCAL_CHARSET); if (StringUtils.equals(ftpName,sourceRemoteFileName)) { diff --git a/src/main/java/com/bellmann/common/util/Tr069XmlUtils.java b/src/main/java/com/bellmann/common/util/Tr069XmlUtils.java new file mode 100644 index 0000000..de38202 --- /dev/null +++ b/src/main/java/com/bellmann/common/util/Tr069XmlUtils.java @@ -0,0 +1,54 @@ +package com.bellmann.common.util; + +import com.bellmann.common.model.Tr069Xml; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; + +public class Tr069XmlUtils { + + public static Tr069Xml parseXML(InputStream xmlFile) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(xmlFile); + + Element rootElement = doc.getDocumentElement(); + return parseElement(rootElement); + } catch (Exception e) { + e.printStackTrace(); + return null; + }finally { + if (xmlFile!=null){ + try { + xmlFile.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + } + + private static Tr069Xml parseElement(Element element) { + Tr069Xml tr069Xml = new Tr069Xml(); + tr069Xml.setTagName(element.getTagName()); + tr069Xml.setRead(element.getAttribute("READ")); + tr069Xml.setWrite(element.getAttribute("WRITE")); + tr069Xml.setType(element.getAttribute("TYPE")); + + NodeList children = element.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + if (children.item(i) instanceof Element) { + Element childElement = (Element) children.item(i); + tr069Xml.addChild(parseElement(childElement)); + } + } + return tr069Xml; + } +} diff --git a/src/main/java/com/bellmann/config/ThreadPoolConfig.java b/src/main/java/com/bellmann/config/ThreadPoolConfig.java new file mode 100644 index 0000000..07276e9 --- /dev/null +++ b/src/main/java/com/bellmann/config/ThreadPoolConfig.java @@ -0,0 +1,38 @@ +package com.bellmann.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ThreadPoolExecutor; + +@Configuration +@EnableAsync +public class ThreadPoolConfig { + + @Bean("threadPoolTaskExecutor") + public ThreadPoolTaskExecutor threadPoolTaskExecutor(){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + + //设置核心线程数,线程池维护线程的最小数量,即使没有任务需要执行,也会一直存活 + executor.setCorePoolSize(8); + //如果设置allowCoreThreadTimeOut = true(默认是false)时,核心线程会超时关闭。 + // executor.setAllowCoreThreadTimeOut(true); + //设置阻塞队列,当核心线程数达到最大时,新任务会放在该队列中排队等待执行 + executor.setQueueCapacity(2000); + //设置最大线程池数量,当线程数>corePoolSize(核心线程数),且阻塞队列满的时候。线程池会创建新线程池来处理业务 + //阻塞队列已满时且当前线程数=maxPoolSize,线程池会拒绝处理任务二抛出异常 + executor.setMaxPoolSize(64); + //当线程空闲时间达到keepAliveSeconds时,线程会退出,直到线程数量=corePoolSize; + //允许线程空闲时间30s + executor.setKeepAliveSeconds(30); + //Spring提供的ThreadPoolTaskExecutor提供setThreadNamePrefix()方法 + //JDK提供的ThreadPoolExecutor不提供该方法 + executor.setThreadNamePrefix("bellmann"); + //拒绝策略,当pool达到最大时,如何处理新任务 + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); + executor.initialize(); + return executor; + } +} diff --git a/src/main/java/com/bellmann/controller/DeviceTypeController.java b/src/main/java/com/bellmann/controller/DeviceTypeController.java index 31e1b0d..1d28b9b 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeController.java @@ -1,6 +1,7 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.model.Option; import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; import com.bellmann.model.query.DeviceTypeQuery; @@ -12,6 +13,9 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + @Tag(name = "11.设备类型接口") @RestController @RequiredArgsConstructor @@ -34,4 +38,37 @@ public class DeviceTypeController { return Result.success(deviceTypeVO); } + @GetMapping("vendor-name-option") + @Operation(summary = "查找设备供应商选择框") + public Result>> vendorNameOption(){ + List> list = deviceTypeService.vendorNameOption(); + return Result.success(list); + } + @GetMapping("vendor-oui-option/") + @Operation(summary = "查找设备OUI选择框") + public Result>> vendorOuiOption(@RequestParam String vendorName){ + List> list = deviceTypeService.vendorOuiOption(vendorName); + return Result.success(list); + } + + @GetMapping("type-name-option/") + @Operation(summary = "查找设备型号选择框") + public Result>> typeNameOption(@RequestParam String vendorOui){ + List> list = deviceTypeService.typeNameOption(vendorOui); + return Result.success(list); + } + + @GetMapping("hard-ver-option/") + @Operation(summary = "查找设备硬件版本选择框") + public Result>> hardVerOption(@RequestParam String typeName){ + List> list = deviceTypeService.hardVerOption(typeName); + return Result.success(list); + } + + @PostMapping("deletes") + @Operation(summary = "删除设备类型") + public Result deleteByIds(@RequestBody ArrayList ids){ + return deviceTypeService.deleteByIds(ids); + + } } diff --git a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java index 3445ce1..9bc86bf 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java @@ -7,6 +7,7 @@ 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.DeviceServiceVO; import com.bellmann.model.vo.DeviceTypeToVerVO; import com.bellmann.model.vo.DomainOption; import com.bellmann.model.vo.FileRecordVO; @@ -21,6 +22,8 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; @Tag(name = "12.设备类型软件接口") @RestController @@ -94,8 +97,7 @@ public class DeviceTypeVerController { @Operation(summary = "查看厂商配置文件信息") @GetMapping("/list-vendor-profile/{typeAndVerId}") - public Result> listVendorProfile(@PathVariable Long typeAndVerId){ - + public Result> listVendorProfile(@PathVariable Long typeAndVerId) throws Exception { List list = deviceTypeVerService.listVendorProfile(typeAndVerId); return Result.success(list); } @@ -125,4 +127,18 @@ public class DeviceTypeVerController { int rows = deviceTypeVerService.editVerDomain(typeAndVerId,list); return Result.success(rows); } + + @Operation(summary = "获取设备类型及设备软件版本支持的业务信息列表分页数据") + @GetMapping("/page-service/{typeAndVerId}") + public PageResult pageService(@PathVariable Long typeAndVerId, BasePageQuery pageQuery){ + Page page = deviceTypeVerService.pageService(typeAndVerId,pageQuery); + return PageResult.success(page); + } + @Operation(summary = "新增设备类型软件版本信息") + @PostMapping("/add-type-ver/{devTypeId}") + public Result addTypeVer(@RequestBody DeviceTypeVerForm form, @PathVariable Long devTypeId){ + int rows = deviceTypeVerService.addTypeVer(form,devTypeId); + return Result.success(rows); + } + } diff --git a/src/main/java/com/bellmann/controller/FileOptionController.java b/src/main/java/com/bellmann/controller/FileOptionController.java index 4d869a8..b5e862c 100644 --- a/src/main/java/com/bellmann/controller/FileOptionController.java +++ b/src/main/java/com/bellmann/controller/FileOptionController.java @@ -1,6 +1,8 @@ package com.bellmann.controller; +import com.bellmann.common.model.Tr069Xml; import com.bellmann.common.result.Result; +import com.bellmann.common.util.Tr069XmlUtils; import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.bellmann.service.FileOptionService; import io.swagger.v3.oas.annotations.Operation; @@ -14,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; +import java.io.InputStream; @Tag(name = "09.文件操作接口") @RestController @@ -50,4 +53,6 @@ public class FileOptionController { @RequestParam String fileUrl){ return Result.success(fileOptionService.removeFile(fileUrl,fileName)); } + + } diff --git a/src/main/java/com/bellmann/controller/FileRecordController.java b/src/main/java/com/bellmann/controller/FileRecordController.java index bca0ba0..23887a8 100644 --- a/src/main/java/com/bellmann/controller/FileRecordController.java +++ b/src/main/java/com/bellmann/controller/FileRecordController.java @@ -3,6 +3,8 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.result.PageResult; +import com.bellmann.common.result.Result; +import com.bellmann.model.form.FileRecordForm; import com.bellmann.model.query.FileRecordQuery; import com.bellmann.model.vo.FileRecordVO; import com.bellmann.service.FileRecordService; @@ -40,5 +42,12 @@ public class FileRecordController { Page result = fileRecordService.page(query); return PageResult.success(result); } + + @PostMapping("add") + @Operation(summary = "文件记录增加") + public Result addFileRecord(@RequestBody FileRecordForm form){ + Integer result = fileRecordService.addFileRecord(form); + return Result.success(); + } } diff --git a/src/main/java/com/bellmann/controller/Tr069VerController.java b/src/main/java/com/bellmann/controller/Tr069VerController.java new file mode 100644 index 0000000..a6938db --- /dev/null +++ b/src/main/java/com/bellmann/controller/Tr069VerController.java @@ -0,0 +1,66 @@ +package com.bellmann.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.model.Option; +import com.bellmann.common.model.Tr069Xml; +import com.bellmann.common.result.PageResult; +import com.bellmann.common.result.Result; +import com.bellmann.common.util.Tr069XmlUtils; +import com.bellmann.model.form.Tr069VerForm; +import com.bellmann.model.vo.Tr069VerVO; +import com.bellmann.service.FileOptionService; +import com.bellmann.service.Tr069VerService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.io.InputStream; +import java.util.List; + +@Tag(name = "14.TR069数据模型") +@RestController +@RequestMapping("/api/tr069/v1") +@RequiredArgsConstructor +public class Tr069VerController { + + private final Tr069VerService tr069VerService; + + private final FileOptionService fileOptionService; + @PostMapping("/page") + @Operation(summary = "tr069分页") + public PageResult page(BasePageQuery query){ + Page voPage = tr069VerService.page(query); + return PageResult.success(voPage); + } + + @GetMapping("/tree/{fileId}") + @Operation(summary = "tr069XML文件树") + public Result test(@PathVariable Long fileId){ + InputStream download = fileOptionService.download(fileId); + Tr069Xml tr069Xml = Tr069XmlUtils.parseXML(download); + return Result.success(tr069Xml); + } + + @GetMapping("/tr069-model/option") + @Operation(summary = "tr069文件选项") + public Result>> tr069ModelOption(){ + return Result.success(tr069VerService.tr069ModelOption()); + } + @GetMapping("/{tr069Id}") + @Operation(summary = "tr069表单") + public Result tr069Form(@PathVariable Long tr069Id){ + return Result.success(tr069VerService.tr069Form(tr069Id)); + } + @PostMapping("/edit") + @Operation(summary = "修改tr069记录") + public Result editTr069Form(@RequestBody Tr069VerForm editTr069Form){ + return Result.success(tr069VerService.editTr069Form(editTr069Form)); + } + @PostMapping("/add") + @Operation(summary = "新增tr069记录") + public Result addTr069Form(@RequestBody Tr069VerForm editTr069Form){ + return Result.success(tr069VerService.addTr069Form(editTr069Form)); + } +} diff --git a/src/main/java/com/bellmann/converter/FileRecordConverter.java b/src/main/java/com/bellmann/converter/FileRecordConverter.java index c2dcd4c..0d1d46d 100644 --- a/src/main/java/com/bellmann/converter/FileRecordConverter.java +++ b/src/main/java/com/bellmann/converter/FileRecordConverter.java @@ -2,6 +2,7 @@ package com.bellmann.converter; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.model.entity.FileRecord; +import com.bellmann.model.form.FileRecordForm; import com.bellmann.model.vo.FileRecordVO; import org.mapstruct.Mapper; @@ -25,4 +26,6 @@ public interface FileRecordConverter { Page entityPage2VOPage(Page pageData); List entityList2VOList(List fileRecords); + + FileRecord form2Entity(FileRecordForm form); } \ No newline at end of file diff --git a/src/main/java/com/bellmann/converter/ServiceConverter.java b/src/main/java/com/bellmann/converter/ServiceConverter.java new file mode 100644 index 0000000..0e5585f --- /dev/null +++ b/src/main/java/com/bellmann/converter/ServiceConverter.java @@ -0,0 +1,14 @@ +package com.bellmann.converter; + +import com.bellmann.model.entity.Service; +import com.bellmann.model.vo.DeviceServiceVO; +import org.mapstruct.Mapper; + +import java.util.List; + + +@Mapper(componentModel = "spring") +public interface ServiceConverter { + + +} \ No newline at end of file diff --git a/src/main/java/com/bellmann/converter/Tr069VerConverter.java b/src/main/java/com/bellmann/converter/Tr069VerConverter.java new file mode 100644 index 0000000..cb3e46c --- /dev/null +++ b/src/main/java/com/bellmann/converter/Tr069VerConverter.java @@ -0,0 +1,22 @@ +package com.bellmann.converter; + + +import com.bellmann.model.entity.Tr069Ver; +import com.bellmann.model.form.Tr069VerForm; +import org.mapstruct.Mapper; + + + +/** + * 文件对象转换器 + * + * + * @since 2022/7/29 + */ +@Mapper(componentModel = "spring") +public interface Tr069VerConverter { + + Tr069VerForm entity2Form(Tr069Ver tr069Ver); + + Tr069Ver form2Entity(Tr069VerForm editTr069Form); +} \ No newline at end of file diff --git a/src/main/java/com/bellmann/manger/DeviceTypeVerDetailManager.java b/src/main/java/com/bellmann/manger/DeviceTypeVerDetailManager.java index d86b8a1..4b7aa9a 100644 --- a/src/main/java/com/bellmann/manger/DeviceTypeVerDetailManager.java +++ b/src/main/java/com/bellmann/manger/DeviceTypeVerDetailManager.java @@ -8,4 +8,6 @@ public interface DeviceTypeVerDetailManager { int auditNewSoft(Long typeAndVerId); int updateByVerForm(DeviceTypeVerDetail deviceTypeVerDetail); + + void insertDetailByTypeAndVerId(Long typeAndVerId, Long devTypeId); } diff --git a/src/main/java/com/bellmann/manger/FileRecordManager.java b/src/main/java/com/bellmann/manger/FileRecordManager.java index 6ecdd58..af9d6be 100644 --- a/src/main/java/com/bellmann/manger/FileRecordManager.java +++ b/src/main/java/com/bellmann/manger/FileRecordManager.java @@ -16,4 +16,6 @@ public interface FileRecordManager { void addVendorProfile(FileRecord fileRecord); List listVendorProfile(Long typeAndVerId); + + List findFileByType(String fileType); } diff --git a/src/main/java/com/bellmann/manger/ServiceManager.java b/src/main/java/com/bellmann/manger/ServiceManager.java new file mode 100644 index 0000000..4673cc9 --- /dev/null +++ b/src/main/java/com/bellmann/manger/ServiceManager.java @@ -0,0 +1,9 @@ +package com.bellmann.manger; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.model.vo.DeviceServiceVO; + +public interface ServiceManager { + Page pageDevVerService(Long typeAndVerId, BasePageQuery pageQuery); +} diff --git a/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDetailManagerImpl.java b/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDetailManagerImpl.java index ecd80de..c8e8b6e 100644 --- a/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDetailManagerImpl.java +++ b/src/main/java/com/bellmann/manger/impl/DeviceTypeVerDetailManagerImpl.java @@ -2,8 +2,11 @@ package com.bellmann.manger.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.bellmann.common.enums.DevTypeNameNewEnum; +import com.bellmann.manger.DeviceTypeManager; import com.bellmann.manger.DeviceTypeVerDetailManager; import com.bellmann.mapper.DeviceTypeVerDetailMapper; +import com.bellmann.model.entity.DeviceType; import com.bellmann.model.entity.DeviceTypeVerDetail; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -14,6 +17,8 @@ public class DeviceTypeVerDetailManagerImpl implements DeviceTypeVerDetailManage private final DeviceTypeVerDetailMapper deviceTypeVerDetailMapper; + private final DeviceTypeManager deviceTypeManager; + @Override public int updateDeviceNewSoft(Long typeAndVerId) { return deviceTypeVerDetailMapper.update(null, @@ -40,4 +45,24 @@ public class DeviceTypeVerDetailManagerImpl implements DeviceTypeVerDetailManage .eq(DeviceTypeVerDetail::getTypeAndVerId,deviceTypeVerDetail.getTypeAndVerId()) ); } + + @Override + public void insertDetailByTypeAndVerId(Long typeAndVerId, Long devTypeId) { + DeviceType deviceType = deviceTypeManager.findDeviceTypeById(devTypeId); + DeviceTypeVerDetail deviceTypeVerDetail = new DeviceTypeVerDetail(); + deviceTypeVerDetail.setTypeAndVerId(typeAndVerId); + switch (deviceType.getDevType()){ + case "0": + deviceTypeVerDetail.setDevTypeNameNew(DevTypeNameNewEnum.ITMS.getValue()); + break; + case "1": + deviceTypeVerDetail.setDevTypeNameNew(DevTypeNameNewEnum.BBMS.getValue()); + break; + case "3": + deviceTypeVerDetail.setDevTypeNameNew(DevTypeNameNewEnum.IPTV.getValue()); + break; + } + deviceTypeVerDetailMapper.insert(deviceTypeVerDetail); + + } } diff --git a/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java b/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java index 9a2cc1a..f491a3f 100644 --- a/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java +++ b/src/main/java/com/bellmann/manger/impl/FileRecordManagerImpl.java @@ -57,4 +57,11 @@ public class FileRecordManagerImpl implements FileRecordManager { public List listVendorProfile(Long typeAndVerId) { return fileRecordMapper.listVendorProfile(typeAndVerId); } + + @Override + public List findFileByType(String fileType) { + return fileRecordMapper.selectList(new LambdaQueryWrapper() + .eq(FileRecord::getFileType,fileType) + ); + } } diff --git a/src/main/java/com/bellmann/manger/impl/ServiceManagerImpl.java b/src/main/java/com/bellmann/manger/impl/ServiceManagerImpl.java new file mode 100644 index 0000000..b462e6d --- /dev/null +++ b/src/main/java/com/bellmann/manger/impl/ServiceManagerImpl.java @@ -0,0 +1,30 @@ +package com.bellmann.manger.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.converter.ServiceConverter; +import com.bellmann.manger.ServiceManager; +import com.bellmann.mapper.ServiceMapper; +import com.bellmann.model.entity.Service; +import com.bellmann.model.vo.DeviceServiceVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class ServiceManagerImpl implements ServiceManager { + + private final ServiceMapper serviceMapper; + + private final ServiceConverter serviceConverter; + @Override + public Page pageDevVerService(Long typeAndVerId, BasePageQuery pageQuery) { + int pageNum = pageQuery.getPageNum(); + int pageSize = pageQuery.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + List list = serviceMapper.pageDevVerService(page,typeAndVerId); + return page.setRecords(list); + } +} diff --git a/src/main/java/com/bellmann/mapper/DeviceTypeMapper.java b/src/main/java/com/bellmann/mapper/DeviceTypeMapper.java index 8fccd31..cf99cc3 100644 --- a/src/main/java/com/bellmann/mapper/DeviceTypeMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceTypeMapper.java @@ -22,4 +22,14 @@ public interface DeviceTypeMapper extends BaseMapper { * @return */ List findDeviceTypePage(Page page, @Param("query") DeviceTypeQuery query, @Param("domainId") Long domainId); + + List vendorNameOption(); + + List hardVerOption(@Param("typeName") String typeName); + + List typeNameOption(@Param("vendorOui") String vendorOui); + + List vendorOuiOption(@Param("vendorName") String vendorName); + + Long countJoinStaticJoinVer(@Param("id") Long id); } diff --git a/src/main/java/com/bellmann/mapper/ServiceMapper.java b/src/main/java/com/bellmann/mapper/ServiceMapper.java new file mode 100644 index 0000000..e80be46 --- /dev/null +++ b/src/main/java/com/bellmann/mapper/ServiceMapper.java @@ -0,0 +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.Service; +import com.bellmann.model.vo.DeviceServiceVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface ServiceMapper extends BaseMapper { + List pageDevVerService(Page page, @Param("typeAndVerId") Long typeAndVerId); +} diff --git a/src/main/java/com/bellmann/mapper/Tr069VerMapper.java b/src/main/java/com/bellmann/mapper/Tr069VerMapper.java new file mode 100644 index 0000000..74a145d --- /dev/null +++ b/src/main/java/com/bellmann/mapper/Tr069VerMapper.java @@ -0,0 +1,14 @@ +package com.bellmann.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.entity.Tr069Ver; +import com.bellmann.model.vo.Tr069VerVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface Tr069VerMapper extends BaseMapper { + List tr069Page(Page page); +} diff --git a/src/main/java/com/bellmann/model/entity/DeviceTypeVer.java b/src/main/java/com/bellmann/model/entity/DeviceTypeVer.java index 076edcf..d56d952 100644 --- a/src/main/java/com/bellmann/model/entity/DeviceTypeVer.java +++ b/src/main/java/com/bellmann/model/entity/DeviceTypeVer.java @@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import lombok.ToString; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("itms_device_type_ver") +@ToString public class DeviceTypeVer implements Serializable { private static final long serialVersionUID = 6517671696462113712L; diff --git a/src/main/java/com/bellmann/model/entity/Service.java b/src/main/java/com/bellmann/model/entity/Service.java new file mode 100644 index 0000000..8052d33 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/Service.java @@ -0,0 +1,26 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("itms_service") +public class Service implements Serializable { + + + private static final long serialVersionUID = 3425958771027987055L; + + private Long servId; + + private String servName; + + private String servVerName; + + private String servDisplayName; + + private String servDesc; + + private Long pluginFileId; +} diff --git a/src/main/java/com/bellmann/model/entity/Tr069Ver.java b/src/main/java/com/bellmann/model/entity/Tr069Ver.java new file mode 100644 index 0000000..e5d409f --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/Tr069Ver.java @@ -0,0 +1,26 @@ +package com.bellmann.model.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; +import java.util.Date; + +@Data +@TableName("itms_tr069_ver") +public class Tr069Ver implements Serializable { + private static final long serialVersionUID = -1874730817920107148L; + + private Long tr069VerId; + + private String tr069VerName; + + private Date tr069VerCreateTime; + + private Date tr069VerModifyTime; + + private String tr069VerDesc; + + private Long fileId; +} diff --git a/src/main/java/com/bellmann/model/form/FileRecordForm.java b/src/main/java/com/bellmann/model/form/FileRecordForm.java new file mode 100644 index 0000000..388c646 --- /dev/null +++ b/src/main/java/com/bellmann/model/form/FileRecordForm.java @@ -0,0 +1,60 @@ +package com.bellmann.model.form; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author 李小林 + * @since 2024-04-20 + */ +@Data +@Schema(description = "文件记录表单") +public class FileRecordForm { + /** + * 文件ID + */ + @Schema(description = "文件ID") + private Long fileId; + + /** + * 文件类型 + */ + @Schema(description = "文件类型") + private String fileType; + + /** + * 文件名称 + */ + @Schema(description = "文件名称") + private String fileName; + + /** + * 文件描述 + */ + @Schema(description = "文件描述") + private String fileDesc; + + /** + * 文件服务器ID + */ + @Schema(description = "文件服务器ID") + private Long fileServId; + /** + * 文件ftp保存地址 + */ + @Schema(description = "文件ftp保存地址") + private String fileUrl; + + +} diff --git a/src/main/java/com/bellmann/model/form/Tr069VerForm.java b/src/main/java/com/bellmann/model/form/Tr069VerForm.java new file mode 100644 index 0000000..c3d658f --- /dev/null +++ b/src/main/java/com/bellmann/model/form/Tr069VerForm.java @@ -0,0 +1,25 @@ +package com.bellmann.model.form; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Schema(description = "TR069模型表单") +public class Tr069VerForm { + + @Schema(description = "id") + private Long tr069VerId; + + @Schema(description = "名称") + private String tr069VerName; + + @Schema(description = "描述信息") + private String tr069VerDesc; + + @Schema(description = "文件ID") + private Long fileId; +} diff --git a/src/main/java/com/bellmann/model/vo/DeviceServiceVO.java b/src/main/java/com/bellmann/model/vo/DeviceServiceVO.java new file mode 100644 index 0000000..f649599 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceServiceVO.java @@ -0,0 +1,25 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "设备类型及设备软件版本支持的业务信息视图") +public class DeviceServiceVO { + + @Schema(description = "id") + private Long servId; + + @Schema(description = "业务名称") + private String servName; + + @Schema(description = "业务版本") + private String servVerName; + + @Schema(description = "业务显示名称") + private String servDisplayName; + + @Schema(description = "业务描述") + private String servDesc; + +} diff --git a/src/main/java/com/bellmann/model/vo/Tr069VerVO.java b/src/main/java/com/bellmann/model/vo/Tr069VerVO.java new file mode 100644 index 0000000..95a82e6 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/Tr069VerVO.java @@ -0,0 +1,28 @@ +package com.bellmann.model.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Schema(description = "tr069数据模型列表视图") +public class Tr069VerVO { + + @Schema(description = "id") + private Long tr069VerId; + + @Schema(description = "模型名称") + private String tr069VerName; + + @Schema(description = "描述信息") + private String tr069VerDesc; + + @Schema(description = "文件名称") + private String fileName; + + @Schema(description = "文件Id") + private Long fileId; +} diff --git a/src/main/java/com/bellmann/service/DeviceTypeService.java b/src/main/java/com/bellmann/service/DeviceTypeService.java index c9673c5..c560b29 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeService.java @@ -1,12 +1,27 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.model.Option; +import com.bellmann.common.result.Result; import com.bellmann.model.query.DeviceTypeQuery; import com.bellmann.model.vo.DeviceTypePageVO; import com.bellmann.model.vo.DeviceTypeVO; +import java.util.ArrayList; +import java.util.List; + public interface DeviceTypeService { Page page(DeviceTypeQuery query); DeviceTypeVO findDevTypeById(Long devTypeId); + + List> vendorNameOption(); + + List> vendorOuiOption(String vendorName); + + List> typeNameOption(String vendorOui); + + List> hardVerOption(String typeName); + + Result deleteByIds(ArrayList ids); } diff --git a/src/main/java/com/bellmann/service/DeviceTypeVerService.java b/src/main/java/com/bellmann/service/DeviceTypeVerService.java index 8c6bdef..d1bc5e7 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeVerService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeVerService.java @@ -6,11 +6,12 @@ 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.DeviceServiceVO; import com.bellmann.model.vo.DeviceTypeToVerVO; -import com.bellmann.model.vo.DomainOption; import com.bellmann.model.vo.FileRecordVO; import java.util.List; +import java.util.concurrent.Future; public interface DeviceTypeVerService { Page deviceTypeToVerPage(DeviceTypeToVerQuery query); @@ -40,4 +41,8 @@ public interface DeviceTypeVerService { List listVerDomain(Long typeAndVerId); int editVerDomain(Long typeAndVerId, List list); + + Page pageService(Long typeAndVerId, BasePageQuery pageQuery); + + int addTypeVer(DeviceTypeVerForm form, Long devTypeId); } diff --git a/src/main/java/com/bellmann/service/FileOptionService.java b/src/main/java/com/bellmann/service/FileOptionService.java index 332d3f0..1dab2b7 100644 --- a/src/main/java/com/bellmann/service/FileOptionService.java +++ b/src/main/java/com/bellmann/service/FileOptionService.java @@ -3,6 +3,7 @@ package com.bellmann.service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; public interface FileOptionService { /** @@ -21,6 +22,8 @@ public interface FileOptionService { */ void download(HttpServletResponse response, Long fileId); + public InputStream download(Long fileId); + void copyFile(String sourceFileUrl, String fileName, String targetFileUrl1); boolean removeFile(String fileUrl, String fileName); diff --git a/src/main/java/com/bellmann/service/FileRecordService.java b/src/main/java/com/bellmann/service/FileRecordService.java index 0eb366a..ad43981 100644 --- a/src/main/java/com/bellmann/service/FileRecordService.java +++ b/src/main/java/com/bellmann/service/FileRecordService.java @@ -3,6 +3,7 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.model.entity.FileRecord; import com.baomidou.mybatisplus.extension.service.IService; +import com.bellmann.model.form.FileRecordForm; import com.bellmann.model.query.FileRecordQuery; import com.bellmann.model.vo.FileRecordVO; @@ -19,4 +20,6 @@ public interface FileRecordService{ Page page(FileRecordQuery query); FileRecord findFileRecordById(Long fileId); + + Integer addFileRecord(FileRecordForm form); } diff --git a/src/main/java/com/bellmann/service/ServiceService.java b/src/main/java/com/bellmann/service/ServiceService.java new file mode 100644 index 0000000..cc86cf0 --- /dev/null +++ b/src/main/java/com/bellmann/service/ServiceService.java @@ -0,0 +1,4 @@ +package com.bellmann.service; + +public interface ServiceService { +} diff --git a/src/main/java/com/bellmann/service/Tr069VerService.java b/src/main/java/com/bellmann/service/Tr069VerService.java new file mode 100644 index 0000000..4958a9c --- /dev/null +++ b/src/main/java/com/bellmann/service/Tr069VerService.java @@ -0,0 +1,21 @@ +package com.bellmann.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.model.Option; +import com.bellmann.model.form.Tr069VerForm; +import com.bellmann.model.vo.Tr069VerVO; + +import java.util.List; + +public interface Tr069VerService { + Page page(BasePageQuery query); + + List> tr069ModelOption(); + + Tr069VerForm tr069Form(Long tr069Id); + + Integer editTr069Form(Tr069VerForm editTr069Form); + + Integer addTr069Form(Tr069VerForm editTr069Form); +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeServiceImpl.java index d7f5836..a52ad45 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeServiceImpl.java @@ -2,10 +2,16 @@ package com.bellmann.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.model.Option; +import com.bellmann.common.result.IResultCode; +import com.bellmann.common.result.Result; +import com.bellmann.common.result.ResultCode; import com.bellmann.converter.DeviceTypeConverter; import com.bellmann.mapper.DeviceTypeMapper; +import com.bellmann.mapper.DeviceTypeVerMapper; import com.bellmann.model.bo.DeviceTypePageBO; import com.bellmann.model.entity.DeviceType; +import com.bellmann.model.entity.DeviceTypeVer; import com.bellmann.model.query.DeviceTypeQuery; import com.bellmann.model.vo.DeviceTypePageVO; import com.bellmann.model.vo.DeviceTypeVO; @@ -15,7 +21,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -25,6 +33,8 @@ public class DeviceTypeServiceImpl implements DeviceTypeService { private final DeviceTypeMapper deviceTypeMapper; private final DeviceTypeConverter deviceTypeConverter; + + private final DeviceTypeVerMapper deviceTypeVerMapper; @Override public Page page(DeviceTypeQuery query) { Long domainId = SecurityUtils.getGroupId(); @@ -43,4 +53,72 @@ public class DeviceTypeServiceImpl implements DeviceTypeService { .eq(DeviceType::getDevTypeId, devTypeId)); return deviceTypeConverter.entity2VO(deviceType); } + + @Override + public List> vendorNameOption() { + List deviceTypes = deviceTypeMapper.vendorNameOption(); + return deviceTypes.stream().distinct().map(deviceType -> { + Option option = new Option<>(); + option.setLabel(deviceType.getDevVendorName()); + option.setValue(deviceType.getDevVendorName()); + return option; + }).collect(Collectors.toList()); + + } + + @Override + public List> vendorOuiOption(String vendorName) { + List deviceTypes = deviceTypeMapper.vendorOuiOption(vendorName); + return deviceTypes.stream().map(deviceType -> { + Option option = new Option<>(); + option.setLabel(deviceType.getDevVendorOui()); + option.setValue(deviceType.getDevVendorOui()); + return option; + }).collect(Collectors.toList()); + } + + @Override + public List> typeNameOption(String vendorOui) { + List deviceTypes = deviceTypeMapper.typeNameOption(vendorOui); + return deviceTypes.stream().map(deviceType -> { + Option option = new Option<>(); + option.setLabel(deviceType.getDevTypeName()); + option.setValue(deviceType.getDevTypeName()); + return option; + }).collect(Collectors.toList()); + } + + @Override + public List> hardVerOption(String typeName) { + List deviceTypes = deviceTypeMapper.hardVerOption(typeName); + return deviceTypes.stream().map(deviceType -> { + Option option = new Option<>(); + option.setLabel(deviceType.getDevHardVer()); + option.setValue(deviceType.getDevHardVer()); + return option; + }).collect(Collectors.toList()); + } + + @Override + public Result deleteByIds(ArrayList ids) { + if (ids.isEmpty()){ + return Result.failed(ResultCode.IDS_IS_NULL); + } + for (Long id :ids){ + Long count = deviceTypeVerMapper.selectCount(new LambdaQueryWrapper() + .eq(DeviceTypeVer::getDevTypeId, id) + ); + if (count>0L){ + return Result.failed(ResultCode.DEVICE_TYPE_VER); + } + Long count1 = deviceTypeMapper.countJoinStaticJoinVer(id); + if (count1>0L){ + return Result.failed(ResultCode.DEVICE_TYPE_VER); + } + deviceTypeMapper.delete(new LambdaQueryWrapper() + .eq(DeviceType::getDevTypeId,id) + ); + } + return Result.success(); + } } diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java index 092da33..4ac8867 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java @@ -24,8 +24,8 @@ 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.DeviceServiceVO; 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; @@ -33,12 +33,15 @@ import com.bellmann.service.FileOptionService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.AsyncResult; 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.concurrent.Future; import java.util.stream.Collectors; @Service @@ -67,13 +70,16 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { private final FileRecordConverter fileRecordConverter; private final DomainManager domainManager; + + private final ServiceManager serviceManager; + @Override public Page deviceTypeToVerPage(DeviceTypeToVerQuery query) { int pageNum = query.getPageNum(); int pageSize = query.getPageSize(); Long devTypeId = query.getDevTypeId(); - Page page = new Page<>(pageNum,pageSize); - Page boPage = deviceTypeVerMapper.deviceTypeToVerPage(page,devTypeId); + Page page = new Page<>(pageNum, pageSize); + Page boPage = deviceTypeVerMapper.deviceTypeToVerPage(page, devTypeId); return deviceTypeVerConverter.bo2PageVo(boPage); } @@ -81,14 +87,14 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { public Result updateTypeAndVersionState(Long typeAndVerId) { DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(typeAndVerId); - if (deviceTypeVer==null){ + if (deviceTypeVer == null) { return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); } //判断状态,如果如果是UN_AUDIT就改为AUDIT - if(deviceTypeVer.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.UNAUDITED.getValue())){ + if (deviceTypeVer.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.UNAUDITED.getValue())) { deviceTypeVer.setDevTypeVerStatus(DevTypeVerStatusEnum.AUDITED.getValue()); deviceTypeVer.setAuditTime(LocalDateTime.now()); - }else { + } else { deviceTypeVer.setDevTypeVerStatus(DevTypeVerStatusEnum.UNAUDITED.getValue()); deviceTypeVer.setAuditTime(null); } @@ -106,7 +112,7 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { @Override public Result updateTypeNewSoftState(Long typeAndVerId) { DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(typeAndVerId); - if (deviceTypeVer==null){ + if (deviceTypeVer == null) { return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); } //根据软件版本id查询该软件版本对应硬件的全部软件版本id @@ -128,31 +134,31 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { //根据devTypeVerId获取源软件版本信息 DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(typeAndVerId); - if (deviceTypeVer==null){ + if (deviceTypeVer == null) { return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); } DevTypeVerFileBO devTypeVerFileBO = deviceTypeVerMapper.findSoftVersionFileInfo( deviceTypeVer.getSoftVer(), deviceTypeVer.getTypeAndVerId() ); - if(deviceTypeVer.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.UNAUDITED.getValue())){ + if (deviceTypeVer.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.UNAUDITED.getValue())) { return Result.failed(ResultCode.DEVICE_TYPE_VER_UNAUDITED); } - if(StringUtils.isBlank(devTypeVerFileBO.getFileName())|| StringUtils.isBlank(devTypeVerFileBO.getFileUrl())){ + if (StringUtils.isBlank(devTypeVerFileBO.getFileName()) || StringUtils.isBlank(devTypeVerFileBO.getFileUrl())) { return Result.failed(ResultCode.DEVICE_TYPE_VER_FILE_NOT_EXIST); } DeviceType deviceType = deviceTypeManager.findDeviceTypeById(devTypeId); //根据typeId查询所有需要复制的目标设备类型 - List list = deviceTypeVerMapper.findTargetDeviceType(deviceType,deviceTypeVer.getSoftVer()); + List list = deviceTypeVerMapper.findTargetDeviceType(deviceType, deviceTypeVer.getSoftVer()); //根据查询出来的目标设备类型集合,循环复制源软件版本 - for ( DeviceTypeVer obj: list){ - if (StringUtils.isBlank(obj.getSoftVer())){ + for (DeviceTypeVer obj : list) { + if (StringUtils.isBlank(obj.getSoftVer())) { //不存在该软件版本,则复制软件版本信息,以及软件版本文件。 Long cloneDevTypeAndVerId = cloneDeviceTypeVer(deviceTypeVer); devTypeVerFileBO.setTypeAndVerId(cloneDevTypeAndVerId); copyFtpVerFile(devTypeVerFileBO); - }else { - if (StringUtils.isNotBlank(obj.getDevTypeVerStatus())&&obj.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.AUDITED.getValue())){ + } else { + if (StringUtils.isNotBlank(obj.getDevTypeVerStatus()) && obj.getDevTypeVerStatus().equals(DevTypeVerStatusEnum.AUDITED.getValue())) { //软件版本状态为已审核,则不复制版本文件。 continue; } @@ -163,26 +169,26 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { private void copyFtpVerFile(DevTypeVerFileBO devTypeVerFileBO) { FileRecord fileRecord = fileRecordManager.insetDevTypeVerFile(devTypeVerFileBO); - fileDevTypeMapManager.insertFileDevTypeVerMap(fileRecord.getFileId(),devTypeVerFileBO.getTypeAndVerId()); - fileOptionService.copyFile(devTypeVerFileBO.getFileUrl(),devTypeVerFileBO.getFileName(),fileRecord.getFileUrl()); + fileDevTypeMapManager.insertFileDevTypeVerMap(fileRecord.getFileId(), devTypeVerFileBO.getTypeAndVerId()); + fileOptionService.copyFile(devTypeVerFileBO.getFileUrl(), devTypeVerFileBO.getFileName(), fileRecord.getFileUrl()); } - private Long cloneDeviceTypeVer(DeviceTypeVer resource){ + private Long cloneDeviceTypeVer(DeviceTypeVer resource) { DeviceTypeVer deviceTypeVer = new DeviceTypeVer(); deviceTypeVer.setDevTypeId(resource.getDevTypeId()); deviceTypeVer.setDevTypeVerStatus(DevTypeVerStatusEnum.UNAUDITED.getValue()); - if (StringUtils.isEmpty(resource.getSpecVer())){ + if (StringUtils.isEmpty(resource.getSpecVer())) { deviceTypeVer.setSpecVer("null"); - }else { + } else { deviceTypeVer.setSpecVer(resource.getSpecVer()); } deviceTypeVer.setSoftVer(resource.getSoftVer()); deviceTypeVer.setConnectReqPassword(StringUtilsConstants.STRING_BLANK); deviceTypeVer.setConnectReqUsername(StringUtilsConstants.STRING_BLANK); deviceTypeVer.setDevTypeVerDesc(resource.getDevTypeVerDesc()); - if(resource.getProvisionFlag().equals("0")){ + if (resource.getProvisionFlag().equals("0")) { deviceTypeVer.setProvisionFlag(ProvisionFlagEnum.PPPOE.getValue()); - }else { + } else { deviceTypeVer.setProvisionFlag(ProvisionFlagEnum.UN_PROVISION.getValue()); } deviceTypeVer.setAcsUrlPassword(StringUtilsConstants.STRING_BLANK); @@ -198,19 +204,19 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { @Transactional public Result deleteDeviceTypeVersionById(Long typeAndVerId) { DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(typeAndVerId); - if (deviceTypeVer==null){ + if (deviceTypeVer == null) { return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); } - if(deviceTypeVer.getTr069VerId()>0){ + if (deviceTypeVer.getTr069VerId()!=null&& deviceTypeVer.getTr069VerId() > 0) { return Result.failed(ResultCode.DEVICE_TYPE_VER_EXIST_OR_BINDING); } - Long count = deviceTypeVerMapper.countDevTypeStatic(typeAndVerId); - if (count>0){ + Long count = deviceTypeVerMapper.countDevTypeStatic(typeAndVerId); + if (count > 0) { return Result.failed(ResultCode.DEVICE_TYPE_VER_EXIST_OR_BINDING); } int deleteRows = deviceTypeVerDomainManager.deleteByTypeAndVerId(typeAndVerId); deviceTypeVerMapper.delete( - new LambdaQueryWrapper().eq(DeviceTypeVer::getTypeAndVerId,typeAndVerId) + new LambdaQueryWrapper().eq(DeviceTypeVer::getTypeAndVerId, typeAndVerId) ); return Result.success(); @@ -220,20 +226,20 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { @Transactional public Result deleteDeviceTypeVersionFile(Long typeAndVerId, Long fileId) { FileRecord fileRecord = fileRecordManager.findFileRecordById(fileId); - if(fileRecord==null){ + if (fileRecord == null) { return Result.failed(ResultCode.FILE_NOT_EXIST); } - Long count = fileDevTypeMapManager.countByTypeAndVerId(typeAndVerId,fileId); - if (count!=1L){ + Long count = fileDevTypeMapManager.countByTypeAndVerId(typeAndVerId, fileId); + if (count != 1L) { return Result.failed(ResultCode.FILE_NOT_OF_TYPE_VER); } - int rows = fileDevTypeMapManager.deleteByTypeAndVerId(typeAndVerId,fileId); + int rows = fileDevTypeMapManager.deleteByTypeAndVerId(typeAndVerId, fileId); int deleteRows = fileRecordManager.deleteByFileId(fileId); - if(rows==0&&deleteRows==0){ + if (rows == 0 && deleteRows == 0) { return Result.failed(ResultCode.FILE_DELETE_FAIL); } - boolean isSuccess = fileOptionService.removeFile(fileRecord.getFileUrl(),fileRecord.getFileName()); - if (!isSuccess){ + boolean isSuccess = fileOptionService.removeFile(fileRecord.getFileUrl(), fileRecord.getFileName()); + if (!isSuccess) { return Result.failed(ResultCode.FILE_DELETE_FAIL); } return Result.success(); @@ -241,8 +247,8 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { @Override public Result findDevTypeVerEditForm(Long typeAndVerId) { - DeviceTypeVerForm deviceTypeVerForm = deviceTypeVerMapper.findDevTypeVerEditForm(typeAndVerId); - if (deviceTypeVerForm==null){ + DeviceTypeVerForm deviceTypeVerForm = deviceTypeVerMapper.findDevTypeVerEditForm(typeAndVerId); + if (deviceTypeVerForm == null) { return Result.failed(ResultCode.DATA_NOT_FOUND); } return Result.success(deviceTypeVerForm); @@ -255,16 +261,16 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { DeviceTypeVerDetail deviceTypeVerDetail = deviceTypeVerDetailConverter.form2Entity(deviceTypeVerForm); int row1 = deviceTypeVerMapper.update(deviceTypeVer, new LambdaQueryWrapper() - .eq(DeviceTypeVer::getTypeAndVerId,deviceTypeVer.getTypeAndVerId()) + .eq(DeviceTypeVer::getTypeAndVerId, deviceTypeVer.getTypeAndVerId()) ); int row2 = deviceTypeVerDetailManager.updateByVerForm(deviceTypeVerDetail); - return row1+row2; + return row1 + row2; } @Override public Result addVendorProfile(VendorProfileForm form) { DeviceTypeVer deviceTypeVer = deviceTypeVerMapper.findByTypeAndDevID(form.getTypeAndVerId()); - if (deviceTypeVer==null){ + if (deviceTypeVer == null) { return Result.failed(ResultCode.DEVICE_TYPE_VER_BINDING_DEVICE_TYPE_IS_NULL); } FileRecord fileRecord = new FileRecord(); @@ -291,17 +297,17 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { public int deleteVendorProfile(Long fileId, Long typeAndVerId) { FileRecord fileRecord = fileRecordManager.findFileRecordById(fileId); boolean removed = fileOptionService.removeFile(fileRecord.getFileUrl(), fileRecord.getFileName()); - if (!removed){ + if (!removed) { throw new BusinessException(ResultCode.FILE_DELETE_FAIL); } int i = fileRecordManager.deleteByFileId(fileId); int i1 = fileDevTypeMapManager.deleteByTypeAndVerId(typeAndVerId, fileId); - return i+i1; + return i + i1; } @Override public Page pageSysDomain(Long typeAndVerId, BasePageQuery pageQuery) { - return domainManager.pageJoinTypeVerByTypeAndVerId(typeAndVerId,pageQuery); + return domainManager.pageJoinTypeVerByTypeAndVerId(typeAndVerId, pageQuery); } @Override @@ -311,7 +317,35 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { @Override public int editVerDomain(Long typeAndVerId, List list) { - return deviceTypeVerDomainManager.editVerDomain(typeAndVerId,list); + return deviceTypeVerDomainManager.editVerDomain(typeAndVerId, list); + + } + + @Override + public Page pageService(Long typeAndVerId, BasePageQuery pageQuery) { + return serviceManager.pageDevVerService(typeAndVerId, pageQuery); } + + @Override + @Transactional + public int addTypeVer(DeviceTypeVerForm form, Long devTypeId) { + DeviceTypeVer deviceTypeVer = deviceTypeVerConverter.form2Entity(form); + deviceTypeVer.setDevTypeId(devTypeId); + deviceTypeVer.setDevTypeVerStatus(DevTypeVerStatusEnum.UNAUDITED.getValue()); + deviceTypeVer.setAcsUrlPassword(StringUtilsConstants.STRING_BLANK); + deviceTypeVer.setConnectReqUsername(StringUtilsConstants.STRING_BLANK); + deviceTypeVer.setConnectReqPassword(StringUtilsConstants.STRING_BLANK); + String provisionFlag = form.getProvisionFlag(); + if (ProvisionFlagEnum.TR069.getValue().equals(provisionFlag)){ + deviceTypeVer.setProvisionFlag(ProvisionFlagEnum.PPPOE.getValue()); + }else { + deviceTypeVer.setProvisionFlag(ProvisionFlagEnum.UN_PROVISION.getValue()); + } + deviceTypeVer.setAuditUserName(StringUtilsConstants.STRING_BLANK); + deviceTypeVerMapper.insert(deviceTypeVer); + deviceTypeVerDomainManager.insertDevTypeVerSysDomainMap(deviceTypeVer.getTypeAndVerId()); + deviceTypeVerDetailManager.insertDetailByTypeAndVerId(deviceTypeVer.getTypeAndVerId(),devTypeId); + return 1; + } } diff --git a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java index 98f423a..b2d7235 100644 --- a/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/FileOptionServiceImpl.java @@ -71,6 +71,22 @@ public class FileOptionServiceImpl implements FileOptionService { FTPUtils.download(fileServer,fileName,dirPath,response); } + @Override + public InputStream download(Long fileId) { + //获取FTP用户名、密码、端口... + FileServer fileServer = fileServerService.getFileServer(); + if (fileServer == null) { + throw new BusinessException(ResultCode.FILE_SERVER_IS_NULL); + } + FileRecord fileRecord = fileRecordService.findFileRecordById(fileId); + if(fileRecord == null){ + throw new BusinessException(ResultCode.FILE_NOT_EXIST); + } + String fileName = fileRecord.getFileName(); + String dirPath = fileRecord.getFileUrl(); + return FTPUtils.download(fileServer,fileName,dirPath); + } + @Override public void copyFile(String sourceFileUrl, String fileName, String targetFileUrl1) { //获取FTP用户名、密码、端口... diff --git a/src/main/java/com/bellmann/service/impl/FileRecordServiceImpl.java b/src/main/java/com/bellmann/service/impl/FileRecordServiceImpl.java index 426e624..3e6163f 100644 --- a/src/main/java/com/bellmann/service/impl/FileRecordServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/FileRecordServiceImpl.java @@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.converter.FileRecordConverter; import com.bellmann.model.entity.FileRecord; import com.bellmann.mapper.FileRecordMapper; +import com.bellmann.model.form.FileRecordForm; import com.bellmann.model.query.FileRecordQuery; import com.bellmann.model.vo.FileRecordVO; +import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.FileRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 服务实现类 @@ -47,4 +51,13 @@ public class FileRecordServiceImpl implements FileRecordService { public FileRecord findFileRecordById(Long fileId) { return fileRecordMapper.selectOne(new LambdaQueryWrapper().eq(FileRecord::getFileId,fileId)); } + + @Override + public Integer addFileRecord(FileRecordForm form) { + FileRecord fileRecord = fileRecordConverter.form2Entity(form); + fileRecord.setUserName(SecurityUtils.getUsername()); + fileRecord.setFileCreateTime(new Date()); + fileRecord.setFileServId(1L); + return fileRecordMapper.insert(fileRecord); + } } diff --git a/src/main/java/com/bellmann/service/impl/ServiceServiceImpl.java b/src/main/java/com/bellmann/service/impl/ServiceServiceImpl.java new file mode 100644 index 0000000..02f8bb4 --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/ServiceServiceImpl.java @@ -0,0 +1,10 @@ +package com.bellmann.service.impl; + +import com.bellmann.service.ServiceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class ServiceServiceImpl implements ServiceService { +} diff --git a/src/main/java/com/bellmann/service/impl/Tr069VerServiceImpl.java b/src/main/java/com/bellmann/service/impl/Tr069VerServiceImpl.java new file mode 100644 index 0000000..133a4dd --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/Tr069VerServiceImpl.java @@ -0,0 +1,75 @@ +package com.bellmann.service.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.enums.FileTypeEnum; +import com.bellmann.common.model.Option; +import com.bellmann.converter.Tr069VerConverter; +import com.bellmann.manger.FileRecordManager; +import com.bellmann.mapper.Tr069VerMapper; +import com.bellmann.model.entity.FileRecord; +import com.bellmann.model.entity.Tr069Ver; +import com.bellmann.model.form.Tr069VerForm; +import com.bellmann.model.vo.Tr069VerVO; +import com.bellmann.service.Tr069VerService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class Tr069VerServiceImpl implements Tr069VerService { + + private final Tr069VerMapper tr069VerMapper; + + private final FileRecordManager fileRecordManager; + + private final Tr069VerConverter tr069VerConverter; + @Override + public Page page(BasePageQuery query) { + int pageNum = query.getPageNum(); + int pageSize = query.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + List list = tr069VerMapper.tr069Page(page); + return page.setRecords(list); + } + + @Override + public List> tr069ModelOption() { + List list = fileRecordManager.findFileByType(FileTypeEnum.TR069_MODEL_FILE.getValue()); + return list.stream().map(fileRecord -> { + Option option = new Option<>(); + option.setValue(fileRecord.getFileId()); + option.setLabel(fileRecord.getFileName()); + return option; + }).collect(Collectors.toList()); + } + + @Override + public Tr069VerForm tr069Form(Long tr069Id) { + Tr069Ver tr069Ver = tr069VerMapper.selectOne(new LambdaQueryWrapper() + .eq(Tr069Ver::getTr069VerId, tr069Id) + ); + return tr069VerConverter.entity2Form(tr069Ver); + } + + @Override + public Integer editTr069Form(Tr069VerForm editTr069Form) { + Tr069Ver tr069Ver = tr069VerConverter.form2Entity(editTr069Form); + tr069Ver.setTr069VerModifyTime(new Date()); + return tr069VerMapper.update(tr069Ver,new LambdaQueryWrapper() + .eq(Tr069Ver::getTr069VerId,tr069Ver.getTr069VerId()) + ); + } + + @Override + public Integer addTr069Form(Tr069VerForm form) { + Tr069Ver tr069Ver = tr069VerConverter.form2Entity(form); + tr069Ver.setTr069VerCreateTime(new Date()); + return tr069VerMapper.insert(tr069Ver) ; + } +} diff --git a/src/main/resources/mapper/DeviceTypeMapper.xml b/src/main/resources/mapper/DeviceTypeMapper.xml index 642db63..11f5852 100644 --- a/src/main/resources/mapper/DeviceTypeMapper.xml +++ b/src/main/resources/mapper/DeviceTypeMapper.xml @@ -26,7 +26,7 @@ AND itms_device_type.dev_vendor_name = #{query.devVendorName} - AND itms_device_type.dev_vendor_oui = #{query.devVendorName} + AND itms_device_type.dev_vendor_oui = #{query.devVendorOui} AND itms_device_type.dev_type_name = #{query.devTypeName} @@ -37,4 +37,54 @@ + + + + + + + diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index 246c9d0..f652dce 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -12,7 +12,7 @@ idtv.audit_time, idtv.audit_user_name, idtv.dev_type_ver_status, - idtvd.isnewsoft AS new_soft_status + COALESCE(idtvd.isnewsoft,'-999') AS new_soft_status FROM itms_device_type_ver idtv LEFT JOIN itms_device_type_ver_detail idtvd ON idtv.type_and_ver_id = idtvd.type_and_ver_id @@ -20,7 +20,6 @@ LEFT JOIN itms_file ON itms_file.file_id = ifdtvm.file_id WHERE idtv.dev_type_id = #{devTypeId} - AND itms_file.file_type = '0' diff --git a/src/main/resources/mapper/ServiceMapper.xml b/src/main/resources/mapper/ServiceMapper.xml new file mode 100644 index 0000000..5b9579a --- /dev/null +++ b/src/main/resources/mapper/ServiceMapper.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/src/main/resources/mapper/Tr069VerMapper.xml b/src/main/resources/mapper/Tr069VerMapper.xml new file mode 100644 index 0000000..b222b37 --- /dev/null +++ b/src/main/resources/mapper/Tr069VerMapper.xml @@ -0,0 +1,18 @@ + + + + + +