diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/question/PrisonQuestionController.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/question/PrisonQuestionController.java new file mode 100644 index 0000000000..3c74fe4ecc --- /dev/null +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/question/PrisonQuestionController.java @@ -0,0 +1,127 @@ +package cn.iocoder.yudao.module.prison.controller.admin.question; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.prison.controller.admin.question.vo.*; +import cn.iocoder.yudao.module.prison.dal.dataobject.question.QuestionDO; +import cn.iocoder.yudao.module.prison.service.question.QuestionService; +import cn.iocoder.yudao.module.prison.convert.question.QuestionConvert; + +@Tag(name = "管理后台 - 问卷问题") +@RestController +@RequestMapping("/prison/question") +@Validated +public class PrisonQuestionController { + + @Resource + private QuestionService questionService; + + @PostMapping("/create") + @Operation(summary = "创建问卷问题") + @PreAuthorize("@ss.hasPermission('prison:question:create') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = CREATE) + public CommonResult createQuestion(@Valid @RequestBody QuestionSaveReqVO createReqVO) { + return success(questionService.createQuestion(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新问卷问题") + @PreAuthorize("@ss.hasPermission('prison:question:update') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = UPDATE) + public CommonResult updateQuestion(@Valid @RequestBody QuestionSaveReqVO updateReqVO) { + questionService.updateQuestion(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除问卷问题") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('prison:question:delete') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = DELETE) + public CommonResult deleteQuestion(@NotNull(message = "编号不能为空") @RequestParam("id") Long id) { + questionService.deleteQuestion(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除问卷问题") + @PreAuthorize("@ss.hasPermission('prison:question:delete') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = DELETE) + public CommonResult deleteQuestionList(@NotEmpty(message = "编号列表不能为空") @RequestParam("ids") List ids) { + questionService.deleteQuestionListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得问卷问题") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('prison:question:query') or @ss.hasPermission('prison:questionnaire:query') or @ss.hasPermission('prison:questionnaire:update')") + public CommonResult getQuestion(@RequestParam("id") Long id) { + QuestionDO question = questionService.getQuestion(id); + return success(QuestionConvert.INSTANCE.convert(question)); + } + + @GetMapping("/page") + @Operation(summary = "获得问卷问题分页") + @PreAuthorize("@ss.hasPermission('prison:question:query') or @ss.hasPermission('prison:questionnaire:query') or @ss.hasPermission('prison:questionnaire:update')") + public CommonResult> getQuestionPage(@Valid QuestionPageReqVO pageReqVO) { + PageResult pageResult = questionService.getQuestionPage(pageReqVO); + return success(QuestionConvert.INSTANCE.convertPage(pageResult)); + } + + @PostMapping("/batch-update") + @Operation(summary = "批量更新问卷问题") + @PreAuthorize("@ss.hasPermission('prison:question:update') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = UPDATE) + public CommonResult batchUpdateQuestion(@Valid @RequestBody QuestionBatchUpdateReqVO reqVO) { + // 转换为 Service 需要的格式 + List updateList = new ArrayList<>(); + for (QuestionBatchUpdateReqVO.QuestionUpdateItem item : reqVO.getQuestions()) { + QuestionSaveReqVO saveReqVO = new QuestionSaveReqVO(); + saveReqVO.setId(item.getId()); + saveReqVO.setPartName(item.getPartName()); + saveReqVO.setPartSort(item.getPartSort()); + saveReqVO.setSort(item.getSort()); + updateList.add(saveReqVO); + } + questionService.batchUpdateQuestion(updateList); + return success(true); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出问卷问题 Excel") + @PreAuthorize("@ss.hasPermission('prison:question:export') or @ss.hasPermission('prison:questionnaire:export') or @ss.hasPermission('prison:questionnaire:update')") + @ApiAccessLog(operateType = EXPORT) + public void exportQuestionExcel(@Valid QuestionPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = questionService.getQuestionPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "问卷问题.xls", "数据", QuestionRespVO.class, + QuestionConvert.INSTANCE.convertList(list)); + } + +} \ No newline at end of file