Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

luo.yibo@datuai.com 1 yıl önce
ebeveyn
işleme
0133c646bb
20 değiştirilmiş dosya ile 773 ekleme ve 41 silme
  1. 16 0
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemotePtRoomTypeService.java
  2. 51 0
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/vo/RemotePtRoomTypeVo.java
  3. 10 12
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/vo/RemotePtRoomVo.java
  4. 5 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
  5. 34 0
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/GuestRoomTypeTranslationImpl.java
  6. 112 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtRoomTypeController.java
  7. 15 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/PtRoom.java
  8. 57 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/PtRoomType.java
  9. 2 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomBatchSetBo.java
  10. 14 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomBo.java
  11. 58 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomTypeBo.java
  12. 62 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/vo/PtRoomTypeVo.java
  13. 12 16
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/vo/PtRoomVo.java
  14. 38 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemotePtRoomTypeServiceImpl.java
  15. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/mapper/PtRoomTypeMapper.java
  16. 3 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtRoomService.java
  17. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtRoomTypeService.java
  18. 26 5
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtRoomServiceImpl.java
  19. 153 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtRoomTypeServiceImpl.java
  20. 21 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/basics/roomType/PtRoomTypeMapper.xml

+ 16 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemotePtRoomTypeService.java

@@ -0,0 +1,16 @@
+package org.dromara.backstage.api;
+
+import org.dromara.backstage.api.domain.bo.RemotePtRoomBatchSetBo;
+import org.dromara.backstage.api.domain.bo.RemotePtRoomBo;
+import org.dromara.backstage.api.domain.vo.RemotePtRoomTypeVo;
+import org.dromara.backstage.api.domain.vo.RemotePtRoomVo;
+
+import java.util.Collection;
+
+/**
+ * 房间信息远程调用接口
+ */
+public interface RemotePtRoomTypeService {
+
+    RemotePtRoomTypeVo queryById(Long roomTypeId);
+}

+ 51 - 0
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/vo/RemotePtRoomTypeVo.java

@@ -0,0 +1,51 @@
+package org.dromara.backstage.api.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * 房间定义视图对象 t_pt_room
+ *
+ * @author bing
+ * @date 2024-08-09
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class RemotePtRoomTypeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 房间类型Id,主键
+     */
+    private Long roomTypeId;
+
+    /**
+     * 房间类型名称
+     */
+    private String roomTypeName;
+
+    /**
+     * 价格
+     */
+    private Long price;
+
+    /**
+     * 床位个数
+     */
+    private Long bedNumber;
+
+    /**
+     * 可入住人数
+     */
+    private Long capacityNumber;
+
+
+
+}

+ 10 - 12
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/domain/vo/RemotePtRoomVo.java

