记得上下班打卡 | 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; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@ApiModel(value = "KylinStationPerformanceVo", description = "演出列表响应参数") @ApiModel(value = "KylinStationPerformanceVo", description = "演出列表响应参数")
...@@ -29,6 +30,14 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable { ...@@ -29,6 +30,14 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable {
private List<KylinStationTicketVo> ticketVoList; private List<KylinStationTicketVo> ticketVoList;
@ApiModelProperty(position = 18, value = "可下载时间") @ApiModelProperty(position = 18, value = "可下载时间")
private String canDownTime; 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(); private static final KylinStationPerformanceVo obj = new KylinStationPerformanceVo();
......
...@@ -103,7 +103,7 @@ public class KylinStationController { ...@@ -103,7 +103,7 @@ public class KylinStationController {
@ApiOperation(value = "演出列表") @ApiOperation(value = "演出列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mod", value = "模块[recent-近期的,over-历史]", allowableValues = "recent,over"), @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 = "pageNo", value = "页码", example = "1"),
@ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageSize", value = "页记录数", example = "5"), @ApiImplicitParam(type = "form", required = true, dataType = "Integer", name = "pageSize", value = "页记录数", example = "5"),
}) })
...@@ -179,11 +179,15 @@ public class KylinStationController { ...@@ -179,11 +179,15 @@ public class KylinStationController {
Map<String, String> performanceRelationMap = performanceRelationList.stream().collect(Collectors.toMap(CheckPerformanceRelationParam::getPerformanceId, CheckPerformanceRelationParam::getCanDownTime)); 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()); 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<>(); List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
...@@ -218,19 +222,13 @@ public class KylinStationController { ...@@ -218,19 +222,13 @@ public class KylinStationController {
ticketVoList.add(stationTicketVo); ticketVoList.add(stationTicketVo);
} }
r.setPriceSum(priceSum);
KylinStationTicketVo sumTicketVo = KylinStationTicketVo.getNew(); r.setNumber(number);
sumTicketVo.setTicketId("TT"); r.setCheckedNum(checkedNum);
sumTicketVo.setTitle("合计"); r.setRemainderNum(remainderNum);
sumTicketVo.setPriceSum(priceSum);
sumTicketVo.setNumber(number);
sumTicketVo.setCheckedNum(checkedNum);
sumTicketVo.setRemainderNum(remainderNum);
ticketVoList.add(sumTicketVo);
r.setTicketVoList(ticketVoList); r.setTicketVoList(ticketVoList);
r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId())); r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
}); }
} }
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -246,7 +244,7 @@ public class KylinStationController { ...@@ -246,7 +244,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "performanceId", value = "演出ID[64]"),
}) })
@GetMapping("download") @GetMapping("download")
public ResponseDto<List<KylinStationCheckOrderVo>> downloadTicketData(@RequestParam String performanceId) { public ResponseDto<KylinStationCheckRefreshVo> downloadTicketData(@RequestParam String performanceId) {
log.info("performanceId:{}", performanceId); log.info("performanceId:{}", performanceId);
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
...@@ -266,27 +264,52 @@ public class KylinStationController { ...@@ -266,27 +264,52 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608")); 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)); 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( 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"); query.fields().include("orderTicketsId").include("qrCode");
List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName()); List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo t : orderTicketVoList) for (KylinOrderTicketVo t : orderTicketVoList) {
for (KylinStationCheckOrderVo r : voList) for (KylinStationCheckOrderVo r : checkOrderVos) {
if (r.getOrderId().equals(t.getOrderTicketsId())) { if (r.getOrderId().equals(t.getOrderTicketsId())) {
r.setQrCode(t.getQrCode()); r.setQrCode(t.getQrCode());
r.setUserMobile(t.getUserMobile()); r.setUserMobile(t.getUserMobile());
r.setUserName(t.getUserName()); r.setUserName(t.getUserName());
} }
}
return ResponseDto.success(voList); }
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());
ticketVoList.add(stationTicketVo);
}
performanceVo.setTicketVoList(ticketVoList);
vo.setPerformanceVo(performanceVo);
}
return ResponseDto.success(vo);
} }
@ApiOperation(value = "上载验票数据") @ApiOperation(value = "上载验票数据")
...@@ -305,7 +328,7 @@ public class KylinStationController { ...@@ -305,7 +328,7 @@ public class KylinStationController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "latestUpdateAt", value = "最近更新时间[yyyy-MM-dd HH:mm:ss]"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "latestUpdateAt", value = "最近更新时间[yyyy-MM-dd HH:mm:ss]"),
}) })
@PostMapping("refresh") @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); log.info("refresh performanceId:{},latestUpdateAt:{}", performanceId, latestUpdateAt);
String currentUid = CurrentUtil.getCurrentUid(); String currentUid = CurrentUtil.getCurrentUid();
...@@ -325,25 +348,50 @@ public class KylinStationController { ...@@ -325,25 +348,50 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608")); return ResponseDto.failure(ErrorMapping.get("20608"));
} }
List<KylinStationCheckOrderVo> voList = new ArrayList<>(); List<KylinStationCheckOrderVo> checkOrderVos;
// 查取演出对应的订单票明细 // 查取演出对应的订单票明细
Query orderTicketEntitiesVoQuery = Query.query( Query orderTicketEntitiesVoQuery = Query.query(
Criteria.where("performanceId").is(performanceId).and("updatedAt").gte(latestUpdateAt) 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( 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"); query.fields().include("orderTicketsId").include("qrCode");
List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName()); List<KylinOrderTicketVo> orderTicketVoList = mongoTemplate.find(query, KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderTicketVo t : orderTicketVoList) for (KylinOrderTicketVo t : orderTicketVoList) {
for (KylinStationCheckOrderVo r : voList) for (KylinStationCheckOrderVo r : checkOrderVos) {
if (r.getOrderId().equals(t.getOrderTicketsId())) r.setQrCode(t.getQrCode()); if (r.getOrderId().equals(t.getOrderTicketsId())) r.setQrCode(t.getQrCode());
}
return ResponseDto.success(voList); }
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());
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