From dd028e18a12ad9ae7c43ed09b15ddd6bde1a43e9 Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期三, 03 九月 2025 11:27:50 +0800 Subject: [PATCH] 采集中状态修改提前,统计数据合并 --- src/main/java/com/linghu/controller/PlatformController.java | 187 +++++++--------------------------------------- 1 files changed, 31 insertions(+), 156 deletions(-) diff --git a/src/main/java/com/linghu/controller/PlatformController.java b/src/main/java/com/linghu/controller/PlatformController.java index 468a7f6..4fa4779 100644 --- a/src/main/java/com/linghu/controller/PlatformController.java +++ b/src/main/java/com/linghu/controller/PlatformController.java @@ -10,16 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.linghu.listener.PlatformExcelListener; import com.linghu.listener.TypeDropdownWriteHandler; +import com.linghu.mapper.KeywordMapper; import com.linghu.mapper.ReferenceMapper; import com.linghu.model.common.ResponseResult; -import com.linghu.model.entity.Platform; -import com.linghu.model.entity.Reference; -import com.linghu.model.entity.Sectionalization; -import com.linghu.model.entity.Type; +import com.linghu.model.entity.*; import com.linghu.model.excel.ExcelDataWithRow; import com.linghu.model.excel.PlatformExcel; import com.linghu.model.excel.UserExcel; import com.linghu.model.page.CustomPage; +import com.linghu.model.validator.CreateGroup; +import com.linghu.model.validator.UpdateGroup; import com.linghu.service.PlatformService; import com.linghu.service.TypeService; @@ -37,6 +37,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -44,9 +45,7 @@ import java.io.IOException; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.Objects; import java.util.stream.Collectors; @@ -61,57 +60,28 @@ private PlatformService platformService; @Autowired private TypeService typeService; - @Autowired - private ReferenceMapper referenceMapper; @PostMapping @ApiOperation(value = "添加平台") - public ResponseResult<Platform> add(@RequestBody Platform platform) { - // 校验平台名称和域名不能为空 - if (!StringUtils.hasText(platform.getPlatform_name())) { - return ResponseResult.error("平台名称不能为空"); - } - if (!StringUtils.hasText(platform.getDomain())) { - return ResponseResult.error("平台域名不能为空"); - } - - boolean success = platformService.save(platform); - if (success) { - return ResponseResult.success(platform); - } - return ResponseResult.error("添加平台失败"); + public ResponseResult<Platform> add( @Validated(CreateGroup.class) @RequestBody Platform platform) { + return platformService.addPlatform(platform); } + @DeleteMapping("/{platformId}") @ApiOperation(value = "删除平台") - public ResponseResult<Void> delete(@PathVariable Integer platformId) { - //平台被引用了没 - Integer count = referenceMapper.selectCount(new LambdaQueryWrapper<Reference>().eq(Reference::getPlatform_id, platformId)); - if (count > 0) { - return ResponseResult.error("该平台被引用中,不能删除"); - } - boolean success = platformService.removeById(platformId); - if (success) { - return ResponseResult.success(); - } - return ResponseResult.error("删除平台失败"); + public ResponseResult<Void> delete( @PathVariable Integer platformId) { + return platformService.deleteByPlatFormId(platformId); } + + @PutMapping @ApiOperation(value = "更新平台") - public ResponseResult<Void> update(@RequestBody Platform platform) { - // 校验平台名称和域名不能为空 - if (!StringUtils.hasText(platform.getPlatform_name())) { - return ResponseResult.error("平台名称不能为空"); - } - if (!StringUtils.hasText(platform.getDomain())) { - return ResponseResult.error("平台域名不能为空"); - } - - platformService.updateById(platform); - - return ResponseResult.success(); + public ResponseResult<Void> update(@Validated(UpdateGroup.class) @RequestBody Platform platform) { + return platformService.updatePlatform(platform); } + @GetMapping("/{platformId}") @ApiOperation("根据id获取平台") @@ -126,125 +96,30 @@ @GetMapping("/list") @ApiOperation("查询平台列表,不传页数和大小就查全部") public ResponseResult<CustomPage<Platform>> list( - @RequestParam(required = false) Integer page, - @RequestParam(required = false) Integer pageSize, - @RequestParam(required = false) Integer type_id) { - // 构建查询条件并添加排序(按创建时间倒序) - LambdaQueryWrapper<Platform> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByDesc(Platform::getCreate_time); // 新增的排序条件 - if (type_id != null) { - queryWrapper.eq(Platform::getType_id, type_id); - } - if (page != null && pageSize != null) { - Page<Platform> pageInfo = new Page<>(page, pageSize); - Page<Platform> result = platformService.page(pageInfo, queryWrapper); - return ResponseResult.success(new CustomPage<>(result)); - } else { - List<Platform> list = platformService.list(queryWrapper); - CustomPage<Platform> customPage = new CustomPage<>(new Page<>()); - customPage.setRecords(list); - customPage.setTotal(list.size()); - return ResponseResult.success(customPage); - } + @RequestParam(value = "page",required = false) Integer page, + @RequestParam(value = "pageSize",required = false) Integer pageSize, + @RequestParam(value = "type_id",required = false) Integer type_id, + @RequestParam(value = "keywordId", required = false) Integer keywordId, + @RequestParam(value = "questionId",required = false) Integer questionId, + @RequestParam(value = "isNow",required = false) Integer isNow + ) { + return platformService.platformPageList(page, pageSize, type_id, keywordId, questionId, isNow); } + + @GetMapping("/download") @ApiOperation("下载平台模板") public ResponseEntity<byte[]> downloadTemplate() throws IOException { - // 获取所有类型名称 - List<Type> typeList = typeService.list(); - List<String> typeNames = typeList.stream() - .map(Type::getType_name) - .collect(Collectors.toList()); - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - // 注册下拉框拦截器 - EasyExcel.write(out, PlatformExcel.class) - .registerWriteHandler(new TypeDropdownWriteHandler(typeNames)) - .sheet("平台模板") - .doWrite(new ArrayList<>()); - - return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=platform_template.xlsx") - .contentType(MediaType.APPLICATION_OCTET_STREAM) - .body(out.toByteArray()); + return platformService.downloadPlatformExcel(); } + @PostMapping("/import") @ApiOperation("导入平台数据") public ResponseResult<String> importPlatforms(@RequestParam("file") MultipartFile file) { - try { - if (file.isEmpty()) { - return ResponseResult.error("上传文件不能为空"); - } - - // 使用自定义监听器读取数据(包含行号) - PlatformExcelListener listener = new PlatformExcelListener(); - EasyExcel.read(file.getInputStream()) - .head(PlatformExcel.class) - .sheet() - .registerReadListener(listener) - .doRead(); - - List<ExcelDataWithRow<PlatformExcel>> excelList = listener.getDataList(); - List<Platform> platforms = new ArrayList<>(); - List<String> errorMessages = new ArrayList<>(); - - // 遍历数据并验证(逻辑同方案一) - for (ExcelDataWithRow<PlatformExcel> excelData : excelList) { - int rowNum = excelData.getRowNumber(); - PlatformExcel excel = excelData.getData(); - List<String> rowErrors = new ArrayList<>(); - // 验证逻辑 - if (!StringUtils.hasText(excel.getPlatform_name())) { - rowErrors.add("平台名称不能为空"); - } - if (!StringUtils.hasText(excel.getDomain())) { - rowErrors.add("平台域名不能为空"); - } - // ... 其他验证 - // 查找类型(仅当类型名称不为空时检查,避免空指针) - Integer typeId = null; - if (StringUtils.hasText(excel.getType_name())) { - Type typeByName = typeService.getTypeByName(excel.getType_name()); - if (typeByName == null) { - rowErrors.add("未知的平台类型: " + excel.getType_name()); - } - typeId = typeByName.getType_id(); - - }else { - rowErrors.add("平台类型不能为空"); - } - if (!rowErrors.isEmpty()) { - errorMessages.add(String.format("第%d行错误: %s", rowNum, String.join(";", rowErrors))); - } else { - // 构建Platform对象... - Platform platform = new Platform(); - platform.setPlatform_name(excel.getPlatform_name()); - platform.setDomain(excel.getDomain()); - platform.setType_id(typeId); - platform.setCreate_time(LocalDateTime.now()); - platforms.add(platform); - } - } - - // 错误处理和导入逻辑(同方案一) - if (!errorMessages.isEmpty()) { - // 构建清晰的错误信息 - StringBuilder errorMsg = new StringBuilder(); - errorMsg.append("导入失败,共").append(errorMessages.size()).append("条数据存在错误:\n"); - errorMessages.forEach(msg -> errorMsg.append(msg).append("\n")); - - return ResponseResult.error(400, errorMsg.toString()); - } - - // 无错误时导入... - return ResponseResult.success("导入成功,共" + platforms.size() + "条数据"); - - } catch (Exception e) { - log.error(e.getMessage()); - return ResponseResult.error("文件解析失败:" + e.getMessage()); - } + return platformService.importPlatformsExcel(file); } + + } -- Gitblit v1.7.1