Przeglądaj źródła

红包消耗统计

luolinsong 1 tydzień temu
rodzic
commit
f61d6b1c44

+ 48 - 0
fs-admin/src/main/java/com/fs/course/controller/FsCourseRedPacketLogController.java

@@ -1,10 +1,14 @@
 package com.fs.course.controller;
 
+import java.math.BigDecimal;
 import java.util.*;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
+import com.fs.common.constant.HttpStatus;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.model.LoginUser;
+import com.fs.common.core.page.PageDomain;
+import com.fs.common.core.page.TableSupport;
 import com.fs.common.utils.ServletUtils;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.domain.FsUserCoursePeriod;
@@ -238,4 +242,48 @@ public class FsCourseRedPacketLogController extends BaseController
         List<OptionsVO> optionsVOS = fsUserCourseVideoMapper.selectFsUserCourseVodeAllList(id);
         return R.ok().put("list", optionsVOS);
     }
+
+
+    /**
+     * 红包消耗统计
+     * @param fsCourseRedPacketLog
+     * @return
+     */
+    @GetMapping("/getReadPackageTotal")
+    public TableDataInfo getReadPackageTotal(FsCourseRedPacketLog fsCourseRedPacketLog) {
+
+        List<FsCourseRedPacketLogListPVO> list = fsCourseRedPacketLogService.getReadPackageTotal(fsCourseRedPacketLog);
+        FsCourseRedPacketLogListPVO fsCourseRedPacketLogListPVO = new FsCourseRedPacketLogListPVO();
+        fsCourseRedPacketLogListPVO.setCompanyName("合计");
+        BigDecimal totalAmount = list.stream()
+                .map(item -> item.getAmount())
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        fsCourseRedPacketLogListPVO.setAmount(totalAmount);
+        // 获取分页参数
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        int total = list.size();
+
+        if (pageNum != null && pageSize != null) {
+            int fromIndex = (pageNum - 1) * pageSize;
+            int toIndex = Math.min(fromIndex + pageSize, total);
+            // 确保索引不越界
+            if (fromIndex < total) {
+                list = list.subList(fromIndex, toIndex);
+            } else {
+                list = new ArrayList<>(); // 返回空列表
+            }
+        }
+        list.add(fsCourseRedPacketLogListPVO); // 将合计行添加到列表末尾
+        // 构造返回结果
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+        return rspData;
+    }
+
 }

+ 16 - 0
fs-company/src/main/java/com/fs/company/controller/course/FsCourseRedPacketLogController.java

@@ -303,4 +303,20 @@ public class FsCourseRedPacketLogController extends BaseController
         List<OptionsVO> optionsVOS = fsUserCourseVideoMapper.selectFsUserCourseVodeAllList(id);
         return R.ok().put("list", optionsVOS);
     }
+
+
+    /**
+     * 红包消耗统计
+     * @param fsCourseRedPacketLog
+     * @return
+     */
+    @GetMapping("/getReadPackageTotal")
+    public TableDataInfo getReadPackageTotal(FsCourseRedPacketLog fsCourseRedPacketLog) {
+        startPage();
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long companyId = loginUser.getCompany().getCompanyId();
+        fsCourseRedPacketLog.setCompanyId(companyId);
+        List<FsCourseRedPacketLogListPVO> list = fsCourseRedPacketLogService.getReadPackageTotal(fsCourseRedPacketLog);
+        return getDataTable(list);
+    }
 }

+ 3 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseRedPacketLogMapper.java

@@ -218,4 +218,7 @@ public interface FsCourseRedPacketLogMapper
             "ORDER BY p.period_id DESC ",
             "</script>"})
     List<OptionsVO> getPeriodListLikeName(@Param("periodName") String periodName, @Param("courseId") Long courseId, @Param("companyId") Long companyId);
+
+
+    List<FsCourseRedPacketLogListPVO> getReadPackageTotal(FsCourseRedPacketLog fsCourseRedPacketLog);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseRedPacketLogService.java

@@ -100,4 +100,6 @@ public interface IFsCourseRedPacketLogService
     List<OptionsVO> getPeriodListLikeName(String periodName, Long courseId, Long companyId);
 
     R getBillsByTransferBillNo(String batchId);
+
+    List<FsCourseRedPacketLogListPVO> getReadPackageTotal(FsCourseRedPacketLog fsCourseRedPacketLog);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseRedPacketLogServiceImpl.java

@@ -560,4 +560,10 @@ public class FsCourseRedPacketLogServiceImpl implements IFsCourseRedPacketLogSer
         }
 
     }
+
+    @Override
+    public List<FsCourseRedPacketLogListPVO> getReadPackageTotal(FsCourseRedPacketLog fsCourseRedPacketLog) {
+        List<FsCourseRedPacketLogListPVO> list = fsCourseRedPacketLogMapper.getReadPackageTotal(fsCourseRedPacketLog);
+        return list;
+    }
 }

+ 11 - 0
fs-service/src/main/resources/mapper/course/FsCourseRedPacketLogMapper.xml

@@ -216,4 +216,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectFsCourseRedPacketLogVo"/> where status != 1 and create_time &gt;= #{maps.startTime} and create_time &lt;= #{maps.endTime}
 
     </select>
+    <select id="getReadPackageTotal" resultType="com.fs.course.vo.FsCourseRedPacketLogListPVO">
+        select c.company_name,l.company_id,sum(l.amount) as amount,l.create_time as createTime from fs_course_red_packet_log l
+        inner join company  c on c.company_id = l.company_id
+        WHERE  l.create_time &gt;= #{beginTime}
+        AND l.create_time &lt;#{endTime}
+        and l.status =1
+        <if test="companyId != null and  companyId != '' ">
+            and l.company_id = #{companyId}
+        </if>
+        GROUP BY l.company_id
+    </select>
 </mapper>