package com.ruoyi.manage.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.utils.JackSonUtil; import com.ruoyi.manage.mapper.ClientSatisfactionAnalyseFileMapper; import com.ruoyi.manage.pojo.ClientSatisfaction; import com.ruoyi.manage.pojo.ClientSatisfactionAnalyseFile; import com.ruoyi.manage.service.ClientSatisfactionService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import jakarta.servlet.http.HttpServletResponse; import java.util.Map; /** * 客户满意度 * * @author zhuo * @since 2024-11-09 */ @Tag(name = "客户满意度调查") @AllArgsConstructor @RestController @RequestMapping("/clientSatisfaction") public class ClientSatisfactionController { private ClientSatisfactionService clientSatisfactionService; private ClientSatisfactionAnalyseFileMapper clientSatisfactionAnalyseFileMapper; /** * 客户满意度调查列表 * @param * @return */ @Operation(summary = "客户满意度调查列表") @GetMapping("/pageClientSatisfaction") public Result> pageClientSatisfaction(Page page,ClientSatisfaction clientSatisfaction) throws Exception { return Result.success(clientSatisfactionService.pageClientSatisfaction(page, clientSatisfaction)); } /** * 客户满意度调查新增 * @return */ @Operation(summary = "客户满意度调查新增") @PostMapping("/addClientSatisfaction") public Result addClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){ Result error = fillAssessment(clientSatisfaction); if (error != null) { return error; } clientSatisfactionService.save(clientSatisfaction); // 返回保存后的记录(含自增id),前端据此上传新增时暂存的照片 return Result.success(clientSatisfaction); } /** * 客户满意度调查修改 * @return */ @Operation(summary = "客户满意度调查新增") @PostMapping("/updateClientSatisfaction") public Result updateClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction){ Result error = fillAssessment(clientSatisfaction); if (error != null) { return error; } return Result.success(clientSatisfactionService.updateById(clientSatisfaction)); } /** * 根据10道题的评分计算总分和满意度评定(80分及以上为满意) */ private Result fillAssessment(ClientSatisfaction clientSatisfaction) { Integer[] scores = {clientSatisfaction.getScore1(), clientSatisfaction.getScore2(), clientSatisfaction.getScore3(), clientSatisfaction.getScore4(), clientSatisfaction.getScore5(), clientSatisfaction.getScore6(), clientSatisfaction.getScore7(), clientSatisfaction.getScore8(), clientSatisfaction.getScore9(), clientSatisfaction.getScore10()}; int total = 0; for (int i = 0; i < scores.length; i++) { if (scores[i] == null) { return Result.fail("请完成第" + (i + 1) + "题评分"); } if (scores[i] < 5 || scores[i] > 10) { return Result.fail("评分必须在5到10分之间"); } total += scores[i]; } clientSatisfaction.setTotalScore(total); clientSatisfaction.setSatisfactionResult(total >= 80 ? 0 : 1); return null; } /** * 客户满意度调查修改 * @return */ @Operation(summary = "客户满意度调查新增") @DeleteMapping("/delClientSatisfaction") public Result updateClientSatisfaction(Integer clientSatisfactionId){ return Result.success(clientSatisfactionService.removeById(clientSatisfactionId)); } /** * 客户满意度导出 * @param clientSatisfactionId * @param response * @return */ @Operation(summary = "客户满意导出") @GetMapping("/exportWordClientSatisfaction") public Result exportWordClientSatisfaction(Integer clientSatisfactionId, HttpServletResponse response){ clientSatisfactionService.exportWordClientSatisfaction(clientSatisfactionId, response); return Result.success(); } /** * 客户满意度年度汇总导出 * @param year 汇总年度 */ @Operation(summary = "客户满意度年度汇总导出") @GetMapping("/exportAnnualSummary") public void exportAnnualSummary(Integer year, HttpServletResponse response){ clientSatisfactionService.exportAnnualSummary(year, response); } /** * 确认客户满意度 * @param clientSatisfaction 要修改客户满意度的状态对象 * @param userId 修改人id */ @Operation(summary = "确认客户满意度") @PostMapping("/confirmClientSatisfaction") public void confirmClientSatisfaction(@RequestBody ClientSatisfaction clientSatisfaction, Integer userId){ clientSatisfactionService.confirmClientSatisfaction(clientSatisfaction, userId); } /** * 新增客户分析附件 * @param file * @return */ @Operation(summary = "新增户分析附件") @PostMapping("/uploadAnalyseFile") public Result uploadAnalyseFile(MultipartFile file) { return Result.success(clientSatisfactionService.uploadAnalyseFile(file)); } /** * 查询户分析附件 * @return */ @Operation(summary = "查询户分析附件") @GetMapping("/pageAnalyseFile") public Result> pageAnalyseFile(Page page, ClientSatisfactionAnalyseFile analyseFile) { return Result.success(clientSatisfactionService.pageAnalyseFile(page, analyseFile)); } /** * 删除户分析附件 * @return */ @Operation(summary = "删除户分析附件") @DeleteMapping("/delAnalyseFile") public Result delAnalyseFile(Integer analyseFileId){ return Result.success(clientSatisfactionAnalyseFileMapper.deleteById(analyseFileId)); } /** * 查询满意度附件 */ @Operation(summary = "查询满意度附件") @GetMapping("/selectAttachments") public Result selectAttachments(Integer clientSatisfactionId) { return Result.success(clientSatisfactionService.selectAttachments(clientSatisfactionId)); } /** * 上传满意度附件 */ @Operation(summary = "上传满意度附件") @PostMapping("/uploadAttachment") public Result uploadAttachment(@RequestParam("clientSatisfactionId") Integer clientSatisfactionId, @RequestParam("file") MultipartFile file) { return Result.success(clientSatisfactionService.uploadAttachment(clientSatisfactionId, file)); } /** * 删除满意度附件 */ @Operation(summary = "删除满意度附件") @DeleteMapping("/deleteAttachment") public Result deleteAttachment(Long id) { return Result.success(clientSatisfactionService.deleteAttachment(id)); } }