lyhzzz 1 year ago
parent
commit
b85a919a26

+ 4 - 0
src/main/java/com/fdkankan/manage/common/CacheUtil.java

@@ -1,6 +1,7 @@
 package com.fdkankan.manage.common;
 package com.fdkankan.manage.common;
 
 
 import com.fdkankan.manage.vo.request.AgentNewLogParam;
 import com.fdkankan.manage.vo.request.AgentNewLogParam;
+import com.fdkankan.manage.vo.request.FeedbackParam;
 import com.fdkankan.manage.vo.request.OrderParam;
 import com.fdkankan.manage.vo.request.OrderParam;
 
 
 public class CacheUtil {
 public class CacheUtil {
@@ -14,5 +15,8 @@ public class CacheUtil {
     public static String laserRegEnv;
     public static String laserRegEnv;
     public static OrderParam orderParam = new OrderParam();
     public static OrderParam orderParam = new OrderParam();
     public static AgentNewLogParam agentParam = new AgentNewLogParam();
     public static AgentNewLogParam agentParam = new AgentNewLogParam();
+    public static FeedbackParam feedbackParam = new FeedbackParam();
+
+
 
 
 }
 }

+ 7 - 0
src/main/java/com/fdkankan/manage/controller/FeedbackController.java

@@ -8,6 +8,9 @@ import com.fdkankan.manage.vo.request.FeedbackParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
 /**
  * <p>
  * <p>
  *  前端控制器
  *  前端控制器
@@ -40,5 +43,9 @@ public class FeedbackController extends BaseController{
         return ResultData.ok( feedbackService.scoreAug());
         return ResultData.ok( feedbackService.scoreAug());
     }
     }
 
 
+    @GetMapping("/export")
+    public void export(){
+        feedbackService.export(request,response);
+    }
 }
 }
 
 

+ 3 - 0
src/main/java/com/fdkankan/manage/service/IFeedbackService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage.vo.request.FeedbackParam;
 import com.fdkankan.manage.vo.request.FeedbackParam;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -23,4 +24,6 @@ public interface IFeedbackService extends IService<Feedback> {
     Object scoreAug();
     Object scoreAug();
 
 
     Object getDefaultAddress(HttpServletRequest request);
     Object getDefaultAddress(HttpServletRequest request);
+
+    void export(HttpServletRequest request, HttpServletResponse response);
 }
 }

+ 54 - 5
src/main/java/com/fdkankan/manage/service/impl/FeedbackServiceImpl.java

@@ -1,10 +1,14 @@
 package com.fdkankan.manage.service.impl;
 package com.fdkankan.manage.service.impl;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.extra.servlet.ServletUtil;
 import cn.hutool.extra.servlet.ServletUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.common.CacheUtil;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.common.ResultCode;
@@ -12,11 +16,15 @@ import com.fdkankan.manage.entity.Feedback;
 import com.fdkankan.manage.entity.FeedbackOption;
 import com.fdkankan.manage.entity.FeedbackOption;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.mapper.IFeedbackMapper;
 import com.fdkankan.manage.mapper.IFeedbackMapper;
+import com.fdkankan.manage.service.IExcelService;
 import com.fdkankan.manage.service.IFeedbackOptionService;
 import com.fdkankan.manage.service.IFeedbackOptionService;
 import com.fdkankan.manage.service.IFeedbackService;
 import com.fdkankan.manage.service.IFeedbackService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.manage.util.ProvinceUtils;
 import com.fdkankan.manage.util.ProvinceUtils;
 import com.fdkankan.manage.vo.request.FeedbackParam;
 import com.fdkankan.manage.vo.request.FeedbackParam;
+import com.fdkankan.manage.vo.request.OrderParam;
+import com.fdkankan.manage.vo.response.DownOrderVo;
+import com.fdkankan.manage.vo.response.FeedbackVo;
 import com.fdkankan.manage.vo.response.GroupByAvg;
 import com.fdkankan.manage.vo.response.GroupByAvg;
 import com.fdkankan.manage.vo.response.IpAddressVo;
 import com.fdkankan.manage.vo.response.IpAddressVo;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.redis.util.RedisUtil;
@@ -25,12 +33,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -50,6 +56,11 @@ public class FeedbackServiceImpl extends ServiceImpl<IFeedbackMapper, Feedback>
 
 
     @Override
     @Override
     public Object pageList(FeedbackParam param) {
     public Object pageList(FeedbackParam param) {
+        CacheUtil.feedbackParam = param;
+        return PageInfo.PageInfo(this.pageListByParam(param));
+    }
+
+    private  Page<FeedbackVo> pageListByParam(FeedbackParam param){
         LambdaQueryWrapper<Feedback> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Feedback> wrapper = new LambdaQueryWrapper<>();
         if(param.getHardwareOptionId() != null){
         if(param.getHardwareOptionId() != null){
             wrapper.eq(Feedback::getHardwareOptionId,param.getHardwareOptionId());
             wrapper.eq(Feedback::getHardwareOptionId,param.getHardwareOptionId());
@@ -63,6 +74,7 @@ public class FeedbackServiceImpl extends ServiceImpl<IFeedbackMapper, Feedback>
         if(param.getStatus() != null){
         if(param.getStatus() != null){
             wrapper.eq(Feedback::getStatus,param.getStatus());
             wrapper.eq(Feedback::getStatus,param.getStatus());
         }
         }
+        List<FeedbackVo> listVo = new ArrayList<>();
         Page<Feedback> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
         Page<Feedback> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
         HashSet<Integer> optionIds = new HashSet<>();
         HashSet<Integer> optionIds = new HashSet<>();
         Set<Integer> collect = page.getRecords().stream().map(Feedback::getHardwareOptionId).collect(Collectors.toSet());
         Set<Integer> collect = page.getRecords().stream().map(Feedback::getHardwareOptionId).collect(Collectors.toSet());
@@ -82,8 +94,15 @@ public class FeedbackServiceImpl extends ServiceImpl<IFeedbackMapper, Feedback>
             if(record.getIndustryOptionId()!=null && map.get(record.getIndustryOptionId())!= null){
             if(record.getIndustryOptionId()!=null && map.get(record.getIndustryOptionId())!= null){
                 record.setIndustryOption(map.get(record.getIndustryOptionId()));
                 record.setIndustryOption(map.get(record.getIndustryOptionId()));
             }
             }
+            FeedbackVo feedbackVo = new FeedbackVo();
+            BeanUtil.copyProperties(record,feedbackVo);
+            listVo.add(feedbackVo);
         }
         }
-        return PageInfo.PageInfo(page);
+
+        Page<FeedbackVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
+        voPage.setRecords(listVo);
+        voPage.setTotal(page.getTotal());
+        return voPage;
     }
     }
 
 
     @Override
     @Override
@@ -152,4 +171,34 @@ public class FeedbackServiceImpl extends ServiceImpl<IFeedbackMapper, Feedback>
         redisUtil.set(redisKey,JSONObject.toJSONString(addressByIp));
         redisUtil.set(redisKey,JSONObject.toJSONString(addressByIp));
         return  addressByIp;
         return  addressByIp;
     }
     }
+
+    @Autowired
+    IExcelService excelService;
+
+    @Override
+    public void export(HttpServletRequest req, HttpServletResponse resp) {
+        FeedbackParam feedbackParam = CacheUtil.feedbackParam;
+        feedbackParam.setPageNum(1);
+        feedbackParam.setPageSize(5000);
+        Page<FeedbackVo> page = this.pageListByParam(feedbackParam);
+
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(resp.getOutputStream(),FeedbackVo.class).build();
+            excelService.commonExport(req,resp,"用户反馈列表",page.getRecords(),excelWriter);
+            while (page.hasNext()){
+                feedbackParam.setPageNum(feedbackParam.getPageNum()+1);
+                page = this.pageListByParam(feedbackParam);
+                if(page.getRecords().size() >0){
+                    excelService.commonExport(req,resp,"用户反馈列表",page.getRecords(),excelWriter);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter !=null){
+                excelWriter.finish();
+            }
+        }
+    }
 }
 }

+ 181 - 0
src/main/java/com/fdkankan/manage/vo/response/FeedbackVo.java

@@ -0,0 +1,181 @@
+package com.fdkankan.manage.vo.response;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fdkankan.manage.common.typehandle.JsonArrayTypeHandler;
+import com.fdkankan.manage.entity.FeedbackOption;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+
+@Data
+public class FeedbackVo {
+
+    @ExcelIgnore
+    private Integer id;
+
+    /**
+     * 硬件产品id
+     */
+    @ExcelIgnore
+    private Integer hardwareOptionId;
+    /**
+     * 软件产品id
+     */
+    @ExcelIgnore
+    private Integer softwareOptionId;
+    /**
+     * 所在行业id
+     */
+    @ExcelIgnore
+    private Integer industryOptionId;
+
+    @ExcelIgnore
+    private JSONArray problemDescImgs;
+
+    @ExcelIgnore
+    private JSONArray solutionImgs;
+
+    /**
+     * 硬件产品id
+     */
+    @ExcelIgnore
+    private FeedbackOption hardwareOption;
+    /**
+     * 软件产品id
+     */
+    @ExcelIgnore
+    private FeedbackOption softwareOption;
+    /**
+     * 所在行业id
+     */
+    @ExcelIgnore
+    private FeedbackOption industryOption;
+
+    /**
+     * 问题描述
+     */
+    @ExcelProperty("问题描述")
+    private String problemDesc;
+
+    /**
+     * 硬件产品id
+     */
+    @ExcelProperty("硬件产品")
+    private String hardwareOptionName;
+    /**
+     * 软件产品id
+     */
+    @ExcelProperty("软件产品")
+    private String softwareOptionName;
+    /**
+     * 所在行业id
+     */
+    @ExcelProperty("所在行业")
+    private String industryOptionName;
+
+    /**
+     * 解决方案
+     */
+    @ExcelProperty("期望解决方案")
+    private String solution;
+
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty("姓名")
+    private String nickName;
+
+    /**
+     * 联系方式
+     */
+    @ExcelProperty("联系方式")
+    private String phone;
+
+    /**
+     * 地址
+     */
+    @ExcelProperty("国家和地区")
+    private String address;
+
+    /**
+     * 评分
+     */
+    @ExcelIgnore
+    private BigDecimal score;
+
+    @ExcelProperty("评分")
+    private String scoreStr;
+
+    /**
+     * 评分理由
+     */
+    @ExcelProperty("评分理由")
+    private String scoreReason;
+
+
+    @ExcelProperty("反馈时间")
+    private String createTime;
+
+    /**
+     * 处理状态 0未处理,1已处理
+     */
+    @ExcelIgnore
+    private Integer status;
+
+    @ExcelProperty("处理状态")
+    private String statusStr;
+
+    /**
+     * 处理结果
+     */
+    @ExcelProperty("处理结果")
+    private String result;
+
+
+    public String getStatusStr() {
+        if(status != null){
+            switch (status){
+                case 0 : return "待处理";
+                case 1 : return "已处理";
+            }
+        }
+        return statusStr;
+    }
+
+    public String getHardwareOptionName() {
+        if(hardwareOption != null){
+            return hardwareOption.getNameCn();
+        }
+        return hardwareOptionName;
+    }
+
+    public String getSoftwareOptionName() {
+        if(softwareOption != null){
+            return softwareOption.getNameCn();
+        }
+        return softwareOptionName;
+    }
+
+    public String getIndustryOptionName() {
+        if(industryOption != null){
+            return industryOption.getNameCn();
+        }
+        return industryOptionName;
+    }
+
+    public String getScoreStr() {
+        if(score != null){
+            BigDecimal bigDecimal = score.setScale(1, RoundingMode.HALF_UP);
+            return bigDecimal.toString();
+        }
+        return scoreStr;
+    }
+}