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

Commit 4d3d1fdb authored by 张国柄's avatar 张国柄

验票调整:查取演出票种由原票种VO改为从演出VO提取;

parent 8c24faa2
package com.liquidnet.service.kylin.dto.vo.returns; package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -39,6 +39,8 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable { ...@@ -39,6 +39,8 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable {
private Integer checkedNum; private Integer checkedNum;
@ApiModelProperty(position = 23, value = "余量[9]") @ApiModelProperty(position = 23, value = "余量[9]")
private Integer remainderNum; private Integer remainderNum;
@ApiModelProperty(position = 30, value = "#过程数据,前端无需关注")
private List<KylinTicketTimesVo> ticketTimeList;
private static final KylinStationPerformanceVo obj = new KylinStationPerformanceVo(); private static final KylinStationPerformanceVo obj = new KylinStationPerformanceVo();
...@@ -49,14 +51,4 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable { ...@@ -49,14 +51,4 @@ public class KylinStationPerformanceVo implements Serializable, Cloneable {
return new KylinStationPerformanceVo(); return new KylinStationPerformanceVo();
} }
} }
public KylinStationPerformanceVo copy(KylinPerformanceVo source) {
if (null == source) return this;
this.performancesId = source.getPerformancesId();
this.type = source.getType();
this.title = source.getTitle();
this.timeStart = source.getTimeStart();
this.timeEnd = source.getTimeEnd();
return this;
}
} }
...@@ -10,6 +10,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -10,6 +10,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam; import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam;
import com.liquidnet.service.kylin.dto.param.KylinStationCheckOrderParam; import com.liquidnet.service.kylin.dto.param.KylinStationCheckOrderParam;
import com.liquidnet.service.kylin.dto.param.KylinStationUploadParam; import com.liquidnet.service.kylin.dto.param.KylinStationUploadParam;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
...@@ -186,73 +187,89 @@ public class KylinStationController { ...@@ -186,73 +187,89 @@ public class KylinStationController {
// 转换订单票明细结构为Map<performanceId, List<KylinOrderTicketEntitiesVo>> // 转换订单票明细结构为Map<performanceId, List<KylinOrderTicketEntitiesVo>>
Map<String, List<KylinOrderTicketEntitiesVo>> oteVoMap = oteVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getPerformanceId)); Map<String, List<KylinOrderTicketEntitiesVo>> oteVoMap = oteVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getPerformanceId));
// 查取订单对应票种 // // 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in( // Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in(
oteVoList.stream().filter(distinctByKey(KylinOrderTicketEntitiesVo::getTicketId)).map(KylinOrderTicketEntitiesVo::getTicketId).toArray() // oteVoList.stream().filter(distinctByKey(KylinOrderTicketEntitiesVo::getTicketId)).map(KylinOrderTicketEntitiesVo::getTicketId).toArray()
)); // ));
List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinPerformanceVo.class.getSimpleName()); // List<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinPerformanceVo.class.getSimpleName());
log.debug("performanceTicketVoList:{}", JsonUtils.toJson(performanceTicketVoList)); // log.debug("performanceTicketVoList:{}", JsonUtils.toJson(performanceTicketVoList));
// 转换票种信息结构为Map<ticketsId, ticketVo> // // 转换票种信息结构为Map<ticketsId, ticketVo>
Map<String, KylinTicketVo> performanceTicketMap = performanceTicketVoList.stream().collect(Collectors.toMap(KylinTicketVo::getTicketsId, Function.identity(), (k1, k2) -> k2)); // Map<String, KylinTicketVo> performanceTicketMap = performanceTicketVoList.stream().collect(Collectors.toMap(KylinTicketVo::getTicketsId, Function.identity(), (k1, k2) -> k2));
log.debug("performanceTicketMap:{}", JsonUtils.toJson(performanceTicketMap)); // log.debug("performanceTicketMap:{}", JsonUtils.toJson(performanceTicketMap));
// 转换Map<performanceId, canDownTime> // 转换Map<performanceId, canDownTime>
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));
log.debug("performanceRelationMap:{}", JsonUtils.toJson(performanceRelationMap)); log.debug("performanceRelationMap:{}", JsonUtils.toJson(performanceRelationMap));
// 补充演出列表票种统计 // 整合演出列表票种统计
for (KylinStationPerformanceVo r : voList) { for (KylinStationPerformanceVo r : voList) {
// 演出的所有订单票明细 r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
List<KylinOrderTicketEntitiesVo> performanceTicketEntitiesVoList = oteVoMap.get(r.getPerformancesId()); try {
// 演出的所有订单票明细
if (!CollectionUtils.isEmpty(performanceTicketEntitiesVoList)) { List<KylinOrderTicketEntitiesVo> performanceTicketEntitiesVoList = oteVoMap.get(r.getPerformancesId());
// 订单票明细按票种分组
Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap = if (!CollectionUtils.isEmpty(performanceTicketEntitiesVoList)) {
performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId)); // 提取演出对应票种信息
List<KylinTicketVo> performanceTicketVoList = new ArrayList<>();
List<KylinStationTicketVo> ticketVoList = new ArrayList<>(); List<KylinTicketTimesVo> ticketTimeList = r.getTicketTimeList();
ticketTimeList.forEach(tt -> {
BigDecimal priceSum = BigDecimal.ZERO; performanceTicketVoList.addAll(tt.getTicketList());
int number = 0, checkedNum = 0, remainderNum = 0; });
for (Map.Entry<String, List<KylinOrderTicketEntitiesVo>> entry : performanceTicketEntitiesVoMap.entrySet()) { // 转换票种信息结构为Map<ticketsId, ticketVo>
KylinTicketVo ticketVo = performanceTicketMap.get(entry.getKey()); Map<String, KylinTicketVo> performanceTicketMap = performanceTicketVoList.stream().collect(Collectors.toMap(KylinTicketVo::getTicketsId, Function.identity(), (k1, k2) -> k2));
log.debug("performanceTicketMap:{}", JsonUtils.toJson(performanceTicketMap));
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setTicketId(ticketVo.getTicketsId()); // 订单票明细按票种分组
stationTicketVo.setTitle(ticketVo.getTitle()); Map<String, List<KylinOrderTicketEntitiesVo>> performanceTicketEntitiesVoMap =
stationTicketVo.setPrice(ticketVo.getPrice()); performanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getTicketId));
stationTicketVo.setUseStart(ticketVo.getUseStart());
stationTicketVo.setUseEnd(ticketVo.getUseEnd()); List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
List<KylinOrderTicketEntitiesVo> subPerformanceTicketEntitiesVoList = entry.getValue(); BigDecimal priceSum = BigDecimal.ZERO;
// 订单票明细按出票状态分组 int number = 0, checkedNum = 0, remainderNum = 0;
Map<Integer, List<KylinOrderTicketEntitiesVo>> subStatusPerformanceTicketEntitiesVoMap for (Map.Entry<String, List<KylinOrderTicketEntitiesVo>> entry : performanceTicketEntitiesVoMap.entrySet()) {
= subPerformanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getStatus)); KylinTicketVo ticketVo = performanceTicketMap.get(entry.getKey());
stationTicketVo.setNumber(subPerformanceTicketEntitiesVoList.size()); KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
stationTicketVo.setPriceSum(stationTicketVo.getPrice().multiply(BigDecimal.valueOf(stationTicketVo.getNumber()))); stationTicketVo.setTicketId(ticketVo.getTicketsId());
List<KylinOrderTicketEntitiesVo> checkedEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(1); stationTicketVo.setTitle(ticketVo.getTitle());
stationTicketVo.setCheckedNum(CollectionUtils.isEmpty(checkedEntitiesVoList) ? 0 : checkedEntitiesVoList.size()); stationTicketVo.setPrice(ticketVo.getPrice());
List<KylinOrderTicketEntitiesVo> remainderEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(0); stationTicketVo.setUseStart(ticketVo.getUseStart());
stationTicketVo.setRemainderNum(CollectionUtils.isEmpty(remainderEntitiesVoList) ? 0 : remainderEntitiesVoList.size()); stationTicketVo.setUseEnd(ticketVo.getUseEnd());
number += stationTicketVo.getNumber(); List<KylinOrderTicketEntitiesVo> subPerformanceTicketEntitiesVoList = entry.getValue();
checkedNum += stationTicketVo.getCheckedNum(); // 订单票明细按出票状态分组
remainderNum += stationTicketVo.getRemainderNum(); Map<Integer, List<KylinOrderTicketEntitiesVo>> subStatusPerformanceTicketEntitiesVoMap
priceSum = priceSum.add(stationTicketVo.getPriceSum()); = subPerformanceTicketEntitiesVoList.stream().collect(Collectors.groupingBy(KylinOrderTicketEntitiesVo::getStatus));
ticketVoList.add(stationTicketVo); stationTicketVo.setNumber(subPerformanceTicketEntitiesVoList.size());
stationTicketVo.setPriceSum(stationTicketVo.getPrice().multiply(BigDecimal.valueOf(stationTicketVo.getNumber())));
List<KylinOrderTicketEntitiesVo> checkedEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(1);
stationTicketVo.setCheckedNum(CollectionUtils.isEmpty(checkedEntitiesVoList) ? 0 : checkedEntitiesVoList.size());
List<KylinOrderTicketEntitiesVo> remainderEntitiesVoList = subStatusPerformanceTicketEntitiesVoMap.get(0);
stationTicketVo.setRemainderNum(CollectionUtils.isEmpty(remainderEntitiesVoList) ? 0 : remainderEntitiesVoList.size());
number += stationTicketVo.getNumber();
checkedNum += stationTicketVo.getCheckedNum();
remainderNum += stationTicketVo.getRemainderNum();
priceSum = priceSum.add(stationTicketVo.getPriceSum());
ticketVoList.add(stationTicketVo);
}
r.setPriceSum(priceSum);
r.setNumber(number);
r.setCheckedNum(checkedNum);
r.setRemainderNum(remainderNum);
r.setTicketVoList(ticketVoList);
} }
r.setPriceSum(priceSum); } catch (Exception e) {
r.setNumber(number); log.error("验票:整合票种统计异常[station/performances],performancesId:{}", r.getPerformancesId(), e);
r.setCheckedNum(checkedNum);
r.setRemainderNum(remainderNum);
r.setTicketVoList(ticketVoList);
r.setCanDownTime(performanceRelationMap.get(r.getPerformancesId()));
} }
r.setTicketTimeList(null);
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("验票:查取演出列表异常:/station/performances/?", e); log.error("验票:查取演出列表异常[station/performances]", e);
} }
PageInfo<KylinStationPerformanceVo> voPageInfo = PageInfo.of(voList); PageInfo<KylinStationPerformanceVo> voPageInfo = PageInfo.of(voList);
voPageInfo.setTotal(count); voPageInfo.setTotal(count);
...@@ -286,15 +303,13 @@ public class KylinStationController { ...@@ -286,15 +303,13 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608")); return ResponseDto.failure(ErrorMapping.get("20608"));
} }
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));
checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName()); List<KylinStationCheckOrderVo> checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
Query query = Query.query(Criteria.where("orderTicketsId").in( // 查取订单信息(orderTicketsId,userMobile,userName,qrCode)
checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray() Query query = Query.query(Criteria.where("orderTicketsId").in(checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()));
)); query.fields().include("orderTicketsId").include("userMobile").include("userName").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) {
...@@ -312,11 +327,19 @@ public class KylinStationController { ...@@ -312,11 +327,19 @@ public class KylinStationController {
// 查取演出信息 // 查取演出信息
KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)),
KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName()); KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in( // // 查取订单对应票种
checkOrderVos.stream().filter(distinctByKey(KylinStationCheckOrderVo::getTicketId)).map(KylinStationCheckOrderVo::getTicketId).toArray() // 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<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
// 提取演出对应票种信息
List<KylinTicketVo> performanceTicketVoList = new ArrayList<>();
List<KylinTicketTimesVo> ticketTimeList = performanceVo.getTicketTimeList();
ticketTimeList.forEach(tt -> {
performanceTicketVoList.addAll(tt.getTicketList());
});
List<KylinStationTicketVo> ticketVoList = new ArrayList<>(); List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (KylinTicketVo r : performanceTicketVoList) { for (KylinTicketVo r : performanceTicketVoList) {
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew(); KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
...@@ -328,6 +351,7 @@ public class KylinStationController { ...@@ -328,6 +351,7 @@ public class KylinStationController {
ticketVoList.add(stationTicketVo); ticketVoList.add(stationTicketVo);
} }
performanceVo.setTicketTimeList(null);
performanceVo.setTicketVoList(ticketVoList); performanceVo.setTicketVoList(ticketVoList);
vo.setPerformanceVo(performanceVo); vo.setPerformanceVo(performanceVo);
} }
...@@ -376,22 +400,22 @@ public class KylinStationController { ...@@ -376,22 +400,22 @@ public class KylinStationController {
return ResponseDto.failure(ErrorMapping.get("20608")); return ResponseDto.failure(ErrorMapping.get("20608"));
} }
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) List<KylinStationCheckOrderVo> checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
);
checkOrderVos = mongoTemplate.find(orderTicketEntitiesVoQuery, KylinStationCheckOrderVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName()); // 查取订单信息(orderTicketsId,userMobile,userName,qrCode)
Query query = Query.query(Criteria.where("orderTicketsId").in(checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()));
Query query = Query.query(Criteria.where("orderTicketsId").in( query.fields().include("orderTicketsId").include("userMobile").include("userName").include("qrCode");
checkOrderVos.stream().map(KylinStationCheckOrderVo::getOrderId).toArray()
));
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 : checkOrderVos) { for (KylinStationCheckOrderVo r : checkOrderVos) {
if (r.getOrderId().equals(t.getOrderTicketsId())) r.setQrCode(t.getQrCode()); if (r.getOrderId().equals(t.getOrderTicketsId())) {
r.setQrCode(t.getQrCode());
r.setUserMobile(t.getUserMobile());
r.setUserName(t.getUserName());
}
} }
} }
KylinStationCheckRefreshVo vo = KylinStationCheckRefreshVo.getNew(); KylinStationCheckRefreshVo vo = KylinStationCheckRefreshVo.getNew();
...@@ -400,11 +424,19 @@ public class KylinStationController { ...@@ -400,11 +424,19 @@ public class KylinStationController {
// 查取演出信息 // 查取演出信息
KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinStationPerformanceVo performanceVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)),
KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName()); KylinStationPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
// 查取订单对应票种
Query performanceTicketVoQuery = Query.query(Criteria.where("ticketsId").in( // // 查取订单对应票种
checkOrderVos.stream().filter(distinctByKey(KylinStationCheckOrderVo::getTicketId)).map(KylinStationCheckOrderVo::getTicketId).toArray() // 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<KylinTicketVo> performanceTicketVoList = mongoTemplate.find(performanceTicketVoQuery, KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
// 提取演出对应票种信息
List<KylinTicketVo> performanceTicketVoList = new ArrayList<>();
List<KylinTicketTimesVo> ticketTimeList = performanceVo.getTicketTimeList();
ticketTimeList.forEach(tt -> {
performanceTicketVoList.addAll(tt.getTicketList());
});
List<KylinStationTicketVo> ticketVoList = new ArrayList<>(); List<KylinStationTicketVo> ticketVoList = new ArrayList<>();
for (KylinTicketVo r : performanceTicketVoList) { for (KylinTicketVo r : performanceTicketVoList) {
KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew(); KylinStationTicketVo stationTicketVo = KylinStationTicketVo.getNew();
...@@ -416,6 +448,7 @@ public class KylinStationController { ...@@ -416,6 +448,7 @@ public class KylinStationController {
ticketVoList.add(stationTicketVo); ticketVoList.add(stationTicketVo);
} }
performanceVo.setTicketTimeList(null);
performanceVo.setTicketVoList(ticketVoList); performanceVo.setTicketVoList(ticketVoList);
vo.setPerformanceVo(performanceVo); vo.setPerformanceVo(performanceVo);
} }
......
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