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

Commit 0ce47397 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/master' into dev220825_zgb_nft_receive

parents cc50d210 a836ae1a
...@@ -20,11 +20,14 @@ public class SmileRedisConst { ...@@ -20,11 +20,14 @@ public class SmileRedisConst {
public static final String SELL_DATA_COMMISSION = PREFIX.concat("sellDataCommission:"); //销售数据 第一步 public static final String SELL_DATA_COMMISSION = PREFIX.concat("sellDataCommission:"); //销售数据 第一步
public static final String SELL_SHOW_PAYMENT = PREFIX.concat("show:payment:"); //打款信息 SELL_SHOW_PAYMENT+演出id+uid public static final String SELL_SHOW_PAYMENT = PREFIX.concat("show:payment:"); //打款信息 SELL_SHOW_PAYMENT+演出id+uid
public static final String SELL_SHOW_SAVE = PREFIX.concat("show:save:"); //演出打款vo数据 SELL_SHOW_SAVE+演出id
public static final String SELL_SHOW_PAYMENT_ENDJOB = PREFIX.concat("show:payment:endJob"); //定时任务结算信息 SELL_SHOW_PAYMENT_ENDJOB+演出id+uid public static final String SELL_SHOW_PAYMENT_ENDJOB = PREFIX.concat("show:payment:endJob"); //定时任务结算信息 SELL_SHOW_PAYMENT_ENDJOB+演出id+uid
public static final String SELL_USER_REVENUE = PREFIX.concat("user:revenue:"); //用户总营收 SELL_USER_REVENUE+uid public static final String SELL_USER_REVENUE = PREFIX.concat("user:revenue:"); //用户总营收 SELL_USER_REVENUE+uid
public static final String SELL_USER_DATA = PREFIX.concat("user:data:"); //用户总营收 SELL_USER_REVENUE+perId+uid
public static final String SELL_TEST = PREFIX.concat("test"); //用户总营收 SELL_USER_REVENUE+uid public static final String SELL_TEST = PREFIX.concat("test"); //用户总营收 SELL_USER_REVENUE+uid
public static final String SELL_SHOW_POEN = PREFIX.concat("show:poen:"); //代理总销售数量 public static final String SELL_SHOW_POEN = PREFIX.concat("show:poen:"); //代理总销售数量
......
package com.liquidnet.client.admin.web.controller.zhengzai.smile; package com.liquidnet.client.admin.web.controller.zhengzai.smile;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.zhengzai.smile.dto.SaleDataVo; import com.liquidnet.client.admin.zhengzai.smile.dto.SaleDataVo;
import com.liquidnet.client.admin.zhengzai.smile.dto.ShowSort;
import com.liquidnet.client.admin.zhengzai.smile.dto.SmilePriceParam;
import com.liquidnet.client.admin.zhengzai.smile.dto.SmileShowParam;
import com.liquidnet.client.admin.zhengzai.smile.service.ISmileShowService; import com.liquidnet.client.admin.zhengzai.smile.service.ISmileShowService;
import com.liquidnet.commons.lang.util.DateUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
/** /**
* @author TT * @author TT
*/ */
@Api(tags = "演出管理") @Api(tags = "演出管理")
@Controller @Controller
@RequestMapping("/smile/show/base") @RequestMapping("/smile/show/base")
@Slf4j
public class SmileShowBaseController extends BaseController { public class SmileShowBaseController extends BaseController {
private String prefix = "zhengzai/smile"; private String prefix = "zhengzai/smile";
...@@ -42,6 +49,39 @@ public class SmileShowBaseController extends BaseController { ...@@ -42,6 +49,39 @@ public class SmileShowBaseController extends BaseController {
return prefix + "/smileTickets/saleData"; return prefix + "/smileTickets/saleData";
} }
@GetMapping("/export")
@ApiOperation("单个演出销售列表导出")
@ResponseBody
public void export(String perId,String title, HttpServletResponse response) {
ServletOutputStream servletOutputStream = null;
try {
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="
.concat(new String((title + DateUtil.getNowTime() + "代理数据").getBytes("gb2312"), StandardCharsets.ISO_8859_1)).concat(ExcelTypeEnum.XLSX.getValue()));
response.setContentType(MediaType.MULTIPART_FORM_DATA_VALUE);
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
servletOutputStream = response.getOutputStream();
//数据查询
/*
SaleDataVo saleDataVo = smileShowService.saleData(performancesId);
List<UserDataExcel> rowsToExcels = new ArrayList<>();
saleDataVo.getUserDataList().forEach(userData -> rowsToExcels.add(UserDataExcel.getNew().copy(userData)));
EasyExcel.write(servletOutputStream,UserDataExcel.class).sheet(saleDataVo.getTitle() + "演出销售列表导出").doWrite(rowsToExcels);
*/
smileShowService.exportData(servletOutputStream,perId);
} catch (IOException e) {
log.error("单个演出销售列表导出异常[performancesId={},ex.msg={}]", perId, e.getLocalizedMessage());
} finally {
if (null != servletOutputStream) {
try {
servletOutputStream.close();
} catch (Exception ignored) {
}
}
}
}
/*@GetMapping("/saleDataTest/{performancesId}") /*@GetMapping("/saleDataTest/{performancesId}")
@ApiOperation("销售数据Test") @ApiOperation("销售数据Test")
@ApiImplicitParams({ @ApiImplicitParams({
......
...@@ -8,13 +8,17 @@ ...@@ -8,13 +8,17 @@
width: 800px; width: 800px;
padding-top: 20px; padding-top: 20px;
} }
#addClassify .selectClassify { #addClassify .selectClassify {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 0 20px; padding: 0 20px;
} }
#addClassify .ibox-content {
width: 100%;
max-height: 600px;
overflow: auto;
}
#addClassify .selectClassify label { #addClassify .selectClassify label {
display: flex; display: flex;
margin-right: 20px; margin-right: 20px;
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">代理数据:</label> <label class="col-sm-3 control-label is-required">代理数据:</label>
<a style="margin-left: 500px" href="javascript:void(0)" class="btn btn-success btn-xs" onclick="onexport()"><i class="fa fa-edit"></i>导出</a>
<table id="team-table2" class="table table-condensed table-sm" th:border="1"> <table id="team-table2" class="table table-condensed table-sm" th:border="1">
<tr> <tr>
<td>姓名</td> <td>姓名</td>
...@@ -65,7 +66,7 @@ ...@@ -65,7 +66,7 @@
<td th:if="${item.type==2}" th:text="普代"></td> <td th:if="${item.type==2}" th:text="普代"></td>
<td th:each="itemAgent : ${item.dataAgentVos}" th:text="${itemAgent.number}"></td> <td th:each="itemAgent : ${item.dataAgentVos}" th:text="${itemAgent.number}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![number])}"></td> <td th:text="${#aggregates.sum(item.dataAgentVos.![number])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![price*number])}"></td> <td th:text="${#aggregates.sum(item.dataAgentVos.![priceReal])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![commission])}"></td> <td th:text="${#aggregates.sum(item.dataAgentVos.![commission])}"></td>
<td th:if="${item.priceStatus!=0}" th:text="待打款"></td> <td th:if="${item.priceStatus!=0}" th:text="待打款"></td>
<td th:if="${item.priceStatus==0}" th:text="已打款"></td> <td th:if="${item.priceStatus==0}" th:text="已打款"></td>
...@@ -109,6 +110,23 @@ ...@@ -109,6 +110,23 @@
} }
}); });
} }
function onexport(){
var params = {
perId:'[[${saleDataVo.performancesId}]]'.replaceAll("\"", "")
}
$.ajax({
type: 'get',
url: "/smile/show/base/export",
headers: {"Content-Type": "application/json;charset=UTF-8"},
data: params,
success: function (e) {
window.location.replace('http://' + window.location.host + '/smile/show/base/export?perId=' + '[[${saleDataVo.performancesId}]]'.replaceAll("\"", "") + '&title=' + '[[${saleDataVo.title}]]')
}
});
}
</script> </script>
</body> </body>
</html> </html>
package com.liquidnet.client.admin.zhengzai.smile.dto; package com.liquidnet.client.admin.zhengzai.smile.dto;
import com.liquidnet.service.kylin.dao.report.KylinPerformancesDto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -10,54 +12,56 @@ import java.time.LocalDateTime; ...@@ -10,54 +12,56 @@ import java.time.LocalDateTime;
* @author TT * @author TT
*/ */
@Data @Data
public class ShowVo { public class ShowVo implements Serializable {
private static final long serialVersionUID = 1L;
/** /**
* 演出id * 演出id
*/ */
@ApiModelProperty(value ="演出id") @ApiModelProperty(value = "演出id")
private String performancesId; private String performancesId;
/** /**
* 演出名 * 演出名
*/ */
@ApiModelProperty(value ="演出名") @ApiModelProperty(value = "演出名")
private String title; private String title;
/** /**
* 城市 * 城市
*/ */
@ApiModelProperty(value ="城市") @ApiModelProperty(value = "城市")
private String cityName; private String cityName;
/** /**
* 总销售数量 -张 saleGeneral * 总销售数量 -张 saleGeneral
*/ */
@ApiModelProperty(value ="总销售数量") @ApiModelProperty(value = "总销售数量")
private BigDecimal open; private BigDecimal open;
/** /**
* 总销售金额 totalSalePrice * 总销售金额 totalSalePrice
*/ */
@ApiModelProperty(value ="总销售金额") @ApiModelProperty(value = "总销售金额")
private BigDecimal totalSalePrice; private BigDecimal totalSalePrice;
/** /**
* 总销售代理 * 总销售代理
*/ */
@ApiModelProperty(value ="总销售代理人数") @ApiModelProperty(value = "总销售代理人数")
private Long totalOutAgent; private Integer totalOutAgent;
/** /**
* 演出结束时间 * 演出结束时间
*/ */
@ApiModelProperty(value ="演出结束时间") @ApiModelProperty(value = "演出结束时间")
private LocalDateTime timeEnd; private LocalDateTime timeEnd;
/** /**
* 演出结束时间 * 演出结束时间
*/ */
@ApiModelProperty(value ="演出开始时间") @ApiModelProperty(value = "演出开始时间")
private LocalDateTime timeStart; private LocalDateTime timeStart;
@ApiModelProperty(value = "演出状态") @ApiModelProperty(value = "演出状态")
...@@ -69,45 +73,70 @@ public class ShowVo { ...@@ -69,45 +73,70 @@ public class ShowVo {
/** /**
* 打款状态 * 打款状态
*/ */
@ApiModelProperty(value ="演出打款状态") @ApiModelProperty(value = "演出打款状态")
private String status; private String status;
/** /**
* 顺序 * 顺序
*/ */
@ApiModelProperty(value ="演出排列顺序") @ApiModelProperty(value = "演出排列顺序")
private String comment; private String comment;
public void setShowStatus(Integer status){ public void setShowStatus(Integer status) {
this.showStatus=status; this.showStatus = status;
switch (status){ switch (status) {
case 1: case 1:
this.statusName="审核中"; this.statusName = "审核中";
break; break;
case 3: case 3:
this.statusName="审核通过"; this.statusName = "审核通过";
break; break;
case 4: case 4:
this.statusName="审核拒绝"; this.statusName = "审核拒绝";
break; break;
case 6: case 6:
this.statusName="售卖中"; this.statusName = "售卖中";
break; break;
case 7: case 7:
this.statusName="已下架"; this.statusName = "已下架";
break; break;
case 8: case 8:
this.statusName="售罄"; this.statusName = "售罄";
break; break;
case 9: case 9:
this.statusName="未开始"; this.statusName = "未开始";
break; break;
case 10: case 10:
this.statusName="已结束"; this.statusName = "已结束";
break; break;
default: default:
this.statusName="其他"; this.statusName = "其他";
break; break;
} }
} }
private static final ShowVo obj = new ShowVo();
public static ShowVo getNew() {
try {
return (ShowVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new ShowVo();
}
}
public ShowVo copy(KylinPerformancesDto kylinPerformancesDto) {
if (null == kylinPerformancesDto) return null;
this.setTimeStart(kylinPerformancesDto.getTimeStart());
this.setComment(kylinPerformancesDto.getComment());
this.setTitle(kylinPerformancesDto.getTitle());
this.setShowStatus(kylinPerformancesDto.getStatus());
this.setCityName(kylinPerformancesDto.getCityName());
this.setTotalSalePrice(kylinPerformancesDto.getTotalSalePrice());
this.setOpen(kylinPerformancesDto.getOpen() == null ? BigDecimal.valueOf(0) : kylinPerformancesDto.getOpen());
this.setPerformancesId(kylinPerformancesDto.getPerformancesId());
this.setTimeEnd(kylinPerformancesDto.getTimeEnd());
return this;
}
} }
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**
...@@ -11,7 +12,7 @@ import java.util.List; ...@@ -11,7 +12,7 @@ import java.util.List;
*/ */
@ApiModel(value = "UserData", description = "代理数据") @ApiModel(value = "UserData", description = "代理数据")
@Data @Data
public class UserData { public class UserData implements Serializable, Cloneable {
/** /**
* 用户uid * 用户uid
...@@ -49,4 +50,15 @@ public class UserData { ...@@ -49,4 +50,15 @@ public class UserData {
@ApiModelProperty(value = "打款状态", example = "") @ApiModelProperty(value = "打款状态", example = "")
private Integer priceStatus; private Integer priceStatus;
private static final UserData obj = new UserData();
public static UserData getNew() {
try {
return (UserData) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new UserData();
}
} }
...@@ -4,11 +4,12 @@ import io.swagger.annotations.ApiModel; ...@@ -4,11 +4,12 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
@ApiModel(value = "UserDataAgentVo", description = "用户单票数据") @ApiModel(value = "UserDataAgentVo", description = "用户单票数据")
@Data @Data
public class UserDataAgentVo { public class UserDataAgentVo implements Serializable, Cloneable{
/** /**
* 票提id * 票提id
...@@ -34,6 +35,12 @@ public class UserDataAgentVo { ...@@ -34,6 +35,12 @@ public class UserDataAgentVo {
@ApiModelProperty(value = "单价", example = "") @ApiModelProperty(value = "单价", example = "")
private BigDecimal price; private BigDecimal price;
/**
* 单价
*/
@ApiModelProperty(value = "真实付款金额", example = "")
private BigDecimal priceReal;
/** /**
* 票提 * 票提
*/ */
...@@ -45,4 +52,15 @@ public class UserDataAgentVo { ...@@ -45,4 +52,15 @@ public class UserDataAgentVo {
*/ */
@ApiModelProperty(value = "提成", example = "") @ApiModelProperty(value = "提成", example = "")
private BigDecimal commission; private BigDecimal commission;
private static final UserDataAgentVo obj = new UserDataAgentVo();
public static UserDataAgentVo getNew() {
try {
return (UserDataAgentVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new UserDataAgentVo();
}
} }
...@@ -10,6 +10,8 @@ import com.liquidnet.client.admin.zhengzai.smile.dto.SmilePriceParam; ...@@ -10,6 +10,8 @@ import com.liquidnet.client.admin.zhengzai.smile.dto.SmilePriceParam;
import com.liquidnet.client.admin.zhengzai.smile.dto.SmileShowParam; import com.liquidnet.client.admin.zhengzai.smile.dto.SmileShowParam;
import com.liquidnet.service.smile.entity.SmileSchool; import com.liquidnet.service.smile.entity.SmileSchool;
import javax.servlet.ServletOutputStream;
/** /**
* <p> * <p>
* 服务类 * 服务类
...@@ -68,4 +70,6 @@ public interface ISmileShowService extends IService<SmileSchool> { ...@@ -68,4 +70,6 @@ public interface ISmileShowService extends IService<SmileSchool> {
*/ */
AjaxResult updateRedis(); AjaxResult updateRedis();
void exportData(ServletOutputStream servletOutputStream, String performancesId);
} }
package com.liquidnet.client.admin.zhengzai.smile.service.impl; package com.liquidnet.client.admin.zhengzai.smile.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.liquidnet.client.admin.common.core.domain.AjaxResult; import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.utils.StringUtils; import com.liquidnet.client.admin.common.utils.StringUtils;
import com.liquidnet.client.admin.zhengzai.smile.dto.*; import com.liquidnet.client.admin.zhengzai.smile.dto.*;
import com.liquidnet.client.admin.zhengzai.smile.service.ISmileShowService; import com.liquidnet.client.admin.zhengzai.smile.service.ISmileShowService;
import com.liquidnet.client.admin.zhengzai.smile.utils.SmileRedisUtils; import com.liquidnet.client.admin.zhengzai.smile.utils.SmileRedisUtils;
import com.liquidnet.service.galaxy.utils.ObjectUtil;
import com.liquidnet.service.goblin.constant.SmileRedisConst; import com.liquidnet.service.goblin.constant.SmileRedisConst;
import com.liquidnet.service.kylin.dao.TicketAndStatusDao; import com.liquidnet.service.kylin.dao.TicketAndStatusDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformancesDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.entity.KylinPerformanceStatus;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
import com.liquidnet.service.kylin.mapper.*; import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.smile.entity.SmileAgent; import com.liquidnet.service.smile.entity.SmileAgent;
import com.liquidnet.service.smile.entity.SmilePrice; import com.liquidnet.service.smile.entity.SmilePrice;
import com.liquidnet.service.smile.entity.SmileSchool; import com.liquidnet.service.smile.entity.SmileSchool;
import com.liquidnet.service.smile.entity.SmileUser; import com.liquidnet.service.smile.entity.SmileUser;
import com.liquidnet.service.smile.entity.dto.ShowBaseVoDto;
import com.liquidnet.service.smile.mapper.SmileAgentMapper; import com.liquidnet.service.smile.mapper.SmileAgentMapper;
import com.liquidnet.service.smile.mapper.SmilePriceMapper; import com.liquidnet.service.smile.mapper.SmilePriceMapper;
import com.liquidnet.service.smile.mapper.SmileSchoolMapper; import com.liquidnet.service.smile.mapper.SmileSchoolMapper;
...@@ -33,11 +42,14 @@ import org.springframework.data.mongodb.core.query.Criteria; ...@@ -33,11 +42,14 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -87,45 +99,30 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -87,45 +99,30 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
@Override @Override
public TableDataInfo listShow(SmileShowParam smileShowParam) { public TableDataInfo listShow(SmileShowParam smileShowParam) {
PageHelper.startPage(smileShowParam.getPageNum(), smileShowParam.getPageSize());
TableDataInfo rspData = new TableDataInfo(); TableDataInfo rspData = new TableDataInfo();
//查询所有代理的演出id //查询所有代理的演出id
List<KylinPerformances> kylinPerformancesList = kylinPerformancesMapper.selectPerIdByAgent((smileShowParam.getPageNum()-1)* smileShowParam.getPageSize(),smileShowParam.getPageSize()); List<KylinPerformancesDto> kylinPerformancesList = kylinPerformancesMapper.selectPerIdByAgent();
List<ShowVo> showVoList = kylinPerformancesList.stream().map(kylinPerformances -> { List<ShowVo> showVoList = kylinPerformancesList.stream().map(kylinPerformancesDto -> {
ShowVo vo = new ShowVo(); ShowVo vo = ShowVo.getNew().copy(kylinPerformancesDto);
//演出id Integer ordNum = kylinOrderTicketRelationsMapper.concatByAgentDed(kylinPerformancesDto.getPerformancesId());
vo.setPerformancesId(kylinPerformances.getPerformancesId()); vo.setTotalOutAgent(ordNum);
//演出名称
vo.setTitle(kylinPerformances.getTitle());
//城市
vo.setCityName(kylinPerformances.getCityName());
//根据演出id 查询所有订单
Map map = kylinOrderTicketsMapper.selectByPerformanceId(kylinPerformances.getPerformancesId());
vo.setOpen(map != null ? (BigDecimal) (map.get("open")) : null);
vo.setTotalSalePrice(map != null ? (BigDecimal) (map.get("price")) : null);
//根据演出id查询销售代理
List<Long> ordNum = kylinOrderTicketRelationsMapper.concatByAgentDed(kylinPerformances.getPerformancesId());
vo.setTotalOutAgent(ordNum.stream().reduce(Long::sum).orElse(0L));
//演出结束时间
vo.setTimeEnd(kylinPerformances.getTimeEnd());
//演出开始时间
vo.setTimeStart(kylinPerformances.getTimeStart());
//演出状态
LambdaQueryWrapper<KylinPerformanceStatus> queryWrapper = Wrappers.lambdaQuery(KylinPerformanceStatus.class);
queryWrapper.eq(KylinPerformanceStatus::getPerformanceId, kylinPerformances.getPerformancesId());
vo.setShowStatus(kylinPerformanceStatusMapper.selectOne(queryWrapper).getStatus());
//打款状态 //打款状态
vo.setStatus(smileRedisUtils.getShowStatus(kylinPerformances.getPerformancesId())); vo.setStatus(smileRedisUtils.getShowStatus(kylinPerformancesDto.getPerformancesId()));
//判断该演出是否打款
//演出顺序 Integer showPriceId = smileRedisUtils.getShowPriceId(kylinPerformancesDto.getPerformancesId());
vo.setComment(kylinPerformances.getComment()); if (showPriceId != null) {
//返回记录中的缓存 保证打款外部数据不变
return vo; return smileRedisUtils.getShowVoByPerId(kylinPerformancesDto.getPerformancesId());
} else {
//redis保存演出数据
smileRedisUtils.setShowVoByPerId(vo);
return vo;
}
}).collect(Collectors.toList()); }).collect(Collectors.toList());
rspData.setCode(0); rspData.setCode(0);
rspData.setRows(showVoList); rspData.setRows(showVoList);
rspData.setTotal(smileAgentMapper.selectCountPerId()); rspData.setTotal(new PageInfo(kylinPerformancesList).getTotal());
return rspData; return rspData;
} }
...@@ -137,14 +134,14 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -137,14 +134,14 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
kylinPerformancesMapper.updateCommentByPer(showSort.getSort(), showSort.getPerformancesId()); kylinPerformancesMapper.updateCommentByPer(showSort.getSort(), showSort.getPerformancesId());
log.info("redis show key:{}", showSort.getPerformancesId()); log.info("redis show key:{}", showSort.getPerformancesId());
//判断该演出是否修改过票提 //判断该演出是否修改过票提
if (smileRedisUtils.getShowIds().stream().anyMatch(showId -> showSort.getPerformancesId().equals(showId))){ if (smileRedisUtils.getShowIds().stream().anyMatch(showId -> showSort.getPerformancesId().equals(showId))) {
List<String> showIds = smileRedisUtils.getShowIds(); List<String> showIds = smileRedisUtils.getShowIds();
showIds.remove(showSort.getPerformancesId()); showIds.remove(showSort.getPerformancesId());
showIds.add(0,showSort.getPerformancesId()); showIds.add(0, showSort.getPerformancesId());
smileRedisUtils.setShowIds(showIds); smileRedisUtils.setShowIds(showIds);
return AjaxResult.success(); return AjaxResult.success();
}else { } else {
return AjaxResult.warn("清先为演出设置票提!"); return AjaxResult.warn("清先为演出设置票提!");
} }
...@@ -158,28 +155,75 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -158,28 +155,75 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
@Override @Override
public AjaxResult price(SmilePriceParam smilePriceParam) { public AjaxResult price(SmilePriceParam smilePriceParam) {
SmilePrice smilePrice = new SmilePrice();
BeanUtils.copyProperties(smilePriceParam, smilePrice);
//查询演出状态 //查询演出状态
AjaxResult showStatue = showStatue(smilePriceParam); AjaxResult showStatue = showStatue(smilePriceParam);
if (showStatue != null) { if (showStatue != null) {
return showStatue; return showStatue;
} }
//用户是否打款
Integer status = smileRedisUtils.getShowPriceUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid()); Integer status = smileRedisUtils.getShowPriceUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
if (smilePriceParam.getStatus().equals(status)) { if (status != null) {
return AjaxResult.warn("不可重复打款"); return AjaxResult.warn("不可重复打款");
} } else {
if (smilePriceParam.getStatus().equals(0)) { //判断演出是否有用户打过款
//计算该用户的佣金 Integer showPriceId = smileRedisUtils.getShowPriceId(smilePriceParam.getPerformancesId());
Map userPerformance = orderTicketsMapper.getUserPerformanceByUidAndProId(smilePriceParam.getUid(), smilePriceParam.getPerformancesId()); if (showPriceId == null) {
BigDecimal price = userPerformance.get("commiss") == null ? new BigDecimal(0) : new BigDecimal(userPerformance.get("commiss").toString()); //演出数据保存
smilePrice.setPrice(price); //1.1.记录该演出打款数据
smilePrice.setCreatedDate(LocalDateTime.now()); ShowVo showVoByPerId = smileRedisUtils.getShowVoByPerId(smilePriceParam.getPerformancesId());
smilePriceMapper.insert(smilePrice); if (showVoByPerId != null) {
SmilePrice smilePriceByPerId = new SmilePrice();
smilePriceByPerId.setPerformancesId(smilePriceParam.getPerformancesId());
String showVoByPerIdJson = JSON.toJSONString(showVoByPerId);
smilePriceByPerId.setPrice(showVoByPerId.getTotalSalePrice());
smilePriceByPerId.setRecord(showVoByPerIdJson);
smilePriceMapper.insert(smilePriceByPerId);
//1.2.保存演出打款标识
smileRedisUtils.setShowPriceId(smilePriceParam.getPerformancesId());
} else {
return AjaxResult.error("请刷新页面重试!");
}
//个人打款数据记录保存
//2.1.获取演出代理全部uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerIdNotType(smilePriceParam.getPerformancesId());
//遍历smile获取列表数据保存入打款表中
for (SmileUser smileUser : smileUsers) {
//获取缓存单个用户代理记录
UserData userDataByUid = smileRedisUtils.getUserDataByUid(smilePriceParam.getPerformancesId(), smileUser.getUid());
if (userDataByUid!=null){
SmilePrice smilePriceByUidAndPerId = SmilePrice.getNew();
BigDecimal price = new BigDecimal("0");
List<UserDataAgentVo> dataAgentVos = userDataByUid.getDataAgentVos();
for (UserDataAgentVo userDataAgentVo : dataAgentVos) {
price = price.add(userDataAgentVo.getCommission());
}
smilePriceByUidAndPerId.setPerformancesId(smilePriceParam.getPerformancesId());
smilePriceByUidAndPerId.setUid(smileUser.getUid());
smilePriceByUidAndPerId.setPrice(price);
smilePriceByUidAndPerId.setCreatedDate(LocalDateTime.now());
String userDataJson = JSON.toJSONString(userDataByUid);
//保存打款金额
smilePriceByUidAndPerId.setRecord(userDataJson);
smilePriceByUidAndPerId.setStatus(0);
smilePriceMapper.insert(smilePriceByUidAndPerId);
}
}
}
//打过款 表中已有数据直接修改打款记录即可
LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SmilePrice::getUid, smilePriceParam.getUid());
lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, smilePriceParam.getPerformancesId());
SmilePrice smilePriceUpdate = SmilePrice.getNew();
smilePriceUpdate.setStatus(1);
smilePriceUpdate.setUpdatedDate(LocalDateTime.now());
smilePriceMapper.update(smilePriceUpdate, lambdaQueryWrapper);
SmilePrice smilePrice = smilePriceMapper.selectOne(lambdaQueryWrapper);
//该用户该演出标记打款
smileRedisUtils.setPriceByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid()); smileRedisUtils.setPriceByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
//计算总营收 //计算总营收
BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid()); BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid());
smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), price.add(userTotalPrice)); smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), smilePrice.getPrice().add(userTotalPrice));
} }
return AjaxResult.success(); return AjaxResult.success();
} }
...@@ -232,7 +276,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -232,7 +276,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
showTicketVo.setTitle(ticketAndStatusDao.getTitle()); showTicketVo.setTitle(ticketAndStatusDao.getTitle());
//单价 //单价
showTicketVo.setPrice(ticketAndStatusDao.getPrice()); showTicketVo.setPrice(ticketAndStatusDao.getPrice());
showTicketVo.setType(ticketAndStatusDao.getType()==1?"单日票":"通票"); showTicketVo.setType(ticketAndStatusDao.getType() == 1 ? "单日票" : "通票");
showTicketVo.setUseEnd(ticketAndStatusDao.getUseEnd()); showTicketVo.setUseEnd(ticketAndStatusDao.getUseEnd());
showTicketVo.setUseStart(ticketAndStatusDao.getUseStart()); showTicketVo.setUseStart(ticketAndStatusDao.getUseStart());
showTicketVo.setTotalGeneral(ticketAndStatusDao.getTotalGeneral()); showTicketVo.setTotalGeneral(ticketAndStatusDao.getTotalGeneral());
...@@ -290,13 +334,16 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -290,13 +334,16 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return null; return null;
} }
//演出名称 //演出名称
KylinPerformanceVo kylinPerformanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performancesId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName()); LambdaQueryWrapper<KylinPerformances> queryWrapper = new LambdaQueryWrapper<>();
if (kylinPerformanceVo == null) { queryWrapper.eq(KylinPerformances::getPerformancesId, performancesId);
KylinPerformances kylinPerformances = kylinPerformancesMapper.selectOne(queryWrapper);
//KylinPerformanceVo kylinPerformanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performancesId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
if (kylinPerformances == null) {
return null; return null;
} }
saleDataVo.setTitle(kylinPerformanceVo.getTitle()); saleDataVo.setTitle(kylinPerformances.getTitle());
//map 票提id,票提信息 //map 票提id,票提信息
Map<String, SmileAgent> map = getSmileAgentMap(smileAgents); Map<String, SmileAgent> tidMap = getSmileAgentMap(smileAgents);
List<String> ticketsIdList = smileAgents.stream().map(SmileAgent::getTicketId).collect(Collectors.toList()); List<String> ticketsIdList = smileAgents.stream().map(SmileAgent::getTicketId).collect(Collectors.toList());
...@@ -304,17 +351,132 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -304,17 +351,132 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
//根据票提IDs查询票信息 //根据票提IDs查询票信息
List<TicketAndStatusDao> ticketAndStatusDaoList = kylinTicketsMapper.selectTicketsByIds(ticketsIdList); List<TicketAndStatusDao> ticketAndStatusDaoList = kylinTicketsMapper.selectTicketsByIds(ticketsIdList);
for (TicketAndStatusDao ticketAndStatusDao : ticketAndStatusDaoList) { for (TicketAndStatusDao ticketAndStatusDao : ticketAndStatusDaoList) {
SmileAgent smileAgent = map.get(ticketAndStatusDao.getTicketsId()); SmileAgent smileAgent = tidMap.get(ticketAndStatusDao.getTicketsId());
ShowAgentVo showAgentVo = getShowAgentVo(performancesId, ticketAndStatusDao, smileAgent); ShowAgentVo showAgentVo = getShowAgentVo(performancesId, ticketAndStatusDao, smileAgent);
showAgentVoList.add(showAgentVo); showAgentVoList.add(showAgentVo);
} }
//根据演出id查询出所有代理人的uid List<String> ids = ObjectUtil.cloneLinkedListStr();
List<SmileUser> smileUsers = smileUserMapper.getAllUidByPerId(performancesId); //创建list长度定位分组数量
List<UserData> userDataList = new ArrayList<>(smileUsers.size()); List<UserData> userDataList = new ArrayList<>();
for (SmileUser smileUser : smileUsers) { //已打款跳出循环,去打款表中获取打款记录
UserData userData = getUserData(performancesId, smileUser, map, ticketAndStatusDaoList); LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = Wrappers.lambdaQuery(SmilePrice.class);
userDataList.add(userData); lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, performancesId);
lambdaQueryWrapper.isNotNull(SmilePrice::getUid);
lambdaQueryWrapper.eq(SmilePrice::getDelTag, 0);
List<SmilePrice> smilePrices = smilePriceMapper.selectList(lambdaQueryWrapper);
for (SmilePrice smilePrice : smilePrices) {
if (smilePrice.getRecord() != null && !smilePrice.getRecord().equals("")) {
UserData userData = JSON.parseObject(smilePrice.getRecord(), UserData.class);
//保存打款标识
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, userData.getUid()));
userDataList.add(userData);
ids.add(userData.getUid());
}
}
//判断该演出是否有打款
Integer showPriceId = smileRedisUtils.getShowPriceId(performancesId);
if (showPriceId==null){
//根据演出id查询出所有代理人的销售
List<ShowBaseVoDto> showBaseVoList = smileAgentMapper.selectMapByPerId(performancesId);
//根据代理id进行分组
Map<String, List<ShowBaseVoDto>> stringListMap = showBaseVoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getAgentId));
//遍历分组
for (Map.Entry<String, List<ShowBaseVoDto>> showMap : stringListMap.entrySet()) {
UserData userData = UserData.getNew();
List<ShowBaseVoDto> showBaseVoDtoList = showMap.getValue();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
//当前list不为null,遍历有数据,方便后期判断是否总代取uid
ShowBaseVoDto baseVoDto = showBaseVoDtoList.get(0);
//根据票提id分组 list数量小于等于票提数量
Map<String, List<ShowBaseVoDto>> tidMapByUid = showBaseVoDtoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getTid));
//对票提进行遍历(总代没有售出而普代有售出)
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
//为没个uid的没个票提id 塞数据
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
//有且只有一条
List<ShowBaseVoDto> showBaseVoDtoS = tidMapByUid.get(smileAgent.getTicketsId());
//判断用户是否卖出该票提
if (showBaseVoDtoS != null && showBaseVoDtoS.size() > 0) {
ShowBaseVoDto showBaseVoDto = showBaseVoDtoS.get(0);
userDataAgentVo.setTicketsId(showBaseVoDto.getTid());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(showBaseVoDto.getNumber());
userDataAgentVo.setPrice(showBaseVoDto.getPrice());
userDataAgentVo.setPriceReal(showBaseVoDto.getPriceReal());
// userDataAgentVo.setAgent(showBaseVoDto.getUse());
userDataAgentVo.setCommission(showBaseVoDto.getTotalPrice().setScale(2, RoundingMode.HALF_UP));
} else {
//没有买过
userDataAgentVo.setTicketsId(smileAgent.getTicketsId());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setPriceReal(new BigDecimal("0.00"));
// userDataAgentVo.setAgent(showBaseVoDto.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
}
//判断是否为总代
if (baseVoDto.getType() == 1) {
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, baseVoDto.getAgentId(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
}
}
userDataAgentVos.add(userDataAgentVo);
}
userData.setUid(showBaseVoDtoList.get(0).getAgentId());
userData.setUsername(showBaseVoDtoList.get(0).getName());
userData.setCityName(showBaseVoDtoList.get(0).getCity());
userData.setType(showBaseVoDtoList.get(0).getType());
userData.setDataAgentVos(userDataAgentVos);
//设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, showBaseVoDtoList.get(0).getAgentId()));
ids.add(userData.getUid());
userDataList.add(userData);
//缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId);
}
//查询所有代理uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId);
smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
userDataAgentVo.setTicketsId(smileAgent.getTicketsId());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setPriceReal(new BigDecimal("0.00"));
userDataAgentVo.setCommission(new BigDecimal("0.00"));
userDataAgentVos.add(userDataAgentVo);
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, smileUser.getUid(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
}
userData.setUid(smileUser.getUid());
userData.setUsername(smileUser.getName());
userData.setCityName(smileUser.getCity());
userData.setType(smileUser.getType());
userData.setDataAgentVos(userDataAgentVos);
//设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, smileUser.getUid()));
ids.add(userData.getUid());
//缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId);
if (!userDataAgentVo.getCommission().equals(new BigDecimal("0.00"))){
userDataList.add(userData);
}
}
}
});
} }
saleDataVo.setUserDataList(userDataList); saleDataVo.setUserDataList(userDataList);
saleDataVo.setShowAgentVoList(showAgentVoList); saleDataVo.setShowAgentVoList(showAgentVoList);
...@@ -347,7 +509,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -347,7 +509,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
public AjaxResult updateRedis() { public AjaxResult updateRedis() {
try { try {
String perIds = (String) smileRedisUtils.get(SmileRedisConst.SMILE_SHOW); String perIds = (String) smileRedisUtils.get(SmileRedisConst.SMILE_SHOW);
if(StringUtils.isNotBlank(perIds)){ if (StringUtils.isNotBlank(perIds)) {
List<String> list = new ArrayList<>(Arrays.asList(perIds.split(","))); List<String> list = new ArrayList<>(Arrays.asList(perIds.split(",")));
smileRedisUtils.setShowIds(list); smileRedisUtils.setShowIds(list);
} }
...@@ -359,7 +521,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -359,7 +521,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return AjaxResult.success(showIds); return AjaxResult.success(showIds);
} }
private UserData getUserData(String performancesId, SmileUser smileUser, Map<String, SmileAgent> map, List<TicketAndStatusDao> smileAgentList) { private UserData getUserData(String performancesId, SmileUser smileUser, Map<String, SmileAgent> tidMap, List<TicketAndStatusDao> smileAgentList) {
UserData userData = new UserData(); UserData userData = new UserData();
//个人用户的演出数据详情 //个人用户的演出数据详情
//便利票种id 查询用户的销售数据信息 //便利票种id 查询用户的销售数据信息
...@@ -379,7 +541,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -379,7 +541,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
userDataAgentVo.setTicketName(smileAgent.getTitle()); userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0)); userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0)); userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setAgent(smileUser.getType() == 1 ? map.get(smileAgent.getTicketsId()).getTotalCarry() : map.get(smileAgent.getTicketsId()).getOrdCarry()); userDataAgentVo.setAgent(smileUser.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00")); userDataAgentVo.setCommission(new BigDecimal("0.00"));
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, smileUser.getUid(), smileAgent.getTicketsId()); log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, smileUser.getUid(), smileAgent.getTicketsId());
} }
...@@ -441,5 +603,100 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -441,5 +603,100 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return showAgentVo; return showAgentVo;
} }
@Override
public void exportData(ServletOutputStream servletOutputStream, String performancesId) {
ExcelWriter writer = EasyExcelFactory.write(servletOutputStream).build();
// 动态添加表头,适用一些表头动态变化的场景
SaleDataVo saleDataVo = saleData(performancesId);
WriteSheet sheet1 = new WriteSheet();
sheet1.setSheetName(saleDataVo.getTitle().concat("演出数据"));
sheet1.setSheetNo(0);
List<UserData> userDataList = saleDataVo.getUserDataList();
ArrayList<String> ticketList = Lists.newArrayList();
List<ShowAgentVo> agentVoList = saleDataVo.getShowAgentVoList();
agentVoList.forEach(showAgentVo -> ticketList.add(showAgentVo.getTitle()));
// 创建一个表格,用于 Sheet 中使用
WriteTable table = new WriteTable();
table.setTableNo(1);
table.setHead(head(ticketList));
// 写数据
if (userDataList != null) {
writer.write(contentData(userDataList, agentVoList), sheet1, table);
}
writer.finish();
}
private List<List<String>> head(List<String> ticketList) {
List<List<String>> headTitles = new ArrayList<>();
String basicInfo = "代理数据";
String ticket = "票数据";
String saleData = "销售数据";
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "uid"));
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "姓名"));
/* headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "性别"));
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "手机号"));*/
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "所属地区"));
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "身份"));
//做表
ticketList.forEach(title -> headTitles.add(Lists.newArrayList(ticket, ticket, title)));
ArrayList<String> dataList = Lists.newArrayList("总销售张数", "总销售金额", "总销售佣金", "打款状态");
//做表
dataList.forEach(dataStr -> headTitles.add(Lists.newArrayList(saleData, saleData, dataStr)));
return headTitles;
}
private List<List<Object>> contentData(List<UserData> userDataList, List<ShowAgentVo> agentVoList) {
List<List<Object>> contentList = Lists.newArrayList();
//这里一个List<Object>才代表一行数据,需要映射成每行数据填充,横向填充(把实体数据的字段设置成一个List<Object>)
// contentList.add(Lists.newArrayList("测试", "商品A", "苹果🍎"));
userDataList.forEach(userData -> {
//总销售张数
BigDecimal num = new BigDecimal("0");
//总销售金额
BigDecimal price = new BigDecimal("0");
//总销售佣金
BigDecimal commission = new BigDecimal("0");
ArrayList<Object> arrayList = Lists.newArrayList();
arrayList.add(userData.getUid());
arrayList.add(userData.getUsername());
arrayList.add(userData.getCityName());
arrayList.add(userData.getType() == 1 ? "总代" : "普代");
//便利票数据
List<UserDataAgentVo> dataAgentVos = userData.getDataAgentVos();
Map<String, UserDataAgentVo> agentVoMap = dataAgentVos.stream().collect(Collectors.toMap(UserDataAgentVo::getTicketsId, Function.identity()));
//遍历agentVoList顺序塞值
for (ShowAgentVo showAgentVo : agentVoList) {
UserDataAgentVo userDataAgentVo = agentVoMap.get(showAgentVo.getTicketId());
if (userDataAgentVo != null) {
num = num.add(new BigDecimal(userDataAgentVo.getNumber().toString()));
price = price.add(userDataAgentVo.getPriceReal());
commission = commission.add(userDataAgentVo.getCommission());
arrayList.add(userDataAgentVo.getNumber());
} else {
arrayList.add(0);
}
}
/* for (UserDataAgentVo userDataAgentVo : dataAgentVos) {
num = num.add(new BigDecimal(userDataAgentVo.getNumber().toString()));
price = price.add(userDataAgentVo.getPrice().multiply(userDataAgentVo.getNumber()));
commission = commission.add(userDataAgentVo.getCommission());
arrayList.add(userDataAgentVo.getNumber());
}*/
arrayList.add(num);
arrayList.add(price);
arrayList.add(commission);
arrayList.add(userData.getPriceStatus() != null && userData.getPriceStatus() == 0 ? "已打款" : "待打款");
contentList.add(arrayList);
});
return contentList;
}
} }
package com.liquidnet.client.admin.zhengzai.smile.utils; package com.liquidnet.client.admin.zhengzai.smile.utils;
import com.liquidnet.client.admin.zhengzai.smile.dto.ShowVo;
import com.liquidnet.client.admin.zhengzai.smile.dto.UserData;
import com.liquidnet.service.goblin.dto.vo.SmileProjectDetailsVo; import com.liquidnet.service.goblin.dto.vo.SmileProjectDetailsVo;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil; import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
...@@ -13,7 +15,6 @@ import com.liquidnet.service.smile.entity.SmileVolunteersTeam; ...@@ -13,7 +15,6 @@ import com.liquidnet.service.smile.entity.SmileVolunteersTeam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -107,6 +108,30 @@ public class SmileRedisUtils { ...@@ -107,6 +108,30 @@ public class SmileRedisUtils {
return (String) redisDataSourceUtil.getRedisSweetUtil().get(SmileRedisConst.SMILE_SHOW.concat(performancesId)); return (String) redisDataSourceUtil.getRedisSweetUtil().get(SmileRedisConst.SMILE_SHOW.concat(performancesId));
} }
/**
* 保存用户最新计算数据
* @param userData
*/
public void setUserDataByUid(UserData userData, String perId) {
String key = SmileRedisConst.SELL_USER_DATA.concat(perId).concat(":").concat(userData.getUid());
redisDataSourceUtil.getRedisSweetUtil().set(key, userData, 60 * 60 * 24);
}
/**
* 获取用户最新计算数据
* @param userData
*/
public UserData getUserDataByUid(String perId,String uid) {
String key = SmileRedisConst.SELL_USER_DATA.concat(perId).concat(":").concat(uid);
Object obj = redisDataSourceUtil.getRedisSweetUtil().get(key);
if (obj==null){
return null;
}else {
return (UserData)obj;
}
}
/** /**
* 保存演出ids * 保存演出ids
*/ */
...@@ -293,4 +318,27 @@ public class SmileRedisUtils { ...@@ -293,4 +318,27 @@ public class SmileRedisUtils {
String rdk = SmileRedisConst.VOLUNTEERS_DETAILS.concat(projectId).concat(":uid:").concat(uid); String rdk = SmileRedisConst.VOLUNTEERS_DETAILS.concat(projectId).concat(":uid:").concat(uid);
getRedis().set(rdk, teamIds); getRedis().set(rdk, teamIds);
} }
/**
* 保存演出列表vo
* @param vo
*/
public void setShowVoByPerId(ShowVo vo) {
String key = SmileRedisConst.SELL_SHOW_SAVE.concat(vo.getPerformancesId());
redisDataSourceUtil.getRedisSweetUtil().set(key,vo);
}
/**
* 获取演出列表vo
* @param vo
*/
public ShowVo getShowVoByPerId(String perId) {
String key = SmileRedisConst.SELL_SHOW_SAVE.concat(perId);
Object o = redisDataSourceUtil.getRedisSweetUtil().get(key);
if (o==null){
return null;
}else {
return (ShowVo) o;
}
}
} }
package com.liquidnet.service.kylin.dao.report;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 演出
* </p>
*
* @author liquidnet
* @since 2021-05-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinPerformancesDto implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
/**
* 演出id
*/
private String performancesId;
/**
* 演出名
*/
private String title;
/**
* 城市
*/
private String cityName;
/**
* 总销售数量 -张 saleGeneral
*/
private BigDecimal open;
/**
* 总销售金额 totalSalePrice
*/
private BigDecimal totalSalePrice;
/**
* 演出结束时间
*/
private LocalDateTime timeEnd;
/**
* 演出结束时间
*/
private LocalDateTime timeStart;
/**
* 顺序
*/
private String comment;
/**
* 演出状态
*/
private int status;
}
...@@ -18,5 +18,5 @@ public interface KylinOrderTicketRelationsMapper extends BaseMapper<KylinOrderTi ...@@ -18,5 +18,5 @@ public interface KylinOrderTicketRelationsMapper extends BaseMapper<KylinOrderTi
Integer concatByAgent(@Param("performancesId") String performancesId); Integer concatByAgent(@Param("performancesId") String performancesId);
List<Long> concatByAgentDed(@Param("performancesId") String performancesId); Integer concatByAgentDed(@Param("performancesId") String performancesId);
} }
...@@ -56,8 +56,6 @@ public interface KylinOrderTicketsMapper extends BaseMapper<KylinOrderTickets> { ...@@ -56,8 +56,6 @@ public interface KylinOrderTicketsMapper extends BaseMapper<KylinOrderTickets> {
List<KylinOrderTicketAndAgentVo> selectListByPerformanceId(@Param("performancesId") String performancesId,@Param("ticketId")String ticketId); List<KylinOrderTicketAndAgentVo> selectListByPerformanceId(@Param("performancesId") String performancesId,@Param("ticketId")String ticketId);
Map selectByPerformanceId(@Param("performancesId") String performancesId);
List<String> getAgentIdListByPerId(@Param("performancesId") String performancesId); List<String> getAgentIdListByPerId(@Param("performancesId") String performancesId);
Map selectNumAndPrice(@Param("performancesId") String performancesId,@Param("ticketsId") String ticketsId); Map selectNumAndPrice(@Param("performancesId") String performancesId,@Param("ticketsId") String ticketsId);
......
...@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.mapper; ...@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dao.report.KylinPerformancesDto;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -67,7 +68,7 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> { ...@@ -67,7 +68,7 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<KylinPerformances> selectByComment(); List<KylinPerformances> selectByComment();
List<KylinPerformances> selectPerIdByAgent(@Param("pageNumber") Integer pageNumber, @Param("pageSize")Integer pageSize); List<KylinPerformancesDto> selectPerIdByAgent();
List<KylinPerformancesDao> selectTicketIdByPerId(@Param("performancesId") String performancesId); List<KylinPerformancesDao> selectTicketIdByPerId(@Param("performancesId") String performancesId);
......
...@@ -3,11 +3,23 @@ ...@@ -3,11 +3,23 @@
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper"> <mapper namespace="com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper">
<select id="concatByAgent" resultType="Long"> <select id="concatByAgent" resultType="Long">
SELECT count(*) FROM kylin_order_ticket_relations WHERE agent_id != 0 AND performance_id = #{performancesId}; SELECT count(*)
FROM kylin_order_ticket_relations
WHERE agent_id != 0
AND performance_id = #{performancesId};
</select> </select>
<select id="concatByAgentDed" resultType="Long"> <select id="concatByAgentDed" resultType="Integer">
SELECT COUNT(*) FROM (SELECT agent_id FROM kylin_order_ticket_relations WHERE agent_id != 0 AND performance_id = #{performancesId} group by agent_id) kotr; SELECT COUNT(kk.mid)
FROM (
SELECT kotr.mid, kotr.agent_id
FROM kylin_order_ticket_relations as kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id
INNER JOIN smile_user AS su ON su.uid = kotr.agent_id
WHERE kots.status IN (1,6,3)
AND kotr.agent_id != 0
AND kotr.performance_id = #{performancesId}
group by kotr.agent_id) kk;
</select> </select>
......
...@@ -530,31 +530,6 @@ ...@@ -530,31 +530,6 @@
</select> </select>
<select id="selectByPerformanceId" resultType="java.util.Map">
SELECT
kk.performance_id,
sum( kot.number - kot.refund_number ) AS `open`,
sum( kot.price_actual - kot.price_refund ) AS price
FROM
kylin_order_tickets AS kot
LEFT JOIN (
SELECT
kotr.order_id,
kotr.agent_id,
kotr.performance_id,
kotr.agent_distributions,
kotr.agent_id_master,
kotr.agent_distributions_master,
kotr.ticket_id
FROM
kylin_order_ticket_relations AS kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id
) AS kk ON kot.order_tickets_id = kk.order_id
WHERE
kk.agent_id != 0
AND kk.performance_id = #{performancesId}
</select>
<select id="getAgentIdListByPerId" resultType="String"> <select id="getAgentIdListByPerId" resultType="String">
SELECT agent_id SELECT agent_id
FROM kylin_order_ticket_relations FROM kylin_order_ticket_relations
......
...@@ -717,17 +717,53 @@ GROUP BY user_mobile,tickets_id; ...@@ -717,17 +717,53 @@ GROUP BY user_mobile,tickets_id;
select performances_id,comment from kylin_performances where `comment` != "" ORDER BY `comment`; select performances_id,comment from kylin_performances where `comment` != "" ORDER BY `comment`;
</select> </select>
<select id="selectPerIdByAgent" resultType="com.liquidnet.service.kylin.entity.KylinPerformances"> <select id="selectPerIdByAgent" resultType="com.liquidnet.service.kylin.dao.report.KylinPerformancesDto">
select kp.performances_id,kp.title,kp.city_name,kp.time_end,kp.time_start,kp.comment SELECT
from kylin_performances as kp kp.performances_id AS performancesId,
left join kylin_ticket_time_relation as kttr on kttr.performance_id = kp.performances_id kp.title,
left join kylin_ticket_relations as ktr on ktr.times_id = kttr.times_id kp.city_name AS cityName,
inner join kylin_ticket_status as kts on kts.ticket_id = ktr.ticket_id kp.time_end AS timeEnd,
where kts.is_agent = 1 kp.time_start AS timeStart,
AND kp.performances_id IN ( SELECT sa.performance_id FROM smile_agent sa WHERE sa.del_tag = 0 GROUP BY sa.performance_id ) kp.`comment`,
group by kp.performances_id IFNULL( map.`open`, 0 ) AS OPEN,
order by kp.comment desc, kp.time_start asc IFNULL( map.price, 0 ) AS totalSalePrice,
limit #{pageNumber},#{pageSize} kps.`status`
FROM
kylin_performances AS kp
LEFT JOIN kylin_performance_status AS kps ON kps.performance_id = kp.performances_id
LEFT JOIN (
SELECT
kk.performance_id,
sum( kot.number - kot.refund_number ) AS `open`,
sum( kot.price_actual - kot.price_refund ) AS price
FROM
kylin_order_tickets AS kot
LEFT JOIN (
SELECT
kotr.order_id,
kotr.agent_id,
kotr.performance_id,
kotr.agent_distributions,
kotr.agent_id_master,
kotr.agent_distributions_master,
kotr.ticket_id
FROM
kylin_order_ticket_relations AS kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id
INNER JOIN smile_user AS su ON su.uid = kotr.agent_id
WHERE
kots.STATUS IN ( 1, 6 ,3 )
) AS kk ON kot.order_tickets_id = kk.order_id
WHERE
kk.agent_id != 0
GROUP BY
kk.performance_id
) AS map ON map.performance_id = kp.performances_id
WHERE
kp.performances_id IN ( SELECT sa.performance_id FROM smile_agent AS sa WHERE sa.del_tag = 0 GROUP BY sa.performance_id )
ORDER BY
kp.COMMENT DESC,
kp.time_start ASC
</select> </select>
<select id="selectTicketIdByPerId" resultType="com.liquidnet.service.kylin.dao.KylinPerformancesDao"> <select id="selectTicketIdByPerId" resultType="com.liquidnet.service.kylin.dao.KylinPerformancesDao">
......
...@@ -44,6 +44,15 @@ public class SmilePrice implements Serializable { ...@@ -44,6 +44,15 @@ public class SmilePrice implements Serializable {
*/ */
private BigDecimal price; private BigDecimal price;
/**
* 打款记录保留
*/
private String record;
/**
* 打款标识0:未打款,1:已打款
*/
private Integer status;
/** /**
* 0:未删除,1:已删除 * 0:未删除,1:已删除
...@@ -60,6 +69,14 @@ public class SmilePrice implements Serializable { ...@@ -60,6 +69,14 @@ public class SmilePrice implements Serializable {
*/ */
private LocalDateTime updatedDate; private LocalDateTime updatedDate;
private static final SmilePrice obj = new SmilePrice();
public static SmilePrice getNew() {
try {
return (SmilePrice) obj.clone();
} catch (CloneNotSupportedException e) {
return new SmilePrice();
}
}
} }
package com.liquidnet.service.smile.entity.dto;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author TT
*/
@Data
public class ShowBaseVoDto implements Serializable, Cloneable{
/**
* 名字
*/
private String name;
/**
* 城市
*/
private String city;
/**
* agentId
*/
private String agentId;
/**
* 票提id
*/
private String tid;
/**
* 单价
*/
private BigDecimal price;
/**
* 真实付款金额
*/
private BigDecimal priceReal;
/**
* 票提
*/
private BigDecimal use;
/**
* 类型
*/
private int type;
/**
* 张数
*/
private BigDecimal number;
/**
*提成
*/
private BigDecimal totalPrice;
private static final ShowBaseVoDto obj = new ShowBaseVoDto();
public static ShowBaseVoDto getNew() {
try {
return (ShowBaseVoDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ShowBaseVoDto();
}
}
}
...@@ -4,6 +4,7 @@ package com.liquidnet.service.smile.mapper; ...@@ -4,6 +4,7 @@ package com.liquidnet.service.smile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.smile.entity.SmileAgent; import com.liquidnet.service.smile.entity.SmileAgent;
import com.liquidnet.service.smile.entity.dao.SmileAgentDao; import com.liquidnet.service.smile.entity.dao.SmileAgentDao;
import com.liquidnet.service.smile.entity.dto.ShowBaseVoDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -33,4 +34,6 @@ public interface SmileAgentMapper extends BaseMapper<SmileAgent> { ...@@ -33,4 +34,6 @@ public interface SmileAgentMapper extends BaseMapper<SmileAgent> {
List<SmileAgent> selectAgentCarryGtZeroByPerId(@Param("performancesId")String performancesId); List<SmileAgent> selectAgentCarryGtZeroByPerId(@Param("performancesId")String performancesId);
int selectCountPerId(); int selectCountPerId();
List<ShowBaseVoDto> selectMapByPerId(@Param("performancesId") String performancesId);
} }
...@@ -41,4 +41,8 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> { ...@@ -41,4 +41,8 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> {
List<SmileUser> pageUser(@Param("offest") int offest,@Param("size") int size); List<SmileUser> pageUser(@Param("offest") int offest,@Param("size") int size);
List<SmileUser> getAllUidByPerId(@Param("performancesId") String performancesId); List<SmileUser> getAllUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerIdNotType(@Param("performancesId") String performancesId);
} }
...@@ -62,37 +62,23 @@ ...@@ -62,37 +62,23 @@
</select> </select>
<select id="getUserOrgByPerIdAndUidAndAgentMaster" resultType="java.util.Map"> <select id="getUserOrgByPerIdAndUidAndAgentMaster" resultType="java.util.Map">
SELECT *, SELECT
SUM(kk.price * kk.agent_distributions_master * ( kk.number - kk.refund_number )) totalPrice SUM(
FROM (SELECT kote.mid, ( kot.price_actual - kot.price_refund )* kotr.agent_distributions_master) totalPrice
kote.order_id, FROM
kote.ticket_id tid, kylin_order_ticket_relations AS kotr
kt.title, INNER JOIN kylin_order_tickets AS kot ON kot.order_tickets_id = kotr.order_id
kote.user_id, WHERE
kote.performance_id perId, kot.order_tickets_id IN (
kote.is_payment, SELECT
kote.status, kotr.order_id
kot.number, FROM
kot.refund_number, kylin_order_ticket_relations AS kotr
kot.price, LEFT JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id
kotr.agent_id agentId, WHERE
kotr.agent_id_master, kotr.agent_id IN ( SELECT uid FROM smile_user WHERE agent_id = #{uid} )
kotr.agent_distributions `use`, AND kots.status IN (1,6,3)
kotr.agent_distributions_master, ) AND kotr.performance_id = #{performancesId} AND kotr.ticket_id = #{ticketId}
su.type
FROM kylin_order_ticket_entities kote
LEFT JOIN kylin_order_tickets kot ON kote.order_id = kot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations kotr ON kotr.order_id = kot.order_tickets_id
LEFT JOIN kylin_order_ticket_status kots ON kots.order_id = kotr.order_id
LEFT JOIN smile_user su ON su.uid = kotr.agent_id
LEFT JOIN kylin_tickets kt ON kote.ticket_id = kt.tickets_id
WHERE kote.performance_id = #{performancesId}
AND kote.ticket_id = #{ticketId}
AND kotr.agent_id_master = #{uid}
AND kotr.agent_status = 1
AND kots.status = 1
AND kots.pay_status = 1
GROUP BY kote.order_id) kk
</select> </select>
<select id="selectAgentList" resultType="com.liquidnet.service.smile.entity.dao.SmileAgentDao"> <select id="selectAgentList" resultType="com.liquidnet.service.smile.entity.dao.SmileAgentDao">
...@@ -121,4 +107,53 @@ ...@@ -121,4 +107,53 @@
SELECT COUNT(sa.id) FROM (SELECT id FROM smile_agent WHERE del_tag = 0 GROUP BY performance_id) sa; SELECT COUNT(sa.id) FROM (SELECT id FROM smile_agent WHERE del_tag = 0 GROUP BY performance_id) sa;
</select> </select>
<select id="selectMapByPerId" resultType="com.liquidnet.service.smile.entity.dto.ShowBaseVoDto">
SELECT
sukotr.`name`,
sukotr.city,
sukotr.uid AS agent_id,
sukotr.ticket_id AS tid,
sukotr.type,
kot.price,
SUM(kot.price_actual - kot.price_refund) price_real,
sukotr.agent_distributions AS `use`,
SUM( kot.number - kot.refund_number ) number,
SUM( ( kot.price_actual - kot.price_refund ) * sukotr.agent_distributions ) totalPrice
FROM
kylin_order_tickets AS kot
INNER JOIN (
SELECT
su.uid,
su.`name`,
su.city,
su.type,
kotr.order_id,
kotr.performance_id,
kotr.ticket_id,
kotr.agent_distributions
FROM
smile_user AS su
INNER JOIN kylin_order_ticket_relations AS kotr ON kotr.agent_id = su.uid
INNER JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id
WHERE
su.uid IN (
SELECT COALESCE
( kotr.agent_id, kotr.agent_id_master ) uid
FROM
kylin_order_ticket_relations AS kotr
WHERE
kotr.performance_id = #{performancesId}
AND kotr.agent_id != 0
AND COALESCE ( kotr.agent_id, kotr.agent_id_master ) NOT IN ( SELECT sp.uid FROM smile_price AS sp WHERE sp.performanceS_id = #{performancesId} AND sp.uid IS NOT NULL AND sp.record != '')
GROUP BY
uid
)
AND kotr.performance_id = #{performancesId}
AND kots.`status` IN ( 1, 6 ,3)
) AS sukotr ON sukotr.order_id = kot.order_tickets_id
GROUP BY
sukotr.uid,
sukotr.ticket_id
</select>
</mapper> </mapper>
...@@ -149,20 +149,48 @@ ...@@ -149,20 +149,48 @@
<select id="getAllUidByPerId" parameterType="java.util.Map" <select id="getAllUidByPerId" parameterType="java.util.Map"
resultType="com.liquidnet.service.smile.entity.SmileUser"> resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT uid, SELECT
`name`, su.uid,
`type`, su.`name`,
province_id, su.`type`,
province, su.province_id,
city_id, su.province,
city, su.city_id,
area_id, su.city,
area, su.area_id,
address su.area,
su.address
FROM smile_user su FROM
LEFT JOIN kylin_order_ticket_relations AS kotr ON kotr.agent_id = su.uid OR kotr.agent_id_master = su.uid smile_user AS su
WHERE kotr.performance_id = #{performancesId} INNER JOIN ( SELECT mid, agent_id, agent_id_master FROM kylin_order_ticket_relations WHERE performance_id = #{performancesId} AND agent_id != 0 GROUP BY agent_id ) kk ON kk.agent_id = su.uid
group by uid OR kk.agent_id_master = su.uid
GROUP BY
su.uid
</select>
<select id="selectUidByPerId" resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT
su.uid,
su.name,
su.type,
su.city
FROM
smile_user AS su
INNER JOIN ( SELECT kotr.agent_id, kotr.agent_id_master FROM kylin_order_ticket_relations AS kotr WHERE kotr.performance_id = #{performancesId} AND kotr.agent_id != 0 ) kk ON su.uid = kk.agent_id
OR su.uid = kk.agent_id_master
WHERE su.type = 1
GROUP BY su.uid
</select> </select>
<select id="selectUidByPerIdNotType" resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT
su.uid
FROM
smile_user AS su
INNER JOIN ( SELECT kotr.agent_id, kotr.agent_id_master FROM kylin_order_ticket_relations AS kotr WHERE kotr.performance_id = #{performancesId} AND kotr.agent_id != 0 ) kk ON su.uid = kk.agent_id
OR su.uid = kk.agent_id_master
GROUP BY su.uid
</select>
</mapper> </mapper>
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