package com.dg.core.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dg.core.ResultData; import com.dg.core.annotation.Authorization; import com.dg.core.annotation.CurrentUser; import com.dg.core.db.gen.entity.*; import com.dg.core.db.manual.mapper.util.ConstantPropertiesUtil; import com.dg.core.service.IGuideEvolveService; import com.dg.core.service.IGuideRepairOrderService; import com.dg.core.service.IOrganizationChartService; import com.dg.core.util.PermissionUtil; import com.dg.core.util.SmsUtil; import com.dg.core.util.TableDataInfo; import com.dg.core.util.WxUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * 工单管理 */ @Api(tags = {"工单管理接口"}) @RestController @RequestMapping("/guideRepairOrder") public class GuideRepairOrderController extends BaseController { @Resource private IGuideRepairOrderService iGuideRepairOrderService; @Autowired private IGuideEvolveService iGuideEvolveService; @Autowired IOrganizationChartService iOrganizationChartService; @Resource(name = "stringRedisTemplate") private StringRedisTemplate stringRedisTemplate; private static String guideRepairOrderCompleteTemplateId = "7ZCHHii87rWPwVkdhZnvNiYbYi_Buq0NXO10cmUhAFk"; @Resource SmsUtil smsUtil; /** * 提交导办订单 * @return */ @ApiOperation(value = "提交导办订单",response = GuideRepairOrder.class) @PostMapping("/addOrder") @Authorization public ResultData addOrder(@RequestBody GuideRepairOrder guideRepairOrder,@CurrentUser SysUser sysUser) { guideRepairOrder.setSubmitUserId(sysUser.getUserId().toString()); guideRepairOrder.setSubmitUserPhone(sysUser.getPhonenumber()); guideRepairOrder.setSubmitUserPhone(sysUser.getPhonenumber()); guideRepairOrder.setSubmitType(2); int i = iGuideRepairOrderService.addOrder(guideRepairOrder); if (i>0){ iGuideEvolveService.updateGuid(); return ResultData.success(); } else return ResultData.error("提交失败,请检查你是否有相同的咨询内容在处理中"); } /** * 获取详情 * @param Id * @param orderNum * @return */ @ApiOperation("获取订单详情") @GetMapping("/orderdata") @Authorization public ResultData selectConfigData(@RequestParam(value = "Id",required = false) String Id, @RequestParam(value = "orderNum",required = false) String orderNum, @CurrentUser SysUser sysUser) { if(StringUtils.isEmpty(Id) && StringUtils.isEmpty(orderNum)) { return ResultData.error("id或者订单号不能都为空"); } GuideRepairOrder order=iGuideRepairOrderService.selectConfigData(Id,orderNum); order.setGuideEvolveEntities(iGuideEvolveService.selectConfigList(Id,sysUser)); return ResultData.success(order); } /** * 分配人员 * @param order * @return */ @ApiOperation("分配人员") @PostMapping("/allocation") @Authorization public ResultData allocation(@RequestBody GuideRepairOrder order, @CurrentUser SysUser sysUser) { if(order==null) { return ResultData.error("参数不能为空"); } if(StringUtils.isEmpty(order.getGuideDepartmentId())) { return ResultData.error("导办部门id不能为空"); } if(StringUtils.isEmpty(order.getGuideUserId())) { return ResultData.error("导办人员id不能为空"); } //已分配 order.setState("2"); //新增分配记录 GuideEvolveEntity entity=new GuideEvolveEntity(); entity.setCreateTime(LocalDateTime.now()); entity.setUpdateTime(LocalDateTime.now()); entity.setState("11"); entity.setDepartmentalId(order.getGuideDepartmentId()); entity.setToUserId(order.getGuideUserId()); entity.setFromUserId(sysUser.getUserId().toString()); entity.setFromDepartmentalId(sysUser.getDepartmentId()); entity.setGuideId(order.getId().toString()); iGuideRepairOrderService.updateSysUserOrderNum(entity); iGuideEvolveService.insertConfig(entity); order=iGuideRepairOrderService.setTimeoutTim(order); return toAjax(iGuideRepairOrderService.updateConfig(order)); } /** * 转派人员 * @param order * @return */ @ApiOperation("转派人员") @PostMapping("/redeploy") @Authorization public ResultData redeploy(@RequestBody GuideRepairOrder order, @CurrentUser SysUser sysUser) { if(order==null) { return ResultData.error("参数不能为空"); } if(StringUtils.isEmpty(order.getGuideDepartmentId())) { return ResultData.error("导办部门id不能为空"); } if(StringUtils.isEmpty(order.getGuideUserId())) { return ResultData.error("导办人员id不能为空"); } //已分配 order.setState("2"); //新增转派记录 GuideEvolveEntity entity=new GuideEvolveEntity(); entity.setCreateTime(LocalDateTime.now()); entity.setUpdateTime(LocalDateTime.now()); entity.setState("10"); entity.setDepartmentalId(order.getGuideDepartmentId()); entity.setToUserId(order.getGuideUserId()); entity.setFromUserId(sysUser.getUserId()+""); entity.setFromDepartmentalId(sysUser.getDepartmentId()); entity.setGuideId(order.getId().toString()); iGuideEvolveService.insertConfig(entity); iGuideRepairOrderService.updateSysUserOrderNum(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } /** * 去处理 * @param entity * @return */ @ApiOperation("去处理") @PostMapping("/dispose") @Authorization public ResultData dispose(@RequestBody GuideEvolveEntity entity, @CurrentUser SysUser sysUser) { if(entity==null) { return ResultData.error("参数不能为空"); } if(StringUtils.isEmpty(entity.getGuideId())) { return ResultData.error("工单id不能为空"); } GuideRepairOrder order=iGuideRepairOrderService.selectConfigData(entity.getGuideId(),""); if(order==null) { return ResultData.error("该工单不存在!"); } if(StringUtils.equals(order.getState(),"3")) { return ResultData.error("该工单已办结!"); } if(StringUtils.equals(entity.getState(),"2")){//如果用户选择未解决则状态改为待办 order.setState("2"); entity.setState("9"); } else if(StringUtils.equals(entity.getState(),"4")){ //待评价 if (order.getSubmitType().equals(1))//小程序提交 { WxUtil wxUtil=new WxUtil(); String accessToken="0"; try { accessToken= stringRedisTemplate.boundValueOps("access_token:access_token:" + ConstantPropertiesUtil.WX_OPEN_APP_ID).get(); } catch (Exception e) { throw new RuntimeException(e); } SysUser submitUser = iGuideRepairOrderService.getSubmitUser(order); wxUtil.sendGuideRepairOrderComplete(submitUser.getOpenid(),accessToken,guideRepairOrderCompleteTemplateId,entity); smsUtil.sendSmsCompleteNew(order.getConsultUserPhone(),order.getMatterName()); } else if (order.getSubmitType().equals(2)){ smsUtil.sendSmsCompleteNew(order.getConsultUserPhone(),order.getMatterName()); } order.setState("4"); entity.setState("7"); } //新增已办结记录 entity.setCreateTime(LocalDateTime.now()); entity.setUpdateTime(LocalDateTime.now()); entity.setFromDepartmentalId(sysUser.getDepartmentId()); entity.setFromUserId(sysUser.getUserId()+""); entity.setGuideId(order.getId().toString()); iGuideEvolveService.insertConfig(entity); iGuideRepairOrderService.updateSysUserOrderNum(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } /** * 取消导办工单 * @param entity * @return */ @ApiOperation("取消导办工单") @PostMapping("/cancel") @Authorization public ResultData cancel(@RequestBody GuideEvolveEntity entity, @CurrentUser SysUser sysUser) { if(entity==null) { return ResultData.error("参数不能为空"); } if(StringUtils.isEmpty(entity.getGuideId())) { return ResultData.error("工单id不能为空"); } GuideRepairOrder order=iGuideRepairOrderService.selectConfigData(entity.getGuideId(),""); if(order==null) { return ResultData.error("该工单不存在!"); } if(!StringUtils.equals(order.getState(),"1")) { return ResultData.error("该工单不能取消!"); } //取消状态 order.setState("5"); //新增已取消记录 entity.setCreateTime(LocalDateTime.now()); entity.setUpdateTime(LocalDateTime.now()); entity.setState("5"); entity.setFromDepartmentalId(sysUser.getDepartmentId()); entity.setFromUserId(sysUser.getUserId()+""); entity.setGuideId(order.getId().toString()); iGuideEvolveService.insertConfig(entity); return toAjax(iGuideRepairOrderService.updateConfig(order)); } /** * 工单评价 * @param entity * @return */ @ApiOperation("工单评价") @PostMapping("/evaluate") @Authorization public ResultData evaluate(@RequestBody GuideRepairOrder entity, @CurrentUser SysUser sysUser) { if(entity==null) { return ResultData.error("参数不能为空"); } if(entity.getId()<=0) { return ResultData.error("工单id不能为空"); } if(StringUtils.isEmpty(entity.getEvaluateState())) { return ResultData.error("满意程度不能为空!"); } //已办结 entity.setState("3"); //新增已办结记录 GuideEvolveEntity guideEvolveEntity=new GuideEvolveEntity(); guideEvolveEntity.setCreateTime(LocalDateTime.now()); guideEvolveEntity.setUpdateTime(LocalDateTime.now()); guideEvolveEntity.setState("13"); guideEvolveEntity.setFromDepartmentalId(sysUser.getDepartmentId()); guideEvolveEntity.setFromUserId(sysUser.getUserId()+""); guideEvolveEntity.setGuideId(entity.getId().toString()); int i = iGuideRepairOrderService.updateConfig(entity); if (i>0) return toAjax( iGuideEvolveService.insertConfig(guideEvolveEntity)); else return ResultData.error(); } /** * 获取个人中心工单数据 * @param sysUser 当前登录人员信息 * @return */ @ApiOperation(value = "获取个人中心工单数据",response = GuideRepairOrder.class) @GetMapping("/personalCenter") @Authorization public ResultData selectBySubmitId(@CurrentUser SysUser sysUser){ return ResultData.success(iGuideRepairOrderService.selectBySubmitId(sysUser.getUserId().toString())); } /** * 获取工单列表(分页) * @param matterName * @return */ @ApiOperation(value = "获取工单列表(分页)",response = GuideRepairOrder.class) @GetMapping("/getList") @Authorization public TableDataInfo selectConfigList(@RequestParam(value = "pageNum",required = false) Integer pageNum, @RequestParam(value = "pageSize",required = false) Integer pageSize, @RequestParam(value = "matterName",required = false) String matterName, @RequestParam(value = "status",required = false) String status, @RequestParam(value = "createTimeStartTime",required = false) String createTimeStartTime, @RequestParam(value = "createTimeTimeEndTime",required = false) String createTimeTimeEndTime, @RequestParam(value = "classifyId",required = false)String classifyId, @CurrentUser SysUser sysUser) { Assert.notNull(pageNum, "pageNum 不能为空"); Assert.notNull(pageSize, "pageSize 不能为空"); Page pageParam = new Page<>(pageNum,pageSize); List ids=null; String userId=null; if( StringUtils.equals("2",sysUser.getRoleIds())) { if(StringUtils.equals("1",sysUser.getIsDivisionHead())) { ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); } else { userId=sysUser.getUserId()+""; ids=new ArrayList<>(); ids.add(sysUser.getDepartmentId()); } } else { ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); } List list = iGuideRepairOrderService.selectConfigList(pageParam,pageSize, matterName,ids,status,userId,createTimeStartTime,createTimeTimeEndTime,classifyId); int num=iGuideRepairOrderService.countConfigList(matterName,ids,status,userId); return getDataTable(list,num); } @ApiOperation("导办工单统计不同状态工单数") @GetMapping("/getWorkOrder") @Authorization public ResultData getWorkOrder(@CurrentUser SysUser sysUser) { WorkOrder workOrder=new WorkOrder(); List ids=null; String userId=null; if( StringUtils.equals("2",sysUser.getRoleIds())) { if(StringUtils.equals("1",sysUser.getIsDivisionHead())) { ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); } else { userId=sysUser.getUserId()+""; ids=new ArrayList<>(); ids.add(sysUser.getDepartmentId()); } } else { ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); } //状态(1待分配 2 待办结 3 已办结 4 待评价 5 已取消 ) workOrder.setAllNum(iGuideRepairOrderService.countStatisticsNum("",ids,null,null,null,null,null,userId)); workOrder.setWaitDistribution(iGuideRepairOrderService.countStatisticsNum("1",ids,null,null,null,null,null,userId)); workOrder.setWaitDealWith(iGuideRepairOrderService.countStatisticsNum("2",ids,null,null,null,null,null,userId)); workOrder.setHaveDealWith(iGuideRepairOrderService.countStatisticsNum("3",ids,null,null,null,null,null,userId)); workOrder.setRemainEvaluated(iGuideRepairOrderService.countStatisticsNum("4",ids,null,null,null,null,null,userId)); workOrder.setCanceled(iGuideRepairOrderService.countStatisticsNum("5",ids,null,null,null,null,null,userId)); //服务状态(1.已解决 2.未解决) workOrder.setUnsolved(iGuideRepairOrderService.countStatisticsNum(null,ids,null,null,null,null,"2",userId)); workOrder.setResolved(iGuideRepairOrderService.countStatisticsNum(null,ids,null,null,null,null,"1",userId)); //是否超时 (1 未超时 2已超时) 超时未办结 workOrder.setOvertime(iGuideRepairOrderService.countStatisticsNum(null,ids,null,"2",null,null,null,userId)); workOrder.setOvertimeWaitDealWith(iGuideRepairOrderService.countStatisticsNum("2",ids,null,"2",null,null,null,userId)); return ResultData.success(workOrder); } /** * 删除工单 * @param id * @return */ @ApiOperation(value = "删除工单",response = GuideRepairOrder.class) @DeleteMapping("/delete/{id}") @Authorization public ResultData deleteConfigById(@PathVariable("id") String id,@CurrentUser SysUser sysUser) { if(StringUtils.equals("1",sysUser.getUserType()) || StringUtils.equals("1",sysUser.getIsDivisionHead()) ) { return toAjax(iGuideRepairOrderService.deleteConfigById(id)); } return error("只有超管或者部门领导才能删除"); } /** * 删除评论 * @return */ @ApiOperation(value = "删除评论",response = GuideRepairOrder.class) @GetMapping("/deleteComment") @Authorization public ResultData deleteComment(@RequestParam(value = "id",required = false) Integer id,@CurrentUser SysUser sysUser){ return iGuideRepairOrderService.deleteComment(id,sysUser); } }