记得上下班打卡 | git大法好,push需谨慎

Commit 783373a4 authored by 姜秀龙's avatar 姜秀龙

Merge branch 'refs/heads/jxl-admin-caiwu' into test-ecs

parents e0f82eca 8472f6b2
......@@ -3,8 +3,10 @@ package com.liquidnet.client.admin.web.controller.zhengzai.tools;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.goblin.service.IGoblinCommonService;
import com.liquidnet.client.admin.zhengzai.kylin.dto.*;
import com.liquidnet.client.admin.zhengzai.kylin.service.IExportService;
import com.liquidnet.service.goblin.dto.GoblinStoreSearchDto;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -13,7 +15,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.*;
import java.util.Arrays;
import java.util.List;
@Controller
@RequestMapping("tools/export")
......@@ -22,6 +25,9 @@ public class ExportDataController extends BaseController {
@Autowired
private IExportService exportService;
@Autowired
private IGoblinCommonService goblinCommonService;
private String prefix = "zhengzai/financial";
......@@ -31,53 +37,50 @@ public class ExportDataController extends BaseController {
}
/**
* 导出订单明细
*
* @param exportType
* @param beginTime
* @param endTime
* @param showId
* @return
* 店铺搜索(财务导出用)
*/
@GetMapping("/store/list")
@ResponseBody
public AjaxResult storeList(String storeName) {
List<String> status = Arrays.asList("3", "4", "5");
List<GoblinStoreSearchDto> list = goblinCommonService.storeSearch(storeName, status);
return AjaxResult.success(list);
}
/**
* 导出演出订单
* 演出id / 下单时间 / 演出开始时间 填了的条件全部 AND
*/
@PostMapping("/export/orderInfo")
@ResponseBody
public AjaxResult exportOrderInfo(Integer exportType, String beginTime, String endTime, String showId) {
if (null == exportType) {
return error("导出类型有误!");
public AjaxResult exportOrderInfo(String beginTime, String endTime, String showBeginTime, String showEndTime, String showId) {
boolean hasShowId = StringUtils.isNotBlank(showId);
boolean hasOrderTime = timeIsNotNull(beginTime, endTime);
boolean hasShowTime = timeIsNotNull(showBeginTime, showEndTime);
if (!hasShowId && !hasOrderTime && !hasShowTime) {
return error("请至少填写演出id、下单时间、演出开始时间其中一个条件!");
}
if (hasHalfTime(beginTime, endTime)) {
return error("下单时间请填写完整的开始和结束时间!");
}
if (exportType == 1) {//按订单时间导出信息
if (!timeIsNotNull(beginTime, endTime)) {
return error("按时间类型导出,开始时间和结束时间不能为空!");
}
List<OrderDetailedExportVo> list = exportService.exportOrderByOrderTime(beginTime, endTime);
if (list.size() > 0) {
ExcelUtil<OrderDetailedExportVo> util = new ExcelUtil(OrderDetailedExportVo.class);
return util.exportExcel(list, exportType + "");
}
} else if (exportType == 2) {//按演出时间导出信息
if (!timeIsNotNull(beginTime, endTime)) {
return error("按时间类型导出,开始时间和结束时间不能为空!");
}
List<OrderDetailedByShowDateExportVo> byShowTimeList = exportService.exportOrderByShowTime(beginTime, endTime);
if (byShowTimeList.size() > 0) {
ExcelUtil<OrderDetailedByShowDateExportVo> util = new ExcelUtil(OrderDetailedByShowDateExportVo.class);
return util.exportExcel(byShowTimeList, exportType + "");
}
} else if (exportType == 3) {//按id导出信息
if (!StringUtils.isNotBlank(showId)) {
return error("演出id不能为空!");
}
List<OrderDetailedByShowIdExportVo> byShowIdList = exportService.exportOrderByShowId(showId);
if (byShowIdList.size() > 0) {
ExcelUtil<OrderDetailedByShowIdExportVo> util = new ExcelUtil(OrderDetailedByShowIdExportVo.class);
return util.exportExcel(byShowIdList, exportType + "");
}
if (hasHalfTime(showBeginTime, showEndTime)) {
return error("演出开始时间请填写完整的开始和结束时间!");
}
List<OrderDetailedExportVo> list = exportService.exportShowOrder(showId, beginTime, endTime, showBeginTime, showEndTime);
if (list.size() == 0) {
return error("查无信息!");
}
return error("查无信息!");
ExcelUtil<OrderDetailedExportVo> util = new ExcelUtil(OrderDetailedExportVo.class);
return util.exportExcel(list, "演出订单");
}
private boolean timeIsNotNull(String beginTime, String endTime) {
return StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime) ? true : false;
return StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime);
}
private boolean hasHalfTime(String beginTime, String endTime) {
return (StringUtils.isNotBlank(beginTime) && StringUtils.isBlank(endTime))
|| (StringUtils.isBlank(beginTime) && StringUtils.isNotBlank(endTime));
}
......@@ -92,7 +95,7 @@ public class ExportDataController extends BaseController {
@ResponseBody
public AjaxResult exportMemberOrder(String beginTime, String endTime) {
if (!timeIsNotNull(beginTime, endTime)) {
return error("开始时间和结束时间不能为空!");
return error("请填写下单时间范围!");
}
List<OrderMemberExportVo> list = exportService.exportMemberOrder(beginTime, endTime);
if (list.size() == 0) {
......@@ -104,18 +107,25 @@ public class ExportDataController extends BaseController {
/**
* 导出商品订单
* 店铺 / 下单时间 填了的条件全部 AND
*
* @param beginTime
* @param endTime
* @param storeId
* @return
*/
@PostMapping("/export/commodityOrder")
@ResponseBody
public AjaxResult exportCommodityOrder(String beginTime, String endTime) {
if (!timeIsNotNull(beginTime, endTime)) {
return error("开始时间和结束时间不能为空!");
public AjaxResult exportCommodityOrder(String beginTime, String endTime, String storeId) {
boolean hasStoreId = StringUtils.isNotBlank(storeId);
boolean hasOrderTime = timeIsNotNull(beginTime, endTime);
if (!hasStoreId && !hasOrderTime) {
return error("请至少填写店铺或下单时间其中一个条件!");
}
if (hasHalfTime(beginTime, endTime)) {
return error("下单时间请填写完整的开始和结束时间!");
}
List<OrderCommodityExportVo> list = exportService.exportCommodityOrder(beginTime, endTime);
List<OrderCommodityExportVo> list = exportService.exportCommodityOrder(beginTime, endTime, storeId);
if (list.size() == 0) {
return error("查无信息");
}
......
......@@ -6,52 +6,222 @@
<th:block th:include="include :: datetimepicker-css"/>
</head>
<style>
td {
horiz-align: center;
text-align: left;
padding: 10px;
.export-card-grid {
display: flex;
flex-wrap: wrap;
margin: 0 -10px;
}
.export-card-col {
width: 33.33%;
padding: 0 10px;
margin-bottom: 20px;
box-sizing: border-box;
}
@media (max-width: 1200px) {
.export-card-col {
width: 50%;
}
}
@media (max-width: 768px) {
.export-card-col {
width: 100%;
}
}
.export-card {
background: #fff;
border: 1px solid #e7eaec;
border-radius: 6px;
height: 100%;
display: flex;
flex-direction: column;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
transition: box-shadow .2s;
overflow: visible;
position: relative;
}
.export-card:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.export-card-header {
padding: 18px 20px 14px;
border-bottom: 1px solid #f0f0f0;
text-align: center;
}
.export-card-icon {
width: 48px;
height: 48px;
line-height: 48px;
border-radius: 10px;
margin: 0 auto 10px;
font-size: 22px;
color: #fff;
}
.export-card-icon.show {
background: linear-gradient(135deg, #1ab394, #18a689);
}
.export-card-icon.commodity {
background: linear-gradient(135deg, #f8ac59, #f59e42);
}
.export-card-icon.member {
background: linear-gradient(135deg, #1c84c6, #1a7bb9);
}
.export-card-header h4 {
margin: 0;
font-size: 16px;
font-weight: 600;
color: #333;
}
.export-card-body {
padding: 20px;
flex: 1;
overflow: visible;
position: relative;
}
.export-card-body .form-group {
margin-bottom: 14px;
}
.export-card-body .form-group label {
display: block;
margin-bottom: 6px;
color: #666;
font-weight: normal;
}
.export-card-body .form-control {
width: 100%;
}
.time-range-row {
display: flex;
align-items: center;
gap: 8px;
}
.time-range-row .form-control {
flex: 1;
min-width: 0;
}
.time-range-row .time-separator {
color: #999;
flex-shrink: 0;
}
.export-card-footer {
padding: 0 20px 20px;
text-align: center;
}
.export-card-footer .btn {
min-width: 120px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<label>搜索类型:</label>
<select id="type" name="type">
<option value="0">请选择</option>
<option value="1">商品[订单时间]</option>
<option value="2">演出[订单时间]</option>
<option value="3">演出[演出id]</option>
<option value="4">演出[演出时间]</option>
<option value="5">会员[订单时间]</option>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="export-card-grid">
<div class="export-card-col">
<div class="export-card">
<div class="export-card-header">
<div class="export-card-icon show"><i class="fa fa-ticket"></i></div>
<h4>演出订单</h4>
</div>
<div class="export-card-body">
<div class="form-group">
<label>演出id</label>
<input id="showPerformanceId" type="text" class="form-control" placeholder="按演出id导出时填写"/>
</div>
<div class="form-group">
<label>下单时间</label>
<div class="time-range-row">
<input type="text" class="form-control show-order-start" placeholder="选日期,默认 00:00:00"/>
<span class="time-separator">-</span>
<input type="text" class="form-control show-order-end" placeholder="选日期,默认 23:59:59"/>
</div>
</div>
<div class="form-group">
<label>演出开始时间</label>
<div class="time-range-row">
<input type="text" class="form-control show-time-start" placeholder="选日期,默认 00:00:00"/>
<span class="time-separator">-</span>
<input type="text" class="form-control show-time-end" placeholder="选日期,默认 23:59:59"/>
</div>
</div>
</div>
<div class="export-card-footer">
<a class="btn btn-primary btn-rounded" onclick="exportShowOrder()">
<i class="fa fa-download"></i> 导出
</a>
</div>
</div>
</div>
<div class="export-card-col">
<div class="export-card">
<div class="export-card-header">
<div class="export-card-icon commodity"><i class="fa fa-shopping-bag"></i></div>
<h4>商品订单</h4>
</div>
<div class="export-card-body">
<div class="form-group">
<label>店铺</label>
<select id="commodityStoreSelect" class="form-control">
<option value="">全部</option>
</select>
</li>
<li>
<label>演出id:</label>
<input id="performanceId" type="text" name="performanceId"/>
</li>
<li>
<div class="form-group">
<label>时间范围:</label>
<input type="text" style="width: 200px;float: left"
class="form-control" id="startTime" placeholder="开始时间选择" name="timeStart"/>
<span class="control-label"
style="float: left;margin-left: 10px;margin-right: 10px"> - </span>
<input type="text" style="width: 200px;float: left"
class="form-control" id="endTime" placeholder="结束时间选择" name="timeEnd"/>
</div>
<div class="form-group">
<label>下单时间</label>
<div class="time-range-row">
<input type="text" class="form-control commodity-order-start" placeholder="选日期,默认 00:00:00"/>
<span class="time-separator">-</span>
<input type="text" class="form-control commodity-order-end" placeholder="选日期,默认 23:59:59"/>
</div>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="searchExport()"><i
class="fa fa-search"></i>导出</a>
</li>
</ul>
</div>
</div>
<div class="export-card-footer">
<a class="btn btn-warning btn-rounded" onclick="exportCommodityOrder()">
<i class="fa fa-download"></i> 导出
</a>
</div>
</div>
</form>
</div>
<div class="export-card-col">
<div class="export-card">
<div class="export-card-header">
<div class="export-card-icon member"><i class="fa fa-user"></i></div>
<h4>会员订单</h4>
</div>
<div class="export-card-body">
<div class="form-group">
<label>下单时间</label>
<div class="time-range-row">
<input type="text" class="form-control member-order-start" placeholder="选日期,默认 00:00:00"/>
<span class="time-separator">-</span>
<input type="text" class="form-control member-order-end" placeholder="选日期,默认 23:59:59"/>
</div>
</div>
</div>
<div class="export-card-footer">
<a class="btn btn-info btn-rounded" onclick="exportMemberOrder()">
<i class="fa fa-download"></i> 导出
</a>
</div>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
......@@ -59,85 +229,141 @@
<script th:inline="javascript">
var prefix = ctx + "tools/export";
var url = prefix;
var formData = new FormData();
$("input[name='timeStart']").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
function formatDatePart(date) {
var pad = function (n) {
return n < 10 ? '0' + n : '' + n;
};
return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
}
$("input[name='timeEnd']").datetimepicker({
format: "yyyy-mm-dd hh:ii:ss",
autoclose: true
});
function initStartDatetimePicker(selector) {
$(selector).each(function () {
var $el = $(this);
$el.datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true,
todayBtn: true,
forceParse: false
}).on('changeDate', function (e) {
if (!e.date) {
return;
}
$el.val(formatDatePart(e.date) + ' 00:00:00');
});
});
}
function initEndDatetimePicker(selector) {
$(selector).each(function () {
var $el = $(this);
$el.datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true,
todayBtn: true,
forceParse: false
}).on('changeDate', function (e) {
if (!e.date) {
return;
}
$el.val(formatDatePart(e.date) + ' 23:59:59');
});
});
}
function initStoreSelect() {
$.get(prefix + '/store/list', function (json) {
var list = (json && json.code == 0 && json.data) ? json.data : [];
var $select = $('#commodityStoreSelect');
$.each(list, function (i, item) {
if (item.storeId && item.storeName) {
$select.append($('<option></option>').attr('value', item.storeId).text(item.storeName));
}
});
});
}
function doExport(url, param, modalName) {
var options = {
modalName: modalName,
exportUrl: url
};
$.table.init(options);
$.table.exportExcel("", param);
}
function exportShowOrder() {
var showId = $("#showPerformanceId").val();
var orderStart = $(".show-order-start").val();
var orderEnd = $(".show-order-end").val();
var showStart = $(".show-time-start").val();
var showEnd = $(".show-time-end").val();
function searchExport() {
var type = document.getElementById("type").value;
var performanceId = document.getElementById("performanceId").value;
var st = document.getElementById("startTime").value;
var et = document.getElementById("endTime").value;
var exportType = 0;
if (type == 2) {
exportType = 1;
} else if (type == 3) {
exportType = 3;
} else if (type == 4) {
exportType = 2;
if (!showId && (!orderStart || !orderEnd) && (!showStart || !showEnd)) {
$.modal.alertWarning("请至少填写演出id、下单时间、演出开始时间其中一个条件");
return;
}
if (type == 0) {
alert("请选择导出类型");
return
} else if (type == 1) {//商品导出逻辑
if (st == "" || et == "") {
alert("请选择时间范围");
return
} else {
url = url + "/export/commodityOrder";
}
} else if (type == 2) {//演出[订单时间]
if (st == "" || et == "") {
alert("请选择时间范围");
return
} else {
url = url + "/export/orderInfo";
}
} else if (type == 3) {//演出[演出id]
if (performanceId == "") {
alert("演出id不能为空");
return
} else {
url = url + "/export/orderInfo";
}
} else if (type == 4) {//演出[演出时间]
if (st == "" || et == "") {
alert("请选择时间范围");
return
} else {
url = url + "/export/orderInfo";
}
} else if (type == 5) {//会员[订单时间]
if (st == "" || et == "") {
alert("请选择时间范围");
return
} else {
url = url + "/export/memberOrder";
}
if ((orderStart && !orderEnd) || (!orderStart && orderEnd)) {
$.modal.alertWarning("下单时间请填写完整的开始和结束时间");
return;
}
var options = {
modalName: "财务导出",
exportUrl: url,
if ((showStart && !showEnd) || (!showStart && showEnd)) {
$.modal.alertWarning("演出开始时间请填写完整的开始和结束时间");
return;
}
$.table.init(options);
var param = {
"beginTime": st,
"endTime": et,
"showId": performanceId,
"exportType": exportType
};
$.table.exportExcel("", param)
url = prefix;
doExport(prefix + "/export/orderInfo", {
"showId": showId,
"beginTime": orderStart,
"endTime": orderEnd,
"showBeginTime": showStart,
"showEndTime": showEnd
}, "演出订单");
}
function exportCommodityOrder() {
var storeId = $("#commodityStoreSelect").val() || "";
var beginTime = $(".commodity-order-start").val();
var endTime = $(".commodity-order-end").val();
if (!storeId && (!beginTime || !endTime)) {
$.modal.alertWarning("请至少填写店铺或下单时间其中一个条件");
return;
}
if ((beginTime && !endTime) || (!beginTime && endTime)) {
$.modal.alertWarning("下单时间请填写完整的开始和结束时间");
return;
}
doExport(prefix + "/export/commodityOrder", {
"beginTime": beginTime,
"endTime": endTime,
"storeId": storeId
}, "商品订单");
}
function exportMemberOrder() {
var beginTime = $(".member-order-start").val();
var endTime = $(".member-order-end").val();
if (!beginTime || !endTime) {
$.modal.alertWarning("请选择下单时间范围");
return;
}
doExport(prefix + "/export/memberOrder", {
"beginTime": beginTime,
"endTime": endTime
}, "会员订单");
}
$(function () {
initStartDatetimePicker('.show-order-start, .show-time-start, .commodity-order-start, .member-order-start');
initEndDatetimePicker('.show-order-end, .show-time-end, .commodity-order-end, .member-order-end');
initStoreSelect();
});
</script>
</body>
</html>
......@@ -46,10 +46,15 @@ public class GoblinCommonServiceImpl implements IGoblinCommonService {
@Override
public List<GoblinStoreSearchDto> storeSearch(String name, List<String> status) {
List<GoblinStoreInfo> list = goblinStoreInfoMapper.selectList(Wrappers.lambdaQuery(GoblinStoreInfo.class)
.like(GoblinStoreInfo::getStoreName, name)
LambdaQueryWrapper<GoblinStoreInfo> queryWrapper = Wrappers.lambdaQuery(GoblinStoreInfo.class);
if (StringUtil.isNotBlank(name)) {
queryWrapper.like(GoblinStoreInfo::getStoreName, name);
}
queryWrapper.eq(GoblinStoreInfo::getDelFlg, "0")
.in(GoblinStoreInfo::getStatus, status)
.select(GoblinStoreInfo::getStoreId, GoblinStoreInfo::getStoreName, GoblinStoreInfo::getStatus));
.orderByAsc(GoblinStoreInfo::getStoreName)
.select(GoblinStoreInfo::getStoreId, GoblinStoreInfo::getStoreName, GoblinStoreInfo::getStatus);
List<GoblinStoreInfo> list = goblinStoreInfoMapper.selectList(queryWrapper);
List<GoblinStoreSearchDto> dtoList = new ArrayList<>();
for (GoblinStoreInfo item : list) {
GoblinStoreSearchDto dto = GoblinStoreSearchDto.getNew();
......
......@@ -11,6 +11,8 @@ public class OrderCommodityExportVo implements Serializable, Cloneable {
@Excel(name = "商户订单号", cellType = Excel.ColumnType.STRING)
private String code;
@Excel(name = "店铺名称", cellType = Excel.ColumnType.STRING)
private String storeName;
@Excel(name = "微信/支付宝订单号", cellType = Excel.ColumnType.STRING)
private String paymentId;
@Excel(name = "商品名称", cellType = Excel.ColumnType.STRING)
......@@ -53,6 +55,7 @@ public class OrderCommodityExportVo implements Serializable, Cloneable {
this.setPriceRefund(source.getPriceRefund());
this.setStatus(source.getStatus());
this.setRefundAt(source.getRefundAt());
this.setStoreName(source.getStoreName());
return this;
}
......
......@@ -19,9 +19,12 @@ public interface IExportService {
//根据演出id导出信息
List<OrderDetailedByShowIdExportVo> exportOrderByShowId(String showId);
//演出订单导出(多条件 AND)
List<OrderDetailedExportVo> exportShowOrder(String showId, String beginTime, String endTime, String showBeginTime, String showEndTime);
//导出会员订单信息
List<OrderMemberExportVo> exportMemberOrder(String beginTime, String endTime);
//导出商品订单信息
List<OrderCommodityExportVo> exportCommodityOrder(String beginTime, String endTime);
List<OrderCommodityExportVo> exportCommodityOrder(String beginTime, String endTime, String storeId);
}
......@@ -8,13 +8,13 @@ import com.liquidnet.service.kylin.dao.MemberOrderExportDao;
import com.liquidnet.service.kylin.dao.OrderExportDao;
import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
......@@ -91,6 +91,26 @@ public class ExportServiceImpl implements IExportService {
return voList;
}
@Override
public List<OrderDetailedExportVo> exportShowOrder(String showId, String beginTime, String endTime, String showBeginTime, String showEndTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date beginDate = parseDate(sdf, beginTime);
Date endDate = parseDate(sdf, endTime);
Date showBeginDate = parseDate(sdf, showBeginTime);
Date showEndDate = parseDate(sdf, showEndTime);
List<OrderExportDao> list = performancesMapper.exportShowOrder(showId, beginDate, endDate, showBeginDate, showEndDate);
List<OrderDetailedExportVo> voList = new ArrayList();
for (OrderExportDao item : list) {
voList.add(OrderDetailedExportVo.getNew().copyOrderExportVo(item));
}
return voList;
} catch (ParseException e) {
e.printStackTrace();
throw new BusinessException("导出异常,请联系网站管理员!");
}
}
@Override
public List<OrderMemberExportVo> exportMemberOrder(String beginTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
......@@ -110,12 +130,12 @@ public class ExportServiceImpl implements IExportService {
}
@Override
public List<OrderCommodityExportVo> exportCommodityOrder(String beginTime, String endTime) {
public List<OrderCommodityExportVo> exportCommodityOrder(String beginTime, String endTime, String storeId) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date beginDate = sdf.parse(beginTime);
Date endDate = sdf.parse(endTime);
List<CommodityOrderExportDao> list = performancesMapper.exportCommodityOrder(beginDate, endDate);
Date beginDate = parseDate(sdf, beginTime);
Date endDate = parseDate(sdf, endTime);
List<CommodityOrderExportDao> list = performancesMapper.exportCommodityOrder(beginDate, endDate, storeId);
List<OrderCommodityExportVo> voList = new ArrayList();
for (CommodityOrderExportDao item : list) {
voList.add(OrderCommodityExportVo.getNew().copyCommodityOrderExportVo(item));
......@@ -126,4 +146,11 @@ public class ExportServiceImpl implements IExportService {
throw new BusinessException("导出Excel失败,请联系网站管理员!");
}
}
private Date parseDate(SimpleDateFormat sdf, String time) throws ParseException {
if (StringUtils.isBlank(time)) {
return null;
}
return sdf.parse(time);
}
}
......@@ -24,5 +24,7 @@ public class CommodityOrderExportDao {
private String status;
//退款时间
private String refundAt;
//店铺名称
private String storeName;
}
......@@ -83,10 +83,16 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<OrderExportDao> exportOrderByShowTime(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);
//演出id查订单信息
List<OrderExportDao> exportOrderByShowId(@Param("showId") String showId);
//演出订单导出(多条件 AND)
List<OrderExportDao> exportShowOrder(@Param("showId") String showId,
@Param("beginTime") Date beginTime,
@Param("endTime") Date endTime,
@Param("showBeginTime") Date showBeginTime,
@Param("showEndTime") Date showEndTime);
//会员订单信息
List<MemberOrderExportDao> exportMemberOrder(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);
//商品订单信息
List<CommodityOrderExportDao> exportCommodityOrder(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);
List<CommodityOrderExportDao> exportCommodityOrder(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime, @Param("storeId") String storeId);
List<KylinPerformancesDto> getListAll(String title);
......
......@@ -104,6 +104,7 @@
<result column="price_refund" property="priceRefund"/>
<result column="status" property="status"/>
<result column="refund_at" property="refundAt"/>
<result column="store_name" property="storeName"/>
</resultMap>
<!-- <resultMap id="OrderExportDaoResult" type="com.liquidnet.service.kylin.dao.OrderExportDao">-->
......@@ -1108,6 +1109,77 @@ GROUP BY user_mobile,tickets_id;
and ks.transfer_status in (0, 1, 2, 5)
group by kot.order_tickets_id
</select>
<!-- 演出订单导出(演出id/下单时间/演出开始时间 多条件 AND)-->
<select id="exportShowOrder" resultMap="OrderExportDaoResult">
select kot.order_code as order_code,
do.code as code,
kot.pay_code as pay_code,
kot.payment_id as payment_id,
kot.performance_title as performance_title,
case
when (ks.status = 1) THEN '已支付'
when (ks.status = 3) THEN '退款中'
when (ks.status = 4) THEN '已退款'
when (ks.status = 6) THEN '部分退款'
END as status,
(CASE
WHEN kot.payment_type = 'WAPALIPAY' THEN '支付宝'
WHEN kot.payment_type = 'APPALIPAY' THEN '支付宝'
WHEN kot.payment_type = 'JSWEPAY' THEN '微信'
WHEN kot.payment_type LIKE 'APPLET%WEPAY' THEN '微信'
WHEN kot.payment_type = 'APPWEPAY' THEN '微信'
WHEN kot.payment_type = 'WAPWEPAY' THEN '微信'
WHEN kot.payment_type = 'APPUNIONPAY' THEN '银联云闪付'
WHEN kot.payment_type = 'WAPUNIONPAY' THEN '银联云闪付'
WHEN kot.payment_type = 'APPLETDOUYINPAY' THEN '抖音支付'
ELSE '其他' END) as payment_type,
case
when (kp.type = '1') then '音乐节'
when (kp.type = '2') then '演唱会'
when (kp.type = '3') then '小型演出'
when (kp.type = '4') then '展览'
when (kp.type = '6') then '舞台剧'
when (kp.type = '101') then '音乐节'
when (kp.type = '102') then '小型演出(livehouse演出)'
when (kp.type = '103') then '巡演'
end as type,
kt.title as title1,
ktt.title as title2,
kot.price as price,
kot.price_express as price_express,
kot.number as number,
kot.refund_number as refund_number,
kot.price_actual as price_actual,
kot.price_refund as price_refund,
ifnull(dor.refund_at, kor.updated_at) as refund_at,
kor.reject as reject,
kot.time_pay as time_pay
from kylin_order_tickets kot
inner join kylin_order_ticket_status ks on kot.order_tickets_id = ks.order_id
left join kylin_order_refunds kor on kor.order_tickets_id = kot.order_tickets_id
inner join kylin_order_ticket_relations kr on kot.order_tickets_id = kr.order_id
inner join kylin_tickets kt on kt.tickets_id = kr.ticket_id
inner join kylin_performances kp on kp.performances_id = kr.performance_id
left join dragon_orders do on do.order_code = kot.order_code and do.status = 1
left join dragon_order_refunds dor on dor.order_refund_id = do.code
left join kylin_ticket_times ktt on ktt.ticket_times_id = kr.time_id
where ks.status in (1, 3, 4, 6)
and ks.transfer_status in (0, 1, 2, 5)
<if test="showId != null and showId != ''">
and kr.performance_id = #{showId}
</if>
<if test="beginTime != null and endTime != null">
and (
do.payment_at between #{beginTime} and #{endTime}
or dor.refund_at between #{beginTime} and #{endTime}
)
</if>
<if test="showBeginTime != null and showEndTime != null">
and kp.time_start &gt;= #{showBeginTime}
and kp.time_start &lt;= #{showEndTime}
</if>
group by kot.order_tickets_id
</select>
<!-- 会员订单信息-->
<select id="exportMemberOrder" resultMap="memberOrderExportDaoResult">
select amo.pay_no as pay_no,
......@@ -1175,7 +1247,8 @@ GROUP BY user_mobile,tickets_id;
WHEN temtable.STATUS = '7' THEN
'退货通过'
END AS status,
temtable.refund_at as refund_at
temtable.refund_at as refund_at,
temtable.store_name as store_name
from
(select do.code,
gso.payment_id,
......@@ -1186,15 +1259,22 @@ GROUP BY user_mobile,tickets_id;
gso.price_express,
gso.price_refund,
gso.status,
gbo.refund_at
gbo.refund_at,
max(gsi.store_name) as store_name
from goblin_store_order gso
inner join goblin_order_sku gos on gos.order_id = gso.order_id
inner join dragon_orders do on do.order_code = gso.master_order_code and do.status = 1
left join goblin_back_order gbo on gbo.order_id = gso.order_id and gbo.status in (2, 8)
where
do.created_at between #{beginTime} and #{endTime}
and gso.status not in (0, 5)
left join goblin_store_info gsi on gsi.store_id = gso.store_id
where gso.status not in (0, 5)
<if test="beginTime != null and endTime != null">
and do.created_at between #{beginTime} and #{endTime}
</if>
<if test="storeId != null and storeId != ''">
and gso.store_id = #{storeId}
</if>
group by do.code
<if test="beginTime != null and endTime != null">
union
select do.code,
gso.payment_id,
......@@ -1205,16 +1285,22 @@ GROUP BY user_mobile,tickets_id;
gso.price_express,
gso.price_refund,
gso.status,
gbo.refund_at
gbo.refund_at,
max(gsi.store_name) as store_name
from goblin_store_order gso
inner join goblin_order_sku gos on gos.order_id = gso.order_id
inner join dragon_orders do on do.order_code = gso.master_order_code and do.status = 1
inner join dragon_order_refunds dor on dor.order_refund_id = do.code
left join goblin_back_order gbo on gbo.order_id = gso.order_id and gbo.status in (2, 8)
where
dor.refund_at between #{beginTime} and #{endTime}
left join goblin_store_info gsi on gsi.store_id = gso.store_id
where dor.refund_at between #{beginTime} and #{endTime}
and gso.status not in (0, 5)
group by do.code) temtable group by temtable.code
<if test="storeId != null and storeId != ''">
and gso.store_id = #{storeId}
</if>
group by do.code
</if>
) temtable group by temtable.code
</select>
<select id="getSubscribeStatisticalByPerformancesId" resultType="com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeStatisticalDao">
SELECT A.*,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment