package com.estate.expert.admin.controller.admin.standard; import com.estate.expert.admin.domain.common.IDtoBase; import com.estate.expert.admin.domain.common.request.BatchReq; import com.estate.expert.admin.domain.common.request.PageReq; import com.estate.expert.admin.domain.standard.expert.Expert; import com.estate.expert.admin.domain.standard.expert.matrix.CompareMatrix; import com.estate.expert.admin.domain.standard.expert.matrix.MembershipMatrixRowDto; import com.estate.expert.admin.domain.standard.expert.matrix.WeightMatrixRow; import com.estate.expert.admin.domain.user.User; import com.estate.expert.admin.enums.BizResultCode; import com.estate.expert.admin.service.expert.ExpertService; import com.estate.expert.common.domain.Session; import com.estate.expert.common.rpc.Result; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import javax.validation.constraints.NotNull; import java.util.List; /** * 专家控制器 * 包含两类专家: 打分专家和模糊专家 * 抽象操作 */ public abstract class ExpertController { protected abstract ExpertService getExpertService(); /////// 基础操作 /////// @ApiOperation(value = "专家列表") @PostMapping("/list") public Result list(@RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "modelId", required = false) Integer modelId, @ApiParam(value = "分页参数") @Validated @RequestBody PageReq pageReq) { return Result.success(getExpertService().list(keyword, modelId, pageReq)); } @ApiOperation(value = "添加专家") @PostMapping("/add") public Result add(Session session, @Validated @RequestBody D dto) { getExpertService().add((User)session.getUser(), dto); return Result.success(); } @ApiOperation(value = "编辑专家") @PostMapping("/edit") public Result edit(@Validated @RequestBody D dto) { getExpertService().edit(dto); return Result.success(); } @ApiOperation(value = "删除专家") @PostMapping("/batch/del") public Result batchDel( @Validated @RequestBody BatchReq request) { getExpertService().deleteAllById(request.getIds()); return Result.success(); } @ApiOperation(value = "综合体系树") @GetMapping("/tree") public Result tree(@ApiParam(value = "ID") @RequestParam("id") Integer id) { return Result.success(getExpertService().getNullModelTree(id)); } // @GetMapping("/download/template") // public Result downloadTemplate() { // return null; // } /////// 打分专家判断矩阵操作 ////// @ApiOperation("打分专家判断矩阵获取") @GetMapping("/weight/children") public Result getChildrenWeights(@RequestParam("expertId") Integer expertId, @RequestParam("hierarchyPath")String hierarchyPath) { return Result.success(getExpertService().weightMatrix(expertId, hierarchyPath)); } @ApiOperation("打分专家判断矩阵修改") @PostMapping("/weight/edit/row") public Result editWeight(@RequestParam("expertId") Integer expertId, @RequestBody WeightMatrixRow row) { getExpertService().editWeightMatrixRow(expertId, row); return Result.success(); } @ApiOperation("打分专家判断矩阵批量修改") @PostMapping("/weight/edit") public Result editWeight(@RequestParam("expertId") Integer expertId, @RequestBody List rows) { getExpertService().editWeightMatrixRows(expertId, rows); return Result.success(); } // @ApiOperation("打分专家判断矩阵导入") // @PostMapping("/scoreMatrix/import") // public Result importScoreMatrix(@RequestParam("expertId") Integer expertId, // @RequestParam("hierarchyPath")String hierarchyPath, // @RequestPart("file")MultipartFile file) { // // 去读取对应路径的excel文件,然后解析,然后调用 //// expertService.importMatrixFile(session.getUserId(), request); // return Result.success(); // } // // @ApiOperation("打分专家判断矩阵导出") // @PostMapping("/scoreMatrix/export") // public Result exportScoreMatrix(@RequestParam("expertId") Integer expertId, // @RequestParam("hierarchyPath")String hierarchyPath) { // return Result.success(); // } /////// 模糊专家判断矩阵操作 ////// @ApiOperation("模糊专家判断矩阵获取") @GetMapping("/fuzzyMatrix/get") public Result getFuzzyMatrix(@NotNull @RequestParam("expertId") Integer expertId, @NotNull @RequestParam("hierarchyPath")String hierarchyPath) { return Result.success(getExpertService().getFuzzyMatrix(expertId, hierarchyPath)); } @ApiOperation("模糊专家判断矩阵修改") @PostMapping("/fuzzyMatrix/edit") public Result editFuzzyMatrix(@NotNull @RequestParam("expertId") Integer expertId, @NotNull @RequestParam("hierarchyPath")String hierarchyPath, @Validated @RequestBody CompareMatrix value) { getExpertService().editFuzzyMatrix(expertId, hierarchyPath, value); return Result.success(); } // @ApiOperation("模糊专家判断矩阵导入") // @PostMapping("/fuzzyMatrix/import") // public Result importFuzzyMatrix(@RequestParam("expertId") Integer expertId, // @RequestParam("hierarchyPath")String hierarchyPath, // @RequestPart("file")MultipartFile file) { // // 去读取对应路径的excel文件,然后解析,然后调用 // return Result.success(); // } // // @ApiOperation("模糊专家判断矩阵导出") // @PostMapping("/fuzzyMatrix/export") // public Result exportFuzzyMatrix(@RequestParam("expertId") Integer expertId, // @RequestParam("hierarchyPath")String hierarchyPath) { // return Result.success(); // } @ApiOperation("隶属度矩阵导出") @PostMapping("/membershipMatrix/export") public Result exportMembershipMatrix(@ApiParam("专家ID") @RequestParam("expertId") Integer expertId) { return Result.success(); } @ApiOperation("隶属度矩阵获取") @GetMapping("/membershipMatrix/get") public Result getMembershipMatrix(@ApiParam("专家ID") @RequestParam("expertId") Integer expertId) { var matrix = getExpertService().getMembershipMatrix(expertId); BizResultCode.MEMBERSHIP_MATRIX_LOAD_ERROR.check(matrix == null); return Result.success(matrix.getData()); } @ApiOperation("隶属度矩阵修改(整个矩阵)") @PostMapping("/membershipMatrix/edit") public Result editMembershipMatrix(@ApiParam("专家ID") @RequestParam("expertId") Integer expertId, @Validated @RequestBody float[][][][][] data) { getExpertService().editMembershipMatrix(expertId, data); return Result.success(); } @ApiOperation("隶属度矩阵修改(行)") @PostMapping("/membershipMatrix/row/edit") public Result editMembershipMatrixRow(@ApiParam("专家ID") @RequestParam("expertId") Integer expertId, @Validated @RequestBody MembershipMatrixRowDto row) { getExpertService().editMembershipMatrixRow(expertId, row); return Result.success(); } @ApiOperation("隶属度矩阵修获取(行)") @GetMapping("/membershipMatrix/rows") public Result listMembershipMatrixRows(@ApiParam("专家ID") @RequestParam("expertId") Integer expertId, @ApiParam("一级隐患数量") @RequestParam(value = "p1", required = false) Integer p1, @ApiParam("二级隐患数量") @RequestParam(value = "p2", required = false) Integer p2, @ApiParam("三级隐患数量") @RequestParam(value = "p3", required = false) Integer p3, @ApiParam("四级隐患数量") @RequestParam(value = "p4", required = false) Integer p4) { return Result.success(getExpertService().listMembershipMatrixRows(expertId, p1, p2, p3, p4)); } }