Browse Source

feature: 卡务中心->卡务操作 充值/退未款后台业务逻辑

luoyb 1 year ago
parent
commit
430d86c90c

+ 5 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/XfUserTotal.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
+import java.math.BigDecimal;
 
 /**
  * 个人与消费与充值统计对象 t_xf_userTotal
@@ -16,7 +17,7 @@ import java.io.Serial;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("t_xf_userTotal")
-public class XfUsertotal extends TenantEntity {
+public class XfUserTotal extends TenantEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -60,17 +61,17 @@ public class XfUsertotal extends TenantEntity {
     /**
      * 使用类型,100-消费系统
      */
-    private Long useYpe;
+    private Integer useType;
 
     /**
      * 充值金额
      */
-    private Long creditMoney;
+    private BigDecimal creditMoney;
 
     /**
      * 消费金额
      */
-    private Long consumeMoney;
+    private BigDecimal consumeMoney;
 
     /**
      * 删除标志(0-未删除 2-已删除)

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

@@ -1,82 +0,0 @@
-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;
-
-
-}

+ 8 - 6
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/bo/XfUserTotalBo.java

@@ -1,6 +1,6 @@
 package org.dromara.backstage.consumption.domain.bo;
 
-import org.dromara.backstage.consumption.domain.XfUsertotal;
+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;
@@ -9,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
 
+import java.math.BigDecimal;
+
 /**
  * 个人与消费与充值统计业务对象 t_xf_userTotal
  *
@@ -17,8 +19,8 @@ import jakarta.validation.constraints.*;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = XfUsertotal.class, reverseConvertGenerate = false)
-public class XfUsertotalBo extends BaseEntity {
+@AutoMapper(target = XfUserTotal.class, reverseConvertGenerate = false)
+public class XfUserTotalBo extends BaseEntity {
 
     /**
      * 汇总Id,主键
@@ -63,17 +65,17 @@ public class XfUsertotalBo extends BaseEntity {
      * 使用类型,100-消费系统
      */
     @NotNull(message = "使用类型,100-消费系统不能为空", groups = { AddGroup.class, EditGroup.class })
-    private Long useYpe;
+    private Integer useType;
 
     /**
      * 充值金额
      */
-    private Long creditMoney;
+    private BigDecimal creditMoney;
 
     /**
      * 消费金额
      */
-    private Long consumeMoney;
+    private BigDecimal consumeMoney;
 
 
 }

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

@@ -1,79 +0,0 @@
-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;
-
-
-}

+ 7 - 10
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/domain/vo/XfUserTotalVo.java

@@ -1,17 +1,14 @@
 package org.dromara.backstage.consumption.domain.vo;
 
-import org.dromara.backstage.consumption.domain.XfUsertotal;
+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;
-
+import java.math.BigDecimal;
 
 
 /**
@@ -22,8 +19,8 @@ import java.util.Date;
  */
 @Data
 @ExcelIgnoreUnannotated
-@AutoMapper(target = XfUsertotal.class)
-public class XfUsertotalVo implements Serializable {
+@AutoMapper(target = XfUserTotal.class)
+public class XfUserTotalVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -74,19 +71,19 @@ public class XfUsertotalVo implements Serializable {
      * 使用类型,100-消费系统
      */
     @ExcelProperty(value = "使用类型,100-消费系统")
-    private Long useYpe;
+    private Integer useType;
 
     /**
      * 充值金额
      */
     @ExcelProperty(value = "充值金额")
-    private Long creditMoney;
+    private BigDecimal creditMoney;
 
     /**
      * 消费金额
      */
     @ExcelProperty(value = "消费金额")
-    private Long consumeMoney;
+    private BigDecimal consumeMoney;
 
 
 }

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

@@ -1,92 +0,0 @@
-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;
-
-
-}

+ 27 - 9
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/IXfUserTotalService.java

@@ -1,11 +1,12 @@
 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.backstage.consumption.domain.XfUserTotal;
+import org.dromara.backstage.consumption.domain.bo.XfUserTotalBo;
+import org.dromara.backstage.consumption.domain.vo.XfUserTotalVo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
 
@@ -15,7 +16,7 @@ import java.util.List;
  * @author LionLi
  * @date 2024-08-15
  */
