EventHandleController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. package com.care.bms.controller;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.care.bigscreen.service.BigScreenService;
  6. import com.care.bms.service.BmsEventOrderService;
  7. import com.care.common.cache.RedisKeyConstant;
  8. import com.care.common.cache.RedisUtil;
  9. import com.care.common.entity.CareEventOrderChamb;
  10. import com.care.common.enums.CallResultEnum;
  11. import com.care.common.service.CareEventOrderChambService;
  12. import com.care.common.vo.order.*;
  13. import com.care.common.annotation.Permission;
  14. import com.care.common.enums.OrderStatusEnum;
  15. import com.care.common.exception.BDException;
  16. import com.care.common.util.PageResult;
  17. import com.care.common.util.Result;
  18. import com.care.common.util.WebPageUtils;
  19. import com.care.common.vo.PageReqVO;
  20. import com.care.common.vo.UserLogindConvertVO;
  21. import com.care.common.vo.outcall.CcCallResultVO;
  22. import com.google.common.collect.Maps;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiImplicitParam;
  25. import io.swagger.annotations.ApiImplicitParams;
  26. import io.swagger.annotations.ApiOperation;
  27. import lombok.extern.slf4j.Slf4j;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.web.bind.annotation.*;
  30. import javax.annotation.Resource;
  31. import javax.servlet.http.HttpServletRequest;
  32. import java.util.ArrayList;
  33. import java.util.Arrays;
  34. import java.util.List;
  35. import java.util.Map;
  36. /**
  37. * @Author: lilt
  38. * @Date: 2021/5/26
  39. * @Desc:
  40. */
  41. @RestController
  42. @Api(value = "EventHandleController", tags = { "事件处理" })
  43. @Slf4j
  44. @RequestMapping("/bms/event")
  45. @Permission
  46. public class EventHandleController {
  47. @Autowired
  48. private BmsEventOrderService bmsEventOrderService;
  49. @Resource
  50. private BigScreenService bigScreenService;
  51. @Resource
  52. private CareEventOrderChambService careEventOrderChambService;
  53. /**
  54. *未处理事件查询
  55. * @param request
  56. * @return
  57. */
  58. @GetMapping("/not-handle/list")
  59. @ApiOperation(tags = {"未处理事件"},value = "未处理事件查询")
  60. public Result<List<EventOrderVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token){
  61. try {
  62. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  63. List<EventOrderVO> datas = this.bmsEventOrderService.listTodoOrder(OrderStatusEnum.TODO.getValue(), null,loginUser);
  64. return PageResult.success(datas);
  65. }catch (BDException e) {
  66. log.error("未处理事件查询列表出现异常",e);
  67. return PageResult.error(e.getMessage());
  68. } catch (Exception e) {
  69. log.error("事件处理: 未处理事件查询出现异常",e);
  70. return PageResult.error( "获取列表失败");
  71. }
  72. }
  73. /**
  74. *未处理事件数量查询
  75. * @param request
  76. * @return
  77. */
  78. @GetMapping("/not-handle/getCount")
  79. @ApiOperation(tags = {"未处理事件"},value = "未处理事件数量查询 --二期新增")
  80. public Result<Integer> getNotHandleCount(HttpServletRequest request, @RequestHeader(value = "token") String token){
  81. try {
  82. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  83. Integer count = this.bmsEventOrderService.getTodoOrderCount(OrderStatusEnum.TODO.getValue(), null,loginUser);
  84. return Result.success(count);
  85. }catch (BDException e) {
  86. log.error("未处理事件数量查询出现异常",e);
  87. return Result.error(e.getMessage());
  88. } catch (Exception e) {
  89. log.error("事件处理: 未处理事件数量查询出现异常",e);
  90. return Result.error( "获取未处理事件数量失败");
  91. }
  92. }
  93. @GetMapping("/my-handle/list")
  94. @ApiOperation(tags = {"我的处理事件"},value = "我的处理事件查询 分页 --二期修改")
  95. @ApiImplicitParams(value = {
  96. @ApiImplicitParam(paramType = "header", name = "status", value = "状态"),
  97. @ApiImplicitParam(paramType = "query", name = "status", value = "状态"),
  98. @ApiImplicitParam(paramType = "query", name = "title", value = "工单标题"),
  99. @ApiImplicitParam(paramType = "query", name = "olderName", value = "老人姓名"),
  100. })
  101. public PageResult<List<EventOrderVO>> listMyHandle(HttpServletRequest request,@RequestHeader(value = "token") String token,
  102. @RequestParam(value = "status", required = false) String status,
  103. @RequestParam(value = "title", required = false) String title,
  104. @RequestParam(value = "olderName", required = false) String olderName,
  105. PageReqVO pageReqVo){
  106. try {
  107. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  108. IPage<EventOrderVO> pageResponse = this.bmsEventOrderService.listEvent4MyDo(status, title, olderName,loginUser ,pageReqVo);
  109. return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
  110. }catch (BDException e) {
  111. log.error("我的处理事件查询-分页列表出现异常",e);
  112. return PageResult.error(e.getMessage());
  113. } catch (Exception e) {
  114. log.error("事件处理: 未处理事件查询出现异常",e);
  115. return PageResult.error( "获取列表失败");
  116. }
  117. }
  118. /**
  119. *历史告警查询
  120. * @param request
  121. * @return
  122. */
  123. @GetMapping("/my-handle/listHisWarn")
  124. @ApiOperation(tags = {"我的处理事件"},value = "历史告警查询 -- 二期新增")
  125. public Result<List<OrderHandleHisVO>> listHisWarn(HttpServletRequest request, @RequestHeader(value = "token") String token,
  126. @RequestParam(value = "orderId", required = true) Long orderId){
  127. try {
  128. List<OrderHandleHisVO> datas = this.bmsEventOrderService.listHisWarn(orderId);
  129. return PageResult.success(datas);
  130. }catch (BDException e) {
  131. log.error("历史告警查询列表出现异常",e);
  132. return PageResult.error(e.getMessage());
  133. } catch (Exception e) {
  134. log.error("事件处理: 历史告警查询出现异常",e);
  135. return PageResult.error( "获取列表失败");
  136. }
  137. }
  138. @GetMapping("/list")
  139. @ApiOperation(tags = {"事件查询"},value = "事件查询 分页")
  140. public PageResult<List<EventOrderVO>> list(HttpServletRequest request,
  141. @RequestParam(value = "status", required = false) String status,
  142. @RequestParam(value = "title", required = false) String title,
  143. @RequestParam(value = "olderName", required = false) String olderName,
  144. @RequestParam(value = "chambId", required = false) String chambId,
  145. @RequestParam(value = "deviceCode", required = false) String deviceCode,
  146. PageReqVO pageReqVo){
  147. try {
  148. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  149. IPage<EventOrderVO> pageResponse = this.bmsEventOrderService.listEvent(status,title, olderName, chambId, deviceCode, loginUser ,pageReqVo);
  150. return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
  151. }catch (BDException e) {
  152. log.error("我的处理事件查询-分页列表出现异常",e);
  153. return PageResult.error(e.getMessage());
  154. } catch (Exception e) {
  155. log.error("事件处理: 未处理事件查询出现异常",e);
  156. return PageResult.error( "获取列表失败");
  157. }
  158. }
  159. @GetMapping("/listByChamb")
  160. @ApiOperation(tags = {"事件查询"},value = "事件查询 分页")
  161. public PageResult<List<EventOrderVO>> listByChamb(HttpServletRequest request,
  162. @RequestParam(value = "status", required = false) String status,
  163. @RequestParam(value = "chambId", required = false) String chambId,
  164. PageReqVO pageReqVo){
  165. try {
  166. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  167. IPage<EventOrderVO> pageResponse = this.bmsEventOrderService.listEventByChamb(status, chambId, loginUser ,pageReqVo);
  168. return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
  169. }catch (BDException e) {
  170. log.error("我的处理事件查询-分页列表出现异常",e);
  171. return PageResult.error(e.getMessage());
  172. } catch (Exception e) {
  173. log.error("事件处理: 未处理事件查询出现异常",e);
  174. return PageResult.error( "获取列表失败");
  175. }
  176. }
  177. @GetMapping("/listByDevice")
  178. @ApiOperation(tags = {"事件查询"},value = "事件查询 分页")
  179. public PageResult<List<EventOrderVO>> listByDevice(HttpServletRequest request,
  180. @RequestParam(value = "status", required = false) String status,
  181. @RequestParam(value = "deviceCode", required = false) String deviceCode,
  182. PageReqVO pageReqVo){
  183. try {
  184. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  185. IPage<EventOrderVO> pageResponse = this.bmsEventOrderService.listEventByDevice(status, deviceCode, loginUser ,pageReqVo);
  186. return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
  187. }catch (BDException e) {
  188. log.error("我的处理事件查询-分页列表出现异常",e);
  189. return PageResult.error(e.getMessage());
  190. } catch (Exception e) {
  191. log.error("事件处理: 未处理事件查询出现异常",e);
  192. return PageResult.error( "获取列表失败");
  193. }
  194. }
  195. /**
  196. *近期处理事件(处理中事件)
  197. * @param request
  198. * @return
  199. */
  200. @GetMapping("/recent-handle/list")
  201. @ApiOperation(tags = {"近期处理事件"},value = "近期处理事件(只有坐席能用)--二期新增")
  202. public Result<List<EventOrderVO>> listRecentHandle(HttpServletRequest request, @RequestHeader(value = "token") String token){
  203. try {
  204. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  205. List<EventOrderVO> datas = this.bmsEventOrderService.listRecentHandle(OrderStatusEnum.DOING.getValue(),loginUser);
  206. return PageResult.success(datas);
  207. }catch (BDException e) {
  208. log.error("近期处理事件查询列表出现异常",e);
  209. return PageResult.error(e.getMessage());
  210. } catch (Exception e) {
  211. log.error("事件处理: 近期处理事件查询出现异常",e);
  212. return PageResult.error( "获取列表失败");
  213. }
  214. }
  215. @PostMapping("/receive/{orderId}")
  216. @ApiOperation(tags = {"未处理事件"},value = "立即处理-领取工单")
  217. public Result<Object> receiveOrder(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  218. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  219. this.bmsEventOrderService.receiveOrder(orderId,loginUser);
  220. bigScreenService.pushRtEventFlag(loginUser.getOrgId(),loginUser.getStationId(),String.valueOf(orderId),"orderHandle");
  221. return Result.success("领取工单成功!");
  222. }
  223. @GetMapping("/getEventInfo/{orderId}")
  224. @ApiOperation(tags = {"事件处理"},value = "事件详情")
  225. public Result<EventOrderVO> getEventInfo(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  226. EventOrderVO orderInfo = this.bmsEventOrderService.getOrderInfo(orderId);
  227. return Result.success("查询成功!",orderInfo);
  228. }
  229. @GetMapping("/getChambList/{orderId}")
  230. @ApiOperation(tags = {"事件处理"},value = "主管家和改派管家列表查询 --二期新增")
  231. public Result<List<ChamberlainVO>> getChambList(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  232. List<ChamberlainVO> older = this.bmsEventOrderService.queryChambList(orderId);
  233. return Result.success("查询成功!",older);
  234. }
  235. @GetMapping("/getOlderList/{orderId}")
  236. @ApiOperation(tags = {"事件处理"},value = "被监护人信息列表")
  237. public Result<List<OrderOlderVO>> getOlderList(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  238. List<OrderOlderVO> older = this.bmsEventOrderService.queryOrderOlderList(orderId);
  239. return Result.success("查询成功!",older);
  240. }
  241. @GetMapping("/getChamberlain/{orderId}")
  242. @ApiOperation(tags = {"事件处理"},value = "事件定单管家查询")
  243. public Result<CareEventOrderChamb> getChamberlain(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
  244. CareEventOrderChamb chamb = this.bmsEventOrderService.queryChamberlain(orderId);
  245. return Result.success("查询成功!",chamb);
  246. }
  247. @GetMapping("/queryDoHis/{orderId}")
  248. @ApiOperation(tags = {"事件处理"},value = "事件处理历史记录")
  249. public Result<List<OrderHandleHisVO>> queryDoHis(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
  250. return Result.success("查询成功!",this.bmsEventOrderService.queryOrderHandleHis(orderId));
  251. }
  252. @GetMapping("/queryContactList/{orderId}")
  253. @ApiOperation(tags = {"事件处理"},value = "跟事件相关的联系人列表")
  254. public Result<Object> queryContactList(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  255. return Result.success("查询成功!",this.bmsEventOrderService.queryContactList(orderId));
  256. }
  257. @PostMapping("/complete/{orderId}")
  258. @ApiOperation(tags = {"事件处理"},value = "完成工单")
  259. public Result<Object> complete(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
  260. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  261. this.bmsEventOrderService.complete(orderId,loginUser);
  262. this.bmsEventOrderService.sendSmsToMemberAndLianxiren(orderId,"工单完成");
  263. return Result.success("操作成功!");
  264. }
  265. @PostMapping("/completeByIds/{ids}")
  266. @ApiOperation(tags = {"事件处理"},value = "完成工单")
  267. public Result<Object> completeByIds(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("ids") String ids){
  268. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  269. boolean execFlag = this.bmsEventOrderService.completeByIds(Arrays.asList(ids.split(",")), loginUser);
  270. return execFlag ? Result.success("操作成功!") : Result.error();
  271. }
  272. @GetMapping("/keyAuth/list/{orderId}")
  273. @ApiOperation(tags = {"事件处理"},value = "钥匙申请列表")
  274. public Result<List<OrderKeyApplyVO>> queryKeyAuthList(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
  275. return Result.success("查询成功!",this.bmsEventOrderService.queryKeyAuthList(orderId));
  276. }
  277. @PostMapping("/key/auth/{applyId}")
  278. @ApiOperation(tags = {"事件处理"},value = "钥匙授权")
  279. public Result<Object> keyAuth(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("applyId") Long applyId){
  280. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  281. if (this.bmsEventOrderService.keyAuth(applyId,loginUser)) {
  282. return Result.success("钥匙授权成功!");
  283. }else{
  284. return Result.error("钥匙授权失败!");
  285. }
  286. }
  287. @PostMapping("/contact/updateStatus/{orderContactId}/{status}")
  288. @ApiOperation(tags = {"事件处理"},value = "更新联系人状态")
  289. public Result<Object> updateOrderContactStatus(HttpServletRequest request,@RequestHeader("token") String token,
  290. @PathVariable("orderContactId") Long orderContactId,
  291. @PathVariable("status") Integer status){
  292. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  293. if (this.bmsEventOrderService.updateOrderContactStatus(orderContactId,status,loginUser)) {
  294. return Result.success("更新成功!");
  295. }else{
  296. return Result.error("更新失败!");
  297. }
  298. }
  299. @GetMapping("/getSmsTemplate/{orderId}")
  300. @ApiOperation(tags = {"事件处理"},value = "查询要发送的短息内容")
  301. public Result<String> getSmsTemplate( @PathVariable("orderId") Long orderId){
  302. return Result.success("查询成功!",this.bmsEventOrderService.getSmsTemplate(orderId));
  303. }
  304. @PostMapping("/sendSms/{orderContactId}")
  305. @ApiOperation(tags = {"事件处理"},value = "发送短信")
  306. public Result<Object> sendSms(HttpServletRequest request,@RequestHeader("token") String token,
  307. @PathVariable("orderContactId") Long orderContactId){
  308. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  309. boolean flag = this.bmsEventOrderService.sendSmsToLianxiren(orderContactId);
  310. if (flag){
  311. return Result.success("发送短信成功!");
  312. }else {
  313. return Result.error("发送短信失败!");
  314. }
  315. }
  316. @GetMapping("/getCallRadio/{hisId}")
  317. @ApiOperation(tags = {"事件处理"},value = "获取通话录音")
  318. public Result<CcCallResultVO> getCallRadio(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("hisId") Long hisId){
  319. CcCallResultVO ccCallResultVO = this.bmsEventOrderService.getCallRadio(hisId);
  320. if (ccCallResultVO != null) {
  321. return Result.success("获取通话录音!");
  322. }else{
  323. return Result.error("通话记录不存在!");
  324. }
  325. }
  326. @GetMapping("/stat")
  327. @ApiOperation(tags = {"事件查询"},value = "查询事件统计信息")
  328. public Result<Object> stat(HttpServletRequest request,@RequestHeader("token") String token, @RequestParam(value = "chambId", required = false) Long chambId,
  329. @RequestParam(value = "deviceCode", required = false) String deviceCode){
  330. UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
  331. EventStaVO ccCallResultVO = this.bmsEventOrderService.statOrder(loginUser, chambId, deviceCode);
  332. if (ccCallResultVO != null) {
  333. return Result.success("查询成功!",ccCallResultVO);
  334. }else{
  335. return Result.error("查询失败!");
  336. }
  337. }
  338. @GetMapping("/callResultCode")
  339. @ApiOperation(tags = {"事件处理"},value = "呼叫结果编码")
  340. public Result<List<Map<String,Object>>>getChamberlain(){
  341. List<Map<String,Object>> datas = new ArrayList<>();
  342. for (CallResultEnum callResultEnum : CallResultEnum.values()){
  343. Map<String,Object> data = Maps.newHashMap();
  344. data.put("name",callResultEnum.getName());
  345. data.put("value",callResultEnum.getValue());
  346. datas.add(data);
  347. }
  348. return Result.success("查询成功!",datas);
  349. }
  350. @GetMapping("/getRealTimeMonitorUrl/{orderId}")
  351. @ApiOperation(tags = {"事件处理"},value = "获取实时监控URL")
  352. public Result<String> getRealTimeMonitorUrl(HttpServletRequest request,@RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
  353. String url = this.bmsEventOrderService.getRealTimeMonitorUrl(orderId);
  354. if (StrUtil.isNotEmpty(url)) {
  355. return Result.success("查询成功!",url);
  356. }else{
  357. return Result.error("查询失败!");
  358. }
  359. }
  360. @GetMapping("/getFreeKeeperList/{orderId}")
  361. @ApiOperation(tags = {"事件处理"},value = "获取空闲管家列表 --二期新增")
  362. public Result<List<ChamberlainVO> > getFreeKeeperList(HttpServletRequest request,@RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
  363. List<ChamberlainVO> chamberlainVOList = this.bmsEventOrderService.getFreeChamberlainList(orderId);
  364. if (CollUtil.isNotEmpty(chamberlainVOList)) {
  365. return Result.success("查询成功!",chamberlainVOList);
  366. }else{
  367. return Result.error("没有空闲管家!");
  368. }
  369. }
  370. @PostMapping("/assignKeeper/{orderId}/{chambId}")
  371. @ApiOperation(tags = {"事件处理"},value = "指派管家 --二期新增")
  372. public Result<Object> assignKeeper(HttpServletRequest request,@RequestHeader("token") String token,
  373. @PathVariable("orderId") Long orderId,
  374. @PathVariable("chambId") Long chambId){
  375. if (this.bmsEventOrderService.updateCareEventOrderChamb(orderId,chambId)) {
  376. return Result.success("指派管家成功!");
  377. }else{
  378. return Result.error("指派管家失败!");
  379. }
  380. }
  381. @GetMapping("/getEventOrderChamb")
  382. @ApiOperation(tags = {"事件处理"},value = "获取管家处理结果 -- 三期修改")
  383. public Result<ChambEventOrderVO> getEventInfo(HttpServletRequest request, @RequestHeader("token") String token, @RequestParam("orderId") Long orderId, @RequestParam("chambId") Long chambId) {
  384. ChambEventOrderVO chambEventOrderVO = this.careEventOrderChambService.getChambOrderByOrderIdAndChambId(orderId, chambId);
  385. return Result.success("查询成功!", chambEventOrderVO);
  386. }
  387. }