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

Commit fcdb8358 authored by 张国柄's avatar 张国柄

验票API:刷新、下载数据添加演出及票种信息;

parent d89bf177
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "KylinStationCheckRefreshVo", description = "下载刷新验票信息响应参数")
@Data
public class KylinStationCheckRefreshVo implements Serializable, Cloneable {
private static final long serialVersionUID = -7313121561515036798L;
private KylinStationPerformanceVo performanceVo;
private List<KylinStationCheckOrderVo> checkOrderVos;
private static final KylinStationCheckRefreshVo obj = new KylinStationCheckRefreshVo();
public static KylinStationCheckRefreshVo getNew() {
try {
return (KylinStationCheckRefreshVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinStationCheckRefreshVo();
}
}
}
......@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "KylinStationPerformanceVo", description = "演出列表响应参数")
......@@ -29,6 +30,14 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable {
private List<KylinStationTicketVo> ticketVoList;
@ApiModelProperty(position = 18, value = "可下载时间")
private String canDownTime;
@ApiModelProperty(position = 20, value = "票房")
private BigDecimal priceSum;
@ApiModelProperty(position = 21, value = "票量[9]")
private Integer number;
@ApiModelProperty(position = 22, value = "已验票量[9]")
private Integer checkedNum;
@ApiModelProperty(position = 23, value = "余量[9]")
private Integer remainderNum;
private static final KylinStationPerformanceVo obj = new KylinStationPerformanceVo();
......
......@@ -103,7 +103,7 @@ public class KylinStationController {
@ApiOperation(value = "演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的,over-历史]", allowableValues = "recent,over"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "match", value = "匹配字符[title|cityName|fieldName]"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "match", value = "匹配字符[title|cityName|fieldName]"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageNo", value = "页码", example = "1"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageSize", value = "页记录数", example = "5"),
})
......@@ -179,11 +179,15 @@ public class KylinStationController {
Map<String, String> performanceRelationMap = performanceRelationList.stream().collect(Collectors.toMap(CheckPerformanceRelationParam::getPerformanceId, CheckPerformanceRelationParam::getCanDownTime));
// 补充演出列表票种统计
voList.forEach(r -> {
for (KylinStationPerformanceVo r : voList) {
// 演出的所有订单票明细
List<KylinOrderTicketEntitiesVo> performanceTicketEntitiesVoList = oteVoMap.get(r.getPerformancesId());
if (!CollectionUtils.isEmpty(performanceTicketEntitiesVoList)) continue;
// 订单票明细按票种分组
Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap = performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId));
Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap =
performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId));
List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
......@@ -218,19 +222,13 @@ public class KylinStationController {
ticketVoList.add(stationTicketVo);
}
KylinStationTicketVo sumTicketVo = KylinStationTicketVo.getNew();
sumTicketVo.setTicketId("TT");
sumTicketVo.setTitle("合计");
sumTicketVo.setPriceSum(priceSum);
sumTicketVo.setNumber(number);
sumTicketVo.setCheckedNum(checkedNum);
sumTicketVo.setRemainderNum(remainderNum);
ticketVoList.add(sumTicketVo);
r.setPriceSum(priceSum);
r.setNumber(number);
r.setCheckedNum(checkedNum);
r.setRemainderNum(remainderNum);
r.setTicketVoList(ticketVoList);
r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
});
}
}
}
} catch (Exception e) {
......@@ -246,7 +244,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"),
})
@GetMapping("download")
public ResponseDto<List<KylinStationCheckOrderVo>> downloadTicketData(@RequestParam String performanceId) {
public ResponseDto<KylinStationCheckRefreshVo> downloadTicketData(@RequestParam String performanceId) {
log.info("performanceId:{}", performanceId);
String currentUid = CurrentUtil.getCurrentUid();
......@@ -266,27 +264,52 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608"));
}
List<KylinStationCheckOrderVo> voList = new ArrayList<>();
List<KylinStationCheckOrderVo> checkOrderVos;
// 查取演出对应的订单票明细
Query orderTicketEntitiesVoQuery = Query.query(Criteria.where("performanceId").is(performanceId).and("isPayment").is(1));
voList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("orderTicketsId").in(
voList.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
));
query.fields().include("orderTicketsId").include("qrCode");
List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo t : orderTicketVoList)
for (KylinStationCheckOrderVo r : voList)
for (KylinOrderTicketVo t : orderTicketVoList) {
for (KylinStationCheckOrderVo r : checkOrderVos) {
if (r.getOrderId().equals(t.getOrderTicketsId())) {
r.setQrCode(t.getQrCode());
r.setUserMobile(t.getUserMobile());
r.setUserName(t.getUserName());
}
}
}
KylinStationCheckRefreshVo vo = KylinStationCheckRefreshVo.getNew();
vo.setCheckOrderVos(checkOrderVos);
{
// 查取演出信息
KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)),
KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in(
checkOrderVos.stream().filter(distinctByKey(KylinStationCheckOrderVo::getTicketId)).map(KylinStationCheckOrderVo::getTicketId).toArray()
));
List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (KylinTicketVo r : performanceTicketVoList) {
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setTicketId(r.getTicketsId());
stationTicketVo.setTitle(r.getTitle());
stationTicketVo.setPrice(r.getPrice());
stationTicketVo.setUseStart(r.getUseStart());
stationTicketVo.setUseEnd(r.getUseEnd());
return ResponseDto.success(voList);
ticketVoList.add(stationTicketVo);
}
performanceVo.setTicketVoList(ticketVoList);
vo.setPerformanceVo(performanceVo);
}
return ResponseDto.success(vo);
}
@ApiOperation(value = "上载验票数据")
......@@ -305,7 +328,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "latestUpdateAt", value = "最近更新时间[yyyy-MM-dd HH:mm:ss]"),
})
@PostMapping("refresh")
public ResponseDto<List<KylinStationCheckOrderVo>> refreshTicketData(@RequestParam String performanceId, @RequestParam String latestUpdateAt) {
public ResponseDto<KylinStationCheckRefreshVo> refreshTicketData(@RequestParam String performanceId, @RequestParam String latestUpdateAt) {
log.info("refresh performanceId:{},latestUpdateAt:{}", performanceId, latestUpdateAt);
String currentUid = CurrentUtil.getCurrentUid();
......@@ -325,25 +348,50 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608"));
}
List<KylinStationCheckOrderVo> voList = new ArrayList<>();
List<KylinStationCheckOrderVo> checkOrderVos;
// 查取演出对应的订单票明细
Query orderTicketEntitiesVoQuery = Query.query(
Criteria.where("performanceId").is(performanceId).and("updatedAt").gte(latestUpdateAt)
);
voList = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("orderTicketsId").in(
voList.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
));
query.fields().include("orderTicketsId").include("qrCode");
List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo t : orderTicketVoList)
for (KylinStationCheckOrderVo r : voList)
for (KylinOrderTicketVo t : orderTicketVoList) {
for (KylinStationCheckOrderVo r : checkOrderVos) {
if (r.getOrderId().equals(t.getOrderTicketsId())) r.setQrCode(t.getQrCode());
}
}
KylinStationCheckRefreshVo vo = KylinStationCheckRefreshVo.getNew();
vo.setCheckOrderVos(checkOrderVos);
{
// 查取演出信息
KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)),
KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in(
checkOrderVos.stream().filter(distinctByKey(KylinStationCheckOrderVo::getTicketId)).map(KylinStationCheckOrderVo::getTicketId).toArray()
));
List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (KylinTicketVo r : performanceTicketVoList) {
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setTicketId(r.getTicketsId());
stationTicketVo.setTitle(r.getTitle());
stationTicketVo.setPrice(r.getPrice());
stationTicketVo.setUseStart(r.getUseStart());
stationTicketVo.setUseEnd(r.getUseEnd());
return ResponseDto.success(voList);
ticketVoList.add(stationTicketVo);
}
performanceVo.setTicketVoList(ticketVoList);
vo.setPerformanceVo(performanceVo);
}
return ResponseDto.success(vo);
}
/* ------------------------------------------------------------------ */
......
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