-public interface IXfUsertotalService {
+public interface IXfUserTotalService {
 
     /**
      * 查询个人与消费与充值统计
@@ -23,7 +24,7 @@ public interface IXfUsertotalService {
      * @param totalId 主键
      * @return 个人与消费与充值统计
      */
-    XfUsertotalVo queryById(String totalId);
+    XfUserTotalVo queryById(String totalId);
 
     /**
      * 分页查询个人与消费与充值统计列表
@@ -32,7 +33,7 @@ public interface IXfUsertotalService {
      * @param pageQuery 分页参数
      * @return 个人与消费与充值统计分页列表
      */
-    TableDataInfo<XfUsertotalVo> queryPageList(XfUsertotalBo bo, PageQuery pageQuery);
+    TableDataInfo<XfUserTotalVo> queryPageList(XfUserTotalBo bo, PageQuery pageQuery);
 
     /**
      * 查询符合条件的个人与消费与充值统计列表
@@ -40,7 +41,7 @@ public interface IXfUsertotalService {
      * @param bo 查询条件
      * @return 个人与消费与充值统计列表
      */
-    List<XfUsertotalVo> queryList(XfUsertotalBo bo);
+    List<XfUserTotalVo> queryList(XfUserTotalBo bo);
 
     /**
      * 新增个人与消费与充值统计
@@ -48,7 +49,7 @@ public interface IXfUsertotalService {
      * @param bo 个人与消费与充值统计
      * @return 是否新增成功
      */
-    Boolean insertByBo(XfUsertotalBo bo);
+    Boolean insertByBo(XfUserTotalBo bo);
 
     /**
      * 修改个人与消费与充值统计
@@ -56,7 +57,7 @@ public interface IXfUsertotalService {
      * @param bo 个人与消费与充值统计
      * @return 是否修改成功
      */
-    Boolean updateByBo(XfUsertotalBo bo);
+    Boolean updateByBo(XfUserTotalBo bo);
 
     /**
      * 校验并批量删除个人与消费与充值统计信息
@@ -66,4 +67,21 @@ public interface IXfUsertotalService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    /**
+     * 更新日统计表中的充值/退款数据
+     *
+     * @param update      需要更新的实体
+     * @param creditValue 充值/退款金额
+     * @return 更新后的日统计表
+     */
+    XfUserTotalVo updateTotalCreditValue(XfUserTotal update, BigDecimal creditValue);
+
+    /**
+     * 更新/新增人员日统计表
+     *
+     * @param bo      日统计表实体
+     * @return 更新后的日统计表
+     */
+    XfUserTotalVo createOrUpdateUserTotal(XfUserTotalBo bo);
 }

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

@@ -1,69 +0,0 @@
-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);
-}

+ 84 - 35
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/service/impl/XfUserTotalServiceImpl.java

@@ -1,24 +1,27 @@
 package org.dromara.backstage.consumption.service.impl;
 
+import cn.hutool.core.util.ObjUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
-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.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.domain.XfUserTotal;
+import org.dromara.backstage.consumption.domain.bo.XfUserTotalBo;
+import org.dromara.backstage.consumption.domain.vo.XfUserTotalVo;
 import org.dromara.backstage.consumption.mapper.XfUsertotalMapper;
-import org.dromara.backstage.consumption.service.IXfUsertotalService;
+import org.dromara.backstage.consumption.service.IXfUserTotalService;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
 
 /**
  * 个人与消费与充值统计Service业务层处理
@@ -29,7 +32,7 @@ import java.util.Collection;
 @RequiredArgsConstructor
 @Service
 @DS("storage")
-public class XfUsertotalServiceImpl implements IXfUsertotalService {
+public class XfUserTotalServiceImpl implements IXfUserTotalService {
 
     private final XfUsertotalMapper baseMapper;
 
@@ -40,7 +43,7 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      * @return 个人与消费与充值统计
      */
     @Override
-    public XfUsertotalVo queryById(String totalId){
+    public XfUserTotalVo queryById(String totalId) {
         return baseMapper.selectVoById(totalId);
     }
 
@@ -52,9 +55,9 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      * @return 个人与消费与充值统计分页列表
      */
     @Override
-    public TableDataInfo<XfUsertotalVo> queryPageList(XfUsertotalBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<XfUsertotal> lqw = buildQueryWrapper(bo);
-        Page<XfUsertotalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+    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);
     }
 
