Browse Source

Merge remote-tracking branch 'origin/master'

huzhe 2 years ago
parent
commit
dc9ca4691e
98 changed files with 8039 additions and 15 deletions
  1. 3 2
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/MealTypeNameTranslationImpl.java
  2. 21 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemoteMealTypeServiceImpl.java
  3. 2 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtMealtypeService.java
  4. 17 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtMealtypeServiceImpl.java
  5. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumedetailController.java
  6. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumedetailoriginalController.java
  7. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfCreditaccountController.java
  8. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfCreditaccountbackController.java
  9. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedController.java
  10. 117 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedtermController.java
  11. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotaController.java
  12. 117 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotatermController.java
  13. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfTermtotalController.java
  14. 106 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfUsertotalController.java
  15. 199 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfConsumedetail.java
  16. 169 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfConsumedetailoriginal.java
  17. 199 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfCreditaccount.java
  18. 159 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfCreditaccountback.java
  19. 77 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfLimited.java
  20. 42 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfLimitedterm.java
  21. 77 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfQuota.java
  22. 42 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfQuotaterm.java
  23. 102 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfTermtotal.java
  24. 82 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfUsertotal.java
  25. 206 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfConsumedetailBo.java
  26. 170 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfConsumedetailoriginalBo.java
  27. 203 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfCreditaccountBo.java
  28. 159 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfCreditaccountbackBo.java
  29. 71 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfLimitedBo.java
  30. 36 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfLimitedtermBo.java
  31. 78 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfQuotaBo.java
  32. 36 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfQuotatermBo.java
  33. 101 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfTermtotalBo.java
  34. 79 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfUsertotalBo.java
  35. 233 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfConsumedetailVo.java
  36. 198 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfConsumedetailoriginalVo.java
  37. 232 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfCreditaccountVo.java
  38. 184 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfCreditaccountbackVo.java
  39. 92 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfLimitedVo.java
  40. 56 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfLimitedtermVo.java
  41. 92 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfQuotaVo.java
  42. 62 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfQuotatermVo.java
  43. 116 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfTermtotalVo.java
  44. 92 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfUsertotalVo.java
  45. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfConsumedetailMapper.java
  46. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfConsumedetailoriginalMapper.java
  47. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfCreditaccountMapper.java
  48. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfCreditaccountbackMapper.java
  49. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfLimitedMapper.java
  50. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfLimitedtermMapper.java
  51. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfQuotaMapper.java
  52. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfQuotatermMapper.java
  53. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfTermtotalMapper.java
  54. 15 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfUsertotalMapper.java
  55. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfConsumedetailService.java
  56. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfConsumedetailoriginalService.java
  57. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfCreditaccountService.java
  58. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfCreditaccountbackService.java
  59. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfLimitedService.java
  60. 76 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfLimitedtermService.java
  61. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfQuotaService.java
  62. 76 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfQuotatermService.java
  63. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfTermtotalService.java
  64. 69 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfUsertotalService.java
  65. 159 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfConsumedetailServiceImpl.java
  66. 154 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfConsumedetailoriginalServiceImpl.java
  67. 158 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfCreditaccountServiceImpl.java
  68. 151 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfCreditaccountbackServiceImpl.java
  69. 1 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfDiscounttermServiceImpl.java
  70. 135 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfLimitedServiceImpl.java
  71. 163 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfLimitedtermServiceImpl.java
  72. 135 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfQuotaServiceImpl.java
  73. 162 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfQuotatermServiceImpl.java
  74. 141 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfTermtotalServiceImpl.java
  75. 137 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfUsertotalServiceImpl.java
  76. 1 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/PtBag.java
  77. 1 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java
  78. 1 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PtBagVo.java
  79. 2 2
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtBagService.java
  80. 23 8
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java
  81. 49 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfConsumedetailMapper.xml
  82. 43 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfConsumedetailoriginalMapper.xml
  83. 49 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfCreditaccountMapper.xml
  84. 41 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfCreditaccountbackMapper.xml
  85. 25 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfLimitedMapper.xml
  86. 18 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfLimitedtermMapper.xml
  87. 25 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfQuotaMapper.xml
  88. 18 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfQuotatermMapper.xml
  89. 30 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfTermtotalMapper.xml
  90. 26 0
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfUsertotalMapper.xml
  91. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRegisterinfoController.java
  92. 66 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRegisterinfo.java
  93. 72 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRegisterinfoBo.java
  94. 82 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRegisterinfoVo.java
  95. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRegisterinfoMapper.java
  96. 69 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRegisterinfoService.java
  97. 135 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRegisterinfoServiceImpl.java
  98. 23 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRegisterinfoMapper.xml

+ 3 - 2
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/MealTypeNameTranslationImpl.java

@@ -3,6 +3,7 @@ package org.dromara.common.translation.core.impl;
 import lombok.AllArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.api.RemoteCardTypeService;
+import org.dromara.backstage.api.RemoteMealTypeService;
 import org.dromara.common.translation.annotation.TranslationType;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.common.translation.core.TranslationInterface;
@@ -17,10 +18,10 @@ import org.dromara.common.translation.core.TranslationInterface;
 public class MealTypeNameTranslationImpl implements TranslationInterface<String> {
 
     @DubboReference
-    private RemoteCardTypeService remoteCardTypeService;
+    private RemoteMealTypeService mealTypeService;
 
     @Override
     public String translation(Object key, String other) {
-        return remoteCardTypeService.selectCardTypeNameByIds(key.toString());
+        return mealTypeService.selectMealTypeNameByIds(key.toString());
     }
 }

+ 21 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/dubbo/RemoteMealTypeServiceImpl.java

@@ -0,0 +1,21 @@
+package org.dromara.backstage.basics.dubbo;
+
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.backstage.api.RemoteMealTypeService;
+import org.dromara.backstage.basics.service.IPtCardtypeService;
+import org.dromara.backstage.basics.service.IPtMealtypeService;
+import org.springframework.stereotype.Service;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteMealTypeServiceImpl implements RemoteMealTypeService {
+
+    private final IPtMealtypeService mealtypeService;
+    @Override
+    public String selectMealTypeNameByIds(String ids) {
+        return mealtypeService.selectMealTypeNameByIds(ids);
+    }
+}

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtMealtypeService.java

@@ -66,4 +66,6 @@ public interface IPtMealtypeService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    String selectMealTypeNameByIds(String ids);
 }

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

