提交 5d940315 authored 作者: hzh's avatar hzh

火车票改签部分功能实现

上级 7c3ac6ae
......@@ -29,9 +29,9 @@ public class OrderTrainChange extends TenantEntity {
private Long id;
/**
* 订单id
* 人员code
*/
private Long orderId;
private String personCode;
/**
* 改签编号
......@@ -98,6 +98,11 @@ public class OrderTrainChange extends TenantEntity {
*/
private String newFromStationName;
/**
* 改签订单状态
*/
private String changeStatus;
/**
* 改签订单状态名称
*/
......
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
......@@ -14,6 +15,7 @@ import java.io.Serial;
* @date 2025-04-16
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("biz_order_train_change_business_info")
public class OrderTrainChangeBusinessInfo extends TenantEntity {
......
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
......@@ -15,6 +16,7 @@ import java.io.Serial;
* @date 2025-04-16
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("biz_order_train_change_pay_info")
public class OrderTrainChangePayInfo extends TenantEntity {
......
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
......@@ -15,6 +16,7 @@ import java.io.Serial;
* @date 2025-04-16
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("biz_order_train_change_ticket_info")
public class OrderTrainChangeTicketInfo extends TenantEntity {
......
......@@ -28,10 +28,9 @@ public class OrderTrainChangeBo extends BaseEntity {
private Long id;
/**
* 订单id
* 人员code
*/
@NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long orderId;
private String personCode;
/**
* 改签编号
......
package org.dromara.server.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.domain.OrderTrainChange;
import org.dromara.server.domain.vo.OrderTrainChangeVo;
import org.dromara.server.domain.bo.OrderTrainChangeBo;
import org.dromara.server.domain.OrderTrainChange;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.domain.vo.OrderTrainChangeVo;
import java.util.Collection;
import java.util.List;
/**
......@@ -17,5 +15,20 @@ import java.util.List;
*/
public interface IOrderTrainChangeService extends IBaseService<OrderTrainChangeVo, OrderTrainChangeBo, OrderTrainChange>{
/**
* 批量保存订单
*
* @param userId 用户id
* @param changeNoList 订单号列表
*/
void batchSaveOrder(String userId, List<String> changeNoList);
/**
* 更新火车票改签信息
*
* @param changeNoList 订单号列表
*/
void updateOrderInfo(List<String> changeNoList);
}
package org.dromara.server.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.ys.common.PageInfo;
import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
import org.dromara.common.ys.model.res.train.TrChangeInfoBeanModel;
import org.dromara.common.ys.model.res.train.TrainChangeQueryChangeListApiBeanModel;
import org.dromara.common.ys.model.res.train.bean.BusinessInfoBean;
import org.dromara.common.ys.model.res.train.bean.TrChangeTicketInfoBean;
import org.dromara.common.ys.service.ITrainService;
import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderTrainChangeBo;
import org.dromara.server.domain.vo.OrderTrainChangeVo;
import org.dromara.server.domain.OrderTrainChange;
import org.dromara.server.mapper.OrderTrainChangeMapper;
import org.dromara.server.mapper.*;
import org.dromara.server.service.IOrderTrainChangeService;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService;
/**
* 火车票改签订单Service业务层处理
......@@ -32,6 +39,12 @@ import java.util.Collection;
public class OrderTrainChangeServiceImpl extends AbstractBaseService<OrderTrainChangeVo, OrderTrainChangeBo, OrderTrainChange> implements IOrderTrainChangeService {
private final OrderTrainChangeMapper baseMapper;
private final OrderTrainChangeBusinessInfoMapper businessInfoMapper;
private final OrderTrainChangePayInfoMapper payInfoMapper;
private final OrderTrainChangeTicketInfoMapper ticketInfoMapper;
private final ITrainService trainService;
private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService;
@Override
public BaseMapperPlus<OrderTrainChange, OrderTrainChangeVo> mapper() {
......@@ -42,7 +55,7 @@ public class OrderTrainChangeServiceImpl extends AbstractBaseService<OrderTrainC
public LambdaQueryWrapper<OrderTrainChange> buildQueryWrapper(OrderTrainChangeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OrderTrainChange> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getOrderId() != null, OrderTrainChange::getOrderId, bo.getOrderId());
lqw.eq(StringUtils.isNotBlank(bo.getPersonCode()), OrderTrainChange::getPersonCode, bo.getPersonCode());
lqw.eq(StringUtils.isNotBlank(bo.getChangeNo()), OrderTrainChange::getChangeNo, bo.getChangeNo());
lqw.eq(StringUtils.isNotBlank(bo.getOldToCity()), OrderTrainChange::getOldToCity, bo.getOldToCity());
lqw.eq(StringUtils.isNotBlank(bo.getLatePaymentTime()), OrderTrainChange::getLatePaymentTime, bo.getLatePaymentTime());
......@@ -99,4 +112,136 @@ public class OrderTrainChangeServiceImpl extends AbstractBaseService<OrderTrainC
return lqw;
}
@Override
public void batchSaveOrder(String userId, List<String> changeNoList) {
BizUser user = userMapper.selectOne(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserNo, userId));
if (Objects.isNull(user)) {
throw new RuntimeException("用户不存在");
}
List<OrderTrainChange> orderList = changeNoList.stream().map(orderNo -> {
OrderTrainChange order = new OrderTrainChange();
order.setPersonCode(userId);
order.setChangeNo(orderNo);
order.setTenantId(user.getTenantId());
return order;
}).toList();
for (OrderTrainChange bo : orderList) {
baseMapper.insert(bo);
}
updateOrderInfo(changeNoList);
}
@Override
public void updateOrderInfo(List<String> changeNoList) {
if (CollectionUtils.isEmpty(changeNoList)) {
return;
}
List<OrderTrainChange> orderList = baseMapper.selectList(new LambdaQueryWrapper<OrderTrainChange>().in(OrderTrainChange::getChangeNo, changeNoList));
List<Long> orderIds = StreamUtils.toList(orderList, OrderTrainChange::getId);
if (CollectionUtils.isEmpty(orderIds)) {
return;
}
List<OrderTrainChangeBusinessInfo> orderBusinessList = businessInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainChangeBusinessInfo>().in(OrderTrainChangeBusinessInfo::getOrderId, orderIds));
List<OrderTrainChangePayInfo> orderPayInfoList = payInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainChangePayInfo>().in(OrderTrainChangePayInfo::getOrderId, orderIds));
List<OrderTrainChangeTicketInfo> orderTicketList = ticketInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainChangeTicketInfo>().in(OrderTrainChangeTicketInfo::getOrderId, orderIds));
//更新数据
orderList.forEach(order -> {
scheduledExecutorService.execute(() -> {
TrChangeInfoBeanModel orderModel = trainService.orderQueryChangeOrder(order.getPersonCode(), new org.dromara.common.ys.model.req.train.TrainQueryChangeOrderModel().setChangeNo(order.getChangeNo())).get(0);
//获取订单状态
String orderStatus = getOrderStatus(order);
//跟新订单数据
BeanUtil.copyProperties(orderModel, order, "id", "personCode", "tenantId");
order.setChangeStatus(orderStatus);
baseMapper.updateById(order);
//跟新差旅信息
BusinessInfoBean business = orderModel.getBusiness();
if (Objects.nonNull(business)) {
OrderTrainChangeBusinessInfo orderBusiness = orderBusinessList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId())).findFirst().orElseGet(
() -> {
OrderTrainChangeBusinessInfo entity = new OrderTrainChangeBusinessInfo()
.setOrderId(order.getId())
.setChangeNo(order.getChangeNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(business, orderBusiness, "id", "orderId", "changeNo");
orderBusiness.setLinkMan(business.getLink_Man());
orderBusiness.setLinkMobile(business.getLink_mobile());
orderBusiness.setLinkEmail(business.getLink_email());
if (Objects.isNull(orderBusiness.getId())) {
businessInfoMapper.insert(orderBusiness);
} else {
businessInfoMapper.updateById(orderBusiness);
}
}
//跟新支付信息集合
List<OrderPayInfoBean> payInfoList = orderModel.getPayInfoList();
if (CollectionUtils.isNotEmpty(payInfoList)) {
for (OrderPayInfoBean payInfo : payInfoList) {
OrderTrainChangePayInfo orderPayInfo = orderPayInfoList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getPayBillno(), payInfo.getPayBillno())).findFirst().orElseGet(
() -> {
OrderTrainChangePayInfo entity = new OrderTrainChangePayInfo()
.setOrderId(order.getId())
.setChangeNo(order.getChangeNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(payInfo, orderPayInfo, "id", "orderId", "changeNo");
if (Objects.isNull(orderPayInfo.getId())) {
payInfoMapper.insert(orderPayInfo);
} else {
payInfoMapper.updateById(orderPayInfo);
}
}
}
//跟新车程信息
List<TrChangeTicketInfoBean> ticketList = orderModel.getTrChangeTicketList();
for (TrChangeTicketInfoBean ticket : ticketList) {
if (Objects.nonNull(ticket)) {
OrderTrainChangeTicketInfo orderTicket = orderTicketList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getIdCode(), ticket.getIdCode())).findFirst().orElseGet(
() -> {
OrderTrainChangeTicketInfo entity = new OrderTrainChangeTicketInfo()
.setOrderId(order.getId())
.setChangeNo(order.getChangeNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(ticket, orderTicket, "id", "orderId", "changeNo");
if (Objects.isNull(orderTicket.getId())) {
ticketInfoMapper.insert(orderTicket);
} else {
ticketInfoMapper.updateById(orderTicket);
}
}
}
});
});
}
/**
* 获取订单状态
*
* @param order order
* @return 订单状态
*/
private String getOrderStatus(OrderTrainChange order) {
try {
PageInfo<TrainChangeQueryChangeListApiBeanModel> page = trainService.queryChangeList(order.getPersonCode(),
new org.dromara.common.ys.model.req.train.TrainoChangeQueryChangeListApiModel()
.setCount(10)
.setPageNum(1)
.setChangeNo(order.getChangeNo())
);
return page.getList().get(0).getOrderStatus();
} catch (Exception e) {
return null;
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论