@@ -65,23 +68,23 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      * @return 个人与消费与充值统计列表
      */
     @Override
-    public List<XfUsertotalVo> queryList(XfUsertotalBo bo) {
-        LambdaQueryWrapper<XfUsertotal> lqw = buildQueryWrapper(bo);
+    public List<XfUserTotalVo> queryList(XfUserTotalBo bo) {
+        LambdaQueryWrapper<XfUserTotal> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
     }
 
-    private LambdaQueryWrapper<XfUsertotal> buildQueryWrapper(XfUsertotalBo bo) {
+    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());
+        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.getUseType() != null, XfUserTotal::getUseType, bo.getUseType());
+        lqw.eq(bo.getCreditMoney() != null, XfUserTotal::getCreditMoney, bo.getCreditMoney());
+        lqw.eq(bo.getConsumeMoney() != null, XfUserTotal::getConsumeMoney, bo.getConsumeMoney());
         return lqw;
     }
 
@@ -92,8 +95,8 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      * @return 是否新增成功
      */
     @Override
-    public Boolean insertByBo(XfUsertotalBo bo) {
-        XfUsertotal add = MapstructUtils.convert(bo, XfUsertotal.class);
+    public Boolean insertByBo(XfUserTotalBo bo) {
+        XfUserTotal add = MapstructUtils.convert(bo, XfUserTotal.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -109,8 +112,8 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      * @return 是否修改成功
      */
     @Override
-    public Boolean updateByBo(XfUsertotalBo bo) {
-        XfUsertotal update = MapstructUtils.convert(bo, XfUsertotal.class);
+    public Boolean updateByBo(XfUserTotalBo bo) {
+        XfUserTotal update = MapstructUtils.convert(bo, XfUserTotal.class);
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;
     }
@@ -118,7 +121,7 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(XfUsertotal entity){
+    private void validEntityBeforeSave(XfUserTotal entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -131,9 +134,55 @@ public class XfUsertotalServiceImpl implements IXfUsertotalService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    /**
+     * 更新/新增人员日统计表
+     *
+     * @param bo 日统计表实体
+     * @return 更新后的日统计表
+     */
+    @Override
+    public XfUserTotalVo createOrUpdateUserTotal(XfUserTotalBo bo) {
+        XfUserTotal entity = baseMapper.selectOne(new LambdaQueryWrapper<XfUserTotal>()
+            .eq(XfUserTotal::getUserId, bo.getUserId())
+            .eq(XfUserTotal::getCardNo, bo.getCardNo())
+            .eq(XfUserTotal::getUseType, bo.getUseType())
+            .eq(XfUserTotal::getDateDay, bo.getDateDay()));
+
+        if (ObjUtil.isEmpty(entity)) {
+            entity = MapstructUtils.convert(bo, XfUserTotal.class);
+            boolean flag = baseMapper.insert(entity) > 0;
+            if (flag) {
+                if (entity != null) {
+                    return baseMapper.selectVoById(entity.getTotalId());
+                }
+            }
+        } else {
+            return updateTotalCreditValue(entity, bo.getCreditMoney());
+        }
+        return null;
+    }
+
+    /**
+     * 更新日统计表中的充值/退款数据
+     *
+     * @param update      需要更新的实体
+     * @param creditValue 充值/退款金额
+     * @return 更新后的日统计表
+     */
+    @Override
+    public XfUserTotalVo updateTotalCreditValue(XfUserTotal update, BigDecimal creditValue) {
+        boolean result = baseMapper.update(null, new LambdaUpdateWrapper<XfUserTotal>()
+            .set(XfUserTotal::getCreditMoney, update.getCreditMoney().add(creditValue))
+            .eq(XfUserTotal::getTotalId, update.getTotalId())) > 0;
+        if (result) {
+            return queryById(update.getTotalId());
+        }
+        return null;
+    }
 }

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

@@ -1,139 +0,0 @@
-package org.dromara.backstage.consumption.service.impl;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-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
-@DS("storage")
-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;
-    }
-}