Explorar el Código

fix 导出工单

zoujiajian hace 3 años
padre
commit
eb98128dbc

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/WorkOrder.java

@@ -54,6 +54,7 @@ public class WorkOrder extends BaseEntity{
 		String desc;
 
 		Type(String desc) {
+			this.desc = desc;
 		}
 	}
 
@@ -67,6 +68,7 @@ public class WorkOrder extends BaseEntity{
 		String desc;
 
 		Status(String desc) {
+			this.desc = desc;
 		}
 	}
 }

+ 80 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelWorkOrderData.java

@@ -0,0 +1,80 @@
+package com.cyksj.model.excel;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.cyksj.model.entity.WorkOrder;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: ExcelWorkOrderData
+ *创建者: JavaZou
+ *创建时间:2023/6/26 15:19
+ */
+@Getter
+@Setter
+@SearchBean(tables = "work_order wo left join user u on u.id = wo.user_id" +
+		" left join goods_don g on g.id = wo.goods_id" +
+		" left join goods_don_sku sku on sku.id = wo.sku_id")
+public class ExcelWorkOrderData {
+	@DbField("wo.account")
+	@ExcelProperty("账号")
+	private String account;
+
+	@DbField("g.title")
+	@ExcelProperty("平台")
+	private String title;
+
+	@DbField("sku.spec_val")
+	@ExcelProperty("规格")
+	private String specVal;
+
+	@DbField("wo.user_id")
+	@ExcelProperty("用户ID")
+	private Long userId;
+
+	@DbField("select nickname from user where id = wo.user_id limit 1")
+	@ExcelProperty("用户名")
+	private String nickname;
+
+	@DbField("wo.type")
+	@ExcelIgnore
+	private WorkOrder.Type type;
+
+	@DbField("wo.assign_customer_service_id")
+	@ExcelIgnore
+	private Long assignCustomerServiceId;
+
+	@DbField("wo.status")
+	@ExcelIgnore
+	private WorkOrder.Status status;
+
+	@DbIgnore
+	@ExcelProperty("问题类型")
+	private String questionType;
+
+	@DbIgnore
+	@ExcelProperty("问题状态")
+	private String questionStatus;
+
+	@DbField("wo.created_time")
+	@ExcelProperty("提交时间")
+	private Date createdTime;
+
+	public String getQuestionType() {
+		if (type == null) return StrUtil.EMPTY;
+		return type.getDesc();
+	}
+
+	public String getQuestionStatus() {
+		if (status == null) return StrUtil.EMPTY;
+		return status.getDesc();
+	}
+}

+ 33 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/sys/WorkOrderController.java

@@ -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,9 +15,11 @@ 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;
@@ -29,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;
 
 /*
@@ -57,7 +62,7 @@ public class WorkOrderController {
 
 	@GetMapping("/get")
 	@SaCheckPermission("workOrder:view")
-	public Result<SearchResult<WorkOrderView>> getWorkOrderList() {
+	public Result<SearchResult<WorkOrderView>> getWorkOrderList(String nickname) {
 		long adminId = StpUtil.getLoginIdAsLong();
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		//是不是客服
@@ -68,6 +73,10 @@ public class WorkOrderController {
 		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()))
@@ -165,4 +174,27 @@ public class WorkOrderController {
 		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 导出工单
+	 */
+	@GetMapping("/export")
+	public void export(String nickname, 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 (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);
+	}
 }