package com.ruoyi.web.controller.api; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.FeasibilityStudyReportStatusEnum; import com.ruoyi.common.enums.FeasibilityReportFileEnum; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.AuditStatusDTO; import com.ruoyi.system.dto.TFeasibilityStudyReportDTO; import com.ruoyi.system.model.TFeasibilityReportFile; import com.ruoyi.system.model.TFeasibilityStudyReport; import com.ruoyi.system.query.TFeasibilityStudyReportQuery; import com.ruoyi.system.service.TFeasibilityReportFileService; import com.ruoyi.system.service.TFeasibilityStudyReportService; import com.ruoyi.system.vo.TFeasibilityStudyReportVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; /** *

* 可研、可行、工艺开发工具、验证发布报告 前端控制器 *

* * @author xiaochen * @since 2025-04-08 */ @Api(tags = "可研、可行、工艺开发工具、验证发布报告管理") @RestController @RequestMapping("/t-feasibility-study-report") public class TFeasibilityStudyReportController { private final TFeasibilityStudyReportService feasibilityStudyReportService; private final TFeasibilityReportFileService feasibilityReportFileService; private final TokenService tokenService; @Autowired public TFeasibilityStudyReportController(TFeasibilityStudyReportService feasibilityStudyReportService, TFeasibilityReportFileService feasibilityReportFileService, TokenService tokenService) { this.feasibilityStudyReportService = feasibilityStudyReportService; this.feasibilityReportFileService = feasibilityReportFileService; this.tokenService = tokenService; } /** * 获取可研、可行、工艺开发工具、验证发布报告管理列表 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:list')") @ApiOperation(value = "获取可研、可行、工艺开发工具、验证发布报告管理分页列表") @PostMapping(value = "/api/t-feasibility-study-report/pageList") public R> pageList(@RequestBody String param) { TFeasibilityStudyReportQuery query = JSON.parseObject(param, TFeasibilityStudyReportQuery.class); return R.ok(feasibilityStudyReportService.pageList(query)); } /** * 添加可研、可行、工艺开发工具、验证发布报告管理管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:add')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-新增可研、可行、工艺开发工具、验证发布报告管理", businessType = BusinessType.INSERT) @ApiOperation(value = "添加可研、可行、工艺开发工具、验证发布报告管理",response = TFeasibilityStudyReportDTO.class) @PostMapping(value = "/api/t-feasibility-study-report/add") public R add(@RequestBody String param) { TFeasibilityStudyReportDTO dto = JSON.parseObject(param,TFeasibilityStudyReportDTO.class); // TODO 生成编号 feasibilityStudyReportService.save(dto); // 添加检测报告文件 List feasibilityReportFiles = dto.getFeasibilityReportFiles(); for (TFeasibilityReportFile feasibilityReportFile : feasibilityReportFiles) { feasibilityReportFile.setReportId(dto.getId()); switch (FeasibilityReportFileEnum.fromCode(feasibilityReportFile.getReportType())) { case FEASIBILITY_STUDY_REPORT: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.FEASIBILITY_STUDY_REPORT.getCode()); break; case FEASIBLE_REPORT: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.FEASIBLE_REPORT.getCode()); break; case PROCESS_DEVELOPMENT_TOOLS: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.PROCESS_DEVELOPMENT_TOOLS.getCode()); break; case VERIFICATION_RELEASE: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.VERIFICATION_RELEASE.getCode()); break; default: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.PROJECT_PROPOSAL.getCode()); break; } } feasibilityReportFileService.saveBatch(feasibilityReportFiles); return R.ok(); } /** * 修改可研、可行、工艺开发工具、验证发布报告管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:edit')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-修改可研、可行、工艺开发工具、验证发布报告管理", businessType = BusinessType.UPDATE) @ApiOperation(value = "修改可研、可行、工艺开发工具、验证发布报告管理") @PostMapping(value = "/api/t-feasibility-study-report/update") public R update(@RequestBody String param) { TFeasibilityStudyReportDTO dto = JSON.parseObject(param,TFeasibilityStudyReportDTO.class); feasibilityStudyReportService.updateById(dto); feasibilityReportFileService.remove(Wrappers.lambdaQuery(TFeasibilityReportFile.class) .eq(TFeasibilityReportFile::getReportId, dto.getId())); // 添加检测报告文件 List feasibilityReportFiles = dto.getFeasibilityReportFiles(); for (TFeasibilityReportFile feasibilityReportFile : feasibilityReportFiles) { feasibilityReportFile.setReportId(dto.getId()); switch (FeasibilityReportFileEnum.fromCode(feasibilityReportFile.getReportType())) { case FEASIBILITY_STUDY_REPORT: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.FEASIBILITY_STUDY_REPORT.getCode()); break; case FEASIBLE_REPORT: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.FEASIBLE_REPORT.getCode()); break; case PROCESS_DEVELOPMENT_TOOLS: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.PROCESS_DEVELOPMENT_TOOLS.getCode()); break; case VERIFICATION_RELEASE: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.VERIFICATION_RELEASE.getCode()); break; default: feasibilityReportFile.setReportType(FeasibilityReportFileEnum.PROJECT_PROPOSAL.getCode()); break; } } feasibilityReportFileService.saveBatch(feasibilityReportFiles); return R.ok(); } /** * 查看可研、可行、工艺开发工具、验证发布报告管理详情 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:detail')") @ApiOperation(value = "查看可研、可行、工艺开发工具、验证发布报告管理详情") @GetMapping(value = "/open/t-feasibility-study-report/getDetailById") public R getDetailById(@RequestParam String id) { TFeasibilityStudyReport feasibilityStudyReport = feasibilityStudyReportService.getById(id); TFeasibilityStudyReportVO feasibilityStudyReportVO = new TFeasibilityStudyReportVO(); BeanUtils.copyProperties(feasibilityStudyReport, feasibilityStudyReportVO); // 查询检测报告文件 List feasibilityReportFiles = feasibilityReportFileService.list(Wrappers.lambdaQuery(TFeasibilityReportFile.class) .eq(TFeasibilityReportFile::getReportId, id)); feasibilityStudyReportVO.setFeasibilityReportFiles(feasibilityReportFiles); return R.ok(feasibilityStudyReportVO); } /** * 删除可研、可行、工艺开发工具、验证发布报告管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:delete')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-删除可研、可行、工艺开发工具、验证发布报告管理", businessType = BusinessType.DELETE) @ApiOperation(value = "删除可研、可行、工艺开发工具、验证发布报告管理") @DeleteMapping(value = "/open/t-feasibility-study-report/deleteById") public R deleteById(@RequestParam String id) { // 删除可研、可行、工艺开发工具、验证发布报告文件 feasibilityReportFileService.remove(Wrappers.lambdaQuery(TFeasibilityReportFile.class).eq(TFeasibilityReportFile::getReportId, id)); return R.ok(feasibilityStudyReportService.removeById(id)); } /** * 批量删除可研、可行、工艺开发工具、验证发布报告管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:delete')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-删除可研、可行、工艺开发工具、验证发布报告管理", businessType = BusinessType.DELETE) @ApiOperation(value = "批量删除可研、可行、工艺开发工具、验证发布报告管理") @DeleteMapping(value = "/open/t-feasibility-study-report/deleteByIds") public R deleteByIds(@RequestBody List ids) { // 删除可研、可行、工艺开发工具、验证发布报告文件 feasibilityReportFileService.remove(Wrappers.lambdaQuery(TFeasibilityReportFile.class).in(TFeasibilityReportFile::getReportId, ids)); return R.ok(feasibilityStudyReportService.removeByIds(ids)); } /** * 撤销可研、可行、工艺开发工具、验证发布报告管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:revokedReport')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-撤销可研、可行、工艺开发工具、验证发布报告管理状态", businessType = BusinessType.UPDATE) @ApiOperation(value = "撤销可研、可行、工艺开发工具、验证发布报告管理状态") @PutMapping(value = "/open/t-feasibility-study-report/revokedReport") public R revokedReport(@RequestParam String id) { TFeasibilityStudyReport feasibilityStudyReport = feasibilityStudyReportService.getById(id); feasibilityStudyReport.setStatus(FeasibilityStudyReportStatusEnum.REVOKED.getCode()); feasibilityStudyReportService.updateById(feasibilityStudyReport); return R.ok(); } /** * 审核可研、可行、工艺开发工具、验证发布报告管理 */ @PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:auditReport')") @Log(title = "可研、可行、工艺开发工具、验证发布报告管理信息-审核可研、可行、工艺开发工具、验证发布报告管理状态", businessType = BusinessType.UPDATE) @ApiOperation(value = "审核可研、可行、工艺开发工具、验证发布报告管理状态") @PostMapping(value = "/api/t-feasibility-study-report/auditReport") public R auditReport(@RequestBody String param) { Long userId = tokenService.getLoginUser().getUserId(); AuditStatusDTO dto = JSON.parseObject(param,AuditStatusDTO.class); TFeasibilityStudyReport feasibilityStudyReport = feasibilityStudyReportService.getById(dto.getId()); feasibilityStudyReport.setStatus(dto.getAuditStatus()); feasibilityStudyReport.setAuditRemark(dto.getAuditRemark()); feasibilityStudyReport.setAuditPersonId(userId); feasibilityStudyReport.setAuditTime(LocalDateTime.now()); feasibilityStudyReportService.updateById(feasibilityStudyReport); return R.ok(); } }