package com.ruoyi.satisfaction.controller;
|
|
import java.util.List;
|
import java.util.Map;
|
|
import com.github.pagehelper.ISelect;
|
import com.ruoyi.common.annotation.AddOrgId;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
import com.ruoyi.common.utils.PageUtils;
|
import com.ruoyi.satisfaction.domain.vo.PatSatisfactionReqVO;
|
import com.ruoyi.satisfaction.domain.vo.PatSatisfactionResVO;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.satisfaction.domain.PatSatisfaction;
|
import com.ruoyi.satisfaction.service.IPatSatisfactionService;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
/**
|
* 患者满意度 Controller(已迁入 ruoyi-satisfaction 模块)。
|
* <p>
|
* ⚠️ <b>URL 与出入参一字未改</b>:{@code @RequestMapping("/smartor/satisfaction")} 与全部
|
* {@code @PostMapping}/{@code @GetMapping} 路径保持原样,前端无需任何改动。
|
* 迁移只改了类所在的 Maven 模块与包名。
|
* <p>
|
* <b>开关</b>:本 Controller 始终注册(不随 {@code satisfaction.enabled} 消失)。
|
* 模块被关闭时由 {@code SatisfactionAvailabilityInterceptor}
|
* (见 {@code config/SatisfactionWebConfig})在进入方法前抛出 {@code ServiceException},
|
* 调用方会拿到<b>明确的错误提示</b>(而不是 404,能区分"模块被关闭"与"地址写错")。
|
* 拦截器只挂在本模块的 17 个满意度端点上,随访/问卷等其它业务完全不受影响。
|
*
|
* @author lihu
|
* @date 2025-06-30
|
*/
|
@Api(description = "患者满意度")
|
@RestController
|
@RequestMapping("/smartor/satisfaction")
|
public class PatSatisfactionController extends BaseController {
|
@Autowired
|
private IPatSatisfactionService patSatisfactionService;
|
|
/**
|
* 查询患者满意度列表
|
*/
|
@ApiOperation("查询患者满意度列表")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:list')")
|
@AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
|
@PostMapping("list")
|
public TableDataInfo list(@RequestBody PatSatisfaction patSatisfaction) {
|
PageUtils.startPageByPost(patSatisfaction.getPageNum(), patSatisfaction.getPageSize());
|
List<PatSatisfaction> list = patSatisfactionService.selectPatSatisfactionList(patSatisfaction);
|
//获取total
|
long total = PageUtils.count(new ISelect() {
|
@Override
|
public void doSelect() {
|
patSatisfaction.setPageNum(null);
|
patSatisfaction.setPageSize(null);
|
patSatisfactionService.selectPatSatisfactionList(patSatisfaction);
|
}
|
});
|
return getDataTable2(total, list);
|
}
|
|
/**
|
* 导出患者满意度列表
|
*/
|
@ApiOperation("导出患者满意度列表")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:export')")
|
@Log(title = "患者满意度", businessType = BusinessType.EXPORT)
|
@PostMapping("/export")
|
public void export(HttpServletResponse response, PatSatisfaction patSatisfaction) {
|
LoginUser loginUser = getLoginUser();
|
String orgid = loginUser.getUser().getOrgid();
|
String campusid = loginUser.getUser().getCampusid();
|
patSatisfaction.setOrgid(orgid);
|
patSatisfaction.setCampusid(campusid);
|
|
List<PatSatisfaction> list = patSatisfactionService.selectPatSatisfactionList(patSatisfaction);
|
ExcelUtil<PatSatisfaction> util = new ExcelUtil<PatSatisfaction>(PatSatisfaction.class);
|
util.exportExcel(response, list, "患者满意度数据");
|
}
|
|
/**
|
* 获取患者满意度详细信息
|
*/
|
@ApiOperation("获取患者满意度详细信息")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:query')")
|
@GetMapping(value = "/getInfo/{id}")
|
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
return success(patSatisfactionService.selectPatSatisfactionById(id));
|
}
|
|
/**
|
* 新增患者满意度
|
*/
|
@ApiOperation("新增患者满意度")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:add')")
|
@Log(title = "患者满意度", businessType = BusinessType.INSERT)
|
@AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
|
@PostMapping("/add")
|
public AjaxResult add(@RequestBody PatSatisfaction patSatisfaction) {
|
LoginUser loginUser = getLoginUser();
|
SysUser user = loginUser.getUser();
|
patSatisfaction.setCreateBy(user.getNickName());
|
patSatisfaction.setOrgid(user.getOrgid());
|
return toAjax(patSatisfactionService.insertPatSatisfaction(patSatisfaction));
|
}
|
|
|
/**
|
* 新增患者满意度
|
*/
|
@ApiOperation("批量新增患者满意度")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:add')")
|
@Log(title = "患者满意度", businessType = BusinessType.INSERT)
|
@PostMapping("/batchinsert")
|
public AjaxResult batchinsert(@RequestBody List<PatSatisfaction> patSatisfaction) {
|
Integer row = patSatisfactionService.batchInsert(patSatisfaction);
|
return toAjax(row);
|
}
|
|
/**
|
* 修改患者满意度
|
*/
|
@ApiOperation("修改患者满意度")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:edit')")
|
@Log(title = "患者满意度", businessType = BusinessType.UPDATE)
|
@AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
|
@PostMapping("/edit")
|
public AjaxResult edit(@RequestBody PatSatisfaction patSatisfaction) {
|
LoginUser loginUser = getLoginUser();
|
SysUser user = loginUser.getUser();
|
patSatisfaction.setCreateBy(user.getNickName());
|
return toAjax(patSatisfactionService.updatePatSatisfaction(patSatisfaction));
|
}
|
|
/**
|
* 删除患者满意度
|
*/
|
@ApiOperation("删除患者满意度")
|
//@PreAuthorize("@ss.hasPermi('smartor:satisfaction:remove')")
|
@Log(title = "患者满意度", businessType = BusinessType.DELETE)
|
@GetMapping("/remove/{ids}")
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
return toAjax(patSatisfactionService.deletePatSatisfactionByIds(ids));
|
}
|
|
/**
|
* 患者满意度统计
|
*/
|
@ApiOperation("患者满意度统计")
|
@PostMapping("/statistics")
|
public Map<String, Object> statistics(@RequestBody PatSatisfactionReqVO patSatisfactionReqVO) {
|
//后端不做分页了,由前端做
|
PatSatisfactionResVO statistics = patSatisfactionService.statistics(patSatisfactionReqVO);
|
return getDataTable3(CollectionUtils.isNotEmpty(statistics.getPatSatisfactionDetailEntities()) ? statistics.getPatSatisfactionDetailEntities().size() : 0, statistics);
|
}
|
|
/**
|
/**
|
* 患者满意度统计(维度)
|
*/
|
@ApiOperation("患者满意度统计(维度)")
|
@PostMapping("/statisticsByDimension")
|
public Map<String, Object> statisticsByDimension(@RequestBody PatSatisfactionReqVO patSatisfactionReqVO) {
|
//后端不做分页了,由前端做
|
PatSatisfactionResVO statistics = patSatisfactionService.statisticsByDimension(patSatisfactionReqVO);
|
return getDataTable3(CollectionUtils.isNotEmpty(statistics.getPatSatisfactionDetailEntities()) ? statistics.getPatSatisfactionDetailEntities().size() : 0, statistics);
|
}
|
/**
|
* 患者满意度柱状图信息
|
*/
|
@ApiOperation("患者满意度柱状图信息(分类)")
|
@PostMapping("/satisfactionGraph")
|
public Map<String, Object> satisfactionGraph(@RequestBody PatSatisfactionReqVO patSatisfactionReqVO) {
|
Map<String, Object> patSatisfactionGraphResVOS = patSatisfactionService.satisfactionGraph(patSatisfactionReqVO);
|
return getDataTable3(0, patSatisfactionGraphResVOS);
|
}
|
|
/**
|
* 患者满意度柱状图信息
|
*/
|
@ApiOperation("患者满意度柱状图信息(维度)")
|
@PostMapping("/satisfactionGraphDimension")
|
public Map<String, Object> satisfactionGraphDimension(@RequestBody PatSatisfactionReqVO patSatisfactionReqVO) {
|
Map<String, Object> patSatisfactionGraphResVOS = patSatisfactionService.satisfactionGraphDimension(patSatisfactionReqVO);
|
return getDataTable3(0, patSatisfactionGraphResVOS);
|
}
|
|
|
}
|