diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..08482c1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,71 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 控制器 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Value("${casic.file-down-path}") + private String downloadPath; + + + /** + * 文件模板下载 + */ + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + logger.info(downloadPath); + if (downloadPath.startsWith("/")) { + downloadPath = downloadPath.substring(1); + } + File file = new File(downloadPath, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..08482c1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,71 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 控制器 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Value("${casic.file-down-path}") + private String downloadPath; + + + /** + * 文件模板下载 + */ + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + logger.info(downloadPath); + if (downloadPath.startsWith("/")) { + downloadPath = downloadPath.substring(1); + } + File file = new File(downloadPath, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java index 7593ab1..e04b6b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java @@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.annotation.ExcelProperty; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.model.BusinessConnectTestrecord; import com.ibiz.excel.picture.support.annotation.ExportModel; @@ -17,15 +18,20 @@ public class BusinessConnectRecordDTO implements Serializable { private static final long serialVersionUID = 1L; - @ExportModel(sort = 0, title = "平台类型") +// @ExportModel(sort = 0, title = "平台类型") + @ExcelProperty(value = "平台类型", order = 0) private String testPlatform; - @ExportModel(sort = 1, title = "链接地址") +// @ExportModel(sort = 1, title = "链接地址") + @ExcelProperty(value = "链接地址", order = 1) private String testUrl; - @ExportModel(sort = 2, title = "测试时间") +// @ExportModel(sort = 2, title = "测试时间") + @ExcelProperty(value = "测试时间", order = 2) private String createTime; - @ExportModel(sort = 3, title = "消耗时间/ms") +// @ExportModel(sort = 3, title = "消耗时间/ms") + @ExcelProperty(value = "消耗时间/ms", order = 3) private String testTime; - @ExportModel(sort = 4, title = "测试状态") +// @ExportModel(sort = 4, title = "证书号") + @ExcelProperty(value = "证书号", order = 4) private String testResult; @@ -39,7 +45,7 @@ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) { - this.testPlatform = testrecord.getTestPlatform(); + this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-"; this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED; this.testTime = testrecord.getTestTime(); this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..08482c1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,71 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 控制器 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Value("${casic.file-down-path}") + private String downloadPath; + + + /** + * 文件模板下载 + */ + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + logger.info(downloadPath); + if (downloadPath.startsWith("/")) { + downloadPath = downloadPath.substring(1); + } + File file = new File(downloadPath, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java index 7593ab1..e04b6b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java @@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.annotation.ExcelProperty; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.model.BusinessConnectTestrecord; import com.ibiz.excel.picture.support.annotation.ExportModel; @@ -17,15 +18,20 @@ public class BusinessConnectRecordDTO implements Serializable { private static final long serialVersionUID = 1L; - @ExportModel(sort = 0, title = "平台类型") +// @ExportModel(sort = 0, title = "平台类型") + @ExcelProperty(value = "平台类型", order = 0) private String testPlatform; - @ExportModel(sort = 1, title = "链接地址") +// @ExportModel(sort = 1, title = "链接地址") + @ExcelProperty(value = "链接地址", order = 1) private String testUrl; - @ExportModel(sort = 2, title = "测试时间") +// @ExportModel(sort = 2, title = "测试时间") + @ExcelProperty(value = "测试时间", order = 2) private String createTime; - @ExportModel(sort = 3, title = "消耗时间/ms") +// @ExportModel(sort = 3, title = "消耗时间/ms") + @ExcelProperty(value = "消耗时间/ms", order = 3) private String testTime; - @ExportModel(sort = 4, title = "测试状态") +// @ExportModel(sort = 4, title = "证书号") + @ExcelProperty(value = "证书号", order = 4) private String testResult; @@ -39,7 +45,7 @@ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) { - this.testPlatform = testrecord.getTestPlatform(); + this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-"; this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED; this.testTime = testrecord.getTestTime(); this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..a359449 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: wangpeng + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..08482c1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,71 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 控制器 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Value("${casic.file-down-path}") + private String downloadPath; + + + /** + * 文件模板下载 + */ + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + logger.info(downloadPath); + if (downloadPath.startsWith("/")) { + downloadPath = downloadPath.substring(1); + } + File file = new File(downloadPath, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java index 7593ab1..e04b6b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java @@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.annotation.ExcelProperty; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.model.BusinessConnectTestrecord; import com.ibiz.excel.picture.support.annotation.ExportModel; @@ -17,15 +18,20 @@ public class BusinessConnectRecordDTO implements Serializable { private static final long serialVersionUID = 1L; - @ExportModel(sort = 0, title = "平台类型") +// @ExportModel(sort = 0, title = "平台类型") + @ExcelProperty(value = "平台类型", order = 0) private String testPlatform; - @ExportModel(sort = 1, title = "链接地址") +// @ExportModel(sort = 1, title = "链接地址") + @ExcelProperty(value = "链接地址", order = 1) private String testUrl; - @ExportModel(sort = 2, title = "测试时间") +// @ExportModel(sort = 2, title = "测试时间") + @ExcelProperty(value = "测试时间", order = 2) private String createTime; - @ExportModel(sort = 3, title = "消耗时间/ms") +// @ExportModel(sort = 3, title = "消耗时间/ms") + @ExcelProperty(value = "消耗时间/ms", order = 3) private String testTime; - @ExportModel(sort = 4, title = "测试状态") +// @ExportModel(sort = 4, title = "证书号") + @ExcelProperty(value = "证书号", order = 4) private String testResult; @@ -39,7 +45,7 @@ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) { - this.testPlatform = testrecord.getTestPlatform(); + this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-"; this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED; this.testTime = testrecord.getTestTime(); this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..a359449 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: wangpeng + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java index 9c5df31..9639fbc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java @@ -19,7 +19,7 @@ public interface IBusinessConnectTestrecordService extends IService { - boolean saveBusinessConnectTestRecord(String url); + boolean saveBusinessConnectTestRecord(String plate,String url); boolean saveBatchBusinessConnectTestRecord(List> urls); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java new file mode 100644 index 0000000..41530c3 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/BusinessConnectTestrecordTask.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.system; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +public class BusinessConnectTestrecordTask implements Callable> { + + List subFileList; + public BusinessConnectTestrecordTask(List list) { + this.subFileList = list; + } + + @Override + public Map call() throws Exception { + + for (String filePath : subFileList) { + filePath = filePath.replaceAll("\\\\", "/"); + + } + + Map subResultMap = new HashMap<>(); + //log.info("subMap{}",subResultMap); + return subResultMap; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java index cdad1d8..8b3ec94 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java @@ -8,6 +8,8 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest; +import com.casic.missiles.modular.system.dto.IdsDTO; import com.casic.missiles.modular.system.enums.BusinessExceptionEnum; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.exception.BusinessException; @@ -42,22 +44,27 @@ /** * 获取测试链接记录表列表 */ -// @RequestMapping(value = "/list") -// @ResponseBody -// public Object list(String condition) { -// return businessConnectTestrecordService.selectList(null); -// } + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(ObjectUtil.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ResponseData.success(businessConnectTestrecordService.removeByIds(idsDTO.getIds())); + } /** * 获取测试链接记录表分页列表 */ @RequestMapping(value = "/listPage") @ResponseBody - public Object listPage(String condition) { + public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) { Page page = PageFactory.defaultPage(); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); queryWrapper.orderByDesc("CREATE_TIME"); - page=businessConnectTestrecordService.page(page,queryWrapper); + page = businessConnectTestrecordService.page(page, queryWrapper); List businessConnectTestrecordList = page.getRecords(); businessConnectTestrecordList.forEach(businessConnectTestrecord -> { businessConnectTestrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTestrecord.getTestResult()) ? @@ -75,7 +82,7 @@ Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> { throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL); }); - return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestUrl()) ? + return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(),businessConnectTestrecord.getTestUrl()) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } @@ -88,22 +95,23 @@ Assert.isFalse(Objects.isNull(file), () -> { throw new BusinessException(BusinessExceptionEnum.FILE_NULL); }); - List> urlList = businessConnectTestrecordService.parseSourceFile(file); + List> urlList = businessConnectTestrecordService.parseSourceFile(file); return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ? ResponseData.success() : ResponseData.error(BusinessExceptionEnum.SAVE_FAILED.getMessage()); } - /** * 批量导出测试记录 */ @RequestMapping(value = "/fileExport") @ResponseBody - public void fileExport(HttpServletResponse response) { + public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("createTime"); - businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); + queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime()); + queryWrapper.orderByDesc("CREATE_TIME"); + businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.list(queryWrapper), response); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..08482c1 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,71 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.core.base.controller.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 控制器 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Value("${casic.file-down-path}") + private String downloadPath; + + + /** + * 文件模板下载 + */ + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + logger.info(downloadPath); + if (downloadPath.startsWith("/")) { + downloadPath = downloadPath.substring(1); + } + File file = new File(downloadPath, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java index 7593ab1..e04b6b4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java @@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.excel.annotation.ExcelProperty; import com.casic.missiles.modular.system.enums.DictEnum; import com.casic.missiles.modular.system.model.BusinessConnectTestrecord; import com.ibiz.excel.picture.support.annotation.ExportModel; @@ -17,15 +18,20 @@ public class BusinessConnectRecordDTO implements Serializable { private static final long serialVersionUID = 1L; - @ExportModel(sort = 0, title = "平台类型") +// @ExportModel(sort = 0, title = "平台类型") + @ExcelProperty(value = "平台类型", order = 0) private String testPlatform; - @ExportModel(sort = 1, title = "链接地址") +// @ExportModel(sort = 1, title = "链接地址") + @ExcelProperty(value = "链接地址", order = 1) private String testUrl; - @ExportModel(sort = 2, title = "测试时间") +// @ExportModel(sort = 2, title = "测试时间") + @ExcelProperty(value = "测试时间", order = 2) private String createTime; - @ExportModel(sort = 3, title = "消耗时间/ms") +// @ExportModel(sort = 3, title = "消耗时间/ms") + @ExcelProperty(value = "消耗时间/ms", order = 3) private String testTime; - @ExportModel(sort = 4, title = "测试状态") +// @ExportModel(sort = 4, title = "证书号") + @ExcelProperty(value = "证书号", order = 4) private String testResult; @@ -39,7 +45,7 @@ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) { - this.testPlatform = testrecord.getTestPlatform(); + this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-"; this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED; this.testTime = testrecord.getTestTime(); this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime()); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java new file mode 100644 index 0000000..a359449 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: wangpeng + * @Date: 2022/11/26 9:51 + */ +@Data +public class IdsDTO { + @NotNull + private List ids; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java index 9c5df31..9639fbc 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java @@ -19,7 +19,7 @@ public interface IBusinessConnectTestrecordService extends IService { - boolean saveBusinessConnectTestRecord(String url); + boolean saveBusinessConnectTestRecord(String plate,String url); boolean saveBatchBusinessConnectTestRecord(List> urls); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java index 0a3a448..963ea70 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.modular.system.config.PoolConfig; import com.casic.missiles.modular.system.dao.BusinessConnectTestrecordMapper; import com.casic.missiles.modular.system.dto.BusinessConnectRecordDTO; @@ -19,14 +20,21 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** @@ -43,6 +51,9 @@ @Autowired private PoolConfig threadPoolTaskExecutor; + @Autowired + private IBaseExportService iBaseExportService; + protected static final Map mapperExcel = new HashMap<>(); static { @@ -54,16 +65,16 @@ private String downloadPath; @Override - public boolean saveBusinessConnectTestRecord(String url) { + public boolean saveBusinessConnectTestRecord(String plate,String url) { String result = LinkTestUtil.testUrl(url); - return this.save(new BusinessConnectTestrecord(result.split(","), "")); + return this.save(new BusinessConnectTestrecord(result.split(","), plate)); } @Override public boolean saveBatchBusinessConnectTestRecord(List> urls) { //小于50个测试地址直接返回,大于50用线程返回 - if (ObjectUtil.isNotEmpty(urls) && urls.size() <= 50) { + if (ObjectUtil.isNotEmpty(urls) && urls.size() <= 20) { List testrecordList = new ArrayList<>(); urls.forEach(s -> { String result = LinkTestUtil.testUrl(s.get("url") + ""); @@ -71,23 +82,52 @@ }); return this.saveBatch(testrecordList); } - List>> listList = ListUtils.partition(urls, 50); + List>> listList = ListUtils.partition(urls, 20); + ExecutorService es = Executors.newFixedThreadPool(10); + List testrecordTasks = new ArrayList<>(); listList.forEach(list -> { - threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { - @Override - public void run() { - List testrecordList = new ArrayList<>(); - list.forEach(s -> { - String result = LinkTestUtil.testUrl(s.get("url") + ""); - testrecordList.add(new BusinessConnectTestrecord(result.split(","), s.get("plate") + "")); - }); - saveBatch(testrecordList); - } - }); + testrecordTasks.add(new BusinessConnectTestrecordTask(list)); + }); + List> futures = null; + try { + futures = es.invokeAll(testrecordTasks); + } catch (InterruptedException e) { + e.printStackTrace(); + } + es.shutdown(); + + //汇总各个子线程的数据结果 + //这里处理线程结果 + while (futures.size() > 0) { + for (int i = 0; i < futures.size(); i++) { + Future mapFuture = futures.get(i); + System.out.println("index:" + i + ",future:" + mapFuture.isDone()); + if (mapFuture.isDone()) futures.remove(futures.get(i)); + } + } return true; } + class BusinessConnectTestrecordTask implements Callable { + + List> connectTestrecordList; + + public BusinessConnectTestrecordTask(List> list) { + this.connectTestrecordList = list; + } + + @Override + public Boolean call() throws Exception { + List testrecordList = new ArrayList<>(); + connectTestrecordList.forEach(s -> { + String result = LinkTestUtil.testUrl(s.get("url") + ""); + testrecordList.add(new BusinessConnectTestrecord(result.split(","), s.get("plate") + "")); + }); + return saveBatch(testrecordList); + } + } + @Override public List> parseSourceFile(MultipartFile file) { List> stringList = new ArrayList<>(); @@ -116,25 +156,32 @@ @Override public void exportUsersToExcel(List list, HttpServletResponse response) { - Workbook workBook = Workbook.getInstance(1); - - Sheet sheet = workBook.createSheet("测试结果导出"); - // 给标题行加上背景色,加颜色时,会对字体加粗 - sheet.addCellStyle(new CellStyle(0, "66cc66")); - - sheet.write(BusinessConnectRecordDTO.class).createRow(BusinessConnectRecordDTO.convert(list)); +// Workbook workBook = Workbook.getInstance(1); +// Sheet sheet = workBook.createSheet("测试结果导出"); +// // 给标题行加上背景色,加颜色时,会对字体加粗 +// sheet.addCellStyle(new CellStyle(0, "66cc66")); +// sheet.write(BusinessConnectRecordDTO.class).createRow(BusinessConnectRecordDTO.convert(list)); try { +// response.reset(); +// response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("fileName", "UTF-8")); +// response.setHeader("Access-Control-Allow-Origin", "*"); +// response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); +// response.setHeader("Access-Control-Max-Age", "3600"); +// response.setHeader("Access-Control-Allow-Credentials", "true"); +// response.setHeader("Access-Control-Allow-Headers", "*"); +// response.setContentType("application/octet-stream;charset=UTF-8"); +// ServletOutputStream os = response.getOutputStream(); +// WebUtil.writeExcel(workBook, "测试结果导出".concat(String.valueOf(System.currentTimeMillis())).concat(".xlsx"), response); +// workBook.write(os); - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("fileName", "UTF-8")); - response.setContentType("application/octet-stream"); + iBaseExportService.exportExcel(response, BusinessConnectRecordDTO.class, BusinessConnectRecordDTO.convert(list), "testRecords"); - ServletOutputStream os = response.getOutputStream(); - WebUtil.writeExcel(workBook, "测试结果导出".concat(String.valueOf(System.currentTimeMillis())).concat(".xlsx"), response); - workBook.write(os); } catch (IOException e) { e.printStackTrace(); - } } + + + + }