提交 fbc58340 authored 作者: hzh's avatar hzh

火车票退票部分功能实现

上级 dd728233
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.OrderTrainRefundBo;
import org.dromara.server.domain.vo.OrderTrainRefundVo;
import org.dromara.server.service.IOrderTrainRefundService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 火车票退票单
* 前端访问路由地址为:/server/orderTrainRefund
*
* @author hzh
* @date 2024-11-26
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/orderTrainRefund")
public class OrderTrainRefundController extends BaseController {
private final IOrderTrainRefundService orderTrainRefundService;
/**
* 查询火车票退票单列表
*/
@SaCheckPermission("server:orderTrainRefund:list")
@GetMapping("/list")
public TableDataInfo<OrderTrainRefundVo> list(OrderTrainRefundBo bo, PageQuery pageQuery) {
return orderTrainRefundService.queryPageList(bo, pageQuery);
}
/**
* 导出火车票退票单列表
*/
@SaCheckPermission("server:orderTrainRefund:export")
@Log(title = "火车票退票单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OrderTrainRefundBo bo, HttpServletResponse response) {
List<OrderTrainRefundVo> list = orderTrainRefundService.queryList(bo);
ExcelUtil.exportExcel(list, "火车票退票单", OrderTrainRefundVo.class, response);
}
/**
* 获取火车票退票单详细信息
*
* @param id 主键
*/
@SaCheckPermission("server:orderTrainRefund:query")
@GetMapping("/{id}")
public R<OrderTrainRefundVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(orderTrainRefundService.queryById(id));
}
/**
* 新增火车票退票单
*/
@SaCheckPermission("server:orderTrainRefund:add")
@Log(title = "火车票退票单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderTrainRefundBo bo) {
return toAjax(orderTrainRefundService.insertByBo(bo));
}
/**
* 修改火车票退票单
*/
@SaCheckPermission("server:orderTrainRefund:edit")
@Log(title = "火车票退票单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OrderTrainRefundBo bo) {
return toAjax(orderTrainRefundService.updateByBo(bo));
}
/**
* 删除火车票退票单
*
* @param ids 主键串
*/
@SaCheckPermission("server:orderTrainRefund:remove")
@Log(title = "火车票退票单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(orderTrainRefundService.deleteWithValidByIds(List.of(ids), true));
}
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 火车票退票单对象 biz_order_train_refund
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_train_refund")
public class OrderTrainRefund extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 人员code
*/
private String personCode;
/**
* 退票单号
*/
private String refundNo;
/**
* 出发站名称
*/
private String fromStationName;
/**
* 席别9:商务座P:特等座M:一等座O:二等座/无座6:高级软卧4:软卧3:硬卧2:软座1:硬座/无座F动卧
*/
private String seatType;
/**
* 原订单号
*/
private String orderNo;
/**
* 票号
*/
private String ticketCode;
/**
* 办理时间
*/
private String khwcsj;
/**
* 到达城市id
*/
private String toCity;
/**
* 出发时刻
*/
private String fromTime;
/**
* 乘机人工号
*/
private String customerStatusName;
/**
* 申请时间
*/
private String applyDate;
/**
* 到达站三字码
*/
private String toStationCode;
/**
* 到达日期
*/
private String toDate;
/**
* 车次
*/
private String trainCode;
/**
* 出发日期
*/
private String fromDate;
/**
* 出发城市名称
*/
private String fromCityName;
/**
* 出发城市id
*/
private String fromCity;
/**
* 出发站三字码
*/
private String fromStationCode;
/**
* 到达城市名称
*/
private String toCityName;
/**
* 是否线下退票0否1是
*/
private String isOutlineRefund;
/**
* 预订渠道
*/
private String orderFrom;
/**
* 到达站名称
*/
private String toStationName;
/**
* 出发星期
*/
private String fromWeek;
/**
* 到达时刻
*/
private String toTime;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 火车票退票单差旅信息对象 biz_order_train_refund_business_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_train_refund_business_info")
public class OrderTrainRefundBusinessInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String refundNo;
/**
* 企业代码
*/
private String corpCode;
/**
* 最后审批人姓名
*/
private String appUserName;
/**
* 企业预订人工号
*/
private String bookerNo;
/**
* 低价航班信息
*/
private String lowFlightInfo;
/**
* 成本中心编号
*/
private String costCenterNo;
/**
* 项目名称
*/
private String projectName;
/**
* 违背原因代码
*/
private String reasonCode;
/**
* 最后审批人工号
*/
private String appUserNo;
/**
* 审批状态
*/
private String appStatus;
/**
* 最后审批时间
*/
private String appDatetime;
/**
* 成本中心名称
*/
private String costCenterName;
/**
* 联系手机
*/
private String linkMobile;
/**
* 联系人
*/
private String linkMan;
/**
* 审批规则名字
*/
private String appRuleName;
/**
* 是否违背差旅标准
*/
private String isViolate;
/**
* 企业简称
*/
private String corpName;
/**
* 企业预订人姓名
*/
private String bookerName;
/**
* 出差事由
*/
private String travelRemark;
/**
* 联系邮箱
*/
private String linkEmail;
/**
* 违背事项名称
*/
private String violateItem;
/**
* 项目编号
*/
private String projectNo;
/**
* 违背原因名称
*/
private String reasonDesc;
/**
* 违背事项代码
*/
private String violateItemCode;
/**
* 出差申请单号
*/
private String ccsqdNo;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 火车票退票单保险信息对象 biz_order_train_refund_bx_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_train_refund_bx_info")
public class OrderTrainRefundBxInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String refundNo;
/**
* 保险险种名称
*/
private String xzmc;
/**
* 退款金额
*/
private Long tkje;
/**
* 保险险种B_class
*/
private String xzid;
/**
* 保险订单号
*/
private String bxNo;
/**
* 保险销售价
*/
private Long xsj;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 火车票退票单支付信息对象 biz_order_train_refund_pay_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_train_refund_pay_info")
public class OrderTrainRefundPayInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String refundNo;
/**
* 支付科目代码
*/
private String paySubject;
/**
* 支付方式名称
*/
private String payMethodName;
/**
* 支付卡号
*/
private String payBankCard;
/**
* 支付时间
*/
private String payDatetime;
/**
* 支付科目名称
*/
private String paySubjectName;
/**
* 支付方式代码
*/
private String payMethod;
/**
* 支付流水号
*/
private String payBillNo;
/**
* 支付操作人
*/
private String payUser;
/**
* 支付金额
*/
private Long payAmount;
/**
* 支付备注
*/
private String payRemark;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 火车票退票单车程信息对象 biz_order_train_refund_ticket_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("biz_order_train_refund_ticket_info")
public class OrderTrainRefundTicketInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 订单id
*/
private Long orderId;
/**
* 订单编号
*/
private String refundNo;
/**
* 国籍
*/
private String nation;
/**
* 出生日期
*/
private String born;
/**
* 性别M男;F女
*/
private String sex;
/**
* 证件有效截止日期 yyyy-MM-dd
*/
private String expiryDate;
/**
* 乘车人姓名
*/
private String passengerName;
/**
* 乘车人证件号码
*/
private String idCode;
/**
* 加收服务费
*/
private Long sellServiceCharge;
/**
* 手续费率
*/
private Long cuRefundRate;
/**
* 乘机人所在部门编号
*/
private String empDeptId;
/**
* 退票手续费
*/
private Long cuRefundPoundage;
/**
* 乘机人工号
*/
private String empNo;
/**
* 应退金额
*/
private Long cuRefundAmount;
/**
* 退票价
*/
private Long returnPrices;
/**
* 乘车人手机号
*/
private String linkMobile;
/**
* 退服务费
*/
private Long refundServiceCharge;
/**
* 乘机人所在部门名称
*/
private String empDeptName;
/**
* 乘车人证件类型
*/
private String passengerType;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderTrainRefund;
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_train_refund
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderTrainRefund.class, reverseConvertGenerate = false)
public class OrderTrainRefundBo 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 refundNo;
/**
* 出发站名称
*/
@NotBlank(message = "出发站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromStationName;
/**
* 席别9:商务座P:特等座M:一等座O:二等座/无座6:高级软卧4:软卧3:硬卧2:软座1:硬座/无座F动卧
*/
@NotBlank(message = "席别9:商务座P:特等座M:一等座O:二等座/无座6:高级软卧4:软卧3:硬卧2:软座1:硬座/无座F动卧不能为空", groups = { AddGroup.class, EditGroup.class })
private String seatType;
/**
* 原订单号
*/
@NotBlank(message = "原订单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String orderNo;
/**
* 票号
*/
@NotBlank(message = "票号不能为空", groups = { AddGroup.class, EditGroup.class })
private String ticketCode;
/**
* 办理时间
*/
@NotBlank(message = "办理时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String khwcsj;
/**
* 到达城市id
*/
@NotBlank(message = "到达城市id不能为空", groups = { AddGroup.class, EditGroup.class })
private String toCity;
/**
* 出发时刻
*/
@NotBlank(message = "出发时刻不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromTime;
/**
* 乘机人工号
*/
@NotBlank(message = "乘机人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String customerStatusName;
/**
* 申请时间
*/
@NotBlank(message = "申请时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String applyDate;
/**
* 到达站三字码
*/
@NotBlank(message = "到达站三字码不能为空", groups = { AddGroup.class, EditGroup.class })
private String toStationCode;
/**
* 到达日期
*/
@NotBlank(message = "到达日期不能为空", groups = { AddGroup.class, EditGroup.class })
private String toDate;
/**
* 车次
*/
@NotBlank(message = "车次不能为空", groups = { AddGroup.class, EditGroup.class })
private String trainCode;
/**
* 出发日期
*/
@NotBlank(message = "出发日期不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromDate;
/**
* 出发城市名称
*/
@NotBlank(message = "出发城市名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromCityName;
/**
* 出发城市id
*/
@NotBlank(message = "出发城市id不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromCity;
/**
* 出发站三字码
*/
@NotBlank(message = "出发站三字码不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromStationCode;
/**
* 到达城市名称
*/
@NotBlank(message = "到达城市名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String toCityName;
/**
* 是否线下退票0否1是
*/
@NotBlank(message = "是否线下退票0否1是不能为空", groups = { AddGroup.class, EditGroup.class })
private String isOutlineRefund;
/**
* 预订渠道
*/
@NotBlank(message = "预订渠道不能为空", groups = { AddGroup.class, EditGroup.class })
private String orderFrom;
/**
* 到达站名称
*/
@NotBlank(message = "到达站名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String toStationName;
/**
* 出发星期
*/
@NotBlank(message = "出发星期不能为空", groups = { AddGroup.class, EditGroup.class })
private String fromWeek;
/**
* 到达时刻
*/
@NotBlank(message = "到达时刻不能为空", groups = { AddGroup.class, EditGroup.class })
private String toTime;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderTrainRefundBusinessInfo;
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_train_refund_business_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderTrainRefundBusinessInfo.class, reverseConvertGenerate = false)
public class OrderTrainRefundBusinessInfoBo 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 refundNo;
/**
* 企业代码
*/
@NotBlank(message = "企业代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String corpCode;
/**
* 最后审批人姓名
*/
@NotBlank(message = "最后审批人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String appUserName;
/**
* 企业预订人工号
*/
@NotBlank(message = "企业预订人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String bookerNo;
/**
* 低价航班信息
*/
@NotBlank(message = "低价航班信息不能为空", groups = { AddGroup.class, EditGroup.class })
private String lowFlightInfo;
/**
* 成本中心编号
*/
@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 reasonCode;
/**
* 最后审批人工号
*/
@NotBlank(message = "最后审批人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String appUserNo;
/**
* 审批状态
*/
@NotBlank(message = "审批状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String appStatus;
/**
* 最后审批时间
*/
@NotBlank(message = "最后审批时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String appDatetime;
/**
* 成本中心名称
*/
@NotBlank(message = "成本中心名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String costCenterName;
/**
* 联系手机
*/
@NotBlank(message = "联系手机不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkMobile;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkMan;
/**
* 审批规则名字
*/
@NotBlank(message = "审批规则名字不能为空", groups = { AddGroup.class, EditGroup.class })
private String appRuleName;
/**
* 是否违背差旅标准
*/
@NotBlank(message = "是否违背差旅标准不能为空", groups = { AddGroup.class, EditGroup.class })
private String isViolate;
/**
* 企业简称
*/
@NotBlank(message = "企业简称不能为空", groups = { AddGroup.class, EditGroup.class })
private String corpName;
/**
* 企业预订人姓名
*/
@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 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 reasonDesc;
/**
* 违背事项代码
*/
@NotBlank(message = "违背事项代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String violateItemCode;
/**
* 出差申请单号
*/
@NotBlank(message = "出差申请单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String ccsqdNo;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderTrainRefundBxInfo;
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_train_refund_bx_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderTrainRefundBxInfo.class, reverseConvertGenerate = false)
public class OrderTrainRefundBxInfoBo 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 refundNo;
/**
* 保险险种名称
*/
@NotBlank(message = "保险险种名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String xzmc;
/**
* 退款金额
*/
@NotNull(message = "退款金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Long tkje;
/**
* 保险险种B_class
*/
@NotBlank(message = "保险险种B_class不能为空", groups = { AddGroup.class, EditGroup.class })
private String xzid;
/**
* 保险订单号
*/
@NotBlank(message = "保险订单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String bxNo;
/**
* 保险销售价
*/
@NotNull(message = "保险销售价不能为空", groups = { AddGroup.class, EditGroup.class })
private Long xsj;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderTrainRefundPayInfo;
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_train_refund_pay_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderTrainRefundPayInfo.class, reverseConvertGenerate = false)
public class OrderTrainRefundPayInfoBo 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 refundNo;
/**
* 支付科目代码
*/
@NotBlank(message = "支付科目代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String paySubject;
/**
* 支付方式名称
*/
@NotBlank(message = "支付方式名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String payMethodName;
/**
* 支付卡号
*/
@NotBlank(message = "支付卡号不能为空", groups = { AddGroup.class, EditGroup.class })
private String payBankCard;
/**
* 支付时间
*/
@NotBlank(message = "支付时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String payDatetime;
/**
* 支付科目名称
*/
@NotBlank(message = "支付科目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String paySubjectName;
/**
* 支付方式代码
*/
@NotBlank(message = "支付方式代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String payMethod;
/**
* 支付流水号
*/
@NotBlank(message = "支付流水号不能为空", groups = { AddGroup.class, EditGroup.class })
private String payBillNo;
/**
* 支付操作人
*/
@NotBlank(message = "支付操作人不能为空", groups = { AddGroup.class, EditGroup.class })
private String payUser;
/**
* 支付金额
*/
@NotNull(message = "支付金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Long payAmount;
/**
* 支付备注
*/
@NotBlank(message = "支付备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String payRemark;
}
package org.dromara.server.domain.bo;
import org.dromara.server.domain.OrderTrainRefundTicketInfo;
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_train_refund_ticket_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OrderTrainRefundTicketInfo.class, reverseConvertGenerate = false)
public class OrderTrainRefundTicketInfoBo 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 refundNo;
/**
* 国籍
*/
@NotBlank(message = "国籍不能为空", groups = { AddGroup.class, EditGroup.class })
private String nation;
/**
* 出生日期
*/
@NotBlank(message = "出生日期不能为空", groups = { AddGroup.class, EditGroup.class })
private String born;
/**
* 性别M男;F女
*/
@NotBlank(message = "性别M男;F女不能为空", groups = { AddGroup.class, EditGroup.class })
private String sex;
/**
* 证件有效截止日期 yyyy-MM-dd
*/
@NotBlank(message = "证件有效截止日期 yyyy-MM-dd不能为空", groups = { AddGroup.class, EditGroup.class })
private String expiryDate;
/**
* 乘车人姓名
*/
@NotBlank(message = "乘车人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String passengerName;
/**
* 乘车人证件号码
*/
@NotBlank(message = "乘车人证件号码不能为空", groups = { AddGroup.class, EditGroup.class })
private String idCode;
/**
* 加收服务费
*/
@NotNull(message = "加收服务费不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sellServiceCharge;
/**
* 手续费率
*/
@NotNull(message = "手续费率不能为空", groups = { AddGroup.class, EditGroup.class })
private Long cuRefundRate;
/**
* 乘机人所在部门编号
*/
@NotBlank(message = "乘机人所在部门编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String empDeptId;
/**
* 退票手续费
*/
@NotNull(message = "退票手续费不能为空", groups = { AddGroup.class, EditGroup.class })
private Long cuRefundPoundage;
/**
* 乘机人工号
*/
@NotBlank(message = "乘机人工号不能为空", groups = { AddGroup.class, EditGroup.class })
private String empNo;
/**
* 应退金额
*/
@NotNull(message = "应退金额不能为空", groups = { AddGroup.class, EditGroup.class })
private Long cuRefundAmount;
/**
* 退票价
*/
@NotNull(message = "退票价不能为空", groups = { AddGroup.class, EditGroup.class })
private Long returnPrices;
/**
* 乘车人手机号
*/
@NotBlank(message = "乘车人手机号不能为空", groups = { AddGroup.class, EditGroup.class })
private String linkMobile;
/**
* 退服务费
*/
@NotNull(message = "退服务费不能为空", groups = { AddGroup.class, EditGroup.class })
private Long refundServiceCharge;
/**
* 乘机人所在部门名称
*/
@NotBlank(message = "乘机人所在部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String empDeptName;
/**
* 乘车人证件类型
*/
@NotBlank(message = "乘车人证件类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String passengerType;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderTrainRefundBusinessInfo;
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_train_refund_business_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderTrainRefundBusinessInfo.class)
public class OrderTrainRefundBusinessInfoVo 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 refundNo;
/**
* 企业代码
*/
@ExcelProperty(value = "企业代码")
private String corpCode;
/**
* 最后审批人姓名
*/
@ExcelProperty(value = "最后审批人姓名")
private String appUserName;
/**
* 企业预订人工号
*/
@ExcelProperty(value = "企业预订人工号")
private String bookerNo;
/**
* 低价航班信息
*/
@ExcelProperty(value = "低价航班信息")
private String lowFlightInfo;
/**
* 成本中心编号
*/
@ExcelProperty(value = "成本中心编号")
private String costCenterNo;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 违背原因代码
*/
@ExcelProperty(value = "违背原因代码")
private String reasonCode;
/**
* 最后审批人工号
*/
@ExcelProperty(value = "最后审批人工号")
private String appUserNo;
/**
* 审批状态
*/
@ExcelProperty(value = "审批状态")
private String appStatus;
/**
* 最后审批时间
*/
@ExcelProperty(value = "最后审批时间")
private String appDatetime;
/**
* 成本中心名称
*/
@ExcelProperty(value = "成本中心名称")
private String costCenterName;
/**
* 联系手机
*/
@ExcelProperty(value = "联系手机")
private String linkMobile;
/**
* 联系人
*/
@ExcelProperty(value = "联系人")
private String linkMan;
/**
* 审批规则名字
*/
@ExcelProperty(value = "审批规则名字")
private String appRuleName;
/**
* 是否违背差旅标准
*/
@ExcelProperty(value = "是否违背差旅标准")
private String isViolate;
/**
* 企业简称
*/
@ExcelProperty(value = "企业简称")
private String corpName;
/**
* 企业预订人姓名
*/
@ExcelProperty(value = "企业预订人姓名")
private String bookerName;
/**
* 出差事由
*/
@ExcelProperty(value = "出差事由")
private String travelRemark;
/**
* 联系邮箱
*/
@ExcelProperty(value = "联系邮箱")
private String linkEmail;
/**
* 违背事项名称
*/
@ExcelProperty(value = "违背事项名称")
private String violateItem;
/**
* 项目编号
*/
@ExcelProperty(value = "项目编号")
private String projectNo;
/**
* 违背原因名称
*/
@ExcelProperty(value = "违背原因名称")
private String reasonDesc;
/**
* 违背事项代码
*/
@ExcelProperty(value = "违背事项代码")
private String violateItemCode;
/**
* 出差申请单号
*/
@ExcelProperty(value = "出差申请单号")
private String ccsqdNo;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderTrainRefundBxInfo;
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_train_refund_bx_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderTrainRefundBxInfo.class)
public class OrderTrainRefundBxInfoVo 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 refundNo;
/**
* 保险险种名称
*/
@ExcelProperty(value = "保险险种名称")
private String xzmc;
/**
* 退款金额
*/
@ExcelProperty(value = "退款金额")
private Long tkje;
/**
* 保险险种B_class
*/
@ExcelProperty(value = "保险险种B_class")
private String xzid;
/**
* 保险订单号
*/
@ExcelProperty(value = "保险订单号")
private String bxNo;
/**
* 保险销售价
*/
@ExcelProperty(value = "保险销售价")
private Long xsj;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderTrainRefundPayInfo;
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_train_refund_pay_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderTrainRefundPayInfo.class)
public class OrderTrainRefundPayInfoVo 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 refundNo;
/**
* 支付科目代码
*/
@ExcelProperty(value = "支付科目代码")
private String paySubject;
/**
* 支付方式名称
*/
@ExcelProperty(value = "支付方式名称")
private String payMethodName;
/**
* 支付卡号
*/
@ExcelProperty(value = "支付卡号")
private String payBankCard;
/**
* 支付时间
*/
@ExcelProperty(value = "支付时间")
private String payDatetime;
/**
* 支付科目名称
*/
@ExcelProperty(value = "支付科目名称")
private String paySubjectName;
/**
* 支付方式代码
*/
@ExcelProperty(value = "支付方式代码")
private String payMethod;
/**
* 支付流水号
*/
@ExcelProperty(value = "支付流水号")
private String payBillNo;
/**
* 支付操作人
*/
@ExcelProperty(value = "支付操作人")
private String payUser;
/**
* 支付金额
*/
@ExcelProperty(value = "支付金额")
private Long payAmount;
/**
* 支付备注
*/
@ExcelProperty(value = "支付备注")
private String payRemark;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderTrainRefundTicketInfo;
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_train_refund_ticket_info
*
* @author hzh
* @date 2024-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderTrainRefundTicketInfo.class)
public class OrderTrainRefundTicketInfoVo 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 refundNo;
/**
* 国籍
*/
@ExcelProperty(value = "国籍")
private String nation;
/**
* 出生日期
*/
@ExcelProperty(value = "出生日期")
private String born;
/**
* 性别M男;F女
*/
@ExcelProperty(value = "性别M男;F女")
private String sex;
/**
* 证件有效截止日期 yyyy-MM-dd
*/
@ExcelProperty(value = "证件有效截止日期 yyyy-MM-dd")
private String expiryDate;
/**
* 乘车人姓名
*/
@ExcelProperty(value = "乘车人姓名")
private String passengerName;
/**
* 乘车人证件号码
*/
@ExcelProperty(value = "乘车人证件号码")
private String idCode;
/**
* 加收服务费
*/
@ExcelProperty(value = "加收服务费")
private Long sellServiceCharge;
/**
* 手续费率
*/
@ExcelProperty(value = "手续费率")
private Long cuRefundRate;
/**
* 乘机人所在部门编号
*/
@ExcelProperty(value = "乘机人所在部门编号")
private String empDeptId;
/**
* 退票手续费
*/
@ExcelProperty(value = "退票手续费")
private Long cuRefundPoundage;
/**
* 乘机人工号
*/
@ExcelProperty(value = "乘机人工号")
private String empNo;
/**
* 应退金额
*/
@ExcelProperty(value = "应退金额")
private Long cuRefundAmount;
/**
* 退票价
*/
@ExcelProperty(value = "退票价")
private Long returnPrices;
/**
* 乘车人手机号
*/
@ExcelProperty(value = "乘车人手机号")
private String linkMobile;
/**
* 退服务费
*/
@ExcelProperty(value = "退服务费")
private Long refundServiceCharge;
/**
* 乘机人所在部门名称
*/
@ExcelProperty(value = "乘机人所在部门名称")
private String empDeptName;
/**
* 乘车人证件类型
*/
@ExcelProperty(value = "乘车人证件类型")
private String passengerType;
}
package org.dromara.server.domain.vo;
import org.dromara.server.domain.OrderTrainRefund;
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_train_refund
*
* @author hzh
* @date 2024-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OrderTrainRefund.class)
public class OrderTrainRefundVo 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 refundNo;
/**
* 出发站名称
*/
@ExcelProperty(value = "出发站名称")
private String fromStationName;
/**
* 席别9:商务座P:特等座M:一等座O:二等座/无座6:高级软卧4:软卧3:硬卧2:软座1:硬座/无座F动卧
*/
@ExcelProperty(value = "席别9:商务座P:特等座M:一等座O:二等座/无座6:高级软卧4:软卧3:硬卧2:软座1:硬座/无座F动卧")
private String seatType;
/**
* 原订单号
*/
@ExcelProperty(value = "原订单号")
private String orderNo;
/**
* 票号
*/
@ExcelProperty(value = "票号")
private String ticketCode;
/**
* 办理时间
*/
@ExcelProperty(value = "办理时间")
private String khwcsj;
/**
* 到达城市id
*/
@ExcelProperty(value = "到达城市id")
private String toCity;
/**
* 出发时刻
*/
@ExcelProperty(value = "出发时刻")
private String fromTime;
/**
* 乘机人工号
*/
@ExcelProperty(value = "乘机人工号")
private String customerStatusName;
/**
* 申请时间
*/
@ExcelProperty(value = "申请时间")
private String applyDate;
/**
* 到达站三字码
*/
@ExcelProperty(value = "到达站三字码")
private String toStationCode;
/**
* 到达日期
*/
@ExcelProperty(value = "到达日期")
private String toDate;
/**
* 车次
*/
@ExcelProperty(value = "车次")
private String trainCode;
/**
* 出发日期
*/
@ExcelProperty(value = "出发日期")
private String fromDate;
/**
* 出发城市名称
*/
@ExcelProperty(value = "出发城市名称")
private String fromCityName;
/**
* 出发城市id
*/
@ExcelProperty(value = "出发城市id")
private String fromCity;
/**
* 出发站三字码
*/
@ExcelProperty(value = "出发站三字码")
private String fromStationCode;
/**
* 到达城市名称
*/
@ExcelProperty(value = "到达城市名称")
private String toCityName;
/**
* 是否线下退票0否1是
*/
@ExcelProperty(value = "是否线下退票0否1是")
private String isOutlineRefund;
/**
* 预订渠道
*/
@ExcelProperty(value = "预订渠道")
private String orderFrom;
/**
* 到达站名称
*/
@ExcelProperty(value = "到达站名称")
private String toStationName;
/**
* 出发星期
*/
@ExcelProperty(value = "出发星期")
private String fromWeek;
/**
* 到达时刻
*/
@ExcelProperty(value = "到达时刻")
private String toTime;
}
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderTrainRefundBusinessInfo;
import org.dromara.server.domain.vo.OrderTrainRefundBusinessInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 火车票退票单差旅信息Mapper接口
*
* @author hzh
* @date 2024-11-26
*/
public interface OrderTrainRefundBusinessInfoMapper extends BaseMapperPlus<OrderTrainRefundBusinessInfo, OrderTrainRefundBusinessInfoVo> {
}
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderTrainRefundBxInfo;
import org.dromara.server.domain.vo.OrderTrainRefundBxInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 火车票退票单保险信息Mapper接口
*
* @author hzh
* @date 2024-11-26
*/
public interface OrderTrainRefundBxInfoMapper extends BaseMapperPlus<OrderTrainRefundBxInfo, OrderTrainRefundBxInfoVo> {
}
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderTrainRefund;
import org.dromara.server.domain.vo.OrderTrainRefundVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 火车票退票单Mapper接口
*
* @author hzh
* @date 2024-11-26
*/
public interface OrderTrainRefundMapper extends BaseMapperPlus<OrderTrainRefund, OrderTrainRefundVo> {
}
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderTrainRefundPayInfo;
import org.dromara.server.domain.vo.OrderTrainRefundPayInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 火车票退票单支付信息Mapper接口
*
* @author hzh
* @date 2024-11-26
*/
public interface OrderTrainRefundPayInfoMapper extends BaseMapperPlus<OrderTrainRefundPayInfo, OrderTrainRefundPayInfoVo> {
}
package org.dromara.server.mapper;
import org.dromara.server.domain.OrderTrainRefundTicketInfo;
import org.dromara.server.domain.vo.OrderTrainRefundTicketInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 火车票退票单车程信息Mapper接口
*
* @author hzh
* @date 2024-11-26
*/
public interface OrderTrainRefundTicketInfoMapper extends BaseMapperPlus<OrderTrainRefundTicketInfo, OrderTrainRefundTicketInfoVo> {
}
package org.dromara.server.service;
import org.dromara.server.base.IBaseService;
import org.dromara.server.domain.OrderTrainRefund;
import org.dromara.server.domain.bo.OrderTrainRefundBo;
import org.dromara.server.domain.vo.OrderTrainRefundVo;
import java.util.List;
/**
* 火车票退票单Service接口
*
* @author hzh
* @date 2024-11-26
*/
public interface IOrderTrainRefundService extends IBaseService<OrderTrainRefundVo, OrderTrainRefundBo, OrderTrainRefund> {
/**
* 批量保存订单
*
* @param userId 用户id
* @param refundNoList 订单号列表
*/
void batchSaveOrder(String userId, List<String> refundNoList);
/**
* 更新火车票退票信息
*
* @param refundNoList 订单号列表
*/
void updateOrderInfo(List<String> refundNoList);
}
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.OrderPayInfoBean;
import org.dromara.common.ys.model.res.train.OrderRefundDetailModel;
import org.dromara.common.ys.model.res.train.bean.BusinessInfo;
import org.dromara.common.ys.model.res.train.bean.BxOrderInfoBean;
import org.dromara.common.ys.model.res.train.bean.TrRefundticketInfoBean;
import org.dromara.common.ys.service.ITrainService;
import org.dromara.server.base.AbstractBaseService;
import org.dromara.server.domain.*;
import org.dromara.server.domain.bo.OrderTrainRefundBo;
import org.dromara.server.domain.vo.OrderTrainRefundVo;
import org.dromara.server.mapper.*;
import org.dromara.server.service.IOrderTrainRefundService;
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-26
*/
@RequiredArgsConstructor
@Service
public class OrderTrainRefundServiceImpl extends AbstractBaseService<OrderTrainRefundVo, OrderTrainRefundBo, OrderTrainRefund> implements IOrderTrainRefundService {
private final OrderTrainRefundMapper baseMapper;
private final OrderTrainRefundBusinessInfoMapper businessInfoMapper;
private final OrderTrainRefundBxInfoMapper bxInfoMapper;
private final OrderTrainRefundPayInfoMapper payInfoMapper;
private final OrderTrainRefundTicketInfoMapper ticketInfoMapper;
private final ITrainService trainService;
private final BizUserMapper userMapper;
private final ScheduledExecutorService scheduledExecutorService;
@Override
public BaseMapperPlus<OrderTrainRefund, OrderTrainRefundVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<OrderTrainRefund> buildQueryWrapper(OrderTrainRefundBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OrderTrainRefund> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getPersonCode()), OrderTrainRefund::getPersonCode, bo.getPersonCode());
lqw.eq(StringUtils.isNotBlank(bo.getRefundNo()), OrderTrainRefund::getRefundNo, bo.getRefundNo());
lqw.like(StringUtils.isNotBlank(bo.getFromStationName()), OrderTrainRefund::getFromStationName, bo.getFromStationName());
lqw.eq(StringUtils.isNotBlank(bo.getSeatType()), OrderTrainRefund::getSeatType, bo.getSeatType());
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), OrderTrainRefund::getOrderNo, bo.getOrderNo());
lqw.eq(StringUtils.isNotBlank(bo.getTicketCode()), OrderTrainRefund::getTicketCode, bo.getTicketCode());
lqw.eq(StringUtils.isNotBlank(bo.getKhwcsj()), OrderTrainRefund::getKhwcsj, bo.getKhwcsj());
lqw.eq(StringUtils.isNotBlank(bo.getToCity()), OrderTrainRefund::getToCity, bo.getToCity());
lqw.eq(StringUtils.isNotBlank(bo.getFromTime()), OrderTrainRefund::getFromTime, bo.getFromTime());
lqw.like(StringUtils.isNotBlank(bo.getCustomerStatusName()), OrderTrainRefund::getCustomerStatusName, bo.getCustomerStatusName());
lqw.eq(StringUtils.isNotBlank(bo.getApplyDate()), OrderTrainRefund::getApplyDate, bo.getApplyDate());
lqw.eq(StringUtils.isNotBlank(bo.getToStationCode()), OrderTrainRefund::getToStationCode, bo.getToStationCode());
lqw.eq(StringUtils.isNotBlank(bo.getToDate()), OrderTrainRefund::getToDate, bo.getToDate());
lqw.eq(StringUtils.isNotBlank(bo.getTrainCode()), OrderTrainRefund::getTrainCode, bo.getTrainCode());
lqw.eq(StringUtils.isNotBlank(bo.getFromDate()), OrderTrainRefund::getFromDate, bo.getFromDate());
lqw.like(StringUtils.isNotBlank(bo.getFromCityName()), OrderTrainRefund::getFromCityName, bo.getFromCityName());
lqw.eq(StringUtils.isNotBlank(bo.getFromCity()), OrderTrainRefund::getFromCity, bo.getFromCity());
lqw.eq(StringUtils.isNotBlank(bo.getFromStationCode()), OrderTrainRefund::getFromStationCode, bo.getFromStationCode());
lqw.like(StringUtils.isNotBlank(bo.getToCityName()), OrderTrainRefund::getToCityName, bo.getToCityName());
lqw.eq(StringUtils.isNotBlank(bo.getIsOutlineRefund()), OrderTrainRefund::getIsOutlineRefund, bo.getIsOutlineRefund());
lqw.eq(StringUtils.isNotBlank(bo.getOrderFrom()), OrderTrainRefund::getOrderFrom, bo.getOrderFrom());
lqw.like(StringUtils.isNotBlank(bo.getToStationName()), OrderTrainRefund::getToStationName, bo.getToStationName());
lqw.eq(StringUtils.isNotBlank(bo.getFromWeek()), OrderTrainRefund::getFromWeek, bo.getFromWeek());
lqw.eq(StringUtils.isNotBlank(bo.getToTime()), OrderTrainRefund::getToTime, bo.getToTime());
return lqw;
}
@Override
public void batchSaveOrder(String userId, List<String> refundNoList) {
BizUser user = userMapper.selectOne(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserNo, userId));
if (Objects.isNull(user)) {
throw new RuntimeException("用户不存在");
}
List<OrderTrainRefund> orderList = refundNoList.stream().map(orderNo -> {
OrderTrainRefund order = new OrderTrainRefund();
order.setPersonCode(userId);
order.setRefundNo(orderNo);
order.setTenantId(user.getTenantId());
return order;
}).toList();
for (OrderTrainRefund bo : orderList) {
baseMapper.insert(bo);
}
updateOrderInfo(refundNoList);
}
@Override
public void updateOrderInfo(List<String> refundNoList) {
if (CollectionUtils.isEmpty(refundNoList)) {
return;
}
List<OrderTrainRefund> orderList = baseMapper.selectList(new LambdaQueryWrapper<OrderTrainRefund>().in(OrderTrainRefund::getRefundNo, refundNoList));
List<Long> orderIds = StreamUtils.toList(orderList, OrderTrainRefund::getId);
if (CollectionUtils.isEmpty(orderIds)) {
return;
}
List<OrderTrainRefundBusinessInfo> orderBusinessList = businessInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainRefundBusinessInfo>().in(OrderTrainRefundBusinessInfo::getOrderId, orderIds));
List<OrderTrainRefundPayInfo> orderPayInfoList = payInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainRefundPayInfo>().in(OrderTrainRefundPayInfo::getOrderId, orderIds));
List<OrderTrainRefundBxInfo> orderBxList = bxInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainRefundBxInfo>().in(OrderTrainRefundBxInfo::getOrderId, orderIds));
List<OrderTrainRefundTicketInfo> orderTicketList = ticketInfoMapper.selectList(new LambdaQueryWrapper<OrderTrainRefundTicketInfo>().in(OrderTrainRefundTicketInfo::getOrderId, orderIds));
//更新数据
orderList.forEach(order -> {
scheduledExecutorService.execute(() -> {
OrderRefundDetailModel orderModel = trainService.orderRefundDetail(order.getPersonCode(), new org.dromara.common.ys.model.req.train.OrderRefundDetailModel().setRefundNo(order.getRefundNo()));
//跟新订单数据
BeanUtil.copyProperties(orderModel, order, "id", "personCode", "activityId");
baseMapper.updateById(order);
//跟新保险信息
List<BxOrderInfoBean> bxList = orderModel.getBxOrderInfo();
if (CollectionUtils.isNotEmpty(bxList)) {
for (BxOrderInfoBean bx : bxList) {
OrderTrainRefundBxInfo orderBx = orderBxList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getBxNo(), bx.getBxNo())).findFirst().orElseGet(
() -> {
OrderTrainRefundBxInfo entity = new OrderTrainRefundBxInfo()
.setOrderId(order.getId())
.setRefundNo(order.getRefundNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(bx, orderBx, "id", "orderId", "refundNo");
if (Objects.isNull(orderBx.getId())) {
bxInfoMapper.insert(orderBx);
} else {
bxInfoMapper.updateById(orderBx);
}
}
}
//跟新差旅信息
BusinessInfo business = orderModel.getBusiness();
if (Objects.nonNull(business)) {
OrderTrainRefundBusinessInfo orderBusiness = orderBusinessList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId())).findFirst().orElseGet(
() -> {
OrderTrainRefundBusinessInfo entity = new OrderTrainRefundBusinessInfo()
.setOrderId(order.getId())
.setRefundNo(order.getRefundNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(business, orderBusiness, "id", "orderId", "refundNo");
orderBusiness.setLinkMan(business.getLink_Man());
orderBusiness.setViolateItemCode(business.getViolateitemCode());
orderBusiness.setLinkMobile(business.getLink_mobile());
orderBusiness.setLinkEmail(business.getLink_email());
orderBusiness.setViolateItem(business.getViolateitem());
if (Objects.isNull(orderBusiness.getId())) {
businessInfoMapper.insert(orderBusiness);
} else {
businessInfoMapper.updateById(orderBusiness);
}
}
//跟新支付信息集合
List<OrderPayInfoBean> payInfoList = orderModel.getPayInfoList();
if (CollectionUtils.isNotEmpty(payInfoList)) {
for (OrderPayInfoBean payInfo : payInfoList) {
OrderTrainRefundPayInfo orderPayInfo = orderPayInfoList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getPayBillNo(), payInfo.getPayBillno())).findFirst().orElseGet(
() -> {
OrderTrainRefundPayInfo entity = new OrderTrainRefundPayInfo()
.setOrderId(order.getId())
.setRefundNo(order.getRefundNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(payInfo, orderPayInfo, "id", "orderId", "refundNo");
orderPayInfo.setPayBillNo(payInfo.getPayBillno());
orderPayInfo.setPayMethodName(payInfo.getPayMothedName());
if (Objects.isNull(orderPayInfo.getId())) {
payInfoMapper.insert(orderPayInfo);
} else {
payInfoMapper.updateById(orderPayInfo);
}
}
}
//跟新车程信息
TrRefundticketInfoBean ticket = orderModel.getTrRefundticket();
if (Objects.nonNull(ticket)) {
OrderTrainRefundTicketInfo orderTicket = orderTicketList.stream().filter(item -> Objects.equals(item.getOrderId(), order.getId()) && org.apache.commons.lang3.StringUtils.equals(item.getIdCode(), ticket.getIdCode())).findFirst().orElseGet(
() -> {
OrderTrainRefundTicketInfo entity = new OrderTrainRefundTicketInfo()
.setOrderId(order.getId())
.setRefundNo(order.getRefundNo());
entity.setTenantId(order.getTenantId());
return entity;
});
BeanUtil.copyProperties(ticket, orderTicket, "id", "orderId", "refundNo");
orderTicket.setEmpDeptId(ticket.getEmpDeptid());
if (Objects.isNull(orderTicket.getId())) {
ticketInfoMapper.insert(orderTicket);
} else {
ticketInfoMapper.updateById(orderTicket);
}
}
});
});
}
}
<?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.OrderTrainRefundBusinessInfoMapper">
</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.OrderTrainRefundBxInfoMapper">
</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.OrderTrainRefundMapper">
</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.OrderTrainRefundPayInfoMapper">
</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.OrderTrainRefundTicketInfoMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论