提交 77e9a52c authored 作者: hzh's avatar hzh

酒店模块功能实现

上级 d5e64f19
...@@ -20,4 +20,9 @@ public interface RemoteOrderService { ...@@ -20,4 +20,9 @@ public interface RemoteOrderService {
*/ */
void updateVehicleOrder(); void updateVehicleOrder();
/**
* 更新酒店订单
*/
void updateHotelOrder();
} }
package org.dromara.common.ys.constant.hotel;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum OrderStatus {
//订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房 ,
WAIT_APPROVAL("1", "待送审"),
APPROVING("2", "审批中"),
WAIT_PAYMENT("3", "待支付"),
WAIT_CONFIRM("4", "待确认"),
CONFIRMED("5", "已确认"),
FINISHED("6", "已完成"),
CANCELED("7", "已取消"),
PARTIAL_REFUND("8", "部分退房"),
ALL_REFUND("9", "全部退房");
private final String code;
private final String desc;
}
package org.dromara.job.snailjob;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.client.model.ExecuteResult;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.server.api.RemoteOrderService;
import org.springframework.stereotype.Component;
/**
* @author hzh
* @date 2024-11-18
*/
@AllArgsConstructor
@Component
@JobExecutor(name = "orderHotelJobExecutor")
public class OrderHotelJobExecutor {
@DubboReference
private RemoteOrderService remoteOrderService;
public ExecuteResult jobExecute(JobArgs jobArgs) {
remoteOrderService.updateHotelOrder();
return ExecuteResult.success("更新成功");
}
}
package org.dromara.server.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.vo.OrderHotelVo;
import org.dromara.server.service.IOrderHotelService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 酒店订单
* 前端访问路由地址为:/server/orderHotel
*
* @author hzh
* @date 2024-11-21
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/orderHotel")
public class OrderHotelController extends BaseController {
private final IOrderHotelService orderHotelService;
/**
* 查询酒店订单列表
*/
@SaCheckPermission("server:orderHotel:list")
@GetMapping("/list")
public TableDataInfo<OrderHotelVo> list(OrderHotelBo bo, PageQuery pageQuery) {
return orderHotelService.queryPageList(bo, pageQuery);
}
/**
* 导出酒店订单列表
*/
@SaCheckPermission("server:orderHotel:export")
@Log(title = "酒店订单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OrderHotelBo bo, HttpServletResponse response) {
List<OrderHotelVo> list = orderHotelService.queryList(bo);
ExcelUtil.exportExcel(list, "酒店订单", OrderHotelVo.class, response);
}
/**
* 获取酒店订单详细信息
*
* @param id 主键
*/
@SaCheckPermission("server:orderHotel:query")
@GetMapping("/{id}")
public R<OrderHotelVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(orderHotelService.queryById(id));
}
/**
* 新增酒店订单
*/
@SaCheckPermission("server:orderHotel:add")
@Log(title = "酒店订单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderHotelBo bo) {
return toAjax(orderHotelService.insertByBo(bo));
}
/**
* 修改酒店订单
*/
@SaCheckPermission("server:orderHotel:edit")
@Log(title = "酒店订单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OrderHotelBo bo) {
return toAjax(orderHotelService.updateByBo(bo));
}
/**
* 删除酒店订单
*
* @param ids 主键串
*/
@SaCheckPermission("server:orderHotel:remove")
@Log(title = "酒店订单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(orderHotelService.deleteWithValidByIds(List.of(ids), true));
}
}
package org.dromara.server.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 酒店订单对象 biz_order_hotel
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_order_hotel")
public class OrderHotel extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 人员code
*/
private String personCode;
/**
* 订单号
*/
private String orderNo;
/**
* 行程id
*/
private String routeId;
/**
* 离店日期
*/
private String checkOutDate;
/**
* 入住人 多个人用,分隔
*/
private String psgName;
/**
* 实际离店日期
*/
private String sjCheckOutDate;
/**
* 价格计划id
*/
private String priceId;
/**
* 取消规则
*/
private String changeRule;
/**
* 特殊提示
*/
private String hotelHAvailPolicys;
/**
* 酒店地址
*/
private String hotelAddress;
/**
* 订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房
*/
private String orderStatus;
/**
* 酒店电话
*/
private String hotelPhone;
/**
* 所在城市名称
*/
private String cityName;
/**
* 酒店星级
*/
private String starRate;
/**
* 最晚到店时间
*/
private String checkOutLate;
/**
* 总价币种
*/
private String currency;
/**
* 最早到店时间
*/
private String checkInEarly;
/**
* 最晚取消时间
*/
private String cancelTime;
/**
* 房型名称
*/
private String roomTypeName;
/**
* 服务费
*/
private BigDecimal serviceFee;
/**
* 预订时间
*/
private String bookDate;
/**
* 房费
*/
private BigDecimal salePrice;
/**
* 酒店名称
*/
private String hotelName;
/**
* 订单状态名称
*/
private String orderStatusName;
/**
* 实际入住日期
*/
private String sjCheckInDate;
/**
* 订单合计
*/
private BigDecimal totalAmount;
/**
* 预订规则
*/
private String bookingRule;
/**
* 入住日期
*/
private String checkInDate;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* 酒店订单差旅信息对象 biz_order_hotel_business
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_hotel_business")
public class OrderHotelBusiness extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String orderNo;
/**
* 出差申请单号
*/
private String travelNo;
/**
* 联系人
*/
private String linkMan;
/**
* 最后审批人姓名
*/
private String appUserName;
/**
* 审批规则名字
*/
private String appRuleName;
/**
* 企业预订人工号
*/
private String bookerNo;
/**
* 是否违背差旅标准,0否 1是
*/
private String isViolate;
/**
* 成本中心编号
*/
private String costCenterNo;
/**
* 项目名称
*/
private String projectName;
/**
* 企业预订人姓名
*/
private String bookerName;
/**
* 出差事由
*/
private String travelRemark;
/**
* 违背原因代码
*/
private String reasonCode;
/**
* 联系邮箱
*/
private String linkEmail;
/**
* 违背事项名称
*/
private String violateItem;
/**
* 项目编号
*/
private String projectNo;
/**
* 最后审批人工号
*/
private String appUserNo;
/**
* 违背原因名称
*/
private String reasonDesc;
/**
* 最后审批时间,格式:yyyy-MM-dd HH:mm:ss
*/
private String appDatetime;
/**
* 违背事项代码
*/
private String violateItemCode;
/**
* 成本中心名称
*/
private String costCenterName;
/**
* 联系手机
*/
private String linkMobile;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 酒店订单房价信息对象 biz_order_hotel_price_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_hotel_price_info")
public class OrderHotelPriceInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String orderNo;
/**
* 服务费
*/
private BigDecimal serviceFee;
/**
* 销售价
*/
private BigDecimal salePrice;
/**
* 日期
*/
private String day;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* 酒店订单入住人信息对象 biz_order_hotel_psg_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_hotel_psg_info")
public class OrderHotelPsgInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String orderNo;
/**
* 证件号码
*/
private String idNo;
/**
* 员工工号
*/
private String empNo;
/**
* 入住人姓名
*/
private String psgName;
/**
* 手机
*/
private String phoneNumber;
/**
* 所在部门名称
*/
private String empDeptName;
/**
* 所在部门编号
*/
private String empDeptId;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
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.OrderHotel;
import java.math.BigDecimal;
/**
* 酒店订单业务对象 biz_order_hotel
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderHotel.class, reverseConvertGenerate = false)
public class OrderHotelBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 人员code
*/
@NotBlank(message = "人员code不能为空", groups = {AddGroup.class, EditGroup.class})
private String personCode;
/**
* 订单号
*/
@NotBlank(message = "订单号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderNo;
/**
* 行程id
*/
@NotBlank(message = "行程id不能为空", groups = {AddGroup.class, EditGroup.class})
private String routeId;
/**
* 离店日期
*/
@NotBlank(message = "离店日期不能为空", groups = {AddGroup.class, EditGroup.class})
private String checkOutDate;
/**
* 入住人 多个人用,分隔
*/
@NotBlank(message = "入住人 多个人用,分隔不能为空", groups = {AddGroup.class, EditGroup.class})
private String psgName;
/**
* 实际离店日期
*/
@NotBlank(message = "实际离店日期不能为空", groups = {AddGroup.class, EditGroup.class})
private String sjCheckOutDate;
/**
* 价格计划id
*/
@NotBlank(message = "价格计划id不能为空", groups = {AddGroup.class, EditGroup.class})
private String priceId;
/**
* 取消规则
*/
@NotBlank(message = "取消规则不能为空", groups = {AddGroup.class, EditGroup.class})
private String changeRule;
/**
* 特殊提示
*/
@NotBlank(message = "特殊提示不能为空", groups = {AddGroup.class, EditGroup.class})
private String hotelHAvailPolicys;
/**
* 酒店地址
*/
@NotBlank(message = "酒店地址不能为空", groups = {AddGroup.class, EditGroup.class})
private String hotelAddress;
/**
* 订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房
*/
@NotBlank(message = "订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderStatus;
/**
* 酒店电话
*/
@NotBlank(message = "酒店电话不能为空", groups = {AddGroup.class, EditGroup.class})
private String hotelPhone;
/**
* 所在城市名称
*/
@NotBlank(message = "所在城市名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String cityName;
/**
* 酒店星级
*/
@NotBlank(message = "酒店星级不能为空", groups = {AddGroup.class, EditGroup.class})
private String starRate;
/**
* 最晚到店时间
*/
@NotBlank(message = "最晚到店时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String checkOutLate;
/**
* 总价币种
*/
@NotBlank(message = "总价币种不能为空", groups = {AddGroup.class, EditGroup.class})
private String currency;
/**
* 最早到店时间
*/
@NotBlank(message = "最早到店时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String checkInEarly;
/**
* 最晚取消时间
*/
@NotBlank(message = "最晚取消时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String cancelTime;
/**
* 房型名称
*/
@NotBlank(message = "房型名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String roomTypeName;
/**
* 服务费
*/
@NotNull(message = "服务费不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal serviceFee;
/**
* 预订时间
*/
@NotBlank(message = "预订时间不能为空", groups = {AddGroup.class, EditGroup.class})
private String bookDate;
/**
* 房费
*/
@NotNull(message = "房费不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal salePrice;
/**
* 酒店名称
*/
@NotBlank(message = "酒店名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String hotelName;
/**
* 订单状态名称
*/
@NotBlank(message = "订单状态名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderStatusName;
/**
* 实际入住日期
*/
@NotBlank(message = "实际入住日期不能为空", groups = {AddGroup.class, EditGroup.class})
private String sjCheckInDate;
/**
* 订单合计
*/
@NotNull(message = "订单合计不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal totalAmount;
/**
* 预订规则
*/
@NotBlank(message = "预订规则不能为空", groups = {AddGroup.class, EditGroup.class})
private String bookingRule;
/**
* 入住日期
*/
@NotBlank(message = "入住日期不能为空", groups = {AddGroup.class, EditGroup.class})
private String checkInDate;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderHotelBusiness;
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 lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 酒店订单差旅信息业务对象 biz_order_hotel_business
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderHotelBusiness.class, reverseConvertGenerate = false)
public class OrderHotelBusinessBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 订单id
*/
@NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long orderId;
/**
* 订单编号
*/
@NotBlank(message = "订单编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String orderNo;
/**
* 出差申请单号
*/
@NotBlank(message = "出差申请单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String travelNo;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkMan;
/**
* 最后审批人姓名
*/
@NotBlank(message = "最后审批人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String appUserName;
/**
* 审批规则名字
*/
@NotBlank(message = "审批规则名字不能为空", groups = { AddGroup.class, EditGroup.class })
private String appRuleName;
/**
* 企业预订人工号
*/
@NotBlank(message = "企业预订人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String bookerNo;
/**
* 是否违背差旅标准,0否 1是
*/
@NotBlank(message = "是否违背差旅标准,0否 1是不能为空", groups = { AddGroup.class, EditGroup.class })
private String isViolate;
/**
* 成本中心编号
*/
@NotBlank(message = "成本中心编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String costCenterNo;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName;
/**
* 企业预订人姓名
*/
@NotBlank(message = "企业预订人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String bookerName;
/**
* 出差事由
*/
@NotBlank(message = "出差事由不能为空", groups = { AddGroup.class, EditGroup.class })
private String travelRemark;
/**
* 违背原因代码
*/
@NotBlank(message = "违背原因代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String reasonCode;
/**
* 联系邮箱
*/
@NotBlank(message = "联系邮箱不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkEmail;
/**
* 违背事项名称
*/
@NotBlank(message = "违背事项名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String violateItem;
/**
* 项目编号
*/
@NotBlank(message = "项目编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectNo;
/**
* 最后审批人工号
*/
@NotBlank(message = "最后审批人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String appUserNo;
/**
* 违背原因名称
*/
@NotBlank(message = "违背原因名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String reasonDesc;
/**
* 最后审批时间,格式:yyyy-MM-dd HH:mm:ss
*/
@NotBlank(message = "最后审批时间,格式:yyyy-MM-dd HH:mm:ss不能为空", groups = { AddGroup.class, EditGroup.class })
private String appDatetime;
/**
* 违背事项代码
*/
@NotBlank(message = "违背事项代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String violateItemCode;
/**
* 成本中心名称
*/
@NotBlank(message = "成本中心名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String costCenterName;
/**
* 联系手机
*/
@NotBlank(message = "联系手机不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkMobile;
}
package org.dromara.server.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
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.OrderHotelPriceInfo;
import java.math.BigDecimal;
/**
* 酒店订单房价信息业务对象 biz_order_hotel_price_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderHotelPriceInfo.class, reverseConvertGenerate = false)
public class OrderHotelPriceInfoBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 订单id
*/
@NotNull(message = "订单id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long orderId;
/**
* 订单编号
*/
@NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderNo;
/**
* 服务费
*/
@NotNull(message = "服务费不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal serviceFee;
/**
* 销售价
*/
@NotNull(message = "销售价不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal salePrice;
/**
* 日期
*/
@NotBlank(message = "日期不能为空", groups = {AddGroup.class, EditGroup.class})
private String day;
}
package org.dromara.server.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
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.OrderHotelPsgInfo;
/**
* 酒店订单入住人信息业务对象 biz_order_hotel_psg_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderHotelPsgInfo.class, reverseConvertGenerate = false)
public class OrderHotelPsgInfoBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 订单id
*/
@NotNull(message = "订单id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long orderId;
/**
* 订单编号
*/
@NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderNo;
/**
* 证件号码
*/
@NotBlank(message = "证件号码不能为空", groups = {AddGroup.class, EditGroup.class})
private String idNo;
/**
* 员工工号
*/
@NotBlank(message = "员工工号不能为空", groups = {AddGroup.class, EditGroup.class})
private String empNo;
/**
* 入住人姓名
*/
@NotBlank(message = "入住人姓名不能为空", groups = {AddGroup.class, EditGroup.class})
private String psgName;
/**
* 手机
*/
@NotBlank(message = "手机不能为空", groups = {AddGroup.class, EditGroup.class})
private String phoneNumber;
/**
* 所在部门名称
*/
@NotBlank(message = "所在部门名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String empDeptName;
/**
* 所在部门编号
*/
@NotBlank(message = "所在部门编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String empDeptId;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderHotelBusiness;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 酒店订单差旅信息视图对象 biz_order_hotel_business
*
* @author hzh
* @date 2024-11-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderHotelBusiness.class)
public class OrderHotelBusinessVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 订单id
*/
@ExcelProperty(value = "订单id")
private Long orderId;
/**
* 订单编号
*/
@ExcelProperty(value = "订单编号")
private String orderNo;
/**
* 出差申请单号
*/
@ExcelProperty(value = "出差申请单号")
private String travelNo;
/**
* 联系人
*/
@ExcelProperty(value = "联系人")
private String linkMan;
/**
* 最后审批人姓名
*/
@ExcelProperty(value = "最后审批人姓名")
private String appUserName;
/**
* 审批规则名字
*/
@ExcelProperty(value = "审批规则名字")
private String appRuleName;
/**
* 企业预订人工号
*/
@ExcelProperty(value = "企业预订人工号")
private String bookerNo;
/**
* 是否违背差旅标准,0否 1是
*/
@ExcelProperty(value = "是否违背差旅标准,0否 1是")
private String isViolate;
/**
* 成本中心编号
*/
@ExcelProperty(value = "成本中心编号")
private String costCenterNo;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 企业预订人姓名
*/
@ExcelProperty(value = "企业预订人姓名")
private String bookerName;
/**
* 出差事由
*/
@ExcelProperty(value = "出差事由")
private String travelRemark;
/**
* 违背原因代码
*/
@ExcelProperty(value = "违背原因代码")
private String reasonCode;
/**
* 联系邮箱
*/
@ExcelProperty(value = "联系邮箱")
private String linkEmail;
/**
* 违背事项名称
*/
@ExcelProperty(value = "违背事项名称")
private String violateItem;
/**
* 项目编号
*/
@ExcelProperty(value = "项目编号")
private String projectNo;
/**
* 最后审批人工号
*/
@ExcelProperty(value = "最后审批人工号")
private String appUserNo;
/**
* 违背原因名称
*/
@ExcelProperty(value = "违背原因名称")
private String reasonDesc;
/**
* 最后审批时间,格式:yyyy-MM-dd HH:mm:ss
*/
@ExcelProperty(value = "最后审批时间,格式:yyyy-MM-dd HH:mm:ss")
private String appDatetime;
/**
* 违背事项代码
*/
@ExcelProperty(value = "违背事项代码")
private String violateItemCode;
/**
* 成本中心名称
*/
@ExcelProperty(value = "成本中心名称")
private String costCenterName;
/**
* 联系手机
*/
@ExcelProperty(value = "联系手机")
private String linkMobile;
}
package org.dromara.server.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.server.domain.OrderHotelPriceInfo;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 酒店订单房价信息视图对象 biz_order_hotel_price_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderHotelPriceInfo.class)
public class OrderHotelPriceInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 订单id
*/
@ExcelProperty(value = "订单id")
private Long orderId;
/**
* 订单编号
*/
@ExcelProperty(value = "订单编号")
private String orderNo;
/**
* 服务费
*/
@ExcelProperty(value = "服务费")
private BigDecimal serviceFee;
/**
* 销售价
*/
@ExcelProperty(value = "销售价")
private BigDecimal salePrice;
/**
* 日期
*/
@ExcelProperty(value = "日期")
private String day;
}
package org.dromara.server.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.server.domain.OrderHotelPsgInfo;
import java.io.Serial;
import java.io.Serializable;
/**
* 酒店订单入住人信息视图对象 biz_order_hotel_psg_info
*
* @author hzh
* @date 2024-11-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderHotelPsgInfo.class)
public class OrderHotelPsgInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 订单id
*/
@ExcelProperty(value = "订单id")
private Long orderId;
/**
* 订单编号
*/
@ExcelProperty(value = "订单编号")
private String orderNo;
/**
* 证件号码
*/
@ExcelProperty(value = "证件号码")
private String idNo;
/**
* 员工工号
*/
@ExcelProperty(value = "员工工号")
private String empNo;
/**
* 入住人姓名
*/
@ExcelProperty(value = "入住人姓名")
private String psgName;
/**
* 手机
*/
@ExcelProperty(value = "手机")
private String phoneNumber;
/**
* 所在部门名称
*/
@ExcelProperty(value = "所在部门名称")
private String empDeptName;
/**
* 所在部门编号
*/
@ExcelProperty(value = "所在部门编号")
private String empDeptId;
}
package org.dromara.server.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.server.domain.OrderHotel;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 酒店订单视图对象 biz_order_hotel
*
* @author hzh
* @date 2024-11-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderHotel.class)
public class OrderHotelVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 人员code
*/
@ExcelProperty(value = "人员code")
private String personCode;
/**
* 订单号
*/
@ExcelProperty(value = "订单号")
private String orderNo;
/**
* 行程id
*/
@ExcelProperty(value = "行程id")
private String routeId;
/**
* 离店日期
*/
@ExcelProperty(value = "离店日期")
private String checkOutDate;
/**
* 入住人 多个人用,分隔
*/
@ExcelProperty(value = "入住人 多个人用,分隔")
private String psgName;
/**
* 实际离店日期
*/
@ExcelProperty(value = "实际离店日期")
private String sjCheckOutDate;
/**
* 价格计划id
*/
@ExcelProperty(value = "价格计划id")
private String priceId;
/**
* 取消规则
*/
@ExcelProperty(value = "取消规则")
private String changeRule;
/**
* 特殊提示
*/
@ExcelProperty(value = "特殊提示")
private String hotelHAvailPolicys;
/**
* 酒店地址
*/
@ExcelProperty(value = "酒店地址")
private String hotelAddress;
/**
* 订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房
*/
@ExcelProperty(value = "订单状态码 1待送审 2审批中 3待支付 4待确认 5已确认 6已完成 7已取消 8部分退房 9全部退房")
private String orderStatus;
/**
* 酒店电话
*/
@ExcelProperty(value = "酒店电话")
private String hotelPhone;
/**
* 所在城市名称
*/
@ExcelProperty(value = "所在城市名称")
private String cityName;
/**
* 酒店星级
*/
@ExcelProperty(value = "酒店星级")
private String starRate;
/**
* 最晚到店时间
*/
@ExcelProperty(value = "最晚到店时间")
private String checkOutLate;
/**
* 总价币种
*/
@ExcelProperty(value = "总价币种")
private String currency;
/**
* 最早到店时间
*/
@ExcelProperty(value = "最早到店时间")
private String checkInEarly;
/**
* 最晚取消时间
*/
@ExcelProperty(value = "最晚取消时间")
private String cancelTime;
/**
* 房型名称
*/
@ExcelProperty(value = "房型名称")
private String roomTypeName;
/**
* 服务费
*/
@ExcelProperty(value = "服务费")
private BigDecimal serviceFee;
/**
* 预订时间
*/
@ExcelProperty(value = "预订时间")
private String bookDate;
/**
* 房费
*/
@ExcelProperty(value = "房费")
private BigDecimal salePrice;
/**
* 酒店名称
*/
@ExcelProperty(value = "酒店名称")
private String hotelName;
/**
* 订单状态名称
*/
@ExcelProperty(value = "订单状态名称")
private String orderStatusName;
/**
* 实际入住日期
*/
@ExcelProperty(value = "实际入住日期")
private String sjCheckInDate;
/**
* 订单合计
*/
@ExcelProperty(value = "订单合计")
private BigDecimal totalAmount;
/**
* 预订规则
*/
@ExcelProperty(value = "预订规则")
private String bookingRule;
/**
* 入住日期
*/
@ExcelProperty(value = "入住日期")
private String checkInDate;
}
...@@ -6,12 +6,15 @@ import org.apache.dubbo.config.annotation.DubboService; ...@@ -6,12 +6,15 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.ys.constant.airport.OrderStatus; import org.dromara.common.ys.constant.airport.OrderStatus;
import org.dromara.server.api.RemoteOrderService; import org.dromara.server.api.RemoteOrderService;
import org.dromara.server.domain.bo.OrderAirportBo; import org.dromara.server.domain.bo.OrderAirportBo;
import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.bo.OrderTrainBo; import org.dromara.server.domain.bo.OrderTrainBo;
import org.dromara.server.domain.bo.OrderVehiclesBo; import org.dromara.server.domain.bo.OrderVehiclesBo;
import org.dromara.server.domain.vo.OrderAirportVo; import org.dromara.server.domain.vo.OrderAirportVo;
import org.dromara.server.domain.vo.OrderHotelVo;
import org.dromara.server.domain.vo.OrderTrainVo; import org.dromara.server.domain.vo.OrderTrainVo;
import org.dromara.server.domain.vo.OrderVehiclesVo; import org.dromara.server.domain.vo.OrderVehiclesVo;
import org.dromara.server.service.IOrderAirportService; import org.dromara.server.service.IOrderAirportService;
import org.dromara.server.service.IOrderHotelService;
import org.dromara.server.service.IOrderTrainService; import org.dromara.server.service.IOrderTrainService;
import org.dromara.server.service.IOrderVehiclesService; import org.dromara.server.service.IOrderVehiclesService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -33,6 +36,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -33,6 +36,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
private final IOrderAirportService orderAirportService; private final IOrderAirportService orderAirportService;
private final IOrderTrainService orderTrainService; private final IOrderTrainService orderTrainService;
private final IOrderVehiclesService orderVehiclesService; private final IOrderVehiclesService orderVehiclesService;
private final IOrderHotelService orderHotelService;
/** /**
...@@ -89,4 +93,20 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -89,4 +93,20 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
orderList.stream().filter(item -> !VEHICLES_ORDER_STATUS_LIST.contains(item.getOrderStatus())).map(OrderVehiclesVo::getOrderNo).collect(Collectors.toList()) orderList.stream().filter(item -> !VEHICLES_ORDER_STATUS_LIST.contains(item.getOrderStatus())).map(OrderVehiclesVo::getOrderNo).collect(Collectors.toList())
); );
} }
/**
* 不需要更新的酒店订单状态
*/
private static final List<String> HOTEL_ORDER_STATUS_LIST = Arrays.asList(
org.dromara.common.ys.constant.hotel.OrderStatus.CANCELED.getCode(),
org.dromara.common.ys.constant.hotel.OrderStatus.ALL_REFUND.getCode()
);
@Override
public void updateHotelOrder() {
List<OrderHotelVo> orderList = orderHotelService.queryList(new OrderHotelBo());
orderVehiclesService.updateOrderInfo(
orderList.stream().filter(item -> !HOTEL_ORDER_STATUS_LIST.contains(item.getOrderStatus())).map(OrderHotelVo::getOrderNo).collect(Collectors.toList())
);
}
} }
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderHotelBusiness;
import org.dromara.server.domain.vo.OrderHotelBusinessVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 酒店订单差旅信息Mapper接口
*
* @author hzh
* @date 2024-11-21
*/
public interface OrderHotelBusinessMapper extends BaseMapperPlus<OrderHotelBusiness, OrderHotelBusinessVo> {
}
package org.dromara.server.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.server.domain.OrderHotel;
import org.dromara.server.domain.vo.OrderHotelVo;
/**
* 酒店订单Mapper接口
*
* @author hzh
* @date 2024-11-21
*/
public interface OrderHotelMapper extends BaseMapperPlus<OrderHotel, OrderHotelVo> {
}
package org.dromara.server.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.server.domain.OrderHotelPriceInfo;
import org.dromara.server.domain.vo.OrderHotelPriceInfoVo;
/**
* 酒店订单房价信息Mapper接口
*
* @author hzh
* @date 2024-11-21
*/
public interface OrderHotelPriceInfoMapper extends BaseMapperPlus<OrderHotelPriceInfo, OrderHotelPriceInfoVo> {
}
package org.dromara.server.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.server.domain.OrderHotelPsgInfo;
import org.dromara.server.domain.vo.OrderHotelPsgInfoVo;
/**
* 酒店订单入住人信息Mapper接口
*
* @author hzh
* @date 2024-11-21
*/
public interface OrderHotelPsgInfoMapper extends BaseMapperPlus<OrderHotelPsgInfo, OrderHotelPsgInfoVo> {
}
package org.dromara.server.service;
import org.dromara.server.base.IBaseService;
import org.dromara.server.domain.OrderHotel;
import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.vo.OrderHotelVo;
import java.util.List;
/**
* 酒店订单Service接口
*
* @author hzh
* @date 2024-11-21
*/
public interface IOrderHotelService extends IBaseService<OrderHotelVo, OrderHotelBo, OrderHotel> {
/**
* 批量保存订单
*
* @param userId 用户id
* @param orderNoList 订单号列表
*/
void batchSaveOrder(String userId, List<String> orderNoList);
/**
* 更新机票信息
*
* @param orderNoList 订单号列表
*/
void updateOrderInfo(List<String> orderNoList);
}
package org.dromara.server.service.impl;
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.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.ys.model.res.airport.other.OrderBusinessInfoBean;
import org.dromara.common.ys.model.res.airport.other.OrderPayInfoBean;
import org.dromara.common.ys.model.res.hotel.HotelOrderQueryDetailModel;
import org.dromara.common.ys.model.res.hotel.bean.HotelOrderPriceInfoBean;
import org.dromara.common.ys.model.res.hotel.bean.HotelOrderPsgInfoBean;
import org.dromara.common.ys.service.IHotelService;
import org.dromara.server.base.AbstractBaseService;
import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderHotelBo;
import org.dromara.server.domain.vo.OrderHotelVo;
import org.dromara.server.mapper.*;
import org.dromara.server.service.IOrderHotelService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService;
/**
* 酒店订单Service业务层处理
*
* @author hzh
* @date 2024-11-21
*/
@RequiredArgsConstructor
@Service
public class OrderHotelServiceImpl extends AbstractBaseService<OrderHotelVo, OrderHotelBo, OrderHotel> implements IOrderHotelService {
private final OrderHotelMapper baseMapper;
private final OrderHotelBusinessMapper businessMapper;
private final OrderHotelPriceInfoMapper priceInfoMapper;
private final OrderHotelPsgInfoMapper psgInfoMapper;
private final OrderHotelPayInfoMapper payInfoMapper;
private final IHotelService hotelService;
private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService;
@Override
public BaseMapperPlus<OrderHotel, OrderHotelVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<OrderHotel> buildQueryWrapper(OrderHotelBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OrderHotel> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getPersonCode()), OrderHotel::getPersonCode, bo.getPersonCode());
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), OrderHotel::getOrderNo, bo.getOrderNo());
lqw.eq(StringUtils.isNotBlank(bo.getRouteId()), OrderHotel::getRouteId, bo.getRouteId());
lqw.eq(StringUtils.isNotBlank(bo.getCheckOutDate()), OrderHotel::getCheckOutDate, bo.getCheckOutDate());
lqw.like(StringUtils.isNotBlank(bo.getPsgName()), OrderHotel::getPsgName, bo.getPsgName());
lqw.eq(StringUtils.isNotBlank(bo.getSjCheckOutDate()), OrderHotel::getSjCheckOutDate, bo.getSjCheckOutDate());
lqw.eq(StringUtils.isNotBlank(bo.getPriceId()), OrderHotel::getPriceId, bo.getPriceId());
lqw.eq(StringUtils.isNotBlank(bo.getChangeRule()), OrderHotel::getChangeRule, bo.getChangeRule());
lqw.eq(StringUtils.isNotBlank(bo.getHotelHAvailPolicys()), OrderHotel::getHotelHAvailPolicys, bo.getHotelHAvailPolicys());
lqw.eq(StringUtils.isNotBlank(bo.getHotelAddress()), OrderHotel::getHotelAddress, bo.getHotelAddress());
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), OrderHotel::getOrderStatus, bo.getOrderStatus());
lqw.eq(StringUtils.isNotBlank(bo.getHotelPhone()), OrderHotel::getHotelPhone, bo.getHotelPhone());
lqw.like(StringUtils.isNotBlank(bo.getCityName()), OrderHotel::getCityName, bo.getCityName());
lqw.eq(StringUtils.isNotBlank(bo.getStarRate()), OrderHotel::getStarRate, bo.getStarRate());
lqw.eq(StringUtils.isNotBlank(bo.getCheckOutLate()), OrderHotel::getCheckOutLate, bo.getCheckOutLate());
lqw.eq(StringUtils.isNotBlank(bo.getCurrency()), OrderHotel::getCurrency, bo.getCurrency());
lqw.eq(StringUtils.isNotBlank(bo.getCheckInEarly()), OrderHotel::getCheckInEarly, bo.getCheckInEarly());
lqw.eq(StringUtils.isNotBlank(bo.getCancelTime()), OrderHotel::getCancelTime, bo.getCancelTime());
lqw.like(StringUtils.isNotBlank(bo.getRoomTypeName()), OrderHotel::getRoomTypeName, bo.getRoomTypeName());
lqw.eq(bo.getServiceFee() != null, OrderHotel::getServiceFee, bo.getServiceFee());
lqw.eq(StringUtils.isNotBlank(bo.getBookDate()), OrderHotel::getBookDate, bo.getBookDate());
lqw.eq(bo.getSalePrice() != null, OrderHotel::getSalePrice, bo.getSalePrice());
lqw.like(StringUtils.isNotBlank(bo.getHotelName()), OrderHotel::getHotelName, bo.getHotelName());
lqw.like(StringUtils.isNotBlank(bo.getOrderStatusName()), OrderHotel::getOrderStatusName, bo.getOrderStatusName());
lqw.eq(StringUtils.isNotBlank(bo.getSjCheckInDate()), OrderHotel::getSjCheckInDate, bo.getSjCheckInDate());
lqw.eq(bo.getTotalAmount() != null, OrderHotel::getTotalAmount, bo.getTotalAmount());
lqw.eq(StringUtils.isNotBlank(bo.getBookingRule()), OrderHotel::getBookingRule, bo.getBookingRule());
lqw.eq(StringUtils.isNotBlank(bo.getCheckInDate()), OrderHotel::getCheckInDate, bo.getCheckInDate());
return lqw;
}
@Override
public void batchSaveOrder(String userId, List<String> orderNoList) {
BizUser user = userMapper.selectOne(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserNo, userId));
if (Objects.isNull(user)) {
throw new RuntimeException("用户不存在");
}
List<OrderHotel> orderList = orderNoList.stream().map(orderNo -> {
OrderHotel order = new OrderHotel();
order.setPersonCode(userId);
order.setOrderNo(orderNo);
order.setTenantId(user.getTenantId());
return order;
}).toList();
for (OrderHotel bo : orderList) {
baseMapper.insert(bo);
}
updateOrderInfo(orderNoList);
}
@Override
public void updateOrderInfo(List<String> orderNoList) {
if (CollectionUtils.isEmpty(orderNoList)) {
return;
}
List<OrderHotel> orderList = baseMapper.selectList(new LambdaQueryWrapper<OrderHotel>().in(OrderHotel::getOrderNo, orderNoList));
List<Long> orderIds = StreamUtils.toList(orderList, OrderHotel::getId);
if (CollectionUtils.isEmpty(orderIds)) {
return;
}
List<OrderHotelBusiness> orderBusinessList = businessMapper.selectList(new LambdaQueryWrapper<OrderHotelBusiness>().in(OrderHotelBusiness::getOrderId, orderIds));
List<OrderHotelPriceInfo> orderPriceList = priceInfoMapper.selectList(new LambdaQueryWrapper<OrderHotelPriceInfo>().in(OrderHotelPriceInfo::getOrderId, orderIds));
List<OrderHotelPsgInfo> orderPsgList = psgInfoMapper.selectList(new LambdaQueryWrapper<OrderHotelPsgInfo>().in(OrderHotelPsgInfo::getOrderId, orderIds));
List<OrderHotelPayInfo> orderPayInfoList = payInfoMapper.selectList(new LambdaQueryWrapper<OrderHotelPayInfo>().in(OrderHotelPayInfo::getOrderId, orderIds));
//更新数据
orderList.forEach(order -> {
scheduledExecutorService.execute(() -> {
HotelOrderQueryDetailModel orderModel = hotelService.hotelOrderDetail(order.getPersonCode(), new org.dromara.common.ys.model.req.hotel.HotelOrderQueryDetailModel().setOrderNo(order.getOrderNo()));
//跟新订单数据
BeanUtil.copyProperties(orderModel, order, "id", "personCode", "activityId");
baseMapper.updateById(order);
//跟新入住人信息集合
List<HotelOrderPsgInfoBean> psgList = orderModel.getHtOrderPsgList();
if (CollectionUtils.isNotEmpty(psgList)) {
for (HotelOrderPsgInfoBean payInfo : psgList) {
OrderHotelPsgInfo orderPsgInfo = orderPsgList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getIdNo(), payInfo.getIdNo())).findFirst().orElseGet(
() -> {
OrderHotelPsgInfo entity = new OrderHotelPsgInfo()
.setOrderId(order.getId())
.setOrderNo(order.getOrderNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(payInfo, orderPsgInfo, "id", "orderId", "orderNo");
orderPsgInfo.setEmpDeptId(payInfo.getEmpDeptid());
if (Objects.isNull(orderPsgInfo.getId())) {
psgInfoMapper.insert(orderPsgInfo);
} else {
psgInfoMapper.updateById(orderPsgInfo);
}
}
}
//跟新入住人信息集合
List<HotelOrderPriceInfoBean> priceList = orderModel.getHtOrderPriceList();
if (CollectionUtils.isNotEmpty(priceList)) {
for (HotelOrderPriceInfoBean priceInfo : priceList) {
OrderHotelPriceInfo orderPriceInfo = orderPriceList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getDay(), priceInfo.getDay())).findFirst().orElseGet(
() -> {
OrderHotelPriceInfo entity = new OrderHotelPriceInfo()
.setOrderId(order.getId())
.setOrderNo(order.getOrderNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(priceInfo, orderPriceInfo, "id", "orderId", "orderNo");
if (Objects.isNull(orderPriceInfo.getId())) {
priceInfoMapper.insert(orderPriceInfo);
} else {
priceInfoMapper.updateById(orderPriceInfo);
}
}
}
//跟新支付信息集合
List<OrderPayInfoBean> payInfoList = orderModel.getPay();
if (CollectionUtils.isNotEmpty(payInfoList)) {
for (OrderPayInfoBean payInfo : payInfoList) {
OrderHotelPayInfo orderPayInfo = orderPayInfoList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getPayBillNo(), payInfo.getPayBillno())).findFirst().orElseGet(
() -> {
OrderHotelPayInfo entity = new OrderHotelPayInfo()
.setOrderId(order.getId())
.setOrderNo(order.getOrderNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(payInfo, orderPayInfo, "id", "orderId", "orderNo");
orderPayInfo.setPayBillNo(payInfo.getPayBillno());
orderPayInfo.setPayMethodName(payInfo.getPayMothedName());
if (Objects.isNull(orderPayInfo.getId())) {
payInfoMapper.insert(orderPayInfo);
} else {
payInfoMapper.updateById(orderPayInfo);
}
}
}
//跟新差旅信息
OrderBusinessInfoBean business = orderModel.getBusiness();
if (Objects.nonNull(business)) {
OrderHotelBusiness orderBusiness = orderBusinessList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId())).findFirst().orElseGet(
() -> {
OrderHotelBusiness entity = new OrderHotelBusiness()
.setOrderId(order.getId())
.setOrderNo(order.getOrderNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(business, orderBusiness, "id", "orderId", "orderNo");
orderBusiness.setViolateItemCode(business.getViolateitemCode());
orderBusiness.setViolateItem(business.getViolateitem());
if (Objects.isNull(orderBusiness.getId())) {
businessMapper.insert(orderBusiness);
} else {
businessMapper.updateById(orderBusiness);
}
}
});
});
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.OrderHotelBusinessMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.OrderHotelMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.OrderHotelPriceInfoMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.OrderHotelPsgInfoMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论