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

酒店模块功能实现

上级 d5e64f19
......@@ -20,4 +20,9 @@ public interface RemoteOrderService {
*/
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;
import org.dromara.common.ys.constant.airport.OrderStatus;
import org.dromara.server.api.RemoteOrderService;
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.OrderVehiclesBo;
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.OrderVehiclesVo;
import org.dromara.server.service.IOrderAirportService;
import org.dromara.server.service.IOrderHotelService;
import org.dromara.server.service.IOrderTrainService;
import org.dromara.server.service.IOrderVehiclesService;
import org.springframework.stereotype.Service;
......@@ -33,6 +36,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
private final IOrderAirportService orderAirportService;
private final IOrderTrainService orderTrainService;
private final IOrderVehiclesService orderVehiclesService;
private final IOrderHotelService orderHotelService;
/**
......@@ -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())
);
}
/**
* 不需要更新的酒店订单状态
*/
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);
}
<?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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论