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);
|
}
|
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<GuideRepairOrder> pageParam = new Page<>(pageNum,pageSize);
|
|
List<String> 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<GuideRepairOrder> 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<String> 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);
|
}
|
|
|
}
|