提交 435c888e authored 作者: hzh's avatar hzh

开票策略功能实现

上级 2f520261
package org.dromara.server.domain.bo; package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderInvoicing;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import lombok.experimental.Accessors;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.server.domain.OrderInvoicing;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/** /**
* 开票订单关联业务对象 biz_order_invoicing * 开票订单关联业务对象 biz_order_invoicing
* *
...@@ -20,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; ...@@ -20,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* @date 2025-06-12 * @date 2025-06-12
*/ */
@Data @Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderInvoicing.class, reverseConvertGenerate = false) @AutoMapper(target = OrderInvoicing.class, reverseConvertGenerate = false)
public class OrderInvoicingBo extends BaseEntity { public class OrderInvoicingBo extends BaseEntity {
......
package org.dromara.server.service.impl; package org.dromara.server.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
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;
...@@ -14,6 +15,7 @@ import org.dromara.common.ys.model.res.airport.other.*; ...@@ -14,6 +15,7 @@ import org.dromara.common.ys.model.res.airport.other.*;
import org.dromara.common.ys.service.IAirportService; import org.dromara.common.ys.service.IAirportService;
import org.dromara.server.domain.*; import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderAirportBo; import org.dromara.server.domain.bo.OrderAirportBo;
import org.dromara.server.domain.bo.OrderInvoicingBo;
import org.dromara.server.domain.vo.OrderAirportRangeVo; import org.dromara.server.domain.vo.OrderAirportRangeVo;
import org.dromara.server.domain.vo.OrderAirportVo; import org.dromara.server.domain.vo.OrderAirportVo;
import org.dromara.server.domain.vo.OrderInvoicingVo; import org.dromara.server.domain.vo.OrderInvoicingVo;
...@@ -21,11 +23,13 @@ import org.dromara.server.enums.OrderTypeEnum; ...@@ -21,11 +23,13 @@ import org.dromara.server.enums.OrderTypeEnum;
import org.dromara.server.mapper.*; import org.dromara.server.mapper.*;
import org.dromara.server.service.IBizUserService; import org.dromara.server.service.IBizUserService;
import org.dromara.server.service.IOrderAirportService; import org.dromara.server.service.IOrderAirportService;
import org.dromara.server.service.IOrderInvoicingService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
/** /**
...@@ -50,6 +54,7 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo, ...@@ -50,6 +54,7 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
private final BizUserMapper userMapper; private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
private final IBizUserService bizUserService; private final IBizUserService bizUserService;
private final IOrderInvoicingService orderInvoicingService;
@Override @Override
public BaseMapperPlus<OrderAirport, OrderAirportVo> mapper() { public BaseMapperPlus<OrderAirport, OrderAirportVo> mapper() {
...@@ -141,6 +146,20 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo, ...@@ -141,6 +146,20 @@ public class OrderAirportServiceImpl extends AbstractBaseService<OrderAirportVo,
baseMapper.insert(bo); baseMapper.insert(bo);
} }
updateOrderInfo(orderNoList); updateOrderInfo(orderNoList);
//新增订票策略
List<OrderAirport> OrderAirportList = baseMapper.selectList(OrderAirport::getOrderNo, orderNoList);
OrderAirportList.forEach(order -> {
OrderInvoicingBo invoice = new OrderInvoicingBo()
.setOrderId(order.getId())
.setType(OrderTypeEnum.AIRPORT.getType())
.setPersonCode(order.getPersonCode())
.setOrderNo(order.getOrderNo())
.setUseName(Optional.ofNullable(order).map(OrderAirport::getPsg).orElse(null))
.setUseTime(Optional.ofNullable(rangeMapper.selectOne(OrderAirportRange::getOrderNo, order.getOrderNo()))
.map(o -> DateUtil.parse(o.getDepartTime(), "yyyy-MM-dd HH:mm"))
.orElse(null));
orderInvoicingService.save(invoice);
});
} }
......
package org.dromara.server.service.impl; package org.dromara.server.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
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;
...@@ -17,19 +18,17 @@ import org.dromara.common.ys.model.res.hotel.bean.HotelOrderPsgInfoBean; ...@@ -17,19 +18,17 @@ import org.dromara.common.ys.model.res.hotel.bean.HotelOrderPsgInfoBean;
import org.dromara.common.ys.service.IHotelService; import org.dromara.common.ys.service.IHotelService;
import org.dromara.server.domain.*; import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderHotelBo; import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.bo.OrderInvoicingBo;
import org.dromara.server.domain.vo.OrderHotelVo; import org.dromara.server.domain.vo.OrderHotelVo;
import org.dromara.server.domain.vo.OrderInvoicingVo; import org.dromara.server.domain.vo.OrderInvoicingVo;
import org.dromara.server.domain.vo.OrderTrainVo;
import org.dromara.server.enums.OrderTypeEnum; import org.dromara.server.enums.OrderTypeEnum;
import org.dromara.server.mapper.*; import org.dromara.server.mapper.*;
import org.dromara.server.service.IBizUserService; import org.dromara.server.service.IBizUserService;
import org.dromara.server.service.IOrderHotelService; import org.dromara.server.service.IOrderHotelService;
import org.dromara.server.service.IOrderInvoicingService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
/** /**
...@@ -52,6 +51,7 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord ...@@ -52,6 +51,7 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord
private final BizUserMapper userMapper; private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
private final IBizUserService bizUserService; private final IBizUserService bizUserService;
private final IOrderInvoicingService orderInvoicingService;
@Override @Override
public BaseMapperPlus<OrderHotel, OrderHotelVo> mapper() { public BaseMapperPlus<OrderHotel, OrderHotelVo> mapper() {
...@@ -147,6 +147,20 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord ...@@ -147,6 +147,20 @@ public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, Ord
baseMapper.insert(bo); baseMapper.insert(bo);
} }
updateOrderInfo(orderNoList); updateOrderInfo(orderNoList);
//新增订票策略
List<OrderHotel> orderHotelList = baseMapper.selectList(OrderHotel::getOrderNo, orderNoList);
orderHotelList.forEach(order -> {
OrderInvoicingBo invoice = new OrderInvoicingBo()
.setOrderId(order.getId())
.setType(OrderTypeEnum.HOTEL.getType())
.setPersonCode(order.getPersonCode())
.setOrderNo(order.getOrderNo())
.setUseName(Optional.ofNullable(order).map(OrderHotel::getPsgName).orElse(null))
.setUseTime(Optional.ofNullable(order)
.map(o -> DateUtil.parse(o.getCheckInDate(), "yyyy-MM-dd"))
.orElse(null));
orderInvoicingService.save(invoice);
});
} }
@Override @Override
......
package org.dromara.server.service.impl; package org.dromara.server.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
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;
...@@ -18,6 +19,7 @@ import org.dromara.common.ys.model.res.train.bean.RangeInfo; ...@@ -18,6 +19,7 @@ import org.dromara.common.ys.model.res.train.bean.RangeInfo;
import org.dromara.common.ys.model.res.train.bean.TicketInfo; import org.dromara.common.ys.model.res.train.bean.TicketInfo;
import org.dromara.common.ys.service.ITrainService; import org.dromara.common.ys.service.ITrainService;
import org.dromara.server.domain.*; import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderInvoicingBo;
import org.dromara.server.domain.bo.OrderTrainBo; import org.dromara.server.domain.bo.OrderTrainBo;
import org.dromara.server.domain.vo.OrderInvoicingVo; import org.dromara.server.domain.vo.OrderInvoicingVo;
import org.dromara.server.domain.vo.OrderTrainRangeVo; import org.dromara.server.domain.vo.OrderTrainRangeVo;
...@@ -26,13 +28,11 @@ import org.dromara.server.domain.vo.OrderTrainVo; ...@@ -26,13 +28,11 @@ import org.dromara.server.domain.vo.OrderTrainVo;
import org.dromara.server.enums.OrderTypeEnum; import org.dromara.server.enums.OrderTypeEnum;
import org.dromara.server.mapper.*; import org.dromara.server.mapper.*;
import org.dromara.server.service.IBizUserService; import org.dromara.server.service.IBizUserService;
import org.dromara.server.service.IOrderInvoicingService;
import org.dromara.server.service.IOrderTrainService; import org.dromara.server.service.IOrderTrainService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
/** /**
...@@ -56,6 +56,7 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord ...@@ -56,6 +56,7 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
private final BizUserMapper userMapper; private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
private final IBizUserService bizUserService; private final IBizUserService bizUserService;
private final IOrderInvoicingService orderInvoicingService;
@Override @Override
...@@ -153,6 +154,20 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord ...@@ -153,6 +154,20 @@ public class OrderTrainServiceImpl extends AbstractBaseService<OrderTrainVo, Ord
baseMapper.insert(bo); baseMapper.insert(bo);
} }
updateOrderInfo(orderNoList); updateOrderInfo(orderNoList);
//新增订票策略
List<OrderTrain> orderTrainList = baseMapper.selectList(OrderTrain::getOrderNo, orderNoList);
orderTrainList.forEach(order -> {
OrderInvoicingBo invoice = new OrderInvoicingBo()
.setOrderId(order.getId())
.setType(OrderTypeEnum.TRAIN.getType())
.setPersonCode(order.getPersonCode())
.setOrderNo(order.getOrderNo())
.setUseName(Optional.ofNullable(order).map(OrderTrain::getPassengerNames).orElse(null))
.setUseTime(Optional.ofNullable(rangeMapper.selectOne(OrderTrainRange::getOrderNo, order.getOrderNo()))
.map(o -> DateUtil.parse(o.getFromDate() + " " + o.getFromTime(), "yyyy-MM-dd HH:mm"))
.orElse(null));
orderInvoicingService.save(invoice);
});
} }
@Override @Override
......
package org.dromara.server.service.impl; package org.dromara.server.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
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;
...@@ -14,6 +15,7 @@ import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean; ...@@ -14,6 +15,7 @@ import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
import org.dromara.common.ys.model.res.vehicles.OrderDetailModel; import org.dromara.common.ys.model.res.vehicles.OrderDetailModel;
import org.dromara.common.ys.service.IVehiclesService; import org.dromara.common.ys.service.IVehiclesService;
import org.dromara.server.domain.*; import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderInvoicingBo;
import org.dromara.server.domain.bo.OrderVehiclesBo; import org.dromara.server.domain.bo.OrderVehiclesBo;
import org.dromara.server.domain.vo.OrderInvoicingVo; import org.dromara.server.domain.vo.OrderInvoicingVo;
import org.dromara.server.domain.vo.OrderVehiclesBusinessVo; import org.dromara.server.domain.vo.OrderVehiclesBusinessVo;
...@@ -21,13 +23,12 @@ import org.dromara.server.domain.vo.OrderVehiclesVo; ...@@ -21,13 +23,12 @@ import org.dromara.server.domain.vo.OrderVehiclesVo;
import org.dromara.server.enums.OrderTypeEnum; import org.dromara.server.enums.OrderTypeEnum;
import org.dromara.server.mapper.*; import org.dromara.server.mapper.*;
import org.dromara.server.service.IBizUserService; import org.dromara.server.service.IBizUserService;
import org.dromara.server.service.IOrderInvoicingService;
import org.dromara.server.service.IOrderVehiclesService; import org.dromara.server.service.IOrderVehiclesService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
/** /**
...@@ -48,6 +49,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV ...@@ -48,6 +49,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
private final BizUserMapper userMapper; private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
private final IBizUserService bizUserService; private final IBizUserService bizUserService;
private final IOrderInvoicingService orderInvoicingService;
@Override @Override
public BaseMapperPlus<OrderVehicles, OrderVehiclesVo> mapper() { public BaseMapperPlus<OrderVehicles, OrderVehiclesVo> mapper() {
...@@ -158,6 +160,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV ...@@ -158,6 +160,7 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
}); });
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void saveOrder(String userId, String applyCode, String orderId, String orderNo) { public void saveOrder(String userId, String applyCode, String orderId, String orderNo) {
BizUser user = userMapper.selectOne(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserNo, userId)); BizUser user = userMapper.selectOne(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserNo, userId));
...@@ -172,6 +175,25 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV ...@@ -172,6 +175,25 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
order.setTenantId(user.getTenantId()); order.setTenantId(user.getTenantId());
baseMapper.insert(order); baseMapper.insert(order);
updateOrderInfo(List.of(order.getOrderNo())); updateOrderInfo(List.of(order.getOrderNo()));
//设置开票策略
updateInvoice(order);
}
private void updateInvoice(OrderVehicles order) {
OrderVehicles orderVehicles = baseMapper.selectById(order.getId());
OrderInvoicingBo invoice = new OrderInvoicingBo()
.setOrderId(order.getId())
.setType(OrderTypeEnum.VEHICLES.getType())
.setPersonCode(order.getPersonCode())
.setOrderNo(order.getOrderNo())
.setUseName(Optional.ofNullable(orderVehicles).map(OrderVehicles::getPhoneNumber).orElse(null))
.setUseTime(Optional.ofNullable(orderVehicles).map(ov -> {
if (StringUtils.isNotEmpty(ov.getStartTime())) {
return DateUtil.parse(ov.getStartTime());
}
return null;
}).orElse(null));
orderInvoicingService.save(invoice);
} }
@Override @Override
...@@ -242,6 +264,8 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV ...@@ -242,6 +264,8 @@ public class OrderVehiclesServiceImpl extends AbstractBaseService<OrderVehiclesV
} }
} }
}); });
//跟新开票策略
updateInvoice(order);
}); });
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论