@@ -1,7 +1,10 @@
 package org.dromara.backstage.api.domain.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -53,25 +56,20 @@ public class RemotePtRoomVo implements Serializable {
      */
     private String codeOne;
 
-    /**
-     * 门牌号2
-     */
-    private String codeTwo;
+    private String remark;
 
     /**
-     * 门牌号3
+     * 客房类型
      */
-    private String codeThree;
+    private Long guestRoomType;
 
-    /**
-     * 门牌号4
-     */
-    private String codeFour;
+    private String guestRoomTypeName;
 
     /**
-     * 门牌号5
+     * 有无网络
      */
-    private String codeFive;
+    private String hasNetwork;
+
 
 
 

+ 5 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java

@@ -53,6 +53,11 @@ public interface TransConstant {
      */
     String MEAL_TYPE_TO_NAME =  "meal_type_to_name";
 
+    /**
+     * 客室类型
+     */
+    String GUEST_ROOM_TYPE_TO_NAME = "room_type_to_name";
+
 
 
 }

+ 34 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/GuestRoomTypeTranslationImpl.java

@@ -0,0 +1,34 @@
+package org.dromara.common.translation.core.impl;
+
+import lombok.AllArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.backstage.api.RemotePtRoomTypeService;
+import org.dromara.backstage.api.domain.vo.RemotePtRoomTypeVo;
+import org.dromara.common.translation.annotation.TranslationType;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.common.translation.core.TranslationInterface;
+import org.dromara.system.api.RemoteUserService;
+
+import java.util.Optional;
+
+/**
+ * 用户昵称翻译实现
+ *
+ * @author may
+ */
+@AllArgsConstructor
+@TranslationType(type = TransConstant.GUEST_ROOM_TYPE_TO_NAME)
+public class GuestRoomTypeTranslationImpl implements TranslationInterface<String> {
+
+    @DubboReference
+    private RemotePtRoomTypeService remotePtRoomTypeService;
+
+    @Override
+    public String translation(Object key, String other) {
+        if (key instanceof Long id) {
+            RemotePtRoomTypeVo vo = remotePtRoomTypeService.queryById(id);
+            return Optional.ofNullable(vo).map(RemotePtRoomTypeVo::getRoomTypeName).orElse(null);
+        }
+        return null;
+    }
+}

+ 112 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/controller/PtRoomTypeController.java

@@ -0,0 +1,112 @@
+package org.dromara.backstage.basics.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+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.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.backstage.basics.domain.vo.PtRoomTypeVo;
+import org.dromara.backstage.basics.domain.bo.PtRoomTypeBo;
+import org.dromara.backstage.basics.service.IPtRoomTypeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 房型管理
+ * 前端访问路由地址为:/roomType/ptRoomType
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/roomType/ptRoomType")
+public class PtRoomTypeController extends BaseController {
+
+    private final IPtRoomTypeService ptRoomTypeService;
+
+    /**
+     * 查询房型管理列表
+     */
+    @SaCheckPermission("roomType:ptRoomType:list")
+    @GetMapping("/list")
+    public TableDataInfo<PtRoomTypeVo> list(PtRoomTypeBo bo, PageQuery pageQuery) {
+        return ptRoomTypeService.queryPageList(bo, pageQuery);
+    }
+
+//    @SaCheckPermission("roomType:ptRoomType:list")
+    @GetMapping("/all")
+    public R<List<PtRoomTypeVo>> all(PtRoomTypeBo bo) {
+        return R.ok(ptRoomTypeService.queryList(bo));
+    }
+
+    /**
+     * 导出房型管理列表
+     */
+    @SaCheckPermission("roomType:ptRoomType:export")
+    @Log(title = "房型管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(PtRoomTypeBo bo, HttpServletResponse response) {
+        List<PtRoomTypeVo> list = ptRoomTypeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "房型管理", PtRoomTypeVo.class, response);
+    }
+
+    /**
+     * 获取房型管理详细信息
+     *
+     * @param roomTypeId 主键
+     */
+    @SaCheckPermission("roomType:ptRoomType:query")
+    @GetMapping("/{roomTypeId}")
+    public R<PtRoomTypeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long roomTypeId) {
+        return R.ok(ptRoomTypeService.queryById(roomTypeId));
+    }
+
+    /**
+     * 新增房型管理
+     */
+    @SaCheckPermission("roomType:ptRoomType:add")
+    @Log(title = "房型管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody PtRoomTypeBo bo) {
+        return toAjax(ptRoomTypeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改房型管理
+     */
+    @SaCheckPermission("roomType:ptRoomType:edit")
+    @Log(title = "房型管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody PtRoomTypeBo bo) {
+        return toAjax(ptRoomTypeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除房型管理
+     *
+     * @param roomTypeIds 主键串
+     */
+    @SaCheckPermission("roomType:ptRoomType:remove")
+    @Log(title = "房型管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{roomTypeIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] roomTypeIds) {
+        return toAjax(ptRoomTypeService.deleteWithValidByIds(List.of(roomTypeIds), true));
+    }
+}

+ 15 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/PtRoom.java

@@ -55,22 +55,22 @@ public class PtRoom extends TenantEntity {
     /**
      * 门牌号2
      */
-    private String codeTwo;
+//    private String codeTwo;
 
     /**
      * 门牌号3
      */
-    private String codeThree;
+//    private String codeThree;
 
     /**
      * 门牌号4
      */
-    private String codeFour;
+//    private String codeFour;
 
     /**
      * 门牌号5
      */
-    private String codeFive;
+//    private String codeFive;
 
     /**
      * 备注
@@ -84,4 +84,15 @@ public class PtRoom extends TenantEntity {
     private String delFlag;
 
 
+    /**
+     * 有无网络
+     */
+    private String hasNetwork;
+
+    /**
+     * 客房类型
+     */
+    private Long guestRoomType;
+
+
 }

+ 57 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/PtRoomType.java

@@ -0,0 +1,57 @@
+package org.dromara.backstage.basics.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 房型管理对象 t_pt_room_type
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_pt_room_type")
+public class PtRoomType extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 房间类型Id,主键
+     */
+    @TableId(value = "room_type_id")
+    private Long roomTypeId;
+
+    /**
+     * 房间类型名称
+     */
+    private String roomTypeName;
+
+    /**
+     * 价格
+     */
+    private Long price;
+
+    /**
+     * 床位个数
+     */
+    private Long bedNumber;
+
+    /**
+     * 可入住人数
+     */
+    private Long capacityNumber;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomBatchSetBo.java

@@ -38,6 +38,8 @@ public class PtRoomBatchSetBo implements Serializable {
 //    @NotBlank(message = "房间类型,见FJLX字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
     private String roomType;
 
+    private Long guestRoomType;
+
 
 
 

+ 14 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomBo.java

@@ -60,27 +60,37 @@ public class PtRoomBo extends TenantEntity {
     /**
      * 门牌号2
      */
-    private String codeTwo;
+//    private String codeTwo;
 
     /**
      * 门牌号3
      */
-    private String codeThree;
+//    private String codeThree;
 
     /**
      * 门牌号4
      */
-    private String codeFour;
+//    private String codeFour;
 
     /**
      * 门牌号5
      */
-    private String codeFive;
+//    private String codeFive;
 
     /**
      * 备注
      */
     private String remark;
 
+    /**
+     * 有无网络
+     */
+    private String hasNetwork;
+
+    /**
+     * 客房类型
+     */
+    private Long guestRoomType;
+
 
 }

+ 58 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/bo/PtRoomTypeBo.java

@@ -0,0 +1,58 @@
+package org.dromara.backstage.basics.domain.bo;
+
+import org.dromara.backstage.basics.domain.PtRoomType;
+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.*;
+
+import java.io.Serial;
+
+/**
+ * 房型管理业务对象 t_pt_room_type
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = PtRoomType.class, reverseConvertGenerate = false)
+public class PtRoomTypeBo extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 4829275730978233532L;
+    /**
+     * 房间类型Id,主键
+     */
+    @NotNull(message = "房间类型Id,主键不能为空", groups = {EditGroup.class})
+    private Long roomTypeId;
+
+    /**
+     * 房间类型名称
+     */
+    @NotBlank(message = "房间类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String roomTypeName;
+
+    /**
+     * 价格
+     */
+//    @NotNull(message = "价格不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long price;
+
+    /**
+     * 床位个数
+     */
+//    @NotNull(message = "床位个数不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long bedNumber;
+
+
+    /**
+     * 可入住人数
+     */
+//    @NotNull(message = "可入住人数不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long capacityNumber;
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/vo/PtRoomTypeVo.java

@@ -0,0 +1,62 @@
+package org.dromara.backstage.basics.domain.vo;
+
+import org.dromara.backstage.basics.domain.PtRoomType;
+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;
+
+
+
+/**
+ * 房型管理视图对象 t_pt_room_type
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = PtRoomType.class)
+public class PtRoomTypeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 房间类型Id,主键
+     */
+    @ExcelProperty(value = "房间类型Id,主键")
+    private Long roomTypeId;
+
+    /**
+     * 房间类型名称
+     */
+    @ExcelProperty(value = "房间类型名称")
+    private String roomTypeName;
+
+    /**
+     * 价格
+     */
+    @ExcelProperty(value = "价格")
+    private Long price;
+
+    /**
+     * 床位个数
+     */
+    @ExcelProperty(value = "床位个数")
+    private Long bedNumber;
+
+    /**
+     * 可入住人数
+     */
+    @ExcelProperty(value = "可入住人数")
+    private Long capacityNumber;
+
+
+}

+ 12 - 16
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/domain/vo/PtRoomVo.java

@@ -7,6 +7,8 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
 import org.dromara.common.excel.convert.ExcelDictConvert;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -68,29 +70,23 @@ public class PtRoomVo implements Serializable {
     @ExcelProperty(value = "门牌号1")
     private String codeOne;
 
-    /**
-     * 门牌号2
-     */
-    @ExcelProperty(value = "门牌号2")
-    private String codeTwo;
 
     /**
-     * 门牌号3
+     * 客房类型
      */
-    @ExcelProperty(value = "门牌号3")
-    private String codeThree;
+    private Long guestRoomType;
 
-    /**
-     * 门牌号4
-     */
-    @ExcelProperty(value = "门牌号4")
-    private String codeFour;
+    @Translation(type = TransConstant.GUEST_ROOM_TYPE_TO_NAME, mapper = "guestRoomType")
+    private String guestRoomTypeName;
 
     /**
-     * 门牌号5
+     * 有无网络
      */
-    @ExcelProperty(value = "门牌号5")
-    private String codeFive;
+    @ExcelProperty(value = "有无网络", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "dict_has_network")
+    private String hasNetwork;
+
+    private String remark;
 
 
 

+ 38 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemotePtRoomTypeServiceImpl.java

@@ -0,0 +1,38 @@
+package org.dromara.backstage.basics.dubbo;
+
+import cn.hutool.core.bean.BeanUtil;
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.backstage.api.RemotePtRoomService;
+import org.dromara.backstage.api.RemotePtRoomTypeService;
+import org.dromara.backstage.api.domain.bo.RemotePtRoomBatchSetBo;
+import org.dromara.backstage.api.domain.bo.RemotePtRoomBo;
+import org.dromara.backstage.api.domain.vo.RemotePtRoomTypeVo;
+import org.dromara.backstage.api.domain.vo.RemotePtRoomVo;
+import org.dromara.backstage.basics.domain.bo.PtRoomBatchSetBo;
+import org.dromara.backstage.basics.domain.bo.PtRoomBo;
+import org.dromara.backstage.basics.domain.vo.PtRoomTypeVo;
+import org.dromara.backstage.basics.domain.vo.PtRoomVo;
+import org.dromara.backstage.basics.service.IPtRoomService;
+import org.dromara.backstage.basics.service.IPtRoomTypeService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+
+/**
+ * 房间信息远程服务实现类
+ */
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemotePtRoomTypeServiceImpl implements RemotePtRoomTypeService {
+
+    private final IPtRoomTypeService roomTypeService;
+
+    @Override
+    public RemotePtRoomTypeVo queryById(Long id) {
+        PtRoomTypeVo vo = roomTypeService.queryById(id);
+        return MapstructUtils.convert(vo,RemotePtRoomTypeVo.class);
+    }
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/mapper/PtRoomTypeMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.basics.mapper;
+
+import org.dromara.backstage.basics.domain.PtRoomType;
+import org.dromara.backstage.basics.domain.vo.PtRoomTypeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 房型管理Mapper接口
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+public interface PtRoomTypeMapper extends BaseMapperPlus<PtRoomType, PtRoomTypeVo> {
+
+}

+ 3 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtRoomService.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.basics.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.dromara.backstage.basics.domain.PtRoom;
 import org.dromara.backstage.basics.domain.bo.PtRoomBatchSetBo;
 import org.dromara.backstage.basics.domain.vo.PtAreaVo;
@@ -82,4 +83,6 @@ public interface IPtRoomService {
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     List<PtRoomVo> queryByNameOrCode(Long areaId, String roomName, String roomCode);
+
+    Long count(Collection<Long> ids);
 }

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtRoomTypeService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.basics.service;
+
+import org.dromara.backstage.basics.domain.PtRoomType;
+import org.dromara.backstage.basics.domain.vo.PtRoomTypeVo;
+import org.dromara.backstage.basics.domain.bo.PtRoomTypeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 房型管理Service接口
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+public interface IPtRoomTypeService {
+
+    /**
+     * 查询房型管理
+     *
+     * @param roomTypeId 主键
+     * @return 房型管理
+     */
+    PtRoomTypeVo queryById(Long roomTypeId);
+
+    /**
+     * 分页查询房型管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 房型管理分页列表
+     */
+    TableDataInfo<PtRoomTypeVo> queryPageList(PtRoomTypeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的房型管理列表
+     *
+     * @param bo 查询条件
+     * @return 房型管理列表
+     */
+    List<PtRoomTypeVo> queryList(PtRoomTypeBo bo);
+
+    /**
+     * 新增房型管理
+     *
+     * @param bo 房型管理
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(PtRoomTypeBo bo);
+
+    /**
+     * 修改房型管理
+     *
+     * @param bo 房型管理
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(PtRoomTypeBo bo);
+
+    /**
+     * 校验并批量删除房型管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 26 - 5
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtRoomServiceImpl.java

@@ -21,6 +21,7 @@ import org.dromara.backstage.basics.domain.vo.PtRoomVo;
 import org.dromara.backstage.basics.domain.PtRoom;
 import org.dromara.backstage.basics.mapper.PtRoomMapper;
 import org.dromara.backstage.basics.service.IPtRoomService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -39,6 +40,8 @@ public class PtRoomServiceImpl implements IPtRoomService {
 
     private final PtAreaServiceImpl areaService;
 
+    public static final String ROOM_KF = "10";
+
     /**
      * 查询房间定义
      *
@@ -177,10 +180,6 @@ public class PtRoomServiceImpl implements IPtRoomService {
         lqw.like(StringUtils.isNotBlank(bo.getRoomName()), PtRoom::getRoomName, bo.getRoomName());
         lqw.eq(StringUtils.isNotBlank(bo.getRoomType()), PtRoom::getRoomType, bo.getRoomType());
         lqw.eq(StringUtils.isNotBlank(bo.getCodeOne()), PtRoom::getCodeOne, bo.getCodeOne());
-        lqw.eq(StringUtils.isNotBlank(bo.getCodeTwo()), PtRoom::getCodeTwo, bo.getCodeTwo());
-        lqw.eq(StringUtils.isNotBlank(bo.getCodeThree()), PtRoom::getCodeThree, bo.getCodeThree());
-        lqw.eq(StringUtils.isNotBlank(bo.getCodeFour()), PtRoom::getCodeFour, bo.getCodeFour());
-        lqw.eq(StringUtils.isNotBlank(bo.getCodeFive()), PtRoom::getCodeFive, bo.getCodeFive());
         return lqw;
     }
 
@@ -192,6 +191,9 @@ public class PtRoomServiceImpl implements IPtRoomService {
      */
     @Override
     public Boolean insertByBo(PtRoomBo bo) {
+        if(!ROOM_KF.equals(bo.getRoomType())){
+            bo.setGuestRoomType(null);
+        }
         PtRoom add = MapstructUtils.convert(bo, PtRoom.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -206,6 +208,8 @@ public class PtRoomServiceImpl implements IPtRoomService {
         LambdaUpdateWrapper<PtRoom> lambdaUpdate = Wrappers.lambdaUpdate();
         lambdaUpdate.set(StringUtils.isNotBlank(bo.getRoomType()),PtRoom::getRoomType, bo.getRoomType())
             .set(StringUtils.isBlank(bo.getRoomType()),PtRoom::getRoomType, null)
+            .set(ROOM_KF.equals(bo.getRoomType()),PtRoom::getGuestRoomType, bo.getGuestRoomType())
+            .set(!ROOM_KF.equals(bo.getRoomType()),PtRoom::getGuestRoomType, null)
             .in(PtRoom::getRoomId, bo.getRoomIds());
         int update = baseMapper.update(lambdaUpdate);
         return update>0;
@@ -219,10 +223,19 @@ public class PtRoomServiceImpl implements IPtRoomService {
      * @return 是否修改成功
      */
     @Override
+    @Transactional
     public Boolean updateByBo(PtRoomBo bo) {
+        if(!ROOM_KF.equals(bo.getRoomType())){
+            bo.setGuestRoomType(null);
+        }
         PtRoom update = MapstructUtils.convert(bo, PtRoom.class);
         validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
+        int rs = baseMapper.updateById(update);
+        if(bo.getGuestRoomType() == null){
+            baseMapper.update(null, Wrappers.lambdaUpdate(PtRoom.class).set(PtRoom::getGuestRoomType, null)
+                .eq(PtRoom::getRoomId, bo.getRoomId()));
+        }
+        return rs > 0;
     }
 
     /**
@@ -240,6 +253,14 @@ public class PtRoomServiceImpl implements IPtRoomService {
             ));
     }
 
+    @Override
+    public Long count(Collection<Long> ids) {
+        if(CollectionUtil.isNotEmpty(ids)){
+            return baseMapper.selectCount(Wrappers.<PtRoom>lambdaQuery().in(PtRoom::getRoomId, ids));
+        }
+        return 0L;
+    }
+
     /**
      * 保存前的数据校验
      */

+ 153 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtRoomTypeServiceImpl.java

@@ -0,0 +1,153 @@
+package org.dromara.backstage.basics.service.impl;
+
+import org.dromara.backstage.basics.domain.PtRoom;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.basics.domain.bo.PtRoomTypeBo;
+import org.dromara.backstage.basics.domain.vo.PtRoomTypeVo;
+import org.dromara.backstage.basics.domain.PtRoomType;
+import org.dromara.backstage.basics.mapper.PtRoomTypeMapper;
+import org.dromara.backstage.basics.service.IPtRoomTypeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 房型管理Service业务层处理
+ *
+ * @author bing
+ * @date 2024-11-14
+ */
+@RequiredArgsConstructor
+@Service
+public class PtRoomTypeServiceImpl implements IPtRoomTypeService {
+
+    private final PtRoomTypeMapper baseMapper;
+
+    private final PtRoomServiceImpl roomService;
+
+    /**
+     * 查询房型管理
+     *
+     * @param roomTypeId 主键
+     * @return 房型管理
+     */
+    @Override
+    public PtRoomTypeVo queryById(Long roomTypeId){
+        return baseMapper.selectVoById(roomTypeId);
+    }
+
+    /**
+     * 分页查询房型管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 房型管理分页列表
+     */
+    @Override
+    public TableDataInfo<PtRoomTypeVo> queryPageList(PtRoomTypeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<PtRoomType> lqw = buildQueryWrapper(bo);
+        Page<PtRoomTypeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的房型管理列表
+     *
+     * @param bo 查询条件
+     * @return 房型管理列表
+     */
+    @Override
+    public List<PtRoomTypeVo> queryList(PtRoomTypeBo bo) {
+        LambdaQueryWrapper<PtRoomType> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<PtRoomType> buildQueryWrapper(PtRoomTypeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<PtRoomType> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getRoomTypeName()), PtRoomType::getRoomTypeName, bo.getRoomTypeName());
+        return lqw;
+    }
+
+    private QueryWrapper<PtRoomType> buildQueryWrapper(PtRoomTypeBo bo,String tableAlias) {
+        QueryWrapper<PtRoomType> lqw = new QueryWrapper<>();
+        String columnPrefix = "";
+        if(StringUtils.isNotBlank(tableAlias)){
+            columnPrefix = tableAlias + ".";
+        }
+        lqw.like(StringUtils.isNotBlank(bo.getRoomTypeName()), columnPrefix+"room_type_name", bo.getRoomTypeName());
+        return lqw;
+    }
+
+    /**
+     * 新增房型管理
+     *
+     * @param bo 房型管理
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(PtRoomTypeBo bo) {
+        PtRoomType add = MapstructUtils.convert(bo, PtRoomType.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setRoomTypeId(add.getRoomTypeId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改房型管理
+     *
+     * @param bo 房型管理
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(PtRoomTypeBo bo) {
+        PtRoomType update = MapstructUtils.convert(bo, PtRoomType.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(PtRoomType entity){
+        //做一些数据校验,如唯一约束  房间类型不能重复
+        LambdaQueryWrapper<PtRoomType> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PtRoomType::getRoomTypeName, entity.getRoomTypeName());
+        wrapper.ne(entity.getRoomTypeId()!=null,PtRoomType::getRoomTypeId, entity.getRoomTypeId());
+        if (baseMapper.selectCount(wrapper) > 0) {
+            throw new ServiceException("房间类型已经存在");
+        }
+    }
+
+    /**
+     * 校验并批量删除房型管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //做一些业务上的校验,判断是否需要校验
+            if(roomService.count(ids) > 0){
+                throw new ServiceException("该房型下有房间,不能删除");
+            }
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 21 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/basics/roomType/PtRoomTypeMapper.xml

@@ -0,0 +1,21 @@
+<?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.backstage.basics.mapper.PtRoomTypeMapper">
+
+    <resultMap type="org.dromara.backstage.basics.domain.PtRoomType" id="PtRoomTypeResult">
+            <result property="roomTypeId"    column="room_type_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="roomTypeName"    column="room_type_name"    />
+            <result property="price"    column="price"    />
+            <result property="bedNumber"    column="bed_number"    />
+            <result property="capacityNumber"    column="capacity_number"    />
+            <result property="delFlag"    column="del_flag"    />
+            <result property="createDept"    column="create_dept"    />
+            <result property="createBy"    column="create_by"    />
+            <result property="createTime"    column="create_time"    />
+            <result property="updateBy"    column="update_by"    />
+            <result property="updateTime"    column="update_time"    />
+    </resultMap>
+</mapper>