@@ -1,6 +1,9 @@
 package org.dromara.backstage.basics.service.impl;
 
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
 import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -15,6 +18,7 @@ import org.dromara.backstage.basics.domain.PtMealtype;
 import org.dromara.backstage.basics.mapper.PtMealtypeMapper;
 import org.dromara.backstage.basics.service.IPtMealtypeService;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -128,4 +132,17 @@ public class PtMealtypeServiceImpl implements IPtMealtypeService {
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Override
+    public String selectMealTypeNameByIds(String ids) {
+        List<String> list = new ArrayList<>();
+        for (Long id : StringUtils.splitTo(ids, Convert::toLong)) {
+//            PtMealtypeVo vo = SpringUtils.getAopProxy(this).queryById(id);
+            PtMealtypeVo vo = baseMapper.selectVoById(id);
+            if (ObjectUtil.isNotNull(vo)) {
+                list.add(vo.getMealName());
+            }
+        }
+        return String.join(StringUtils.SEPARATOR, list);
+    }
 }

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumedetailController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfConsumedetailVo;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailBo;
+import org.dromara.backstage.consumption.service.IXfConsumedetailService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 消费明细
+ * 前端访问路由地址为:/consumption/xfConsumedetail
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfConsumedetail")
+public class XfConsumedetailController extends BaseController {
+
+    private final IXfConsumedetailService xfConsumedetailService;
+
+    /**
+     * 查询消费明细列表
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfConsumedetailVo> list(XfConsumedetailBo bo, PageQuery pageQuery) {
+        return xfConsumedetailService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出消费明细列表
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:export")
+    @Log(title = "消费明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfConsumedetailBo bo, HttpServletResponse response) {
+        List<XfConsumedetailVo> list = xfConsumedetailService.queryList(bo);
+        ExcelUtil.exportExcel(list, "消费明细", XfConsumedetailVo.class, response);
+    }
+
+    /**
+     * 获取消费明细详细信息
+     *
+     * @param consumeId 主键
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:query")
+    @GetMapping("/{consumeId}")
+    public R<XfConsumedetailVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String consumeId) {
+        return R.ok(xfConsumedetailService.queryById(consumeId));
+    }
+
+    /**
+     * 新增消费明细
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:add")
+    @Log(title = "消费明细", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfConsumedetailBo bo) {
+        return toAjax(xfConsumedetailService.insertByBo(bo));
+    }
+
+    /**
+     * 修改消费明细
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:edit")
+    @Log(title = "消费明细", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfConsumedetailBo bo) {
+        return toAjax(xfConsumedetailService.updateByBo(bo));
+    }
+
+    /**
+     * 删除消费明细
+     *
+     * @param consumeIds 主键串
+     */
+    @SaCheckPermission("consumption:xfConsumedetail:remove")
+    @Log(title = "消费明细", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{consumeIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] consumeIds) {
+        return toAjax(xfConsumedetailService.deleteWithValidByIds(List.of(consumeIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumedetailoriginalController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfConsumedetailoriginalVo;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailoriginalBo;
+import org.dromara.backstage.consumption.service.IXfConsumedetailoriginalService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 原始消费记录
+ * 前端访问路由地址为:/consumption/xfConsumedetailoriginal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfConsumedetailoriginal")
+public class XfConsumedetailoriginalController extends BaseController {
+
+    private final IXfConsumedetailoriginalService xfConsumedetailoriginalService;
+
+    /**
+     * 查询原始消费记录列表
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfConsumedetailoriginalVo> list(XfConsumedetailoriginalBo bo, PageQuery pageQuery) {
+        return xfConsumedetailoriginalService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出原始消费记录列表
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:export")
+    @Log(title = "原始消费记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfConsumedetailoriginalBo bo, HttpServletResponse response) {
+        List<XfConsumedetailoriginalVo> list = xfConsumedetailoriginalService.queryList(bo);
+        ExcelUtil.exportExcel(list, "原始消费记录", XfConsumedetailoriginalVo.class, response);
+    }
+
+    /**
+     * 获取原始消费记录详细信息
+     *
+     * @param originalId 主键
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:query")
+    @GetMapping("/{originalId}")
+    public R<XfConsumedetailoriginalVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String originalId) {
+        return R.ok(xfConsumedetailoriginalService.queryById(originalId));
+    }
+
+    /**
+     * 新增原始消费记录
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:add")
+    @Log(title = "原始消费记录", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfConsumedetailoriginalBo bo) {
+        return toAjax(xfConsumedetailoriginalService.insertByBo(bo));
+    }
+
+    /**
+     * 修改原始消费记录
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:edit")
+    @Log(title = "原始消费记录", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfConsumedetailoriginalBo bo) {
+        return toAjax(xfConsumedetailoriginalService.updateByBo(bo));
+    }
+
+    /**
+     * 删除原始消费记录
+     *
+     * @param originalIds 主键串
+     */
+    @SaCheckPermission("consumption:xfConsumedetailoriginal:remove")
+    @Log(title = "原始消费记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{originalIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] originalIds) {
+        return toAjax(xfConsumedetailoriginalService.deleteWithValidByIds(List.of(originalIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfCreditaccountController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfCreditaccountVo;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountBo;
+import org.dromara.backstage.consumption.service.IXfCreditaccountService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 资金收支明细
+ * 前端访问路由地址为:/consumption/xfCreditaccount
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfCreditaccount")
+public class XfCreditaccountController extends BaseController {
+
+    private final IXfCreditaccountService xfCreditaccountService;
+
+    /**
+     * 查询资金收支明细列表
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfCreditaccountVo> list(XfCreditaccountBo bo, PageQuery pageQuery) {
+        return xfCreditaccountService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出资金收支明细列表
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:export")
+    @Log(title = "资金收支明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfCreditaccountBo bo, HttpServletResponse response) {
+        List<XfCreditaccountVo> list = xfCreditaccountService.queryList(bo);
+        ExcelUtil.exportExcel(list, "资金收支明细", XfCreditaccountVo.class, response);
+    }
+
+    /**
+     * 获取资金收支明细详细信息
+     *
+     * @param creditId 主键
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:query")
+    @GetMapping("/{creditId}")
+    public R<XfCreditaccountVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String creditId) {
+        return R.ok(xfCreditaccountService.queryById(creditId));
+    }
+
+    /**
+     * 新增资金收支明细
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:add")
+    @Log(title = "资金收支明细", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfCreditaccountBo bo) {
+        return toAjax(xfCreditaccountService.insertByBo(bo));
+    }
+
+    /**
+     * 修改资金收支明细
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:edit")
+    @Log(title = "资金收支明细", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfCreditaccountBo bo) {
+        return toAjax(xfCreditaccountService.updateByBo(bo));
+    }
+
+    /**
+     * 删除资金收支明细
+     *
+     * @param creditIds 主键串
+     */
+    @SaCheckPermission("consumption:xfCreditaccount:remove")
+    @Log(title = "资金收支明细", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{creditIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] creditIds) {
+        return toAjax(xfCreditaccountService.deleteWithValidByIds(List.of(creditIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfCreditaccountbackController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfCreditaccountbackVo;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountbackBo;
+import org.dromara.backstage.consumption.service.IXfCreditaccountbackService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 资金收支备份
+ * 前端访问路由地址为:/consumption/xfCreditaccountback
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfCreditaccountback")
+public class XfCreditaccountbackController extends BaseController {
+
+    private final IXfCreditaccountbackService xfCreditaccountbackService;
+
+    /**
+     * 查询资金收支备份列表
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfCreditaccountbackVo> list(XfCreditaccountbackBo bo, PageQuery pageQuery) {
+        return xfCreditaccountbackService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出资金收支备份列表
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:export")
+    @Log(title = "资金收支备份", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfCreditaccountbackBo bo, HttpServletResponse response) {
+        List<XfCreditaccountbackVo> list = xfCreditaccountbackService.queryList(bo);
+        ExcelUtil.exportExcel(list, "资金收支备份", XfCreditaccountbackVo.class, response);
+    }
+
+    /**
+     * 获取资金收支备份详细信息
+     *
+     * @param backId 主键
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:query")
+    @GetMapping("/{backId}")
+    public R<XfCreditaccountbackVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String backId) {
+        return R.ok(xfCreditaccountbackService.queryById(backId));
+    }
+
+    /**
+     * 新增资金收支备份
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:add")
+    @Log(title = "资金收支备份", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfCreditaccountbackBo bo) {
+        return toAjax(xfCreditaccountbackService.insertByBo(bo));
+    }
+
+    /**
+     * 修改资金收支备份
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:edit")
+    @Log(title = "资金收支备份", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfCreditaccountbackBo bo) {
+        return toAjax(xfCreditaccountbackService.updateByBo(bo));
+    }
+
+    /**
+     * 删除资金收支备份
+     *
+     * @param backIds 主键串
+     */
+    @SaCheckPermission("consumption:xfCreditaccountback:remove")
+    @Log(title = "资金收支备份", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{backIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] backIds) {
+        return toAjax(xfCreditaccountbackService.deleteWithValidByIds(List.of(backIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfLimitedVo;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedBo;
+import org.dromara.backstage.consumption.service.IXfLimitedService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 限次管理
+ * 前端访问路由地址为:/consumption/xfLimited
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfLimited")
+public class XfLimitedController extends BaseController {
+
+    private final IXfLimitedService xfLimitedService;
+
+    /**
+     * 查询限次管理列表
+     */
+    @SaCheckPermission("consumption:xfLimited:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfLimitedVo> list(XfLimitedBo bo, PageQuery pageQuery) {
+        return xfLimitedService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出限次管理列表
+     */
+    @SaCheckPermission("consumption:xfLimited:export")
+    @Log(title = "限次管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfLimitedBo bo, HttpServletResponse response) {
+        List<XfLimitedVo> list = xfLimitedService.queryList(bo);
+        ExcelUtil.exportExcel(list, "限次管理", XfLimitedVo.class, response);
+    }
+
+    /**
+     * 获取限次管理详细信息
+     *
+     * @param limitedId 主键
+     */
+    @SaCheckPermission("consumption:xfLimited:query")
+    @GetMapping("/{limitedId}")
+    public R<XfLimitedVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long limitedId) {
+        return R.ok(xfLimitedService.queryById(limitedId));
+    }
+
+    /**
+     * 新增限次管理
+     */
+    @SaCheckPermission("consumption:xfLimited:add")
+    @Log(title = "限次管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfLimitedBo bo) {
+        return toAjax(xfLimitedService.insertByBo(bo));
+    }
+
+    /**
+     * 修改限次管理
+     */
+    @SaCheckPermission("consumption:xfLimited:edit")
+    @Log(title = "限次管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfLimitedBo bo) {
+        return toAjax(xfLimitedService.updateByBo(bo));
+    }
+
+    /**
+     * 删除限次管理
+     *
+     * @param limitedIds 主键串
+     */
+    @SaCheckPermission("consumption:xfLimited:remove")
+    @Log(title = "限次管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{limitedIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] limitedIds) {
+        return toAjax(xfLimitedService.deleteWithValidByIds(List.of(limitedIds), true));
+    }
+}

+ 117 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfLimitedtermController.java

@@ -0,0 +1,117 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfLimitedtermVo;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedtermBo;
+import org.dromara.backstage.consumption.service.IXfLimitedtermService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 限次设备绑定
+ * 前端访问路由地址为:/consumption/xfLimitedterm
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfLimitedterm")
+public class XfLimitedtermController extends BaseController {
+
+    private final IXfLimitedtermService xfLimitedtermService;
+
+    /**
+     * 查询限次设备绑定列表
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfLimitedtermVo> list(XfLimitedtermBo bo, PageQuery pageQuery) {
+        return xfLimitedtermService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出限次设备绑定列表
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:export")
+    @Log(title = "限次设备绑定", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfLimitedtermBo bo, HttpServletResponse response) {
+        List<XfLimitedtermVo> list = xfLimitedtermService.queryList(bo);
+        ExcelUtil.exportExcel(list, "限次设备绑定", XfLimitedtermVo.class, response);
+    }
+
+    /**
+     * 获取限次设备绑定详细信息
+     *
+     * @param limitedTermId 主键
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:query")
+    @GetMapping("/{limitedTermId}")
+    public R<XfLimitedtermVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long limitedTermId) {
+        return R.ok(xfLimitedtermService.queryById(limitedTermId));
+    }
+
+    /**
+     * 新增限次设备绑定
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:add")
+    @Log(title = "限次设备绑定", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfLimitedtermBo bo) {
+        return toAjax(xfLimitedtermService.insertByBo(bo));
+    }
+
+    /**
+     * 新增限次设备绑定
+     */
+    @SaCheckPermission("consumption:xfDiscountterm:add")
+    @Log(title = "批量添加限次设备", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/batchAdd")
+    public R<Void> batchAdd(@RequestBody List<Long> ids) {
+        return toAjax(xfLimitedtermService.insertByTermIds(ids));
+    }
+
+    /**
+     * 修改限次设备绑定
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:edit")
+    @Log(title = "限次设备绑定", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfLimitedtermBo bo) {
+        return toAjax(xfLimitedtermService.updateByBo(bo));
+    }
+
+    /**
+     * 删除限次设备绑定
+     *
+     * @param limitedTermIds 主键串
+     */
+    @SaCheckPermission("consumption:xfLimitedterm:remove")
+    @Log(title = "限次设备绑定", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{limitedTermIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] limitedTermIds) {
+        return toAjax(xfLimitedtermService.deleteWithValidByIds(List.of(limitedTermIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotaController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfQuotaVo;
+import org.dromara.backstage.consumption.domain.bo.XfQuotaBo;
+import org.dromara.backstage.consumption.service.IXfQuotaService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 限额管理
+ * 前端访问路由地址为:/consumption/xfQuota
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfQuota")
+public class XfQuotaController extends BaseController {
+
+    private final IXfQuotaService xfQuotaService;
+
+    /**
+     * 查询限额管理列表
+     */
+    @SaCheckPermission("consumption:xfQuota:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfQuotaVo> list(XfQuotaBo bo, PageQuery pageQuery) {
+        return xfQuotaService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出限额管理列表
+     */
+    @SaCheckPermission("consumption:xfQuota:export")
+    @Log(title = "限额管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfQuotaBo bo, HttpServletResponse response) {
+        List<XfQuotaVo> list = xfQuotaService.queryList(bo);
+        ExcelUtil.exportExcel(list, "限额管理", XfQuotaVo.class, response);
+    }
+
+    /**
+     * 获取限额管理详细信息
+     *
+     * @param quotaId 主键
+     */
+    @SaCheckPermission("consumption:xfQuota:query")
+    @GetMapping("/{quotaId}")
+    public R<XfQuotaVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long quotaId) {
+        return R.ok(xfQuotaService.queryById(quotaId));
+    }
+
+    /**
+     * 新增限额管理
+     */
+    @SaCheckPermission("consumption:xfQuota:add")
+    @Log(title = "限额管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfQuotaBo bo) {
+        return toAjax(xfQuotaService.insertByBo(bo));
+    }
+
+    /**
+     * 修改限额管理
+     */
+    @SaCheckPermission("consumption:xfQuota:edit")
+    @Log(title = "限额管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfQuotaBo bo) {
+        return toAjax(xfQuotaService.updateByBo(bo));
+    }
+
+    /**
+     * 删除限额管理
+     *
+     * @param quotaIds 主键串
+     */
+    @SaCheckPermission("consumption:xfQuota:remove")
+    @Log(title = "限额管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{quotaIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] quotaIds) {
+        return toAjax(xfQuotaService.deleteWithValidByIds(List.of(quotaIds), true));
+    }
+}

+ 117 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfQuotatermController.java

@@ -0,0 +1,117 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfQuotatermVo;
+import org.dromara.backstage.consumption.domain.bo.XfQuotatermBo;
+import org.dromara.backstage.consumption.service.IXfQuotatermService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 限额设备绑定
+ * 前端访问路由地址为:/consumption/xfQuotaterm
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfQuotaterm")
+public class XfQuotatermController extends BaseController {
+
+    private final IXfQuotatermService xfQuotatermService;
+
+    /**
+     * 查询限额设备绑定列表
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfQuotatermVo> list(XfQuotatermBo bo, PageQuery pageQuery) {
+        return xfQuotatermService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出限额设备绑定列表
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:export")
+    @Log(title = "限额设备绑定", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfQuotatermBo bo, HttpServletResponse response) {
+        List<XfQuotatermVo> list = xfQuotatermService.queryList(bo);
+        ExcelUtil.exportExcel(list, "限额设备绑定", XfQuotatermVo.class, response);
+    }
+
+    /**
+     * 获取限额设备绑定详细信息
+     *
+     * @param quotaTermId 主键
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:query")
+    @GetMapping("/{quotaTermId}")
+    public R<XfQuotatermVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long quotaTermId) {
+        return R.ok(xfQuotatermService.queryById(quotaTermId));
+    }
+
+    /**
+     * 新增限额设备绑定
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:add")
+    @Log(title = "限额设备绑定", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfQuotatermBo bo) {
+        return toAjax(xfQuotatermService.insertByBo(bo));
+    }
+
+    /**
+     * 新增限额设备绑定
+     */
+    @SaCheckPermission("consumption:xfDiscountterm:add")
+    @Log(title = "批量添加限额设备", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/batchAdd")
+    public R<Void> batchAdd(@RequestBody List<Long> ids) {
+        return toAjax(xfQuotatermService.insertByTermIds(ids));
+    }
+
+    /**
+     * 修改限额设备绑定
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:edit")
+    @Log(title = "限额设备绑定", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfQuotatermBo bo) {
+        return toAjax(xfQuotatermService.updateByBo(bo));
+    }
+
+    /**
+     * 删除限额设备绑定
+     *
+     * @param quotaTermIds 主键串
+     */
+    @SaCheckPermission("consumption:xfQuotaterm:remove")
+    @Log(title = "限额设备绑定", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{quotaTermIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] quotaTermIds) {
+        return toAjax(xfQuotatermService.deleteWithValidByIds(List.of(quotaTermIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfTermtotalController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfTermtotalVo;
+import org.dromara.backstage.consumption.domain.bo.XfTermtotalBo;
+import org.dromara.backstage.consumption.service.IXfTermtotalService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 消费机消费记录
+ * 前端访问路由地址为:/consumption/xfTermtotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfTermtotal")
+public class XfTermtotalController extends BaseController {
+
+    private final IXfTermtotalService xfTermtotalService;
+
+    /**
+     * 查询消费机消费记录列表
+     */
+    @SaCheckPermission("consumption:xfTermtotal:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfTermtotalVo> list(XfTermtotalBo bo, PageQuery pageQuery) {
+        return xfTermtotalService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出消费机消费记录列表
+     */
+    @SaCheckPermission("consumption:xfTermtotal:export")
+    @Log(title = "消费机消费记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfTermtotalBo bo, HttpServletResponse response) {
+        List<XfTermtotalVo> list = xfTermtotalService.queryList(bo);
+        ExcelUtil.exportExcel(list, "消费机消费记录", XfTermtotalVo.class, response);
+    }
+
+    /**
+     * 获取消费机消费记录详细信息
+     *
+     * @param totalId 主键
+     */
+    @SaCheckPermission("consumption:xfTermtotal:query")
+    @GetMapping("/{totalId}")
+    public R<XfTermtotalVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String totalId) {
+        return R.ok(xfTermtotalService.queryById(totalId));
+    }
+
+    /**
+     * 新增消费机消费记录
+     */
+    @SaCheckPermission("consumption:xfTermtotal:add")
+    @Log(title = "消费机消费记录", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfTermtotalBo bo) {
+        return toAjax(xfTermtotalService.insertByBo(bo));
+    }
+
+    /**
+     * 修改消费机消费记录
+     */
+    @SaCheckPermission("consumption:xfTermtotal:edit")
+    @Log(title = "消费机消费记录", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfTermtotalBo bo) {
+        return toAjax(xfTermtotalService.updateByBo(bo));
+    }
+
+    /**
+     * 删除消费机消费记录
+     *
+     * @param totalIds 主键串
+     */
+    @SaCheckPermission("consumption:xfTermtotal:remove")
+    @Log(title = "消费机消费记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{totalIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] totalIds) {
+        return toAjax(xfTermtotalService.deleteWithValidByIds(List.of(totalIds), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfUsertotalController.java

@@ -0,0 +1,106 @@
+package org.dromara.backstage.consumption.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.consumption.domain.vo.XfUsertotalVo;
+import org.dromara.backstage.consumption.domain.bo.XfUsertotalBo;
+import org.dromara.backstage.consumption.service.IXfUsertotalService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 个人与消费与充值统计
+ * 前端访问路由地址为:/consumption/xfUsertotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/consumption/xfUsertotal")
+public class XfUsertotalController extends BaseController {
+
+    private final IXfUsertotalService xfUsertotalService;
+
+    /**
+     * 查询个人与消费与充值统计列表
+     */
+    @SaCheckPermission("consumption:xfUsertotal:list")
+    @GetMapping("/list")
+    public TableDataInfo<XfUsertotalVo> list(XfUsertotalBo bo, PageQuery pageQuery) {
+        return xfUsertotalService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出个人与消费与充值统计列表
+     */
+    @SaCheckPermission("consumption:xfUsertotal:export")
+    @Log(title = "个人与消费与充值统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(XfUsertotalBo bo, HttpServletResponse response) {
+        List<XfUsertotalVo> list = xfUsertotalService.queryList(bo);
+        ExcelUtil.exportExcel(list, "个人与消费与充值统计", XfUsertotalVo.class, response);
+    }
+
+    /**
+     * 获取个人与消费与充值统计详细信息
+     *
+     * @param totalId 主键
+     */
+    @SaCheckPermission("consumption:xfUsertotal:query")
+    @GetMapping("/{totalId}")
+    public R<XfUsertotalVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String totalId) {
+        return R.ok(xfUsertotalService.queryById(totalId));
+    }
+
+    /**
+     * 新增个人与消费与充值统计
+     */
+    @SaCheckPermission("consumption:xfUsertotal:add")
+    @Log(title = "个人与消费与充值统计", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody XfUsertotalBo bo) {
+        return toAjax(xfUsertotalService.insertByBo(bo));
+    }
+
+    /**
+     * 修改个人与消费与充值统计
+     */
+    @SaCheckPermission("consumption:xfUsertotal:edit")
+    @Log(title = "个人与消费与充值统计", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody XfUsertotalBo bo) {
+        return toAjax(xfUsertotalService.updateByBo(bo));
+    }
+
+    /**
+     * 删除个人与消费与充值统计
+     *
+     * @param totalIds 主键串
+     */
+    @SaCheckPermission("consumption:xfUsertotal:remove")
+    @Log(title = "个人与消费与充值统计", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{totalIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] totalIds) {
+        return toAjax(xfUsertotalService.deleteWithValidByIds(List.of(totalIds), true));
+    }
+}

+ 199 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfConsumedetail.java

@@ -0,0 +1,199 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 消费明细对象 t_xf_consumeDetail
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_consumeDetail")
+public class XfConsumedetail extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 消费记录Id,主键
+     */
+    @TableId(value = "consume_id")
+    private String consumeId;
+
+    /**
+     * 原始记录Id,主键
+     */
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    private Long analysisFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    private Long statusFlag;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    private String operatorName;
+
+    /**
+     * 结算账户Id
+     */
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    private String accountName;
+
+    /**
+     * 房间Id
+     */
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    private String roomName;
+
+    /**
+     * 钱包类型
+     */
+    private String bagType;
+
+    /**
+     * 餐类Id
+     */
+    private Long mealType;
+
+    /**
+     * 餐类名称
+     */
+    private String mealName;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    private Long recordStatus;
+
+    /**
+     * 同步标志,0-未同步,1-已同步
+     */
+    private Long syncStatus;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 169 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfConsumedetailoriginal.java

@@ -0,0 +1,169 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 原始消费记录对象 t_xf_consumeDetailOriginal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_consumeDetailOriginal")
+public class XfConsumedetailoriginal extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 原始记录Id,主键
+     */
+    @TableId(value = "original_id")
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    private Long anlysFlag;
+
+    /**
+     * 消费记录标志
+     */
+    private Long dataFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    private Long statusFlag;
+
+    /**
+     * 防伪验证码(记录消费模式的中文信息)
+     */
+    private String digitalSign;
+
+    /**
+     * 水控金额
+     */
+    private Long waterValue;
+
+    /**
+     * 水控历史余额
+     */
+    private Long waterHistoryValue;
+
+    /**
+     * 水控当天总和
+     */
+    private Long waterDaySum;
+
+    /**
+     * 水控错误余额
+     */
+    private Long waterErrValue;
+
+    /**
+     * 水控错误消费金额
+     */
+    private Long waterErrMoney;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 199 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfCreditaccount.java

@@ -0,0 +1,199 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 资金收支明细对象 t_xf_creditAccount
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_creditAccount")
+public class XfCreditaccount extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 收支Id
+     */
+    @TableId(value = "credit_id")
+    private String creditId;
+
+    /**
+     * 记录Id
+     */
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 卡片类型
+     */
+    private Long cardType;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 卡片类型名称
+     */
+    private String cardTypeName;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    private Long useYpe;
+
+    /**
+     * 工作站编号
+     */
+    private Long stationNumb;
+
+    /**
+     * 工作站名称
+     */
+    private String stationName;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    private String operatorName;
+
+    /**
+     * 交易时间
+     */
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    private Long receiptMoney;
+
+    /**
+     * 核对状态,见sys_yes_no字典类型
+     */
+    private String auditStatus;
+
+    /**
+     * 核对时间
+     */
+    private Date auditDate;
+
+    /**
+     * 团充Id
+     */
+    private Long groupId;
+
+    /**
+     * 原始记录Id,对应收支备份表的主键字段
+     */
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    private Long recordStatus;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 159 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfCreditaccountback.java

@@ -0,0 +1,159 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 资金收支备份对象 t_xf_creditAccountBack
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_creditAccountBack")
+public class XfCreditaccountback extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 收支备份Id,主键
+     */
+    @TableId(value = "back_id")
+    private String backId;
+
+    /**
+     * 记录Id
+     */
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    private Long useYpe;
+
+    /**
+     * 工作站Id
+     */
+    private Long stationId;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 交易时间
+     */
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    private Long receiptMoney;
+
+    /**
+     * 交易状态
+     */
+    private Long creditStatus;
+
+    /**
+     * 团充Id
+     */
+    private Long groupId;
+
+    /**
+     * 收支记录Id,对应收支明细表的主键字段
+     */
+    private String creditId;
+
+    /**
+     * 原始记录Id?
+     */
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    private Long recordStatus;
+
+    /**
+     * 统计分析标识
+     */
+    private Long anlysFlag;
+
+    /**
+     * 数字签名
+     */
+    private String digitalSign;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfLimited.java

@@ -0,0 +1,77 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 限次管理对象 t_xf_limited
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_limited")
+public class XfLimited extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限次Id,主键
+     */
+    @TableId(value = "limited_id")
+    private Long limitedId;
+
+    /**
+     * 卡类Id
+     */
+    private Long cardType;
+
+    /**
+     * 每日次数
+     */
+    private Long dailyCount;
+
+    /**
+     * 早餐次数
+     */
+    private Long oneCount;
+
+    /**
+     * 午餐次数
+     */
+    private Long twoCount;
+
+    /**
+     * 晚餐次数
+     */
+    private Long threeCount;
+
+    /**
+     * 宵夜次数
+     */
+    private Long fourCount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    private String status;
+
+
+}

+ 42 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfLimitedterm.java

@@ -0,0 +1,42 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 限次设备绑定对象 t_xf_limitedTerm
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_limitedTerm")
+public class XfLimitedterm extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限次Id,主键
+     */
+    @TableId(value = "limited_term_id")
+    private Long limitedTermId;
+
+    /**
+     * 设备Id
+     */
+    private Long termId;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfQuota.java

@@ -0,0 +1,77 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 限额管理对象 t_xf_quota
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_quota")
+public class XfQuota extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限额Id,主键
+     */
+    @TableId(value = "quota_id")
+    private Long quotaId;
+
+    /**
+     * 卡类Id
+     */
+    private Long cardType;
+
+    /**
+     * 每日金额
+     */
+    private Long dailyMoney;
+
+    /**
+     * 早餐金额
+     */
+    private Long oneMoney;
+
+    /**
+     * 午餐金额
+     */
+    private Long twoMoney;
+
+    /**
+     * 晚餐金额
+     */
+    private Long threeMoney;
+
+    /**
+     * 宵夜金额
+     */
+    private Long fourMoney;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    private String status;
+
+
+}

+ 42 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfQuotaterm.java

@@ -0,0 +1,42 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 限额设备绑定对象 t_xf_quotaTerm
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_quotaTerm")
+public class XfQuotaterm extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限额Id,主键
+     */
+    @TableId(value = "quota_term_id")
+    private Long quotaTermId;
+
+    /**
+     * 设备Id
+     */
+    private Long termId;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 102 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfTermtotal.java

@@ -0,0 +1,102 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 消费机消费记录对象 t_xf_termTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_termTotal")
+public class XfTermtotal extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 汇总Id,主键
+     */
+    @TableId(value = "total_id")
+    private String totalId;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 房间Id
+     */
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    private String roomName;
+
+    /**
+     * 结算账户Id
+     */
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    private String accountName;
+
+    /**
+     * 消费日期
+     */
+    private String dateDay;
+
+    /**
+     * 营业时段
+     */
+    private Long mealType;
+
+    /**
+     * 消费总额(该机该天该餐消费总额)
+     */
+    private Long mealAmount;
+
+    /**
+     * 消费次数(该机该天该餐消费次数)
+     */
+    private Long mealCount;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    private Long useYpe;
+
+    /**
+     * 错扣补款次数(该机该天该餐错扣补款次数)
+     */
+    private Long errFillCount;
+
+    /**
+     * 错扣补款总额(该机该天该餐错扣补款总额)
+     */
+    private Long errFillMoney;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfUsertotal.java

@@ -0,0 +1,82 @@
+package org.dromara.backstage.consumption.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 个人与消费与充值统计对象 t_xf_userTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_xf_userTotal")
+public class XfUsertotal extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 汇总Id,主键
+     */
+    @TableId(value = "total_id")
+    private String totalId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 消费日期
+     */
+    private String dateDay;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    private Long useYpe;
+
+    /**
+     * 充值金额
+     */
+    private Long creditMoney;
+
+    /**
+     * 消费金额
+     */
+    private Long consumeMoney;
+
+    /**
+     * 删除标志(0-未删除 2-已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 206 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfConsumedetailBo.java

@@ -0,0 +1,206 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetail;
+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.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 消费明细业务对象 t_xf_consumeDetail
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfConsumedetail.class, reverseConvertGenerate = false)
+public class XfConsumedetailBo extends BaseEntity {
+
+    /**
+     * 消费记录Id,主键
+     */
+    @NotBlank(message = "消费记录Id,主键不能为空", groups = { EditGroup.class })
+    private String consumeId;
+
+    /**
+     * 原始记录Id,主键
+     */
+    @NotBlank(message = "原始记录Id,主键不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    @NotNull(message = "记录Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @NotNull(message = "人员Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    @NotNull(message = "消费日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    @NotNull(message = "消费金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    @NotNull(message = "卡流水号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    @NotNull(message = "物理卡号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    @NotNull(message = "卡上余额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    @NotNull(message = "设备机号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    private Long analysisFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    private Long statusFlag;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    private String operatorName;
+
+    /**
+     * 结算账户Id
+     */
+    @NotNull(message = "结算账户Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    private String accountName;
+
+    /**
+     * 房间Id
+     */
+    @NotNull(message = "房间Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    private String roomName;
+
+    /**
+     * 钱包类型
+     */
+    @NotBlank(message = "钱包类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagType;
+
+    /**
+     * 餐类Id
+     */
+    @NotNull(message = "餐类Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long mealType;
+
+    /**
+     * 餐类名称
+     */
+    private String mealName;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    private Long recordStatus;
+
+    /**
+     * 同步标志,0-未同步,1-已同步
+     */
+    private Long syncStatus;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 170 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfConsumedetailoriginalBo.java

@@ -0,0 +1,170 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetailoriginal;
+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.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 原始消费记录业务对象 t_xf_consumeDetailOriginal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfConsumedetailoriginal.class, reverseConvertGenerate = false)
+public class XfConsumedetailoriginalBo extends BaseEntity {
+
+    /**
+     * 原始记录Id,主键
+     */
+    @NotBlank(message = "原始记录Id,主键不能为空", groups = { EditGroup.class })
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    @NotNull(message = "记录Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @NotNull(message = "人员Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    @NotNull(message = "消费日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    @NotNull(message = "消费金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    @NotNull(message = "卡流水号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    @NotNull(message = "物理卡号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    @NotNull(message = "卡上余额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    @NotNull(message = "设备机号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    private Long anlysFlag;
+
+    /**
+     * 消费记录标志
+     */
+    private Long dataFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    private Long statusFlag;
+
+    /**
+     * 防伪验证码(记录消费模式的中文信息)
+     */
+    private String digitalSign;
+
+    /**
+     * 水控金额
+     */
+    private Long waterValue;
+
+    /**
+     * 水控历史余额
+     */
+    private Long waterHistoryValue;
+
+    /**
+     * 水控当天总和
+     */
+    private Long waterDaySum;
+
+    /**
+     * 水控错误余额
+     */
+    private Long waterErrValue;
+
+    /**
+     * 水控错误消费金额
+     */
+    private Long waterErrMoney;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+
+}

+ 203 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfCreditaccountBo.java

@@ -0,0 +1,203 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccount;
+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.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 资金收支明细业务对象 t_xf_creditAccount
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfCreditaccount.class, reverseConvertGenerate = false)
+public class XfCreditaccountBo extends BaseEntity {
+
+    /**
+     * 收支Id
+     */
+    @NotBlank(message = "收支Id不能为空", groups = { EditGroup.class })
+    private String creditId;
+
+    /**
+     * 记录Id
+     */
+    @NotNull(message = "记录Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @NotNull(message = "人员Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 卡片类型
+     */
+    private Long cardType;
+
+    /**
+     * 卡使用次数
+     */
+    private Long cardCount;
+
+    /**
+     * 卡片类型名称
+     */
+    private String cardTypeName;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    @NotBlank(message = "钱包类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @NotNull(message = "使用类型,100-消费系统不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long useYpe;
+
+    /**
+     * 工作站编号
+     */
+    private Long stationNumb;
+
+    /**
+     * 工作站名称
+     */
+    private String stationName;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    private String operatorName;
+
+    /**
+     * 交易时间
+     */
+    @NotNull(message = "交易时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    @NotBlank(message = "交易类型,见CREDITTYPE字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    @NotBlank(message = "资金来源,见PAYSTYLE字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    @NotNull(message = "交易金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long receiptMoney;
+
+    /**
+     * 核对状态,见sys_yes_no字典类型
+     */
+    private String auditStatus;
+
+    /**
+     * 核对时间
+     */
+    private Date auditDate;
+
+    /**
+     * 团充Id
+     */
+    private Long groupId;
+
+    /**
+     * 原始记录Id,对应收支备份表的主键字段
+     */
+    @NotBlank(message = "原始记录Id,对应收支备份表的主键字段不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    @NotBlank(message = "是否发送短信,见 sys_yes_no字典类别不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    @NotNull(message = "消费记录标志位?不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long recordStatus;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 159 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfCreditaccountbackBo.java

@@ -0,0 +1,159 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccountback;
+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.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 资金收支备份业务对象 t_xf_creditAccountBack
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfCreditaccountback.class, reverseConvertGenerate = false)
+public class XfCreditaccountbackBo extends BaseEntity {
+
+    /**
+     * 收支备份Id,主键
+     */
+    @NotBlank(message = "收支备份Id,主键不能为空", groups = { EditGroup.class })
+    private String backId;
+
+    /**
+     * 记录Id
+     */
+    @NotNull(message = "记录Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    private Long userId;
+
+    /**
+     * 设备机号
+     */
+    private Long termNo;
+
+    /**
+     * 机器流水号
+     */
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    private Long cardValue;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    @NotBlank(message = "钱包类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @NotNull(message = "使用类型,100-消费系统不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long useYpe;
+
+    /**
+     * 工作站Id
+     */
+    private Long stationId;
+
+    /**
+     * 营业员Id
+     */
+    private Long operatorId;
+
+    /**
+     * 交易时间
+     */
+    @NotNull(message = "交易时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    @NotBlank(message = "交易类型,见CREDITTYPE字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    @NotBlank(message = "资金来源,见PAYSTYLE字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    @NotNull(message = "交易金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long receiptMoney;
+
+    /**
+     * 交易状态
+     */
+    private Long creditStatus;
+
+    /**
+     * 团充Id
+     */
+    private Long groupId;
+
+    /**
+     * 收支记录Id,对应收支明细表的主键字段
+     */
+    private String creditId;
+
+    /**
+     * 原始记录Id?
+     */
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    private Long recordStatus;
+
+    /**
+     * 统计分析标识
+     */
+    private Long anlysFlag;
+
+    /**
+     * 数字签名
+     */
+    private String digitalSign;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 71 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfLimitedBo.java

@@ -0,0 +1,71 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfLimited;
+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.*;
+
+/**
+ * 限次管理业务对象 t_xf_limited
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfLimited.class, reverseConvertGenerate = false)
+public class XfLimitedBo extends BaseEntity {
+
+    /**
+     * 限次Id,主键
+     */
+    @NotNull(message = "限次Id,主键不能为空", groups = { EditGroup.class })
+    private Long limitedId;
+
+    /**
+     * 卡类Id
+     */
+    @NotNull(message = "卡类Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardType;
+
+    /**
+     * 每日次数
+     */
+    private Long dailyCount;
+
+    /**
+     * 早餐次数
+     */
+    private Long oneCount;
+
+    /**
+     * 午餐次数
+     */
+    private Long twoCount;
+
+    /**
+     * 晚餐次数
+     */
+    private Long threeCount;
+
+    /**
+     * 宵夜次数
+     */
+    private Long fourCount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    private String status;
+
+
+}

+ 36 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfLimitedtermBo.java

@@ -0,0 +1,36 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfLimitedterm;
+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.*;
+
+/**
+ * 限次设备绑定业务对象 t_xf_limitedTerm
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfLimitedterm.class, reverseConvertGenerate = false)
+public class XfLimitedtermBo extends BaseEntity {
+
+    /**
+     * 限次Id,主键
+     */
+    @NotNull(message = "限次Id,主键不能为空", groups = { EditGroup.class })
+    private Long limitedTermId;
+
+    /**
+     * 设备Id
+     */
+    @NotNull(message = "设备Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long termId;
+
+
+}

+ 78 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfQuotaBo.java

@@ -0,0 +1,78 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfQuota;
+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.*;
+
+/**
+ * 限额管理业务对象 t_xf_quota
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfQuota.class, reverseConvertGenerate = false)
+public class XfQuotaBo extends BaseEntity {
+
+    /**
+     * 限额Id,主键
+     */
+    @NotNull(message = "限额Id,主键不能为空", groups = { EditGroup.class })
+    private Long quotaId;
+
+    /**
+     * 卡类Id
+     */
+    @NotNull(message = "卡类Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardType;
+
+    /**
+     * 每日金额
+     */
+//    @NotNull(message = "每日金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long dailyMoney;
+
+    /**
+     * 早餐金额
+     */
+//    @NotNull(message = "早餐金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long oneMoney;
+
+    /**
+     * 午餐金额
+     */
+//    @NotNull(message = "午餐金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long twoMoney;
+
+    /**
+     * 晚餐金额
+     */
+//    @NotNull(message = "晚餐金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long threeMoney;
+
+    /**
+     * 宵夜金额
+     */
+//    @NotNull(message = "宵夜金额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long fourMoney;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    @NotBlank(message = "启用状态,0-未启用 1-启用不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+
+}

+ 36 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfQuotatermBo.java

@@ -0,0 +1,36 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfQuotaterm;
+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.*;
+
+/**
+ * 限额设备绑定业务对象 t_xf_quotaTerm
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfQuotaterm.class, reverseConvertGenerate = false)
+public class XfQuotatermBo extends BaseEntity {
+
+    /**
+     * 限额Id,主键
+     */
+    @NotNull(message = "限额Id,主键不能为空", groups = { EditGroup.class })
+    private Long quotaTermId;
+
+    /**
+     * 设备Id
+     */
+    @NotNull(message = "设备Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long termId;
+
+
+}

+ 101 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfTermtotalBo.java

@@ -0,0 +1,101 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfTermtotal;
+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.*;
+
+/**
+ * 消费机消费记录业务对象 t_xf_termTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfTermtotal.class, reverseConvertGenerate = false)
+public class XfTermtotalBo extends BaseEntity {
+
+    /**
+     * 汇总Id,主键
+     */
+    @NotBlank(message = "汇总Id,主键不能为空", groups = { EditGroup.class })
+    private String totalId;
+
+    /**
+     * 设备机号
+     */
+    @NotNull(message = "设备机号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    private String termName;
+
+    /**
+     * 房间Id
+     */
+    @NotNull(message = "房间Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    private String roomName;
+
+    /**
+     * 结算账户Id
+     */
+    @NotNull(message = "结算账户Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    private String accountName;
+
+    /**
+     * 消费日期
+     */
+    @NotBlank(message = "消费日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String dateDay;
+
+    /**
+     * 营业时段
+     */
+    @NotNull(message = "营业时段不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long mealType;
+
+    /**
+     * 消费总额(该机该天该餐消费总额)
+     */
+    private Long mealAmount;
+
+    /**
+     * 消费次数(该机该天该餐消费次数)
+     */
+    private Long mealCount;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @NotNull(message = "使用类型,100-消费系统不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long useYpe;
+
+    /**
+     * 错扣补款次数(该机该天该餐错扣补款次数)
+     */
+    private Long errFillCount;
+
+    /**
+     * 错扣补款总额(该机该天该餐错扣补款总额)
+     */
+    private Long errFillMoney;
+
+
+}

+ 79 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfUsertotalBo.java

@@ -0,0 +1,79 @@
+package org.dromara.backstage.consumption.domain.bo;
+
+import org.dromara.backstage.consumption.domain.XfUsertotal;
+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.*;
+
+/**
+ * 个人与消费与充值统计业务对象 t_xf_userTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = XfUsertotal.class, reverseConvertGenerate = false)
+public class XfUsertotalBo extends BaseEntity {
+
+    /**
+     * 汇总Id,主键
+     */
+    @NotBlank(message = "汇总Id,主键不能为空", groups = { EditGroup.class })
+    private String totalId;
+
+    /**
+     * 人员Id
+     */
+    @NotNull(message = "人员Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    private String realName;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 卡流水号
+     */
+    @NotNull(message = "卡流水号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cardNo;
+
+    /**
+     * 消费日期
+     */
+    @NotBlank(message = "消费日期不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String dateDay;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @NotNull(message = "使用类型,100-消费系统不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long useYpe;
+
+    /**
+     * 充值金额
+     */
+    private Long creditMoney;
+
+    /**
+     * 消费金额
+     */
+    private Long consumeMoney;
+
+
+}

+ 233 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfConsumedetailVo.java

@@ -0,0 +1,233 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.backstage.consumption.domain.XfConsumedetail;
+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_xf_consumeDetail
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfConsumedetail.class)
+public class XfConsumedetailVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 消费记录Id,主键
+     */
+    @ExcelProperty(value = "消费记录Id,主键")
+    private String consumeId;
+
+    /**
+     * 原始记录Id,主键
+     */
+    @ExcelProperty(value = "原始记录Id,主键")
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    @ExcelProperty(value = "记录Id")
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @ExcelProperty(value = "人员Id")
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    @ExcelProperty(value = "学/工号")
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    @ExcelProperty(value = "部门Id")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    @ExcelProperty(value = "消费日期")
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    @ExcelProperty(value = "消费金额")
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    @ExcelProperty(value = "卡流水号")
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    @ExcelProperty(value = "物理卡号")
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    @ExcelProperty(value = "卡上余额")
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    @ExcelProperty(value = "卡使用次数")
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    @ExcelProperty(value = "消费账户金额")
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    @ExcelProperty(value = "机器流水号")
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    @ExcelProperty(value = "是否已处理(和灰记录处理有关)")
+    private Long analysisFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    @ExcelProperty(value = "状态标识", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "记=录消费类型?")
+    private Long statusFlag;
+
+    /**
+     * 营业员Id
+     */
+    @ExcelProperty(value = "营业员Id")
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    @ExcelProperty(value = "营业员名称")
+    private String operatorName;
+
+    /**
+     * 结算账户Id
+     */
+    @ExcelProperty(value = "结算账户Id")
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    @ExcelProperty(value = "结算账户名称")
+    private String accountName;
+
+    /**
+     * 房间Id
+     */
+    @ExcelProperty(value = "房间Id")
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    @ExcelProperty(value = "房间名称")
+    private String roomName;
+
+    /**
+     * 钱包类型
+     */
+    @ExcelProperty(value = "钱包类型")
+    private String bagType;
+
+    /**
+     * 餐类Id
+     */
+    @ExcelProperty(value = "餐类Id")
+    private Long mealType;
+
+    /**
+     * 餐类名称
+     */
+    @ExcelProperty(value = "餐类名称")
+    private String mealName;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    @ExcelProperty(value = "是否发送短信,见 sys_yes_no字典类别")
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    @ExcelProperty(value = "消费记录标志位?")
+    private Long recordStatus;
+
+    /**
+     * 同步标志,0-未同步,1-已同步
+     */
+    @ExcelProperty(value = "同步标志,0-未同步,1-已同步")
+    private Long syncStatus;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 198 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfConsumedetailoriginalVo.java

@@ -0,0 +1,198 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.backstage.consumption.domain.XfConsumedetailoriginal;
+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_xf_consumeDetailOriginal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfConsumedetailoriginal.class)
+public class XfConsumedetailoriginalVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 原始记录Id,主键
+     */
+    @ExcelProperty(value = "原始记录Id,主键")
+    private String originalId;
+
+    /**
+     * 记录Id
+     */
+    @ExcelProperty(value = "记录Id")
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @ExcelProperty(value = "人员Id")
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    @ExcelProperty(value = "学/工号")
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    @ExcelProperty(value = "部门Id")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    /**
+     * 消费日期
+     */
+    @ExcelProperty(value = "消费日期")
+    private Date consumeDate;
+
+    /**
+     * 消费金额
+     */
+    @ExcelProperty(value = "消费金额")
+    private Long consumeMoney;
+
+    /**
+     * 卡流水号
+     */
+    @ExcelProperty(value = "卡流水号")
+    private Long cardNo;
+
+    /**
+     * 物理卡号
+     */
+    @ExcelProperty(value = "物理卡号")
+    private Long factoryId;
+
+    /**
+     * 卡上余额
+     */
+    @ExcelProperty(value = "卡上余额")
+    private Long cardValue;
+
+    /**
+     * 卡使用次数
+     */
+    @ExcelProperty(value = "卡使用次数")
+    private Long cardCount;
+
+    /**
+     * 消费账户金额
+     */
+    @ExcelProperty(value = "消费账户金额")
+    private Long consumeBalance;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    @ExcelProperty(value = "机器流水号")
+    private Long termRecordId;
+
+    /**
+     * 是否已处理(和灰记录处理有关)
+     */
+    @ExcelProperty(value = "是否已处理(和灰记录处理有关)")
+    private Long anlysFlag;
+
+    /**
+     * 消费记录标志
+     */
+    @ExcelProperty(value = "消费记录标志")
+    private Long dataFlag;
+
+    /**
+     * 状态标识(记录消费类型?)
+     */
+    @ExcelProperty(value = "状态标识", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "记=录消费类型?")
+    private Long statusFlag;
+
+    /**
+     * 防伪验证码(记录消费模式的中文信息)
+     */
+    @ExcelProperty(value = "防伪验证码", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "记=录消费模式的中文信息")
+    private String digitalSign;
+
+    /**
+     * 水控金额
+     */
+    @ExcelProperty(value = "水控金额")
+    private Long waterValue;
+
+    /**
+     * 水控历史余额
+     */
+    @ExcelProperty(value = "水控历史余额")
+    private Long waterHistoryValue;
+
+    /**
+     * 水控当天总和
+     */
+    @ExcelProperty(value = "水控当天总和")
+    private Long waterDaySum;
+
+    /**
+     * 水控错误余额
+     */
+    @ExcelProperty(value = "水控错误余额")
+    private Long waterErrValue;
+
+    /**
+     * 水控错误消费金额
+     */
+    @ExcelProperty(value = "水控错误消费金额")
+    private Long waterErrMoney;
+
+    /**
+     * 营业员Id
+     */
+    @ExcelProperty(value = "营业员Id")
+    private Long operatorId;
+
+
+}

+ 232 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfCreditaccountVo.java

@@ -0,0 +1,232 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.backstage.consumption.domain.XfCreditaccount;
+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_xf_creditAccount
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfCreditaccount.class)
+public class XfCreditaccountVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 收支Id
+     */
+    @ExcelProperty(value = "收支Id")
+    private String creditId;
+
+    /**
+     * 记录Id
+     */
+    @ExcelProperty(value = "记录Id")
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @ExcelProperty(value = "人员Id")
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    @ExcelProperty(value = "学/工号")
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    /**
+     * 部门Id
+     */
+    @ExcelProperty(value = "部门Id")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    /**
+     * 机器流水号
+     */
+    @ExcelProperty(value = "机器流水号")
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    @ExcelProperty(value = "卡流水号")
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    @ExcelProperty(value = "卡上余额")
+    private Long cardValue;
+
+    /**
+     * 卡片类型
+     */
+    @ExcelProperty(value = "卡片类型")
+    private Long cardType;
+
+    /**
+     * 卡使用次数
+     */
+    @ExcelProperty(value = "卡使用次数")
+    private Long cardCount;
+
+    /**
+     * 卡片类型名称
+     */
+    @ExcelProperty(value = "卡片类型名称")
+    private String cardTypeName;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    @ExcelProperty(value = "是否主卡,见sys_yes_no字典类别")
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    @ExcelProperty(value = "钱包类型")
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @ExcelProperty(value = "使用类型,100-消费系统")
+    private Long useYpe;
+
+    /**
+     * 工作站编号
+     */
+    @ExcelProperty(value = "工作站编号")
+    private Long stationNumb;
+
+    /**
+     * 工作站名称
+     */
+    @ExcelProperty(value = "工作站名称")
+    private String stationName;
+
+    /**
+     * 营业员Id
+     */
+    @ExcelProperty(value = "营业员Id")
+    private Long operatorId;
+
+    /**
+     * 营业员名称
+     */
+    @ExcelProperty(value = "营业员名称")
+    private String operatorName;
+
+    /**
+     * 交易时间
+     */
+    @ExcelProperty(value = "交易时间")
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    @ExcelProperty(value = "交易类型,见CREDITTYPE字典类型")
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    @ExcelProperty(value = "资金来源,见PAYSTYLE字典类型")
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    @ExcelProperty(value = "交易金额")
+    private Long receiptMoney;
+
+    /**
+     * 核对状态,见sys_yes_no字典类型
+     */
+    @ExcelProperty(value = "核对状态,见sys_yes_no字典类型")
+    private String auditStatus;
+
+    /**
+     * 核对时间
+     */
+    @ExcelProperty(value = "核对时间")
+    private Date auditDate;
+
+    /**
+     * 团充Id
+     */
+    @ExcelProperty(value = "团充Id")
+    private Long groupId;
+
+    /**
+     * 原始记录Id,对应收支备份表的主键字段
+     */
+    @ExcelProperty(value = "原始记录Id,对应收支备份表的主键字段")
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    @ExcelProperty(value = "是否发送短信,见 sys_yes_no字典类别")
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    @ExcelProperty(value = "消费记录标志位?")
+    private Long recordStatus;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 184 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfCreditaccountbackVo.java

@@ -0,0 +1,184 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.backstage.consumption.domain.XfCreditaccountback;
+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_xf_creditAccountBack
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfCreditaccountback.class)
+public class XfCreditaccountbackVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 收支备份Id,主键
+     */
+    @ExcelProperty(value = "收支备份Id,主键")
+    private String backId;
+
+    /**
+     * 记录Id
+     */
+    @ExcelProperty(value = "记录Id")
+    private Long recordId;
+
+    /**
+     * 人员Id
+     */
+    @ExcelProperty(value = "人员Id")
+    private Long userId;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+    /**
+     * 机器流水号
+     */
+    @ExcelProperty(value = "机器流水号")
+    private Long termRecordId;
+
+    /**
+     * 卡流水号
+     */
+    @ExcelProperty(value = "卡流水号")
+    private Long cardNo;
+
+    /**
+     * 卡上余额
+     */
+    @ExcelProperty(value = "卡上余额")
+    private Long cardValue;
+
+    /**
+     * 是否主卡,见sys_yes_no字典类别
+     */
+    @ExcelProperty(value = "是否主卡,见sys_yes_no字典类别")
+    private String mainCard;
+
+    /**
+     * 钱包类型
+     */
+    @ExcelProperty(value = "钱包类型")
+    private String bagType;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @ExcelProperty(value = "使用类型,100-消费系统")
+    private Long useYpe;
+
+    /**
+     * 工作站Id
+     */
+    @ExcelProperty(value = "工作站Id")
+    private Long stationId;
+
+    /**
+     * 营业员Id
+     */
+    @ExcelProperty(value = "营业员Id")
+    private Long operatorId;
+
+    /**
+     * 交易时间
+     */
+    @ExcelProperty(value = "交易时间")
+    private Date creditTime;
+
+    /**
+     * 交易类型,见CREDITTYPE字典类型
+     */
+    @ExcelProperty(value = "交易类型,见CREDITTYPE字典类型")
+    private String creditType;
+
+    /**
+     * 资金来源,见PAYSTYLE字典类型
+     */
+    @ExcelProperty(value = "资金来源,见PAYSTYLE字典类型")
+    private String payStyle;
+
+    /**
+     * 交易金额
+     */
+    @ExcelProperty(value = "交易金额")
+    private Long receiptMoney;
+
+    /**
+     * 交易状态
+     */
+    @ExcelProperty(value = "交易状态")
+    private Long creditStatus;
+
+    /**
+     * 团充Id
+     */
+    @ExcelProperty(value = "团充Id")
+    private Long groupId;
+
+    /**
+     * 收支记录Id,对应收支明细表的主键字段
+     */
+    @ExcelProperty(value = "收支记录Id,对应收支明细表的主键字段")
+    private String creditId;
+
+    /**
+     * 原始记录Id?
+     */
+    @ExcelProperty(value = "原始记录Id?")
+    private String originalId;
+
+    /**
+     * 是否发送短信,见 sys_yes_no字典类别
+     */
+    @ExcelProperty(value = "是否发送短信,见 sys_yes_no字典类别")
+    private String smsSend;
+
+    /**
+     * 消费记录标志位?
+     */
+    @ExcelProperty(value = "消费记录标志位?")
+    private Long recordStatus;
+
+    /**
+     * 统计分析标识
+     */
+    @ExcelProperty(value = "统计分析标识")
+    private Long anlysFlag;
+
+    /**
+     * 数字签名
+     */
+    @ExcelProperty(value = "数字签名")
+    private String digitalSign;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 92 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfLimitedVo.java

@@ -0,0 +1,92 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfLimited;
+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 org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 限次管理视图对象 t_xf_limited
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfLimited.class)
+public class XfLimitedVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限次Id,主键
+     */
+//    @ExcelProperty(value = "限次Id,主键")
+    private Long limitedId;
+
+    /**
+     * 卡类Id
+     */
+//    @ExcelProperty(value = "卡类Id")
+    private Long cardType;
+
+    @ExcelProperty(value = "卡类")
+    @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
+    private String cardTypeName;
+
+    /**
+     * 每日次数
+     */
+    @ExcelProperty(value = "每日次数")
+    private Long dailyCount;
+
+    /**
+     * 早餐次数
+     */
+    @ExcelProperty(value = "早餐次数")
+    private Long oneCount;
+
+    /**
+     * 午餐次数
+     */
+    @ExcelProperty(value = "午餐次数")
+    private Long twoCount;
+
+    /**
+     * 晚餐次数
+     */
+    @ExcelProperty(value = "晚餐次数")
+    private Long threeCount;
+
+    /**
+     * 宵夜次数
+     */
+    @ExcelProperty(value = "宵夜次数")
+    private Long fourCount;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    @ExcelProperty(value = "启用状态,0-未启用 1-启用")
+    private String status;
+
+
+}

+ 56 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfLimitedtermVo.java

@@ -0,0 +1,56 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfLimitedterm;
+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_xf_limitedTerm
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfLimitedterm.class)
+public class XfLimitedtermVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限次Id,主键
+     */
+//    @ExcelProperty(value = "限次Id,主键")
+    private Long limitedTermId;
+
+    /**
+     * 设备Id
+     */
+//    @ExcelProperty(value = "设备Id")
+    private Long termId;
+
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    @ExcelProperty(value = "设备编号")
+    private Long termNo;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+
+}

+ 92 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfQuotaVo.java

@@ -0,0 +1,92 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfQuota;
+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 org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 限额管理视图对象 t_xf_quota
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfQuota.class)
+public class XfQuotaVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限额Id,主键
+     */
+    @ExcelProperty(value = "限额Id,主键")
+    private Long quotaId;
+
+    /**
+     * 卡类Id
+     */
+//    @ExcelProperty(value = "卡类Id")
+    private Long cardType;
+
+    @ExcelProperty(value = "卡类名称")
+    @Translation(type = TransConstant.CARD_TYPE_ID_TO_NAME, mapper = "cardType")
+    private String cardTypeName;
+
+    /**
+     * 每日金额
+     */
+    @ExcelProperty(value = "每日金额")
+    private Long dailyMoney;
+
+    /**
+     * 早餐金额
+     */
+    @ExcelProperty(value = "早餐金额")
+    private Long oneMoney;
+
+    /**
+     * 午餐金额
+     */
+    @ExcelProperty(value = "午餐金额")
+    private Long twoMoney;
+
+    /**
+     * 晚餐金额
+     */
+    @ExcelProperty(value = "晚餐金额")
+    private Long threeMoney;
+
+    /**
+     * 宵夜金额
+     */
+    @ExcelProperty(value = "宵夜金额")
+    private Long fourMoney;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 启用状态,0-未启用 1-启用
+     */
+    @ExcelProperty(value = "启用状态,0-未启用 1-启用")
+    private String status;
+
+
+}

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

@@ -0,0 +1,62 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfQuotaterm;
+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_xf_quotaTerm
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfQuotaterm.class)
+public class XfQuotatermVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 限额Id,主键
+     */
+//    @ExcelProperty(value = "限额Id,主键")
+    private Long quotaTermId;
+
+    /**
+     * 设备Id
+     */
+//    @ExcelProperty(value = "设备Id")
+    private Long termId;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 设备名称
+     */
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+
+}

+ 116 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfTermtotalVo.java

@@ -0,0 +1,116 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfTermtotal;
+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_xf_termTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfTermtotal.class)
+public class XfTermtotalVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 汇总Id,主键
+     */
+    @ExcelProperty(value = "汇总Id,主键")
+    private String totalId;
+
+    /**
+     * 设备机号
+     */
+    @ExcelProperty(value = "设备机号")
+    private Long termNo;
+
+    /**
+     * 设备名称
+     */
+    @ExcelProperty(value = "设备名称")
+    private String termName;
+
+    /**
+     * 房间Id
+     */
+    @ExcelProperty(value = "房间Id")
+    private Long roomId;
+
+    /**
+     * 房间名称
+     */
+    @ExcelProperty(value = "房间名称")
+    private String roomName;
+
+    /**
+     * 结算账户Id
+     */
+    @ExcelProperty(value = "结算账户Id")
+    private Long accountId;
+
+    /**
+     * 结算账户名称
+     */
+    @ExcelProperty(value = "结算账户名称")
+    private String accountName;
+
+    /**
+     * 消费日期
+     */
+    @ExcelProperty(value = "消费日期")
+    private String dateDay;
+
+    /**
+     * 营业时段
+     */
+    @ExcelProperty(value = "营业时段")
+    private Long mealType;
+
+    /**
+     * 消费总额(该机该天该餐消费总额)
+     */
+    @ExcelProperty(value = "消费总额(该机该天该餐消费总额)")
+    private Long mealAmount;
+
+    /**
+     * 消费次数(该机该天该餐消费次数)
+     */
+    @ExcelProperty(value = "消费次数(该机该天该餐消费次数)")
+    private Long mealCount;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @ExcelProperty(value = "使用类型,100-消费系统")
+    private Long useYpe;
+
+    /**
+     * 错扣补款次数(该机该天该餐错扣补款次数)
+     */
+    @ExcelProperty(value = "错扣补款次数(该机该天该餐错扣补款次数)")
+    private Long errFillCount;
+
+    /**
+     * 错扣补款总额(该机该天该餐错扣补款总额)
+     */
+    @ExcelProperty(value = "错扣补款总额(该机该天该餐错扣补款总额)")
+    private Long errFillMoney;
+
+
+}

+ 92 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfUsertotalVo.java

@@ -0,0 +1,92 @@
+package org.dromara.backstage.consumption.domain.vo;
+
+import org.dromara.backstage.consumption.domain.XfUsertotal;
+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_xf_userTotal
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = XfUsertotal.class)
+public class XfUsertotalVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 汇总Id,主键
+     */
+    @ExcelProperty(value = "汇总Id,主键")
+    private String totalId;
+
+    /**
+     * 人员Id
+     */
+    @ExcelProperty(value = "人员Id")
+    private Long userId;
+
+    /**
+     * 学/工号
+     */
+    @ExcelProperty(value = "学/工号")
+    private String userNumb;
+
+    /**
+     * 用户姓名
+     */
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    /**
+     * 部门名称
+     */
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    /**
+     * 卡流水号
+     */
+    @ExcelProperty(value = "卡流水号")
+    private Long cardNo;
+
+    /**
+     * 消费日期
+     */
+    @ExcelProperty(value = "消费日期")
+    private String dateDay;
+
+    /**
+     * 使用类型,100-消费系统
+     */
+    @ExcelProperty(value = "使用类型,100-消费系统")
+    private Long useYpe;
+
+    /**
+     * 充值金额
+     */
+    @ExcelProperty(value = "充值金额")
+    private Long creditMoney;
+
+    /**
+     * 消费金额
+     */
+    @ExcelProperty(value = "消费金额")
+    private Long consumeMoney;
+
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfConsumedetailMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetail;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 消费明细Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface XfConsumedetailMapper extends BaseMapperPlus<XfConsumedetail, XfConsumedetailVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfConsumedetailoriginalMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetailoriginal;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailoriginalVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 原始消费记录Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface XfConsumedetailoriginalMapper extends BaseMapperPlus<XfConsumedetailoriginal, XfConsumedetailoriginalVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfCreditaccountMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccount;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 资金收支明细Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface XfCreditaccountMapper extends BaseMapperPlus<XfCreditaccount, XfCreditaccountVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfCreditaccountbackMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccountback;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountbackVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 资金收支备份Mapper接口
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+public interface XfCreditaccountbackMapper extends BaseMapperPlus<XfCreditaccountback, XfCreditaccountbackVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfLimitedMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfLimited;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 限次管理Mapper接口
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+public interface XfLimitedMapper extends BaseMapperPlus<XfLimited, XfLimitedVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfLimitedtermMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfLimitedterm;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedtermVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 限次设备绑定Mapper接口
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+public interface XfLimitedtermMapper extends BaseMapperPlus<XfLimitedterm, XfLimitedtermVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfQuotaMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfQuota;
+import org.dromara.backstage.consumption.domain.vo.XfQuotaVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 限额管理Mapper接口
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+public interface XfQuotaMapper extends BaseMapperPlus<XfQuota, XfQuotaVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfQuotatermMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfQuotaterm;
+import org.dromara.backstage.consumption.domain.vo.XfQuotatermVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 限额设备绑定Mapper接口
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+public interface XfQuotatermMapper extends BaseMapperPlus<XfQuotaterm, XfQuotatermVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfTermtotalMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfTermtotal;
+import org.dromara.backstage.consumption.domain.vo.XfTermtotalVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 消费机消费记录Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface XfTermtotalMapper extends BaseMapperPlus<XfTermtotal, XfTermtotalVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/mapper/XfUsertotalMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.backstage.consumption.mapper;
+
+import org.dromara.backstage.consumption.domain.XfUsertotal;
+import org.dromara.backstage.consumption.domain.vo.XfUsertotalVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 个人与消费与充值统计Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface XfUsertotalMapper extends BaseMapperPlus<XfUsertotal, XfUsertotalVo> {
+
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfConsumedetailService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetail;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailVo;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface IXfConsumedetailService {
+
+    /**
+     * 查询消费明细
+     *
+     * @param consumeId 主键
+     * @return 消费明细
+     */
+    XfConsumedetailVo queryById(String consumeId);
+
+    /**
+     * 分页查询消费明细列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 消费明细分页列表
+     */
+    TableDataInfo<XfConsumedetailVo> queryPageList(XfConsumedetailBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的消费明细列表
+     *
+     * @param bo 查询条件
+     * @return 消费明细列表
+     */
+    List<XfConsumedetailVo> queryList(XfConsumedetailBo bo);
+
+    /**
+     * 新增消费明细
+     *
+     * @param bo 消费明细
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfConsumedetailBo bo);
+
+    /**
+     * 修改消费明细
+     *
+     * @param bo 消费明细
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfConsumedetailBo bo);
+
+    /**
+     * 校验并批量删除消费明细信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfConsumedetailoriginalService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfConsumedetailoriginal;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailoriginalVo;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailoriginalBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface IXfConsumedetailoriginalService {
+
+    /**
+     * 查询原始消费记录
+     *
+     * @param originalId 主键
+     * @return 原始消费记录
+     */
+    XfConsumedetailoriginalVo queryById(String originalId);
+
+    /**
+     * 分页查询原始消费记录列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 原始消费记录分页列表
+     */
+    TableDataInfo<XfConsumedetailoriginalVo> queryPageList(XfConsumedetailoriginalBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的原始消费记录列表
+     *
+     * @param bo 查询条件
+     * @return 原始消费记录列表
+     */
+    List<XfConsumedetailoriginalVo> queryList(XfConsumedetailoriginalBo bo);
+
+    /**
+     * 新增原始消费记录
+     *
+     * @param bo 原始消费记录
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfConsumedetailoriginalBo bo);
+
+    /**
+     * 修改原始消费记录
+     *
+     * @param bo 原始消费记录
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfConsumedetailoriginalBo bo);
+
+    /**
+     * 校验并批量删除原始消费记录信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfCreditaccountService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccount;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountVo;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface IXfCreditaccountService {
+
+    /**
+     * 查询资金收支明细
+     *
+     * @param creditId 主键
+     * @return 资金收支明细
+     */
+    XfCreditaccountVo queryById(String creditId);
+
+    /**
+     * 分页查询资金收支明细列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 资金收支明细分页列表
+     */
+    TableDataInfo<XfCreditaccountVo> queryPageList(XfCreditaccountBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的资金收支明细列表
+     *
+     * @param bo 查询条件
+     * @return 资金收支明细列表
+     */
+    List<XfCreditaccountVo> queryList(XfCreditaccountBo bo);
+
+    /**
+     * 新增资金收支明细
+     *
+     * @param bo 资金收支明细
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfCreditaccountBo bo);
+
+    /**
+     * 修改资金收支明细
+     *
+     * @param bo 资金收支明细
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfCreditaccountBo bo);
+
+    /**
+     * 校验并批量删除资金收支明细信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfCreditaccountbackService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfCreditaccountback;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountbackVo;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountbackBo;
+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 Yb
+ * @date 2024-08-15
+ */
+public interface IXfCreditaccountbackService {
+
+    /**
+     * 查询资金收支备份
+     *
+     * @param backId 主键
+     * @return 资金收支备份
+     */
+    XfCreditaccountbackVo queryById(String backId);
+
+    /**
+     * 分页查询资金收支备份列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 资金收支备份分页列表
+     */
+    TableDataInfo<XfCreditaccountbackVo> queryPageList(XfCreditaccountbackBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的资金收支备份列表
+     *
+     * @param bo 查询条件
+     * @return 资金收支备份列表
+     */
+    List<XfCreditaccountbackVo> queryList(XfCreditaccountbackBo bo);
+
+    /**
+     * 新增资金收支备份
+     *
+     * @param bo 资金收支备份
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfCreditaccountbackBo bo);
+
+    /**
+     * 修改资金收支备份
+     *
+     * @param bo 资金收支备份
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfCreditaccountbackBo bo);
+
+    /**
+     * 校验并批量删除资金收支备份信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfLimitedService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfLimited;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedVo;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedBo;
+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-08-15
+ */
+public interface IXfLimitedService {
+
+    /**
+     * 查询限次管理
+     *
+     * @param limitedId 主键
+     * @return 限次管理
+     */
+    XfLimitedVo queryById(Long limitedId);
+
+    /**
+     * 分页查询限次管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限次管理分页列表
+     */
+    TableDataInfo<XfLimitedVo> queryPageList(XfLimitedBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的限次管理列表
+     *
+     * @param bo 查询条件
+     * @return 限次管理列表
+     */
+    List<XfLimitedVo> queryList(XfLimitedBo bo);
+
+    /**
+     * 新增限次管理
+     *
+     * @param bo 限次管理
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfLimitedBo bo);
+
+    /**
+     * 修改限次管理
+     *
+     * @param bo 限次管理
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfLimitedBo bo);
+
+    /**
+     * 校验并批量删除限次管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 76 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfLimitedtermService.java

@@ -0,0 +1,76 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfLimitedterm;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedtermVo;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedtermBo;
+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-08-15
+ */
+public interface IXfLimitedtermService {
+
+    /**
+     * 根据设备id批量新增折扣设备
+     * @param ids
+     * @return
+     */
+    Boolean insertByTermIds(List<Long> ids);
+
+    /**
+     * 查询限次设备绑定
+     *
+     * @param limitedTermId 主键
+     * @return 限次设备绑定
+     */
+    XfLimitedtermVo queryById(Long limitedTermId);
+
+    /**
+     * 分页查询限次设备绑定列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限次设备绑定分页列表
+     */
+    TableDataInfo<XfLimitedtermVo> queryPageList(XfLimitedtermBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的限次设备绑定列表
+     *
+     * @param bo 查询条件
+     * @return 限次设备绑定列表
+     */
+    List<XfLimitedtermVo> queryList(XfLimitedtermBo bo);
+
+    /**
+     * 新增限次设备绑定
+     *
+     * @param bo 限次设备绑定
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfLimitedtermBo bo);
+
+    /**
+     * 修改限次设备绑定
+     *
+     * @param bo 限次设备绑定
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfLimitedtermBo bo);
+
+    /**
+     * 校验并批量删除限次设备绑定信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfQuotaService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfQuota;
+import org.dromara.backstage.consumption.domain.vo.XfQuotaVo;
+import org.dromara.backstage.consumption.domain.bo.XfQuotaBo;
+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-08-14
+ */
+public interface IXfQuotaService {
+
+    /**
+     * 查询限额管理
+     *
+     * @param quotaId 主键
+     * @return 限额管理
+     */
+    XfQuotaVo queryById(Long quotaId);
+
+    /**
+     * 分页查询限额管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限额管理分页列表
+     */
+    TableDataInfo<XfQuotaVo> queryPageList(XfQuotaBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的限额管理列表
+     *
+     * @param bo 查询条件
+     * @return 限额管理列表
+     */
+    List<XfQuotaVo> queryList(XfQuotaBo bo);
+
+    /**
+     * 新增限额管理
+     *
+     * @param bo 限额管理
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfQuotaBo bo);
+
+    /**
+     * 修改限额管理
+     *
+     * @param bo 限额管理
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfQuotaBo bo);
+
+    /**
+     * 校验并批量删除限额管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 76 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfQuotatermService.java

@@ -0,0 +1,76 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfQuotaterm;
+import org.dromara.backstage.consumption.domain.vo.XfQuotatermVo;
+import org.dromara.backstage.consumption.domain.bo.XfQuotatermBo;
+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-08-14
+ */
+public interface IXfQuotatermService {
+
+    /**
+     * 根据设备id批量新增限额设备
+     * @param ids
+     * @return
+     */
+    Boolean insertByTermIds(List<Long> ids);
+
+    /**
+     * 查询限额设备绑定
+     *
+     * @param quotaTermId 主键
+     * @return 限额设备绑定
+     */
+    XfQuotatermVo queryById(Long quotaTermId);
+
+    /**
+     * 分页查询限额设备绑定列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限额设备绑定分页列表
+     */
+    TableDataInfo<XfQuotatermVo> queryPageList(XfQuotatermBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的限额设备绑定列表
+     *
+     * @param bo 查询条件
+     * @return 限额设备绑定列表
+     */
+    List<XfQuotatermVo> queryList(XfQuotatermBo bo);
+
+    /**
+     * 新增限额设备绑定
+     *
+     * @param bo 限额设备绑定
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfQuotatermBo bo);
+
+    /**
+     * 修改限额设备绑定
+     *
+     * @param bo 限额设备绑定
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfQuotatermBo bo);
+
+    /**
+     * 校验并批量删除限额设备绑定信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfTermtotalService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfTermtotal;
+import org.dromara.backstage.consumption.domain.vo.XfTermtotalVo;
+import org.dromara.backstage.consumption.domain.bo.XfTermtotalBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface IXfTermtotalService {
+
+    /**
+     * 查询消费机消费记录
+     *
+     * @param totalId 主键
+     * @return 消费机消费记录
+     */
+    XfTermtotalVo queryById(String totalId);
+
+    /**
+     * 分页查询消费机消费记录列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 消费机消费记录分页列表
+     */
+    TableDataInfo<XfTermtotalVo> queryPageList(XfTermtotalBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的消费机消费记录列表
+     *
+     * @param bo 查询条件
+     * @return 消费机消费记录列表
+     */
+    List<XfTermtotalVo> queryList(XfTermtotalBo bo);
+
+    /**
+     * 新增消费机消费记录
+     *
+     * @param bo 消费机消费记录
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfTermtotalBo bo);
+
+    /**
+     * 修改消费机消费记录
+     *
+     * @param bo 消费机消费记录
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfTermtotalBo bo);
+
+    /**
+     * 校验并批量删除消费机消费记录信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfUsertotalService.java

@@ -0,0 +1,69 @@
+package org.dromara.backstage.consumption.service;
+
+import org.dromara.backstage.consumption.domain.XfUsertotal;
+import org.dromara.backstage.consumption.domain.vo.XfUsertotalVo;
+import org.dromara.backstage.consumption.domain.bo.XfUsertotalBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface IXfUsertotalService {
+
+    /**
+     * 查询个人与消费与充值统计
+     *
+     * @param totalId 主键
+     * @return 个人与消费与充值统计
+     */
+    XfUsertotalVo queryById(String totalId);
+
+    /**
+     * 分页查询个人与消费与充值统计列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 个人与消费与充值统计分页列表
+     */
+    TableDataInfo<XfUsertotalVo> queryPageList(XfUsertotalBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的个人与消费与充值统计列表
+     *
+     * @param bo 查询条件
+     * @return 个人与消费与充值统计列表
+     */
+    List<XfUsertotalVo> queryList(XfUsertotalBo bo);
+
+    /**
+     * 新增个人与消费与充值统计
+     *
+     * @param bo 个人与消费与充值统计
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(XfUsertotalBo bo);
+
+    /**
+     * 修改个人与消费与充值统计
+     *
+     * @param bo 个人与消费与充值统计
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(XfUsertotalBo bo);
+
+    /**
+     * 校验并批量删除个人与消费与充值统计信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 159 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfConsumedetailServiceImpl.java

@@ -0,0 +1,159 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailBo;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailVo;
+import org.dromara.backstage.consumption.domain.XfConsumedetail;
+import org.dromara.backstage.consumption.mapper.XfConsumedetailMapper;
+import org.dromara.backstage.consumption.service.IXfConsumedetailService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 消费明细Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfConsumedetailServiceImpl implements IXfConsumedetailService {
+
+    private final XfConsumedetailMapper baseMapper;
+
+    /**
+     * 查询消费明细
+     *
+     * @param consumeId 主键
+     * @return 消费明细
+     */
+    @Override
+    public XfConsumedetailVo queryById(String consumeId){
+        return baseMapper.selectVoById(consumeId);
+    }
+
+    /**
+     * 分页查询消费明细列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 消费明细分页列表
+     */
+    @Override
+    public TableDataInfo<XfConsumedetailVo> queryPageList(XfConsumedetailBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfConsumedetail> lqw = buildQueryWrapper(bo);
+        Page<XfConsumedetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的消费明细列表
+     *
+     * @param bo 查询条件
+     * @return 消费明细列表
+     */
+    @Override
+    public List<XfConsumedetailVo> queryList(XfConsumedetailBo bo) {
+        LambdaQueryWrapper<XfConsumedetail> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfConsumedetail> buildQueryWrapper(XfConsumedetailBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfConsumedetail> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getOriginalId()), XfConsumedetail::getOriginalId, bo.getOriginalId());
+        lqw.eq(bo.getRecordId() != null, XfConsumedetail::getRecordId, bo.getRecordId());
+        lqw.eq(bo.getUserId() != null, XfConsumedetail::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserNumb()), XfConsumedetail::getUserNumb, bo.getUserNumb());
+        lqw.like(StringUtils.isNotBlank(bo.getRealName()), XfConsumedetail::getRealName, bo.getRealName());
+        lqw.eq(bo.getDeptId() != null, XfConsumedetail::getDeptId, bo.getDeptId());
+        lqw.like(StringUtils.isNotBlank(bo.getDeptName()), XfConsumedetail::getDeptName, bo.getDeptName());
+        lqw.eq(bo.getConsumeDate() != null, XfConsumedetail::getConsumeDate, bo.getConsumeDate());
+        lqw.eq(bo.getConsumeMoney() != null, XfConsumedetail::getConsumeMoney, bo.getConsumeMoney());
+        lqw.eq(bo.getCardNo() != null, XfConsumedetail::getCardNo, bo.getCardNo());
+        lqw.eq(bo.getFactoryId() != null, XfConsumedetail::getFactoryId, bo.getFactoryId());
+        lqw.eq(bo.getCardValue() != null, XfConsumedetail::getCardValue, bo.getCardValue());
+        lqw.eq(bo.getCardCount() != null, XfConsumedetail::getCardCount, bo.getCardCount());
+        lqw.eq(bo.getConsumeBalance() != null, XfConsumedetail::getConsumeBalance, bo.getConsumeBalance());
+        lqw.eq(bo.getTermNo() != null, XfConsumedetail::getTermNo, bo.getTermNo());
+        lqw.like(StringUtils.isNotBlank(bo.getTermName()), XfConsumedetail::getTermName, bo.getTermName());
+        lqw.eq(bo.getTermRecordId() != null, XfConsumedetail::getTermRecordId, bo.getTermRecordId());
+        lqw.eq(bo.getAnalysisFlag() != null, XfConsumedetail::getAnalysisFlag, bo.getAnalysisFlag());
+        lqw.eq(bo.getStatusFlag() != null, XfConsumedetail::getStatusFlag, bo.getStatusFlag());
+        lqw.eq(bo.getOperatorId() != null, XfConsumedetail::getOperatorId, bo.getOperatorId());
+        lqw.like(StringUtils.isNotBlank(bo.getOperatorName()), XfConsumedetail::getOperatorName, bo.getOperatorName());
+        lqw.eq(bo.getAccountId() != null, XfConsumedetail::getAccountId, bo.getAccountId());
+        lqw.like(StringUtils.isNotBlank(bo.getAccountName()), XfConsumedetail::getAccountName, bo.getAccountName());
+        lqw.eq(bo.getRoomId() != null, XfConsumedetail::getRoomId, bo.getRoomId());
+        lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XfConsumedetail::getRoomName, bo.getRoomName());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagType()), XfConsumedetail::getBagType, bo.getBagType());
+        lqw.eq(bo.getMealType() != null, XfConsumedetail::getMealType, bo.getMealType());
+        lqw.like(StringUtils.isNotBlank(bo.getMealName()), XfConsumedetail::getMealName, bo.getMealName());
+        lqw.eq(StringUtils.isNotBlank(bo.getSmsSend()), XfConsumedetail::getSmsSend, bo.getSmsSend());
+        lqw.eq(bo.getRecordStatus() != null, XfConsumedetail::getRecordStatus, bo.getRecordStatus());
+        lqw.eq(bo.getSyncStatus() != null, XfConsumedetail::getSyncStatus, bo.getSyncStatus());
+        return lqw;
+    }
+
+    /**
+     * 新增消费明细
+     *
+     * @param bo 消费明细
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfConsumedetailBo bo) {
+        XfConsumedetail add = MapstructUtils.convert(bo, XfConsumedetail.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setConsumeId(add.getConsumeId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改消费明细
+     *
+     * @param bo 消费明细
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfConsumedetailBo bo) {
+        XfConsumedetail update = MapstructUtils.convert(bo, XfConsumedetail.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfConsumedetail entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除消费明细信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 154 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfConsumedetailoriginalServiceImpl.java

@@ -0,0 +1,154 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfConsumedetailoriginalBo;
+import org.dromara.backstage.consumption.domain.vo.XfConsumedetailoriginalVo;
+import org.dromara.backstage.consumption.domain.XfConsumedetailoriginal;
+import org.dromara.backstage.consumption.mapper.XfConsumedetailoriginalMapper;
+import org.dromara.backstage.consumption.service.IXfConsumedetailoriginalService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 原始消费记录Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfConsumedetailoriginalServiceImpl implements IXfConsumedetailoriginalService {
+
+    private final XfConsumedetailoriginalMapper baseMapper;
+
+    /**
+     * 查询原始消费记录
+     *
+     * @param originalId 主键
+     * @return 原始消费记录
+     */
+    @Override
+    public XfConsumedetailoriginalVo queryById(String originalId){
+        return baseMapper.selectVoById(originalId);
+    }
+
+    /**
+     * 分页查询原始消费记录列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 原始消费记录分页列表
+     */
+    @Override
+    public TableDataInfo<XfConsumedetailoriginalVo> queryPageList(XfConsumedetailoriginalBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfConsumedetailoriginal> lqw = buildQueryWrapper(bo);
+        Page<XfConsumedetailoriginalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的原始消费记录列表
+     *
+     * @param bo 查询条件
+     * @return 原始消费记录列表
+     */
+    @Override
+    public List<XfConsumedetailoriginalVo> queryList(XfConsumedetailoriginalBo bo) {
+        LambdaQueryWrapper<XfConsumedetailoriginal> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfConsumedetailoriginal> buildQueryWrapper(XfConsumedetailoriginalBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfConsumedetailoriginal> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getRecordId() != null, XfConsumedetailoriginal::getRecordId, bo.getRecordId());
+        lqw.eq(bo.getUserId() != null, XfConsumedetailoriginal::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserNumb()), XfConsumedetailoriginal::getUserNumb, bo.getUserNumb());
+        lqw.like(StringUtils.isNotBlank(bo.getRealName()), XfConsumedetailoriginal::getRealName, bo.getRealName());
+        lqw.eq(bo.getDeptId() != null, XfConsumedetailoriginal::getDeptId, bo.getDeptId());
+        lqw.like(StringUtils.isNotBlank(bo.getDeptName()), XfConsumedetailoriginal::getDeptName, bo.getDeptName());
+        lqw.eq(bo.getConsumeDate() != null, XfConsumedetailoriginal::getConsumeDate, bo.getConsumeDate());
+        lqw.eq(bo.getConsumeMoney() != null, XfConsumedetailoriginal::getConsumeMoney, bo.getConsumeMoney());
+        lqw.eq(bo.getCardNo() != null, XfConsumedetailoriginal::getCardNo, bo.getCardNo());
+        lqw.eq(bo.getFactoryId() != null, XfConsumedetailoriginal::getFactoryId, bo.getFactoryId());
+        lqw.eq(bo.getCardValue() != null, XfConsumedetailoriginal::getCardValue, bo.getCardValue());
+        lqw.eq(bo.getCardCount() != null, XfConsumedetailoriginal::getCardCount, bo.getCardCount());
+        lqw.eq(bo.getConsumeBalance() != null, XfConsumedetailoriginal::getConsumeBalance, bo.getConsumeBalance());
+        lqw.eq(bo.getTermNo() != null, XfConsumedetailoriginal::getTermNo, bo.getTermNo());
+        lqw.like(StringUtils.isNotBlank(bo.getTermName()), XfConsumedetailoriginal::getTermName, bo.getTermName());
+        lqw.eq(bo.getTermRecordId() != null, XfConsumedetailoriginal::getTermRecordId, bo.getTermRecordId());
+        lqw.eq(bo.getAnlysFlag() != null, XfConsumedetailoriginal::getAnlysFlag, bo.getAnlysFlag());
+        lqw.eq(bo.getDataFlag() != null, XfConsumedetailoriginal::getDataFlag, bo.getDataFlag());
+        lqw.eq(bo.getStatusFlag() != null, XfConsumedetailoriginal::getStatusFlag, bo.getStatusFlag());
+        lqw.eq(StringUtils.isNotBlank(bo.getDigitalSign()), XfConsumedetailoriginal::getDigitalSign, bo.getDigitalSign());
+        lqw.eq(bo.getWaterValue() != null, XfConsumedetailoriginal::getWaterValue, bo.getWaterValue());
+        lqw.eq(bo.getWaterHistoryValue() != null, XfConsumedetailoriginal::getWaterHistoryValue, bo.getWaterHistoryValue());
+        lqw.eq(bo.getWaterDaySum() != null, XfConsumedetailoriginal::getWaterDaySum, bo.getWaterDaySum());
+        lqw.eq(bo.getWaterErrValue() != null, XfConsumedetailoriginal::getWaterErrValue, bo.getWaterErrValue());
+        lqw.eq(bo.getWaterErrMoney() != null, XfConsumedetailoriginal::getWaterErrMoney, bo.getWaterErrMoney());
+        lqw.eq(bo.getOperatorId() != null, XfConsumedetailoriginal::getOperatorId, bo.getOperatorId());
+        return lqw;
+    }
+
+    /**
+     * 新增原始消费记录
+     *
+     * @param bo 原始消费记录
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfConsumedetailoriginalBo bo) {
+        XfConsumedetailoriginal add = MapstructUtils.convert(bo, XfConsumedetailoriginal.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setOriginalId(add.getOriginalId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改原始消费记录
+     *
+     * @param bo 原始消费记录
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfConsumedetailoriginalBo bo) {
+        XfConsumedetailoriginal update = MapstructUtils.convert(bo, XfConsumedetailoriginal.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfConsumedetailoriginal entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除原始消费记录信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 158 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfCreditaccountServiceImpl.java

@@ -0,0 +1,158 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountBo;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountVo;
+import org.dromara.backstage.consumption.domain.XfCreditaccount;
+import org.dromara.backstage.consumption.mapper.XfCreditaccountMapper;
+import org.dromara.backstage.consumption.service.IXfCreditaccountService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 资金收支明细Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfCreditaccountServiceImpl implements IXfCreditaccountService {
+
+    private final XfCreditaccountMapper baseMapper;
+
+    /**
+     * 查询资金收支明细
+     *
+     * @param creditId 主键
+     * @return 资金收支明细
+     */
+    @Override
+    public XfCreditaccountVo queryById(String creditId){
+        return baseMapper.selectVoById(creditId);
+    }
+
+    /**
+     * 分页查询资金收支明细列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 资金收支明细分页列表
+     */
+    @Override
+    public TableDataInfo<XfCreditaccountVo> queryPageList(XfCreditaccountBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfCreditaccount> lqw = buildQueryWrapper(bo);
+        Page<XfCreditaccountVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的资金收支明细列表
+     *
+     * @param bo 查询条件
+     * @return 资金收支明细列表
+     */
+    @Override
+    public List<XfCreditaccountVo> queryList(XfCreditaccountBo bo) {
+        LambdaQueryWrapper<XfCreditaccount> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfCreditaccount> buildQueryWrapper(XfCreditaccountBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfCreditaccount> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, XfCreditaccount::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserNumb()), XfCreditaccount::getUserNumb, bo.getUserNumb());
+        lqw.like(StringUtils.isNotBlank(bo.getRealName()), XfCreditaccount::getRealName, bo.getRealName());
+        lqw.eq(bo.getDeptId() != null, XfCreditaccount::getDeptId, bo.getDeptId());
+        lqw.like(StringUtils.isNotBlank(bo.getDeptName()), XfCreditaccount::getDeptName, bo.getDeptName());
+        lqw.eq(bo.getTermNo() != null, XfCreditaccount::getTermNo, bo.getTermNo());
+        lqw.like(StringUtils.isNotBlank(bo.getTermName()), XfCreditaccount::getTermName, bo.getTermName());
+        lqw.eq(bo.getTermRecordId() != null, XfCreditaccount::getTermRecordId, bo.getTermRecordId());
+        lqw.eq(bo.getCardNo() != null, XfCreditaccount::getCardNo, bo.getCardNo());
+        lqw.eq(bo.getCardValue() != null, XfCreditaccount::getCardValue, bo.getCardValue());
+        lqw.eq(bo.getCardType() != null, XfCreditaccount::getCardType, bo.getCardType());
+        lqw.eq(bo.getCardCount() != null, XfCreditaccount::getCardCount, bo.getCardCount());
+        lqw.like(StringUtils.isNotBlank(bo.getCardTypeName()), XfCreditaccount::getCardTypeName, bo.getCardTypeName());
+        lqw.eq(StringUtils.isNotBlank(bo.getMainCard()), XfCreditaccount::getMainCard, bo.getMainCard());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagType()), XfCreditaccount::getBagType, bo.getBagType());
+        lqw.eq(bo.getUseYpe() != null, XfCreditaccount::getUseYpe, bo.getUseYpe());
+        lqw.eq(bo.getStationNumb() != null, XfCreditaccount::getStationNumb, bo.getStationNumb());
+        lqw.like(StringUtils.isNotBlank(bo.getStationName()), XfCreditaccount::getStationName, bo.getStationName());
+        lqw.eq(bo.getOperatorId() != null, XfCreditaccount::getOperatorId, bo.getOperatorId());
+        lqw.like(StringUtils.isNotBlank(bo.getOperatorName()), XfCreditaccount::getOperatorName, bo.getOperatorName());
+        lqw.eq(bo.getCreditTime() != null, XfCreditaccount::getCreditTime, bo.getCreditTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getCreditType()), XfCreditaccount::getCreditType, bo.getCreditType());
+        lqw.eq(StringUtils.isNotBlank(bo.getPayStyle()), XfCreditaccount::getPayStyle, bo.getPayStyle());
+        lqw.eq(bo.getReceiptMoney() != null, XfCreditaccount::getReceiptMoney, bo.getReceiptMoney());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XfCreditaccount::getAuditStatus, bo.getAuditStatus());
+        lqw.eq(bo.getAuditDate() != null, XfCreditaccount::getAuditDate, bo.getAuditDate());
+        lqw.eq(bo.getGroupId() != null, XfCreditaccount::getGroupId, bo.getGroupId());
+        lqw.eq(StringUtils.isNotBlank(bo.getOriginalId()), XfCreditaccount::getOriginalId, bo.getOriginalId());
+        lqw.eq(StringUtils.isNotBlank(bo.getSmsSend()), XfCreditaccount::getSmsSend, bo.getSmsSend());
+        lqw.eq(bo.getRecordStatus() != null, XfCreditaccount::getRecordStatus, bo.getRecordStatus());
+        return lqw;
+    }
+
+    /**
+     * 新增资金收支明细
+     *
+     * @param bo 资金收支明细
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfCreditaccountBo bo) {
+        XfCreditaccount add = MapstructUtils.convert(bo, XfCreditaccount.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setCreditId(add.getCreditId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改资金收支明细
+     *
+     * @param bo 资金收支明细
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfCreditaccountBo bo) {
+        XfCreditaccount update = MapstructUtils.convert(bo, XfCreditaccount.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfCreditaccount entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除资金收支明细信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 151 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfCreditaccountbackServiceImpl.java

@@ -0,0 +1,151 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfCreditaccountbackBo;
+import org.dromara.backstage.consumption.domain.vo.XfCreditaccountbackVo;
+import org.dromara.backstage.consumption.domain.XfCreditaccountback;
+import org.dromara.backstage.consumption.mapper.XfCreditaccountbackMapper;
+import org.dromara.backstage.consumption.service.IXfCreditaccountbackService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 资金收支备份Service业务层处理
+ *
+ * @author Yb
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfCreditaccountbackServiceImpl implements IXfCreditaccountbackService {
+
+    private final XfCreditaccountbackMapper baseMapper;
+
+    /**
+     * 查询资金收支备份
+     *
+     * @param backId 主键
+     * @return 资金收支备份
+     */
+    @Override
+    public XfCreditaccountbackVo queryById(String backId){
+        return baseMapper.selectVoById(backId);
+    }
+
+    /**
+     * 分页查询资金收支备份列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 资金收支备份分页列表
+     */
+    @Override
+    public TableDataInfo<XfCreditaccountbackVo> queryPageList(XfCreditaccountbackBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfCreditaccountback> lqw = buildQueryWrapper(bo);
+        Page<XfCreditaccountbackVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的资金收支备份列表
+     *
+     * @param bo 查询条件
+     * @return 资金收支备份列表
+     */
+    @Override
+    public List<XfCreditaccountbackVo> queryList(XfCreditaccountbackBo bo) {
+        LambdaQueryWrapper<XfCreditaccountback> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfCreditaccountback> buildQueryWrapper(XfCreditaccountbackBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfCreditaccountback> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getRecordId() != null, XfCreditaccountback::getRecordId, bo.getRecordId());
+        lqw.eq(bo.getUserId() != null, XfCreditaccountback::getUserId, bo.getUserId());
+        lqw.eq(bo.getTermNo() != null, XfCreditaccountback::getTermNo, bo.getTermNo());
+        lqw.eq(bo.getTermRecordId() != null, XfCreditaccountback::getTermRecordId, bo.getTermRecordId());
+        lqw.eq(bo.getCardNo() != null, XfCreditaccountback::getCardNo, bo.getCardNo());
+        lqw.eq(bo.getCardValue() != null, XfCreditaccountback::getCardValue, bo.getCardValue());
+        lqw.eq(StringUtils.isNotBlank(bo.getMainCard()), XfCreditaccountback::getMainCard, bo.getMainCard());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagType()), XfCreditaccountback::getBagType, bo.getBagType());
+        lqw.eq(bo.getUseYpe() != null, XfCreditaccountback::getUseYpe, bo.getUseYpe());
+        lqw.eq(bo.getStationId() != null, XfCreditaccountback::getStationId, bo.getStationId());
+        lqw.eq(bo.getOperatorId() != null, XfCreditaccountback::getOperatorId, bo.getOperatorId());
+        lqw.eq(bo.getCreditTime() != null, XfCreditaccountback::getCreditTime, bo.getCreditTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getCreditType()), XfCreditaccountback::getCreditType, bo.getCreditType());
+        lqw.eq(StringUtils.isNotBlank(bo.getPayStyle()), XfCreditaccountback::getPayStyle, bo.getPayStyle());
+        lqw.eq(bo.getReceiptMoney() != null, XfCreditaccountback::getReceiptMoney, bo.getReceiptMoney());
+        lqw.eq(bo.getCreditStatus() != null, XfCreditaccountback::getCreditStatus, bo.getCreditStatus());
+        lqw.eq(bo.getGroupId() != null, XfCreditaccountback::getGroupId, bo.getGroupId());
+        lqw.eq(StringUtils.isNotBlank(bo.getCreditId()), XfCreditaccountback::getCreditId, bo.getCreditId());
+        lqw.eq(StringUtils.isNotBlank(bo.getOriginalId()), XfCreditaccountback::getOriginalId, bo.getOriginalId());
+        lqw.eq(StringUtils.isNotBlank(bo.getSmsSend()), XfCreditaccountback::getSmsSend, bo.getSmsSend());
+        lqw.eq(bo.getRecordStatus() != null, XfCreditaccountback::getRecordStatus, bo.getRecordStatus());
+        lqw.eq(bo.getAnlysFlag() != null, XfCreditaccountback::getAnlysFlag, bo.getAnlysFlag());
+        lqw.eq(StringUtils.isNotBlank(bo.getDigitalSign()), XfCreditaccountback::getDigitalSign, bo.getDigitalSign());
+        return lqw;
+    }
+
+    /**
+     * 新增资金收支备份
+     *
+     * @param bo 资金收支备份
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfCreditaccountbackBo bo) {
+        XfCreditaccountback add = MapstructUtils.convert(bo, XfCreditaccountback.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setBackId(add.getBackId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改资金收支备份
+     *
+     * @param bo 资金收支备份
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfCreditaccountbackBo bo) {
+        XfCreditaccountback update = MapstructUtils.convert(bo, XfCreditaccountback.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfCreditaccountback entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除资金收支备份信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 1 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfDiscounttermServiceImpl.java

@@ -96,6 +96,7 @@ public class XfDiscounttermServiceImpl implements IXfDiscounttermService {
 
     @Override
     public Boolean insertByTermIds(List<Long> ids) {
+        if(CollectionUtil.isEmpty(ids)) return true;
         LambdaQueryWrapper<XfDiscountterm> w = Wrappers.lambdaQuery();
         w.in(XfDiscountterm::getTermId, ids);
         List<XfDiscountterm> exists = baseMapper.selectList(w);

+ 135 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfLimitedServiceImpl.java

@@ -0,0 +1,135 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedBo;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedVo;
+import org.dromara.backstage.consumption.domain.XfLimited;
+import org.dromara.backstage.consumption.mapper.XfLimitedMapper;
+import org.dromara.backstage.consumption.service.IXfLimitedService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 限次管理Service业务层处理
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfLimitedServiceImpl implements IXfLimitedService {
+
+    private final XfLimitedMapper baseMapper;
+
+    /**
+     * 查询限次管理
+     *
+     * @param limitedId 主键
+     * @return 限次管理
+     */
+    @Override
+    public XfLimitedVo queryById(Long limitedId){
+        return baseMapper.selectVoById(limitedId);
+    }
+
+    /**
+     * 分页查询限次管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限次管理分页列表
+     */
+    @Override
+    public TableDataInfo<XfLimitedVo> queryPageList(XfLimitedBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfLimited> lqw = buildQueryWrapper(bo);
+        Page<XfLimitedVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的限次管理列表
+     *
+     * @param bo 查询条件
+     * @return 限次管理列表
+     */
+    @Override
+    public List<XfLimitedVo> queryList(XfLimitedBo bo) {
+        LambdaQueryWrapper<XfLimited> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfLimited> buildQueryWrapper(XfLimitedBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfLimited> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XfLimited::getStatus, bo.getStatus());
+        return lqw;
+    }
+
+    /**
+     * 新增限次管理
+     *
+     * @param bo 限次管理
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfLimitedBo bo) {
+        XfLimited add = MapstructUtils.convert(bo, XfLimited.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setLimitedId(add.getLimitedId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改限次管理
+     *
+     * @param bo 限次管理
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfLimitedBo bo) {
+        XfLimited update = MapstructUtils.convert(bo, XfLimited.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfLimited entity){
+        LambdaQueryWrapper<XfLimited> query = Wrappers.lambdaQuery();
+        query.eq(XfLimited::getCardType, entity.getCardType())
+            .ne(entity.getLimitedId()!=null, XfLimited::getLimitedId, entity.getLimitedId());
+        if (baseMapper.selectCount(query) > 0) {
+            throw new ServiceException("设备已添加,请勿重复添加");
+        }
+    }
+
+    /**
+     * 校验并批量删除限次管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //可以删除
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 163 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfLimitedtermServiceImpl.java

@@ -0,0 +1,163 @@
+package org.dromara.backstage.consumption.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import org.dromara.backstage.consumption.domain.XfDiscountterm;
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfLimitedtermBo;
+import org.dromara.backstage.consumption.domain.vo.XfLimitedtermVo;
+import org.dromara.backstage.consumption.domain.XfLimitedterm;
+import org.dromara.backstage.consumption.mapper.XfLimitedtermMapper;
+import org.dromara.backstage.consumption.service.IXfLimitedtermService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 限次设备绑定Service业务层处理
+ *
+ * @author bing
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfLimitedtermServiceImpl implements IXfLimitedtermService {
+
+    private final XfLimitedtermMapper baseMapper;
+
+    @Override
+    public Boolean insertByTermIds(List<Long> ids) {
+        if(CollectionUtil.isEmpty(ids)) return true;
+        LambdaQueryWrapper<XfLimitedterm> w = Wrappers.lambdaQuery();
+        w.in(XfLimitedterm::getTermId, ids);
+        List<XfLimitedterm> exists = baseMapper.selectList(w);
+        List<Long> existIds = exists.stream().map(XfLimitedterm::getTermId).toList();
+        if(CollectionUtil.isNotEmpty(existIds)){
+            List<Long> adds = ids.stream().filter(id -> !existIds.contains(id)).toList();
+            if(CollectionUtil.isNotEmpty(adds)){
+                return baseMapper.insertBatch(adds.stream().map(id -> {
+                    XfLimitedterm limitedterm = new XfLimitedterm();
+                    limitedterm.setTermId(id);
+                    return limitedterm;
+                }).collect(Collectors.toList()));
+            }
+            return true;
+        }
+        return baseMapper.insertBatch(ids.stream().map(id -> {
+            XfLimitedterm limitedterm = new XfLimitedterm();
+            limitedterm.setTermId(id);
+            return limitedterm;
+        }).collect(Collectors.toList()));
+    }
+
+    /**
+     * 查询限次设备绑定
+     *
+     * @param limitedTermId 主键
+     * @return 限次设备绑定
+     */
+    @Override
+    public XfLimitedtermVo queryById(Long limitedTermId){
+        return baseMapper.selectVoById(limitedTermId);
+    }
+
+    /**
+     * 分页查询限次设备绑定列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限次设备绑定分页列表
+     */
+    @Override
+    public TableDataInfo<XfLimitedtermVo> queryPageList(XfLimitedtermBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfLimitedterm> lqw = buildQueryWrapper(bo);
+        Page<XfLimitedtermVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的限次设备绑定列表
+     *
+     * @param bo 查询条件
+     * @return 限次设备绑定列表
+     */
+    @Override
+    public List<XfLimitedtermVo> queryList(XfLimitedtermBo bo) {
+        LambdaQueryWrapper<XfLimitedterm> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfLimitedterm> buildQueryWrapper(XfLimitedtermBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfLimitedterm> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getTermId() != null, XfLimitedterm::getTermId, bo.getTermId());
+        return lqw;
+    }
+
+    /**
+     * 新增限次设备绑定
+     *
+     * @param bo 限次设备绑定
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfLimitedtermBo bo) {
+        XfLimitedterm add = MapstructUtils.convert(bo, XfLimitedterm.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setLimitedTermId(add.getLimitedTermId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改限次设备绑定
+     *
+     * @param bo 限次设备绑定
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfLimitedtermBo bo) {
+        XfLimitedterm update = MapstructUtils.convert(bo, XfLimitedterm.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfLimitedterm entity){
+        LambdaQueryWrapper<XfLimitedterm> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(XfLimitedterm::getTermId,entity.getTermId())
+            .ne(entity.getLimitedTermId()!=null,XfLimitedterm::getLimitedTermId, entity.getLimitedTermId());
+        if (baseMapper.selectCount(queryWrapper) > 0) {
+            throw new ServiceException("设备已绑定");
+        }
+    }
+
+    /**
+     * 校验并批量删除限次设备绑定信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //可以删除
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 135 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfQuotaServiceImpl.java

@@ -0,0 +1,135 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfQuotaBo;
+import org.dromara.backstage.consumption.domain.vo.XfQuotaVo;
+import org.dromara.backstage.consumption.domain.XfQuota;
+import org.dromara.backstage.consumption.mapper.XfQuotaMapper;
+import org.dromara.backstage.consumption.service.IXfQuotaService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 限额管理Service业务层处理
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@RequiredArgsConstructor
+@Service
+public class XfQuotaServiceImpl implements IXfQuotaService {
+
+    private final XfQuotaMapper baseMapper;
+
+    /**
+     * 查询限额管理
+     *
+     * @param quotaId 主键
+     * @return 限额管理
+     */
+    @Override
+    public XfQuotaVo queryById(Long quotaId){
+        return baseMapper.selectVoById(quotaId);
+    }
+
+    /**
+     * 分页查询限额管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限额管理分页列表
+     */
+    @Override
+    public TableDataInfo<XfQuotaVo> queryPageList(XfQuotaBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfQuota> lqw = buildQueryWrapper(bo);
+        Page<XfQuotaVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的限额管理列表
+     *
+     * @param bo 查询条件
+     * @return 限额管理列表
+     */
+    @Override
+    public List<XfQuotaVo> queryList(XfQuotaBo bo) {
+        LambdaQueryWrapper<XfQuota> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfQuota> buildQueryWrapper(XfQuotaBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfQuota> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XfQuota::getStatus, bo.getStatus());
+        return lqw;
+    }
+
+    /**
+     * 新增限额管理
+     *
+     * @param bo 限额管理
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfQuotaBo bo) {
+        XfQuota add = MapstructUtils.convert(bo, XfQuota.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setQuotaId(add.getQuotaId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改限额管理
+     *
+     * @param bo 限额管理
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfQuotaBo bo) {
+        XfQuota update = MapstructUtils.convert(bo, XfQuota.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfQuota entity){
+        LambdaQueryWrapper<XfQuota> query = Wrappers.lambdaQuery();
+        query.eq(XfQuota::getCardType, entity.getCardType());
+        query.ne(entity.getQuotaId()!=null,XfQuota::getQuotaId, entity.getQuotaId());
+        if(baseMapper.selectCount(query)>0){
+            throw new ServiceException("卡类数据已存在");
+        }
+    }
+
+    /**
+     * 校验并批量删除限额管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //可以删除
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 162 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfQuotatermServiceImpl.java

@@ -0,0 +1,162 @@
+package org.dromara.backstage.consumption.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import org.dromara.backstage.consumption.domain.XfDiscountterm;
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfQuotatermBo;
+import org.dromara.backstage.consumption.domain.vo.XfQuotatermVo;
+import org.dromara.backstage.consumption.domain.XfQuotaterm;
+import org.dromara.backstage.consumption.mapper.XfQuotatermMapper;
+import org.dromara.backstage.consumption.service.IXfQuotatermService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 限额设备绑定Service业务层处理
+ *
+ * @author bing
+ * @date 2024-08-14
+ */
+@RequiredArgsConstructor
+@Service
+public class XfQuotatermServiceImpl implements IXfQuotatermService {
+
+    private final XfQuotatermMapper baseMapper;
+
+    @Override
+    public Boolean insertByTermIds(List<Long> ids) {
+        if(CollectionUtil.isEmpty(ids)) return true;
+        LambdaQueryWrapper<XfQuotaterm> w = Wrappers.lambdaQuery();
+        w.in(XfQuotaterm::getTermId, ids);
+        List<XfQuotaterm> exists = baseMapper.selectList(w);
+        List<Long> existIds = exists.stream().map(XfQuotaterm::getTermId).toList();
+        if(CollectionUtil.isNotEmpty(existIds)){
+            List<Long> adds = ids.stream().filter(id -> !existIds.contains(id)).toList();
+            if(CollectionUtil.isNotEmpty(adds)){
+                return baseMapper.insertBatch(adds.stream().map(id -> {
+                    XfQuotaterm quotaterm = new XfQuotaterm();
+                    quotaterm.setTermId(id);
+                    return quotaterm;
+                }).collect(Collectors.toList()));
+            }
+            return true;
+        }
+        return baseMapper.insertBatch(ids.stream().map(id -> {
+            XfQuotaterm quotaterm = new XfQuotaterm();
+            quotaterm.setTermId(id);
+            return quotaterm;
+        }).collect(Collectors.toList()));
+    }
+
+    /**
+     * 查询限额设备绑定
+     *
+     * @param quotaTermId 主键
+     * @return 限额设备绑定
+     */
+    @Override
+    public XfQuotatermVo queryById(Long quotaTermId){
+        return baseMapper.selectVoById(quotaTermId);
+    }
+
+    /**
+     * 分页查询限额设备绑定列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 限额设备绑定分页列表
+     */
+    @Override
+    public TableDataInfo<XfQuotatermVo> queryPageList(XfQuotatermBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfQuotaterm> lqw = buildQueryWrapper(bo);
+        Page<XfQuotatermVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的限额设备绑定列表
+     *
+     * @param bo 查询条件
+     * @return 限额设备绑定列表
+     */
+    @Override
+    public List<XfQuotatermVo> queryList(XfQuotatermBo bo) {
+        LambdaQueryWrapper<XfQuotaterm> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfQuotaterm> buildQueryWrapper(XfQuotatermBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfQuotaterm> lqw = Wrappers.lambdaQuery();
+        return lqw;
+    }
+
+    /**
+     * 新增限额设备绑定
+     *
+     * @param bo 限额设备绑定
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfQuotatermBo bo) {
+        XfQuotaterm add = MapstructUtils.convert(bo, XfQuotaterm.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setQuotaTermId(add.getQuotaTermId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改限额设备绑定
+     *
+     * @param bo 限额设备绑定
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfQuotatermBo bo) {
+        XfQuotaterm update = MapstructUtils.convert(bo, XfQuotaterm.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfQuotaterm entity){
+        LambdaQueryWrapper<XfQuotaterm> q = Wrappers.lambdaQuery();
+        q.eq(XfQuotaterm::getTermId, entity.getTermId())
+            .ne(entity.getQuotaTermId()!=null, XfQuotaterm::getQuotaTermId, entity.getQuotaTermId());
+        if(baseMapper.selectCount(q)>0){
+            throw new ServiceException("设备已绑定");
+        }
+    }
+
+    /**
+     * 校验并批量删除限额设备绑定信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //可以删除
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 141 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfTermtotalServiceImpl.java

@@ -0,0 +1,141 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfTermtotalBo;
+import org.dromara.backstage.consumption.domain.vo.XfTermtotalVo;
+import org.dromara.backstage.consumption.domain.XfTermtotal;
+import org.dromara.backstage.consumption.mapper.XfTermtotalMapper;
+import org.dromara.backstage.consumption.service.IXfTermtotalService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 消费机消费记录Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfTermtotalServiceImpl implements IXfTermtotalService {
+
+    private final XfTermtotalMapper baseMapper;
+
+    /**
+     * 查询消费机消费记录
+     *
+     * @param totalId 主键
+     * @return 消费机消费记录
+     */
+    @Override
+    public XfTermtotalVo queryById(String totalId){
+        return baseMapper.selectVoById(totalId);
+    }
+
+    /**
+     * 分页查询消费机消费记录列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 消费机消费记录分页列表
+     */
+    @Override
+    public TableDataInfo<XfTermtotalVo> queryPageList(XfTermtotalBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfTermtotal> lqw = buildQueryWrapper(bo);
+        Page<XfTermtotalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的消费机消费记录列表
+     *
+     * @param bo 查询条件
+     * @return 消费机消费记录列表
+     */
+    @Override
+    public List<XfTermtotalVo> queryList(XfTermtotalBo bo) {
+        LambdaQueryWrapper<XfTermtotal> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfTermtotal> buildQueryWrapper(XfTermtotalBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfTermtotal> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getTermNo() != null, XfTermtotal::getTermNo, bo.getTermNo());
+        lqw.like(StringUtils.isNotBlank(bo.getTermName()), XfTermtotal::getTermName, bo.getTermName());
+        lqw.eq(bo.getRoomId() != null, XfTermtotal::getRoomId, bo.getRoomId());
+        lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XfTermtotal::getRoomName, bo.getRoomName());
+        lqw.eq(bo.getAccountId() != null, XfTermtotal::getAccountId, bo.getAccountId());
+        lqw.like(StringUtils.isNotBlank(bo.getAccountName()), XfTermtotal::getAccountName, bo.getAccountName());
+        lqw.eq(StringUtils.isNotBlank(bo.getDateDay()), XfTermtotal::getDateDay, bo.getDateDay());
+        lqw.eq(bo.getMealType() != null, XfTermtotal::getMealType, bo.getMealType());
+        lqw.eq(bo.getMealAmount() != null, XfTermtotal::getMealAmount, bo.getMealAmount());
+        lqw.eq(bo.getMealCount() != null, XfTermtotal::getMealCount, bo.getMealCount());
+        lqw.eq(bo.getUseYpe() != null, XfTermtotal::getUseYpe, bo.getUseYpe());
+        lqw.eq(bo.getErrFillCount() != null, XfTermtotal::getErrFillCount, bo.getErrFillCount());
+        lqw.eq(bo.getErrFillMoney() != null, XfTermtotal::getErrFillMoney, bo.getErrFillMoney());
+        return lqw;
+    }
+
+    /**
+     * 新增消费机消费记录
+     *
+     * @param bo 消费机消费记录
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfTermtotalBo bo) {
+        XfTermtotal add = MapstructUtils.convert(bo, XfTermtotal.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setTotalId(add.getTotalId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改消费机消费记录
+     *
+     * @param bo 消费机消费记录
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfTermtotalBo bo) {
+        XfTermtotal update = MapstructUtils.convert(bo, XfTermtotal.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfTermtotal entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除消费机消费记录信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 137 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfUsertotalServiceImpl.java

@@ -0,0 +1,137 @@
+package org.dromara.backstage.consumption.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.backstage.consumption.domain.bo.XfUsertotalBo;
+import org.dromara.backstage.consumption.domain.vo.XfUsertotalVo;
+import org.dromara.backstage.consumption.domain.XfUsertotal;
+import org.dromara.backstage.consumption.mapper.XfUsertotalMapper;
+import org.dromara.backstage.consumption.service.IXfUsertotalService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 个人与消费与充值统计Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class XfUsertotalServiceImpl implements IXfUsertotalService {
+
+    private final XfUsertotalMapper baseMapper;
+
+    /**
+     * 查询个人与消费与充值统计
+     *
+     * @param totalId 主键
+     * @return 个人与消费与充值统计
+     */
+    @Override
+    public XfUsertotalVo queryById(String totalId){
+        return baseMapper.selectVoById(totalId);
+    }
+
+    /**
+     * 分页查询个人与消费与充值统计列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 个人与消费与充值统计分页列表
+     */
+    @Override
+    public TableDataInfo<XfUsertotalVo> queryPageList(XfUsertotalBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<XfUsertotal> lqw = buildQueryWrapper(bo);
+        Page<XfUsertotalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的个人与消费与充值统计列表
+     *
+     * @param bo 查询条件
+     * @return 个人与消费与充值统计列表
+     */
+    @Override
+    public List<XfUsertotalVo> queryList(XfUsertotalBo bo) {
+        LambdaQueryWrapper<XfUsertotal> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<XfUsertotal> buildQueryWrapper(XfUsertotalBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<XfUsertotal> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, XfUsertotal::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getUserNumb()), XfUsertotal::getUserNumb, bo.getUserNumb());
+        lqw.like(StringUtils.isNotBlank(bo.getRealName()), XfUsertotal::getRealName, bo.getRealName());
+        lqw.like(StringUtils.isNotBlank(bo.getDeptName()), XfUsertotal::getDeptName, bo.getDeptName());
+        lqw.eq(bo.getCardNo() != null, XfUsertotal::getCardNo, bo.getCardNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getDateDay()), XfUsertotal::getDateDay, bo.getDateDay());
+        lqw.eq(bo.getUseYpe() != null, XfUsertotal::getUseYpe, bo.getUseYpe());
+        lqw.eq(bo.getCreditMoney() != null, XfUsertotal::getCreditMoney, bo.getCreditMoney());
+        lqw.eq(bo.getConsumeMoney() != null, XfUsertotal::getConsumeMoney, bo.getConsumeMoney());
+        return lqw;
+    }
+
+    /**
+     * 新增个人与消费与充值统计
+     *
+     * @param bo 个人与消费与充值统计
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(XfUsertotalBo bo) {
+        XfUsertotal add = MapstructUtils.convert(bo, XfUsertotal.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setTotalId(add.getTotalId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改个人与消费与充值统计
+     *
+     * @param bo 个人与消费与充值统计
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(XfUsertotalBo bo) {
+        XfUsertotal update = MapstructUtils.convert(bo, XfUsertotal.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(XfUsertotal entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除个人与消费与充值统计信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 1 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/PtBag.java

@@ -46,7 +46,7 @@ public class PtBag extends TenantEntity {
     /**
      * 钱包加密余额
      */
-    private String encryptBalance;
+    private byte[] encryptBalance;
 
     /**
      * 消费总金额

+ 1 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtBagBo.java

@@ -49,7 +49,7 @@ public class PtBagBo extends BaseEntity {
     /**
      * 钱包加密余额
      */
-    private String encryptBalance;
+    private byte[] encryptBalance;
 
     /**
      * 消费总金额

+ 1 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/vo/PtBagVo.java

@@ -58,7 +58,7 @@ public class PtBagVo implements Serializable {
      * 钱包加密余额
      */
     @ExcelProperty(value = "钱包加密余额")
-    private String encryptBalance;
+    private byte[] encryptBalance;
 
     /**
      * 消费总金额

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtBagService.java

@@ -92,10 +92,10 @@ public interface IPtBagService {
     Boolean rechargeByBo(PtBagBo bo);
 
     /**
-     * 账户钱包退款
+     * 账户钱包退款/直接更新余额
      *
      * @param bo 账户钱包
      * @return 是否修改成功
      */
-    Boolean refundByBo(PtBagBo bo);
+    Boolean updateBalanceByBo(PtBagBo bo);
 }

+ 23 - 8
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtBagServiceImpl.java

@@ -1,10 +1,13 @@
 package org.dromara.backstage.payment.service.impl;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import org.dromara.backstage.cardCenter.domain.PtCard;
 import org.dromara.backstage.payment.domain.PtBag;
 import org.dromara.backstage.payment.domain.bo.PtBagBo;
 import org.dromara.backstage.payment.domain.vo.PtBagVo;
@@ -75,7 +78,6 @@ public class PtBagServiceImpl implements IPtBagService {
         lqw.eq(bo.getUserId() != null, PtBag::getUserId, bo.getUserId());
         lqw.eq(StringUtils.isNotBlank(bo.getBagCode()), PtBag::getBagCode, bo.getBagCode());
         lqw.eq(bo.getBalance() != null, PtBag::getBalance, bo.getBalance());
-        lqw.eq(StringUtils.isNotBlank(bo.getEncryptBalance()), PtBag::getEncryptBalance, bo.getEncryptBalance());
         lqw.eq(bo.getConsumeTotal() != null, PtBag::getConsumeTotal, bo.getConsumeTotal());
         lqw.eq(bo.getConsumeCount() != null, PtBag::getConsumeCount, bo.getConsumeCount());
         lqw.eq(bo.getRechargeTotal() != null, PtBag::getRechargeTotal, bo.getRechargeTotal());
@@ -178,7 +180,7 @@ public class PtBagServiceImpl implements IPtBagService {
         PtBagBo bo = new PtBagBo();
         bo.setUserId(userId);
         List<PtBagVo> listVo = SpringUtils.getAopProxy(this).queryList(bo);
-        if(listVo.isEmpty()){
+        if (listVo.isEmpty()) {
             //没有钱包,初始化
             for (int i = 1; i < 7; i++) {
                 bo = new PtBagBo();
@@ -189,24 +191,37 @@ public class PtBagServiceImpl implements IPtBagService {
         }
         return true;
     }
+
     /**
      * 账户钱包充值
      *
      * @param bo 账户钱包
-     * @return 是否修改成功
+     * @return 是否充值成功
      */
     @Override
     public Boolean rechargeByBo(PtBagBo bo) {
-        return null;
+        return baseMapper.update(null, new LambdaUpdateWrapper<PtBag>()
+            .set(PtBag::getBalance, bo.getBalance())
+            .set(PtBag::getEncryptBalance, bo.getEncryptBalance())
+            .set(PtBag::getRechargeCount, bo.getRechargeTotal())
+            .set(PtBag::getRechargeTotal, bo.getRechargeTotal())
+            .eq(PtBag::getBagCode, bo.getBagCode())
+            .eq(PtBag::getUserId, bo.getUserId())) > 0;
     }
+
     /**
-     * 账户钱包退款
+     * 账户钱包退款/直接更新余额
      *
      * @param bo 账户钱包
-     * @return 是否修改成功
+     * @return 是否更新成功
      */
     @Override
-    public Boolean refundByBo(PtBagBo bo) {
-        return null;
+    public Boolean updateBalanceByBo(PtBagBo bo) {
+        return baseMapper.update(null, new LambdaUpdateWrapper<PtBag>()
+            .set(PtBag::getBalance, bo.getBalance())
+            .set(PtBag::getEncryptBalance, bo.getEncryptBalance())
+            .eq(PtBag::getBagCode, bo.getBagCode())
+            .eq(PtBag::getUserId, bo.getUserId())) > 0;
     }
+
 }

+ 49 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfConsumedetailMapper.xml

@@ -0,0 +1,49 @@
+<?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.consumption.mapper.XfConsumedetailMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfConsumedetail" id="XfConsumedetailResult">
+            <result property="consumeId"    column="consume_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="originalId"    column="original_id"    />
+            <result property="recordId"    column="record_id"    />
+            <result property="userId"    column="user_id"    />
+            <result property="userNumb"    column="user_numb"    />
+            <result property="realName"    column="real_name"    />
+            <result property="deptId"    column="dept_id"    />
+            <result property="deptName"    column="dept_name"    />
+            <result property="consumeDate"    column="consume_date"    />
+            <result property="consumeMoney"    column="consume_money"    />
+            <result property="cardNo"    column="card_no"    />
+            <result property="factoryId"    column="factory_id"    />
+            <result property="cardValue"    column="card_value"    />
+            <result property="cardCount"    column="card_count"    />
+            <result property="consumeBalance"    column="consume_balance"    />
+            <result property="termNo"    column="term_no"    />
+            <result property="termName"    column="term_name"    />
+            <result property="termRecordId"    column="term_record_id"    />
+            <result property="analysisFlag"    column="analysis_flag"    />
+            <result property="statusFlag"    column="status_flag"    />
+            <result property="operatorId"    column="operator_id"    />
+            <result property="operatorName"    column="operator_name"    />
+            <result property="accountId"    column="account_id"    />
+            <result property="accountName"    column="account_name"    />
+            <result property="roomId"    column="room_id"    />
+            <result property="roomName"    column="room_name"    />
+            <result property="bagType"    column="bag_type"    />
+            <result property="mealType"    column="meal_type"    />
+            <result property="mealName"    column="meal_name"    />
+            <result property="smsSend"    column="sms_send"    />
+            <result property="recordStatus"    column="record_status"    />
+            <result property="syncStatus"    column="sync_status"    />
+            <result property="remark"    column="remark"    />
+            <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>

+ 43 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfConsumedetailoriginalMapper.xml

@@ -0,0 +1,43 @@
+<?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.consumption.mapper.XfConsumedetailoriginalMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfConsumedetailoriginal" id="XfConsumedetailoriginalResult">
+            <result property="originalId"    column="original_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="recordId"    column="record_id"    />
+            <result property="userId"    column="user_id"    />
+            <result property="userNumb"    column="user_numb"    />
+            <result property="realName"    column="real_name"    />
+            <result property="deptId"    column="dept_id"    />
+            <result property="deptName"    column="dept_name"    />
+            <result property="consumeDate"    column="consume_date"    />
+            <result property="consumeMoney"    column="consume_money"    />
+            <result property="cardNo"    column="card_no"    />
+            <result property="factoryId"    column="factory_id"    />
+            <result property="cardValue"    column="card_value"    />
+            <result property="cardCount"    column="card_count"    />
+            <result property="consumeBalance"    column="consume_balance"    />
+            <result property="termNo"    column="term_no"    />
+            <result property="termName"    column="term_name"    />
+            <result property="termRecordId"    column="term_record_id"    />
+            <result property="anlysFlag"    column="anlys_flag"    />
+            <result property="dataFlag"    column="data_flag"    />
+            <result property="statusFlag"    column="status_flag"    />
+            <result property="digitalSign"    column="digital_sign"    />
+            <result property="waterValue"    column="water_value"    />
+            <result property="waterHistoryValue"    column="water_history_value"    />
+            <result property="waterDaySum"    column="water_day_sum"    />
+            <result property="waterErrValue"    column="water_err_value"    />
+            <result property="waterErrMoney"    column="water_err_money"    />
+            <result property="operatorId"    column="operator_id"    />
+            <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>

+ 49 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfCreditaccountMapper.xml

@@ -0,0 +1,49 @@
+<?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.consumption.mapper.XfCreditaccountMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfCreditaccount" id="XfCreditaccountResult">
+            <result property="creditId"    column="credit_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="recordId"    column="record_id"    />
+            <result property="userId"    column="user_id"    />
+            <result property="userNumb"    column="user_numb"    />
+            <result property="realName"    column="real_name"    />
+            <result property="deptId"    column="dept_id"    />
+            <result property="deptName"    column="dept_name"    />
+            <result property="termNo"    column="term_no"    />
+            <result property="termName"    column="term_name"    />
+            <result property="termRecordId"    column="term_record_id"    />
+            <result property="cardNo"    column="card_no"    />
+            <result property="cardValue"    column="card_value"    />
+            <result property="cardType"    column="card_type"    />
+            <result property="cardCount"    column="card_count"    />
+            <result property="cardTypeName"    column="card_type_name"    />
+            <result property="mainCard"    column="main_card"    />
+            <result property="bagType"    column="bag_type"    />
+            <result property="useYpe"    column="use_ype"    />
+            <result property="stationNumb"    column="station_numb"    />
+            <result property="stationName"    column="station_name"    />
+            <result property="operatorId"    column="operator_id"    />
+            <result property="operatorName"    column="operator_name"    />
+            <result property="creditTime"    column="credit_time"    />
+            <result property="creditType"    column="credit_type"    />
+            <result property="payStyle"    column="pay_style"    />
+            <result property="receiptMoney"    column="receipt_money"    />
+            <result property="auditStatus"    column="audit_status"    />
+            <result property="auditDate"    column="audit_date"    />
+            <result property="groupId"    column="group_id"    />
+            <result property="originalId"    column="original_id"    />
+            <result property="smsSend"    column="sms_send"    />
+            <result property="recordStatus"    column="record_status"    />
+            <result property="remark"    column="remark"    />
+            <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>

+ 41 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfCreditaccountbackMapper.xml

@@ -0,0 +1,41 @@
+<?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.consumption.mapper.XfCreditaccountbackMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfCreditaccountback" id="XfCreditaccountbackResult">
+            <result property="backId"    column="back_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="recordId"    column="record_id"    />
+            <result property="userId"    column="user_id"    />
+            <result property="termNo"    column="term_no"    />
+            <result property="termRecordId"    column="term_record_id"    />
+            <result property="cardNo"    column="card_no"    />
+            <result property="cardValue"    column="card_value"    />
+            <result property="mainCard"    column="main_card"    />
+            <result property="bagType"    column="bag_type"    />
+            <result property="useYpe"    column="use_ype"    />
+            <result property="stationId"    column="station_id"    />
+            <result property="operatorId"    column="operator_id"    />
+            <result property="creditTime"    column="credit_time"    />
+            <result property="creditType"    column="credit_type"    />
+            <result property="payStyle"    column="pay_style"    />
+            <result property="receiptMoney"    column="receipt_money"    />
+            <result property="creditStatus"    column="credit_status"    />
+            <result property="groupId"    column="group_id"    />
+            <result property="creditId"    column="credit_id"    />
+            <result property="originalId"    column="original_id"    />
+            <result property="smsSend"    column="sms_send"    />
+            <result property="recordStatus"    column="record_status"    />
+            <result property="anlysFlag"    column="anlys_flag"    />
+            <result property="digitalSign"    column="digital_sign"    />
+            <result property="remark"    column="remark"    />
+            <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>

+ 25 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfLimitedMapper.xml

@@ -0,0 +1,25 @@
+<?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.consumption.mapper.XfLimitedMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfLimited" id="XfLimitedResult">
+            <result property="limitedId"    column="limited_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="cardType"    column="card_type"    />
+            <result property="dailyCount"    column="daily_count"    />
+            <result property="oneCount"    column="one_count"    />
+            <result property="twoCount"    column="two_count"    />
+            <result property="threeCount"    column="three_count"    />
+            <result property="fourCount"    column="four_count"    />
+            <result property="remark"    column="remark"    />
+            <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"    />
+            <result property="status"    column="status"    />
+    </resultMap>
+</mapper>

+ 18 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfLimitedtermMapper.xml

@@ -0,0 +1,18 @@
+<?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.consumption.mapper.XfLimitedtermMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfLimitedterm" id="XfLimitedtermResult">
+            <result property="limitedTermId"    column="limited_term_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="termId"    column="term_id"    />
+            <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>

+ 25 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfQuotaMapper.xml

@@ -0,0 +1,25 @@
+<?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.consumption.mapper.XfQuotaMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfQuota" id="XfQuotaResult">
+            <result property="quotaId"    column="quota_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="cardType"    column="card_type"    />
+            <result property="dailyMoney"    column="daily_money"    />
+            <result property="oneMoney"    column="one_money"    />
+            <result property="twoMoney"    column="two_money"    />
+            <result property="threeMoney"    column="three_money"    />
+            <result property="fourMoney"    column="four_money"    />
+            <result property="remark"    column="remark"    />
+            <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"    />
+            <result property="status"    column="status"    />
+    </resultMap>
+</mapper>

+ 18 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfQuotatermMapper.xml

@@ -0,0 +1,18 @@
+<?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.consumption.mapper.XfQuotatermMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfQuotaterm" id="XfQuotatermResult">
+            <result property="quotaTermId"    column="quota_term_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="termId"    column="term_id"    />
+            <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>

+ 30 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfTermtotalMapper.xml

@@ -0,0 +1,30 @@
+<?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.consumption.mapper.XfTermtotalMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfTermtotal" id="XfTermtotalResult">
+            <result property="totalId"    column="total_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="termNo"    column="term_no"    />
+            <result property="termName"    column="term_name"    />
+            <result property="roomId"    column="room_id"    />
+            <result property="roomName"    column="room_name"    />
+            <result property="accountId"    column="account_id"    />
+            <result property="accountName"    column="account_name"    />
+            <result property="dateDay"    column="date_day"    />
+            <result property="mealType"    column="meal_type"    />
+            <result property="mealAmount"    column="meal_amount"    />
+            <result property="mealCount"    column="meal_count"    />
+            <result property="useYpe"    column="use_ype"    />
+            <result property="errFillCount"    column="err_fill_count"    />
+            <result property="errFillMoney"    column="err_fill_money"    />
+            <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>

+ 26 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/consumption/XfUsertotalMapper.xml

@@ -0,0 +1,26 @@
+<?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.consumption.mapper.XfUsertotalMapper">
+
+    <resultMap type="org.dromara.backstage.consumption.domain.XfUsertotal" id="XfUsertotalResult">
+            <result property="totalId"    column="total_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="userId"    column="user_id"    />
+            <result property="userNumb"    column="user_numb"    />
+            <result property="realName"    column="real_name"    />
+            <result property="deptName"    column="dept_name"    />
+            <result property="cardNo"    column="card_no"    />
+            <result property="dateDay"    column="date_day"    />
+            <result property="useYpe"    column="use_ype"    />
+            <result property="creditMoney"    column="credit_money"    />
+            <result property="consumeMoney"    column="consume_money"    />
+            <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>

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRegisterinfoController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.vo.SysRegisterinfoVo;
+import org.dromara.system.domain.bo.SysRegisterinfoBo;
+import org.dromara.system.service.ISysRegisterinfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 注册信息
+ * 前端访问路由地址为:/system/sysRegisterinfo
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/sysRegisterinfo")
+public class SysRegisterinfoController extends BaseController {
+
+    private final ISysRegisterinfoService sysRegisterinfoService;
+
+    /**
+     * 查询注册信息列表
+     */
+    @SaCheckPermission("system:sysRegisterinfo:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysRegisterinfoVo> list(SysRegisterinfoBo bo, PageQuery pageQuery) {
+        return sysRegisterinfoService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出注册信息列表
+     */
+    @SaCheckPermission("system:sysRegisterinfo:export")
+    @Log(title = "注册信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysRegisterinfoBo bo, HttpServletResponse response) {
+        List<SysRegisterinfoVo> list = sysRegisterinfoService.queryList(bo);
+        ExcelUtil.exportExcel(list, "注册信息", SysRegisterinfoVo.class, response);
+    }
+
+    /**
+     * 获取注册信息详细信息
+     *
+     * @param registerId 主键
+     */
+    @SaCheckPermission("system:sysRegisterinfo:query")
+    @GetMapping("/{registerId}")
+    public R<SysRegisterinfoVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long registerId) {
+        return R.ok(sysRegisterinfoService.queryById(registerId));
+    }
+
+    /**
+     * 新增注册信息
+     */
+    @SaCheckPermission("system:sysRegisterinfo:add")
+    @Log(title = "注册信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysRegisterinfoBo bo) {
+        return toAjax(sysRegisterinfoService.insertByBo(bo));
+    }
+
+    /**
+     * 修改注册信息
+     */
+    @SaCheckPermission("system:sysRegisterinfo:edit")
+    @Log(title = "注册信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysRegisterinfoBo bo) {
+        return toAjax(sysRegisterinfoService.updateByBo(bo));
+    }
+
+    /**
+     * 删除注册信息
+     *
+     * @param registerIds 主键串
+     */
+    @SaCheckPermission("system:sysRegisterinfo:remove")
+    @Log(title = "注册信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{registerIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] registerIds) {
+        return toAjax(sysRegisterinfoService.deleteWithValidByIds(List.of(registerIds), true));
+    }
+}

+ 66 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRegisterinfo.java

@@ -0,0 +1,66 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 注册信息对象 t_sys_registerInfo
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_sys_registerInfo")
+public class SysRegisterinfo extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 注册Id,主键
+     */
+    @TableId(value = "register_id")
+    private Long registerId;
+
+    /**
+     * 客户Id
+     */
+    private String customerId;
+
+    /**
+     * 客户公钥(使用经销商私钥对客户公钥进行RSA加密后的密文)
+     */
+    private String customerPubKey;
+
+    /**
+     * 客户私钥??
+     */
+    private String customerPriKey;
+
+    /**
+     * 经销商编号
+     */
+    private String dealerNo;
+
+    /**
+     * 经销商公钥(使用经销商编号对公钥进行3DES加密后的密文)
+     */
+    private String dealerPubKey;
+
+    /**
+     * 注册信息
+     */
+    private String registerInfo;
+
+    /**
+     * 随机序列号
+     */
+    private String randomSn;
+
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRegisterinfoBo.java

@@ -0,0 +1,72 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SysRegisterinfo;
+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.*;
+
+/**
+ * 注册信息业务对象 t_sys_registerInfo
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SysRegisterinfo.class, reverseConvertGenerate = false)
+public class SysRegisterinfoBo extends BaseEntity {
+
+    /**
+     * 注册Id,主键
+     */
+    @NotNull(message = "注册Id,主键不能为空", groups = { EditGroup.class })
+    private Long registerId;
+
+    /**
+     * 客户Id
+     */
+    @NotBlank(message = "客户Id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String customerId;
+
+    /**
+     * 客户公钥(使用经销商私钥对客户公钥进行RSA加密后的密文)
+     */
+    @NotBlank(message = "客户公钥(使用经销商私钥对客户公钥进行RSA加密后的密文)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String customerPubKey;
+
+    /**
+     * 客户私钥??
+     */
+    @NotBlank(message = "客户私钥??不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String customerPriKey;
+
+    /**
+     * 经销商编号
+     */
+    @NotBlank(message = "经销商编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String dealerNo;
+
+    /**
+     * 经销商公钥(使用经销商编号对公钥进行3DES加密后的密文)
+     */
+    @NotBlank(message = "经销商公钥(使用经销商编号对公钥进行3DES加密后的密文)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String dealerPubKey;
+
+    /**
+     * 注册信息
+     */
+    @NotBlank(message = "注册信息不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String registerInfo;
+
+    /**
+     * 随机序列号
+     */
+    @NotBlank(message = "随机序列号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String randomSn;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRegisterinfoVo.java

@@ -0,0 +1,82 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.SysRegisterinfo;
+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_sys_registerInfo
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SysRegisterinfo.class)
+public class SysRegisterinfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 注册Id,主键
+     */
+    @ExcelProperty(value = "注册Id,主键")
+    private Long registerId;
+
+    /**
+     * 客户Id
+     */
+    @ExcelProperty(value = "客户Id")
+    private String customerId;
+
+    /**
+     * 客户公钥(使用经销商私钥对客户公钥进行RSA加密后的密文)
+     */
+    @ExcelProperty(value = "客户公钥", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "使=用经销商私钥对客户公钥进行RSA加密后的密文")
+    private String customerPubKey;
+
+    /**
+     * 客户私钥??
+     */
+    @ExcelProperty(value = "客户私钥??")
+    private String customerPriKey;
+
+    /**
+     * 经销商编号
+     */
+    @ExcelProperty(value = "经销商编号")
+    private String dealerNo;
+
+    /**
+     * 经销商公钥(使用经销商编号对公钥进行3DES加密后的密文)
+     */
+    @ExcelProperty(value = "经销商公钥", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "使=用经销商编号对公钥进行3DES加密后的密文")
+    private String dealerPubKey;
+
+    /**
+     * 注册信息
+     */
+    @ExcelProperty(value = "注册信息")
+    private String registerInfo;
+
+    /**
+     * 随机序列号
+     */
+    @ExcelProperty(value = "随机序列号")
+    private String randomSn;
+
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRegisterinfoMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SysRegisterinfo;
+import org.dromara.system.domain.vo.SysRegisterinfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 注册信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+public interface SysRegisterinfoMapper extends BaseMapperPlus<SysRegisterinfo, SysRegisterinfoVo> {
+
+}

+ 69 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysRegisterinfoService.java

@@ -0,0 +1,69 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SysRegisterinfo;
+import org.dromara.system.domain.vo.SysRegisterinfoVo;
+import org.dromara.system.domain.bo.SysRegisterinfoBo;
+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 LionLi
+ * @date 2024-08-15
+ */
+public interface ISysRegisterinfoService {
+
+    /**
+     * 查询注册信息
+     *
+     * @param registerId 主键
+     * @return 注册信息
+     */
+    SysRegisterinfoVo queryById(Long registerId);
+
+    /**
+     * 分页查询注册信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 注册信息分页列表
+     */
+    TableDataInfo<SysRegisterinfoVo> queryPageList(SysRegisterinfoBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的注册信息列表
+     *
+     * @param bo 查询条件
+     * @return 注册信息列表
+     */
+    List<SysRegisterinfoVo> queryList(SysRegisterinfoBo bo);
+
+    /**
+     * 新增注册信息
+     *
+     * @param bo 注册信息
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(SysRegisterinfoBo bo);
+
+    /**
+     * 修改注册信息
+     *
+     * @param bo 注册信息
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(SysRegisterinfoBo bo);
+
+    /**
+     * 校验并批量删除注册信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 135 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRegisterinfoServiceImpl.java

@@ -0,0 +1,135 @@
+package org.dromara.system.service.impl;
+
+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.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SysRegisterinfoBo;
+import org.dromara.system.domain.vo.SysRegisterinfoVo;
+import org.dromara.system.domain.SysRegisterinfo;
+import org.dromara.system.mapper.SysRegisterinfoMapper;
+import org.dromara.system.service.ISysRegisterinfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 注册信息Service业务层处理
+ *
+ * @author LionLi
+ * @date 2024-08-15
+ */
+@RequiredArgsConstructor
+@Service
+public class SysRegisterinfoServiceImpl implements ISysRegisterinfoService {
+
+    private final SysRegisterinfoMapper baseMapper;
+
+    /**
+     * 查询注册信息
+     *
+     * @param registerId 主键
+     * @return 注册信息
+     */
+    @Override
+    public SysRegisterinfoVo queryById(Long registerId){
+        return baseMapper.selectVoById(registerId);
+    }
+
+    /**
+     * 分页查询注册信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 注册信息分页列表
+     */
+    @Override
+    public TableDataInfo<SysRegisterinfoVo> queryPageList(SysRegisterinfoBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SysRegisterinfo> lqw = buildQueryWrapper(bo);
+        Page<SysRegisterinfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的注册信息列表
+     *
+     * @param bo 查询条件
+     * @return 注册信息列表
+     */
+    @Override
+    public List<SysRegisterinfoVo> queryList(SysRegisterinfoBo bo) {
+        LambdaQueryWrapper<SysRegisterinfo> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SysRegisterinfo> buildQueryWrapper(SysRegisterinfoBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SysRegisterinfo> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCustomerId()), SysRegisterinfo::getCustomerId, bo.getCustomerId());
+        lqw.eq(StringUtils.isNotBlank(bo.getCustomerPubKey()), SysRegisterinfo::getCustomerPubKey, bo.getCustomerPubKey());
+        lqw.eq(StringUtils.isNotBlank(bo.getCustomerPriKey()), SysRegisterinfo::getCustomerPriKey, bo.getCustomerPriKey());
+        lqw.eq(StringUtils.isNotBlank(bo.getDealerNo()), SysRegisterinfo::getDealerNo, bo.getDealerNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getDealerPubKey()), SysRegisterinfo::getDealerPubKey, bo.getDealerPubKey());
+        lqw.eq(StringUtils.isNotBlank(bo.getRegisterInfo()), SysRegisterinfo::getRegisterInfo, bo.getRegisterInfo());
+        lqw.eq(StringUtils.isNotBlank(bo.getRandomSn()), SysRegisterinfo::getRandomSn, bo.getRandomSn());
+        return lqw;
+    }
+
+    /**
+     * 新增注册信息
+     *
+     * @param bo 注册信息
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(SysRegisterinfoBo bo) {
+        SysRegisterinfo add = MapstructUtils.convert(bo, SysRegisterinfo.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setRegisterId(add.getRegisterId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改注册信息
+     *
+     * @param bo 注册信息
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(SysRegisterinfoBo bo) {
+        SysRegisterinfo update = MapstructUtils.convert(bo, SysRegisterinfo.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SysRegisterinfo entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除注册信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRegisterinfoMapper.xml

@@ -0,0 +1,23 @@
+<?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.system.mapper.SysRegisterinfoMapper">
+
+    <resultMap type="org.dromara.system.domain.SysRegisterinfo" id="SysRegisterinfoResult">
+            <result property="registerId"    column="register_id"    />
+            <result property="tenantId"    column="tenant_id"    />
+            <result property="customerId"    column="customer_id"    />
+            <result property="customerPubKey"    column="customer_pub_key"    />
+            <result property="customerPriKey"    column="customer_pri_key"    />
+            <result property="dealerNo"    column="dealer_no"    />
+            <result property="dealerPubKey"    column="dealer_pub_key"    />
+            <result property="registerInfo"    column="register_info"    />
+            <result property="randomSn"    column="random_sn"    />
+            <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>