From 717122a8929e0ea00acea4c7b1516e03a766c944 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Wed, 27 Jan 2021 22:42:03 +0800
Subject: [PATCH] 新增交易流水
---
zq-erp/src/main/resources/templates/views/admin/hive/statistics/jyls.html | 50 ++++--
zq-erp/src/main/java/com/matrix/system/hive/statistics/OrderFlowAction.java | 98 +++++++++---
zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js | 11 +
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/jyls.html | 314 +++++++++++++++++++++++++++++++++++++++
4 files changed, 431 insertions(+), 42 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/OrderFlowAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/OrderFlowAction.java
index 70ac932..3769823 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/OrderFlowAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/OrderFlowAction.java
@@ -1,44 +1,29 @@
package com.matrix.system.hive.statistics;
-import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
-import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.DateUtil;
-import com.matrix.core.tools.WebUtil;
+import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.excl.ExcelSheetPO;
+import com.matrix.core.tools.excl.ExcelUtil;
import com.matrix.core.tools.excl.ExcelVersion;
-import com.matrix.system.app.vo.UserInfoVo;
-import com.matrix.system.common.bean.SysUsers;
-import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.tools.DataAuthUtil;
-import com.matrix.system.common.tools.ResponseHeadUtil;
import com.matrix.system.hive.action.util.QueryUtil;
-import com.matrix.system.hive.bean.AchieveNew;
-import com.matrix.system.hive.bean.SysOrder;
-import com.matrix.system.hive.bean.SysOrderFlow;
-import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.dao.SysOrderFlowDao;
import com.matrix.system.hive.dto.OrderFlowListDto;
-import com.matrix.system.hive.service.AchieveNewService;
-import com.matrix.system.hive.service.SysOrderItemService;
-import com.matrix.system.hive.service.SysOrderService;
import com.matrix.system.hive.vo.OrderFlowVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
-import io.swagger.models.auth.In;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -50,11 +35,8 @@
@RequestMapping(value = "/admin/orderFlow")
public class OrderFlowAction {
-
@Resource
private SysOrderFlowDao orderFlowDao;
-
-
/**
* 交易流水查询
*/
@@ -63,9 +45,9 @@
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = OrderFlowListDto.class)
})
- @PostMapping(value = "/findSumDailyInfoNew")
+ @PostMapping(value = "/findOrderFlow")
public @ResponseBody
- AjaxResult findSumDailyInfoNew(@RequestBody OrderFlowListDto orderFlowListDto) {
+ AjaxResult findOrderFlow(@RequestBody OrderFlowListDto orderFlowListDto) {
if (!DataAuthUtil.hasAllShopAuth()) {
QueryUtil.setQueryLimit(orderFlowListDto);
} else {
@@ -77,6 +59,74 @@
return result;
}
+ /**
+ * 导出Excel
+ */
+ @GetMapping(value = "/exportOrderFlowExcel")
+ public void exportOrderFlowExcel(OrderFlowListDto orderFlowListDto, HttpServletResponse res) {
+ OutputStream os = null;
+ try {
+ if (!DataAuthUtil.hasAllShopAuth()) {
+ QueryUtil.setQueryLimit(orderFlowListDto);
+ } else {
+ QueryUtil.setQueryLimitCom(orderFlowListDto);
+ }
+ orderFlowListDto.setLimit(null);
+ List<OrderFlowVo> rows = orderFlowDao.selectInPage(orderFlowListDto);
+ res.setCharacterEncoding("UTF-8");
+ res.setHeader("content-type", "application/octet-stream;charset=UTF-8");
+ res.setContentType("application/octet-stream;charset=UTF-8");
+
+ Date date = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss");
+ res.setHeader("Content-Disposition", "attachment;filename=" +
+ java.net.URLEncoder.encode("交易流水" + dateFormat.format(date) + ".xlsx".trim(), "UTF-8"));
+ os = res.getOutputStream();
+ ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, disPoseExcelData(rows), os, true);
+ } catch (Exception e) {
+ LogUtil.error("交易流水导出异常", e);
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ LogUtil.error("关闭资源异常", e);
+ }
+ }
+ }
+ }
+
+ private List<ExcelSheetPO> disPoseExcelData(List<OrderFlowVo> orderFlowVos) {
+ List<ExcelSheetPO> res = new ArrayList<>();
+ ExcelSheetPO orderSheet = new ExcelSheetPO();
+ orderSheet.setSheetName("交易流水");
+ orderSheet.setTitle("交易流水");
+ String[] header = new String[]{"订单编号", "交易内容", "交易时间", "交易类型", "交易金额", "会员姓名",
+ "支付方式", "支付流水号", "操作人", "门店名称"};
+ orderSheet.setHeaders(header);
+ List<List<Object>> body = new ArrayList<>();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
+ for (OrderFlowVo flowVo : orderFlowVos) {
+ List<Object> bodyItem = new ArrayList<>();
+ bodyItem.add(flowVo.getOrderNo());
+ bodyItem.add(flowVo.getFlowContent());
+ bodyItem.add(DateUtil.dateFormatStr(flowVo.getCreateTime(),DateUtil.DATE_FORMAT_MM));
+ bodyItem.add(flowVo.getFlowType());
+ bodyItem.add(flowVo.getAmount());
+ bodyItem.add(flowVo.getVipName());
+ bodyItem.add(flowVo.getPayMethod());
+ bodyItem.add(flowVo.getFlowNo());
+ bodyItem.add(flowVo.getStaffName());
+ bodyItem.add(flowVo.getShopName());
+ body.add(bodyItem);
+ }
+ orderSheet.setDataList(body);
+ res.add(orderSheet);
+ return res;
+ }
+
+
+
}
diff --git a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
index b11d542..ef97725 100644
--- a/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
+++ b/zq-erp/src/main/resources/static/js/systools/AjaxProxyVue.js
@@ -240,7 +240,16 @@
return root.children;
},
-
+ /** json对象转Url参数**/
+ jsonToUrlParam:function(obj){
+ let str="";
+ for(item in obj){
+ if(obj[item]){
+ str+=item+"="+obj[item]+"&"
+ }
+ }
+ return str;
+ }
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/jyls.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/jyls.html
new file mode 100644
index 0000000..d016abf
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/jyls.html
@@ -0,0 +1,314 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
+<head>
+ <meta charset="utf-8">
+ <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+ <meta name="renderer" content="webkit|ie-comp|ie-stand">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport"
+ content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+ <meta http-equiv="Cache-Control" content="no-siteapp"/>
+ <LINK rel="Bookmark" href="../images/favicon.ico">
+ <!-- 本框架基本脚本和样式 -->
+ <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
+ <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+ <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+ <title></title>
+ <style>
+ .panel-body{
+ overflow: hidden;
+ }
+ .buttonPanel{
+ background: #ffffff;
+ padding: 10px 10px ;
+ margin: 0px 0px 10px 0px;
+ }
+ .rowPanel{
+ background: #ffffff;
+ padding: 0px 10px ;
+ padding-top: 10px;
+ margin: 0px 0px 10px 0px;
+ }
+ .paginationStyle{
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ text-align: right;
+ }
+ </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+ <el-row class="buttonPanel">
+ <el-button @click="exportExcel" type="primary" >导出</el-button>
+ </el-row>
+
+ <el-row class="rowPanel" >
+ <el-form ref="form" :model="form" inline >
+ <el-form-item label="会员" prop="queryKey">
+ <el-input v-model="form.queryKey" placeholder="请输入会员姓名/手机"></el-input>
+ </el-form-item>
+
+ <el-form-item label="操作人" prop="oprationMan" >
+ <el-input v-model="form.oprationMan"></el-input>
+ </el-form-item>
+
+ <el-form-item label="订单号" prop="orderNo">
+ <el-input v-model="form.orderNo"></el-input>
+ </el-form-item>
+
+ <el-form-item label="交易类型" prop="flowType">
+ <el-select v-model="form.flowType" placeholder="请选择">
+ <el-option
+ v-for="item in flowTypeList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="支付方式" prop="payMethod">
+ <el-select v-model="form.payMethod" placeholder="请选择">
+ <el-option
+ v-for="item in payMethodList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="时间" prop="datetimeArr">
+ <el-date-picker
+ v-model="form.datetimeArr"
+ type="daterange"
+ range-separator="至" format="yyyy-MM-dd HH:mm"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期">
+ </el-date-picker>
+ </el-form-item>
+
+ <el-form-item label="交易门店" prop="shopId">
+ <el-select v-model="form.shopId" placeholder="请选择">
+ <el-option
+ v-for="item in shopList"
+ :key="item.shopShortName"
+ :label="item.shopShortName"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+
+
+ <el-button type="primary" @click="search" >搜索</el-button>
+ <el-button @click="resetForm('form')">重置</el-button>
+ </el-form>
+ </el-row>
+
+ <el-row class="table-style" >
+
+ <el-table id="proj" :data="table.rows" :height="height" stripe>
+ <el-table-column
+ prop="orderNo"
+ label="订单号"
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="flowContent"
+ label="交易内容"
+ show-overflow-tooltip
+ width="240">
+ </el-table-column>
+ <el-table-column
+ prop="createTime"
+ label="交易时间"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="flowType"
+ label="交易类型">
+ </el-table-column>
+ <el-table-column
+ prop="amount"
+ label="交易金额">
+ </el-table-column>
+ <el-table-column
+ prop="vipName"
+ label="会员姓名">
+ </el-table-column>
+ <el-table-column
+ prop="payMethod"
+ label="支付方式">
+ </el-table-column>
+ <el-table-column
+ prop="flowNo"
+ label="支付流水号">
+ </el-table-column>
+ <el-table-column
+ prop="staffName"
+ label="操作人">
+ </el-table-column>
+ <el-table-column
+ prop="shopName"
+ label="门店名称">
+ </el-table-column>
+ <el-table-column label="操作">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openOrder(scope.$index, scope.row)" size="small">订单详情</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-row>
+ <el-row class="paginationStyle" >
+ <el-pagination background
+ @size-change="changePageSize"
+ @current-change="changeCurrentPage"
+ :current-page="table.currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="table.total">
+ </el-pagination>
+ </el-row>
+
+</div>
+</body>
+<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
+<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+ var vue = new Vue({
+ el: '#app',
+ data: {
+ table:{
+ rows:[],
+ total:0,
+ pageSize:10,
+ currentPage:1,
+ },
+ form:{
+ name:null,
+ datetimeArr:'',
+ payMethod:'',
+ flowType:'',
+ orderNo:'',
+ oprationMan:'',
+ queryKey:'',
+ shopId:'',
+ },
+ height:'calc(100vh - 240px)',
+ shopList:[{id:0,shopShortName:'全部'}],
+ flowTypeList:[
+ {value:'',label:'全部'},
+ {value:'购买',label:'购买'},
+ {value:'退款',label:'退款'},
+ {value:'还款',label:'还款'}
+ ],
+ payMethodList:[
+ {value:'',label:'全部'},
+ {value:'现金',label:'现金'},
+ {value:'微信',label:'微信'},
+ {value:'支付宝',label:'支付宝'},
+ {value:'银行卡',label:'银行卡'},
+ {value:'团购',label:'团购'},
+ {value:'储值卡',label:'储值卡'},
+ {value:'欠款',label:'欠款'}
+ ],
+ },
+ created: function () {
+ let _this=this;
+ this.loadData();
+ window.addEventListener("keydown", this.keydown);
+ AjaxProxy.requst({
+ app:_this,
+ url:basePath+"/admin/shopInfo/findAll",
+ callback:function (data) {
+ data.rows.forEach(shop=>{
+ _this.shopList.push(shop);
+ });
+ }
+
+ })
+
+ },
+ methods: {
+ changePageSize(val) {
+ this.table.pageSize = val;
+ this.loadData();
+ },
+ changeCurrentPage(val) {
+ this.table.currentPage = val;
+ this.loadData();
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ },
+ loadData:function(){
+ let _this = this;
+ let data=_this.getRequestParam();
+ data.limit=_this.table.pageSize;
+ data.offset=_this.table.pageSize*(_this.table.currentPage-1);
+ AjaxProxy.requst({
+ app: _this,
+ data:data,
+ url: basePath + '/admin/orderFlow/findOrderFlow',
+ callback: function (data) {
+ _this.table.rows = data.rows;
+ _this.table.total=data.total;
+ }
+ });
+ },
+ getRequestParam(){
+ let _this = this;
+ return {
+ name:_this.form.name,
+ payMethod:_this.form.payMethod,
+ flowType:_this.form.flowType,
+ orderNo:_this.form.orderNo,
+ oprationMan:_this.form.oprationMan,
+ queryKey:_this.form.queryKey,
+ shopId:_this.form.shopId,
+ startTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
+ endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
+ }
+ },
+ search:function(){
+ this.table.currentPage=1;
+ this.loadData();
+ },
+ keydown(evt){
+ if(evt.keyCode==13) {
+ this.search();
+ }
+ },
+
+ openOrder(index,row){
+ layer.full(layer.open({
+ type : 2,
+ title : "订单详情",
+ maxmin : true,
+ content : [ basePath + '/admin/order/orderItem?id=' + row.orderId ]
+ }));
+ },
+ //导出
+ exportExcel(){
+ window.location.href=basePath+"/admin/orderFlow/exportOrderFlowExcel?"+MTools.jsonToUrlParam(this.getRequestParam());
+ }
+
+ }
+ });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/jyls.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/jyls.html
index e959806..9db97ac 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/jyls.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/jyls.html
@@ -41,7 +41,7 @@
<div class="panel-body" id="app">
<el-row class="buttonPanel">
- <el-button type="primary" >导出</el-button>
+ <el-button @click="exportExcel" type="primary" >导出</el-button>
</el-row>
<el-row class="rowPanel" >
@@ -146,7 +146,7 @@
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
- <el-button type="text" size="small">有效</el-button>
+ <el-button type="text" @click="openOrder(scope.$index, scope.row)" size="small">订单详情</el-button>
</template>
</el-table-column>
</el-table>
@@ -228,22 +228,13 @@
},
loadData:function(){
let _this = this;
- //获取用户列表
+ let data=_this.getRequestParam();
+ data.limit=_this.table.pageSize;
+ data.offset=_this.table.pageSize*(_this.table.currentPage-1);
AjaxProxy.requst({
app: _this,
- data:{
- limit:_this.table.pageSize,
- offset:_this.table.pageSize*(_this.table.currentPage-1),
- name:_this.form.name,
- payMethod:_this.form.payMethod,
- flowType:_this.form.flowType,
- orderNo:_this.form.orderNo,
- oprationMan:_this.form.oprationMan,
- queryKey:_this.form.queryKey,
- startTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
- endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
- },
- url: basePath + '/admin/orderFlow/findSumDailyInfoNew',
+ data:data,
+ url: basePath + '/admin/orderFlow/findOrderFlow',
callback: function (data) {
_this.table.rows = data.rows;
_this.table.total=data.total;
@@ -258,8 +249,33 @@
if(evt.keyCode==13) {
this.search();
}
- }
+ },
+ openOrder(index,row){
+ layer.full(layer.open({
+ type : 2,
+ title : "订单详情",
+ maxmin : true,
+ content : [ basePath + '/admin/order/orderItem?id=' + row.orderId ]
+ }));
+ },
+ getRequestParam(){
+ let _this = this;
+ return {
+ name:_this.form.name,
+ payMethod:_this.form.payMethod,
+ flowType:_this.form.flowType,
+ orderNo:_this.form.orderNo,
+ oprationMan:_this.form.oprationMan,
+ queryKey:_this.form.queryKey,
+ startTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
+ endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
+ }
+ },
+ //导出
+ exportExcel(){
+ window.location.href=basePath+"/admin/orderFlow/exportOrderFlowExcel?"+MTools.jsonToUrlParam(this.getRequestParam());
+ }
}
});
--
Gitblit v1.9.1