|
|
@@ -3,6 +3,7 @@ package com.cyksj.web.controller.manage.sys;
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.dto.Result;
|
|
|
@@ -14,10 +15,15 @@ import com.cyksj.mapper.manage.sys.WorkOrderChatHistoryMapper;
|
|
|
import com.cyksj.mapper.manage.sys.WorkOrderMapper;
|
|
|
import com.cyksj.model.entity.WorkOrder;
|
|
|
import com.cyksj.model.entity.WorkOrderChatHistory;
|
|
|
+import com.cyksj.model.excel.ExcelWorkOrderData;
|
|
|
+import com.cyksj.model.views.CmsUserVO;
|
|
|
import com.cyksj.model.views.WorkOrderChatHistoryView;
|
|
|
import com.cyksj.model.views.WorkOrderView;
|
|
|
+import com.cyksj.web.util.EasyExcelUtils;
|
|
|
import com.ejlchina.searcher.BeanSearcher;
|
|
|
import com.ejlchina.searcher.SearchResult;
|
|
|
+import com.ejlchina.searcher.param.Operator;
|
|
|
+import com.ejlchina.searcher.util.MapBuilder;
|
|
|
import com.ejlchina.searcher.util.MapUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -26,6 +32,8 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
/*
|
|
|
@@ -54,8 +62,22 @@ public class WorkOrderController {
|
|
|
|
|
|
@GetMapping("/get")
|
|
|
@SaCheckPermission("workOrder:view")
|
|
|
- public Result<SearchResult<WorkOrderView>> getWorkOrderList() {
|
|
|
- SearchResult<WorkOrderView> search = beanSearcher.search(WorkOrderView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
|
|
|
+ public Result<SearchResult<WorkOrderView>> getWorkOrderList(String nickname) {
|
|
|
+ long adminId = StpUtil.getLoginIdAsLong();
|
|
|
+ MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
|
|
|
+ //是不是客服
|
|
|
+ CmsUserVO isCustomer = beanSearcher.searchFirst(CmsUserVO.class, MapUtils.builder()
|
|
|
+ .field(CmsUserVO::getRoleNames, "客服").op(Operator.Contain)
|
|
|
+ .field(CmsUserVO::getId, adminId)
|
|
|
+ .build());
|
|
|
+ if (isCustomer != null) {
|
|
|
+ builder.field(WorkOrderView::getAssignCustomerServiceId, isCustomer.getId());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(nickname)) {
|
|
|
+ List<Long> userIds = userMapper.selectListByNickname(nickname);
|
|
|
+ builder.field(WorkOrderView::getUserId, userIds).op(Operator.InList);
|
|
|
+ }
|
|
|
+ SearchResult<WorkOrderView> search = beanSearcher.search(WorkOrderView.class, builder.build());
|
|
|
search.getDataList().forEach(data -> {
|
|
|
Optional.ofNullable(goodsDonMapper.selectById(data.getGoodsId()))
|
|
|
.ifPresent(goodsDon -> data.setTitle(goodsDon.getTitle()));
|
|
|
@@ -78,22 +100,22 @@ public class WorkOrderController {
|
|
|
*/
|
|
|
@PutMapping("/put/{id}")
|
|
|
@SaCheckPermission("workOrder:updateStatus")
|
|
|
- public Result<String> putWorkOrderStatus(@PathVariable Long id) {
|
|
|
+ public Result<String> putWorkOrderStatus(@PathVariable Long id, WorkOrder.Status status) {
|
|
|
long adminId = StpUtil.getLoginIdAsLong();
|
|
|
WorkOrder workOrder = workOrderMapper.selectById(id);
|
|
|
|
|
|
if (workOrder == null) {
|
|
|
throw BusinessRuntimeException.getInstance("该工单不存在");
|
|
|
}
|
|
|
- if (workOrder.getStatus() == WorkOrder.Status.close) {
|
|
|
- throw BusinessRuntimeException.getInstance("该工单已关闭");
|
|
|
+ if (workOrder.getStatus() != WorkOrder.Status.waiting) {
|
|
|
+ throw BusinessRuntimeException.getInstance("该工单已处理");
|
|
|
}
|
|
|
if (workOrder.getCloseCustomerServiceId() == 0) {
|
|
|
workOrder.setCloseCustomerServiceId(adminId);
|
|
|
}
|
|
|
- workOrder.setStatus(WorkOrder.Status.close);
|
|
|
+ workOrder.setStatus(status);
|
|
|
workOrderMapper.updateById(workOrder);
|
|
|
- return GatewayResponse.SUCCESS.newBuilder().toResult("关闭成功");
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult("处理成功");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -152,4 +174,31 @@ public class WorkOrderController {
|
|
|
}
|
|
|
return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出工单
|
|
|
+ */
|
|
|
+ @GetMapping("/export")
|
|
|
+ public void export(String nickname, String ids, HttpServletResponse response) {
|
|
|
+ long adminId = StpUtil.getLoginIdAsLong();
|
|
|
+ MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
|
|
|
+ //是不是客服
|
|
|
+ CmsUserVO isCustomer = beanSearcher.searchFirst(CmsUserVO.class, MapUtils.builder()
|
|
|
+ .field(CmsUserVO::getRoleNames, "客服").op(Operator.Contain)
|
|
|
+ .field(CmsUserVO::getId, adminId)
|
|
|
+ .build());
|
|
|
+ if (StrUtil.isNotBlank(ids)) {
|
|
|
+ String[] idAr = ids.split(",");
|
|
|
+ builder.field(ExcelWorkOrderData::getId, idAr).op(Operator.InList);
|
|
|
+ }
|
|
|
+ if (isCustomer != null) {
|
|
|
+ builder.field(ExcelWorkOrderData::getAssignCustomerServiceId, isCustomer.getId());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(nickname)) {
|
|
|
+ List<Long> userIds = userMapper.selectListByNickname(nickname);
|
|
|
+ builder.field(WorkOrderView::getUserId, userIds).op(Operator.InList);
|
|
|
+ }
|
|
|
+ List<ExcelWorkOrderData> list = beanSearcher.searchAll(ExcelWorkOrderData.class, builder.build());
|
|
|
+ EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelWorkOrderData.class, list, "用户工单", "用户工单", ExcelTypeEnum.XLSX, null);
|
|
|
+ }
|
|
|
}
|