guoyuji
2024-05-21 1ef275124e5c311daf06b84e961c62e43b748778
后端获取报表数据
7个文件已修改
1个文件已添加
88 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/BasicTable.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/hook/exportExcel.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/utils/request.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -2,7 +2,8 @@
import {Search} from "@element-plus/icons-vue"
import {defineEmits, onMounted, reactive, ref, watch} from "vue"
import {changeFilterEvent} from "@/hook"
import request from "@/utils/request";
import request from "@/utils/request"
import exportExcel  from "@/hook/exportExcel"
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
const xGrid = ref()
@@ -42,6 +43,9 @@
  ],//表头按钮
  toolbarConfig: {
    buttons: [],
    slots: {
      tools: 'toolbar_buttons'
    },
    // import: false,
    // export: true,
    // print: true,
@@ -143,6 +147,8 @@
}
</script>
<template>
@@ -186,6 +192,15 @@
            </div>
          </div>
        </template>
        <template #toolbar_buttons>
          <vxe-button style="margin-right: 0.5rem"
                      @click="exportExcel(props.childrenData.exportUrl,
                                          props.childrenData.exportName,
                                          basicProp.selectDate)">
            导出</vxe-button>
        </template>
        <template #pager>
          <!--使用 pager 插槽-->
          <!--        'PrevJump','NextJump', -->
north-glass-erp/northglass-erp/src/hook/exportExcel.js
New file
@@ -0,0 +1,36 @@
import request from "@/utils/request"
import {ElMessage} from "element-plus"
export default function exportExcel(url, fileName,date) {
    if(date===null){
        ElMessage.warning("请先选择日期")
        return
    }
    const date1 = new Date(date[0]);
    const date2 = new Date(date[1]);
    const timeDiff = Math.abs(date2.getTime() - date1.getTime());
    const daysDiff = timeDiff / (1000 * 3600 * 24);
    if(Math.floor(daysDiff)>180){
        ElMessage.warning("导出的筛选时间不能超过180天")
        return
    }
    request.post(url,date,{responseType :'blob'}).then(res => {
        const blob = new Blob([res])
        if ('download' in document.createElement('a')) { // 非IE下载
            const elink = document.createElement('a')
            elink.download = `${fileName}.xlsx`
            elink.style.display = 'none'
            elink.href = URL.createObjectURL(blob)
            document.body.appendChild(elink)
            elink.click()
            URL.revokeObjectURL(elink.href) // 释放URL 对象
            document.body.removeChild(elink)
        } else { // IE10+下载
            navigator.msSaveBlob(blob, fileName)
        }
    })
}
north-glass-erp/northglass-erp/src/utils/request.js
@@ -31,8 +31,10 @@
        //传递报错信息,把报错信息传递到pinia中
        userStore.setResponseCode(parseInt(res.code),res.msg)
        if(res.code!=='200'){
            if(response.config.responseType !== 'blob'){
            return Promise.reject(res.code)
        }
        }
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
@@ -45,26 +45,12 @@
  ],//表格表头字段
  data:[],//表格数据
  url :'/order/getOrderReport',
  exportUrl :'/order/exportOrderReport',
  exportName:'订单明细报表',
  footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
})
request.post('/order/exportOrderReport',null,{responseType :'blob'}).then(res => {
  const blob = new Blob([res])
  // console.log(blob)
  // if ('download' in document.createElement('a')) { // 非IE下载
  //   const elink = document.createElement('a')
  //   elink.download = 'a.xlsx'
  //   elink.style.display = 'none'
  //   elink.href = URL.createObjectURL(blob)
  //   document.body.appendChild(elink)
  //   elink.click()
  //   URL.revokeObjectURL(elink.href) // 释放URL 对象
  //   document.body.removeChild(elink)
  // } else { // IE10+下载
  //   navigator.msSaveBlob(blob, fileName)
  // }
  })
</script>
<template>
north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -17,6 +17,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -117,7 +118,9 @@
    }
    @ApiOperation("订单报表导出")
    @PostMapping("/exportOrderReport")
    public void exportOrderReport(HttpServletResponse response) throws IOException, IllegalAccessException, InstantiationException {
        DownExcel.download(response,Order.class, orderService.exportOrderReport(),"orderReport");
    public void exportOrderReport(HttpServletResponse response, @RequestBody List<LocalDate> dates) throws IOException, IllegalAccessException, InstantiationException {
        //参数:相应的数据,实体类信息,相应的方法(数据获取),生成的excel名字
        DownExcel.download(response,Order.class, orderService.exportOrderReport(dates),"orderReport");
    }
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
@@ -5,6 +5,7 @@
import com.example.erp.entity.sd.OrderDetail;
import org.apache.ibatis.annotations.Mapper;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@@ -20,7 +21,7 @@
    //type为了区别需不需要根据产品分类
    Map<String,Integer> getOrderReportTotal(Integer offset, Integer pageSize, String startDate, String endDate, OrderDetail orderDetail, String type);
    List<Order> exportOrderReport();
    List<Order> exportOrderReport(List<LocalDate> dates);
    List<OrderDetail> getOrderProductSummary(Integer offset, Integer pageSize, String startDate, String endDate, OrderDetail orderDetail);
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -311,8 +311,8 @@
        return map;
    }
    public List<Order> exportOrderReport() {
        return orderDetailMapper.exportOrderReport();
    public List<Order> exportOrderReport(List<LocalDate> dates) {
        return orderDetailMapper.exportOrderReport(dates);
    }
    public Map<String,Object> getOrderProductSummary(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) {
north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
@@ -407,6 +407,7 @@
                   on d.type_id = c.type_id
         left join sd.basic_glass_type as e
                   on e.type_id = d.belong
        where  date(a.create_time)>=#{dates[0]} and date(a.create_time) &lt;= #{dates[1]}
    </select>