Kaynağa Gözat

feat(app): 添加店铺资金总览功能

- 在 AppProfitSharingInfo 实体中新增 cumulative 字段
- IStatisticsService 接口新增分页查询店铺资金总览方法
- StatisticsController 控制器新增店铺资金总览接口
- StatisticsMapper 映射器新增店铺资金总览 SQL 查询
- StatisticsMapper.xml 配置文件实现店铺资金总览查询语句
- StatisticsServiceImpl 服务实现类实现新增的查询方法
- WeChatPayService 中计算并设置累计分账金额
SheepHy 4 hafta önce
ebeveyn
işleme
c30b506d1e

+ 9 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/WeChatPayService.java

@@ -318,6 +318,15 @@ public class WeChatPayService {
                 SHAppProfitSharingInfo.setMchName(depart.getMchName());
                 SHAppProfitSharingInfo.setType(1);
                 SHAppProfitSharingInfo.setRatio(SH);
+                List<AppProfitSharingInfo> list = appProfitSharingInfoMapper.selectList(
+                        Wrappers.<AppProfitSharingInfo>lambdaQuery()
+                                .eq(AppProfitSharingInfo::getOrgCode, orgCode)
+                );
+                int cumulativeSum = 0;
+                for (AppProfitSharingInfo item : list) {
+                    cumulativeSum = cumulativeSum + item.getPreAmount();
+                }
+                SHAppProfitSharingInfo.setCumulative(cumulativeSum);
                 SHAppProfitSharingInfo.setPreAmount(RatiosUtil.amount_fee(allocate[0]));
                 appProfitSharingInfoMapper.insert(SHAppProfitSharingInfo);
 

+ 31 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/StatisticsController.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.system.app.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -7,6 +8,7 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.system.app.service.IStatisticsService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -70,4 +72,33 @@ public class StatisticsController {
     public Result<List<Map<String, Object>>> findMonthSaleTrend(){
         return Result.ok(statisticsService.findMonthSaleTrend());
     }
+
+    /**
+     * <p>分页查询店铺资金总览</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    @GetMapping("/findShopAccountOverview")
+    @Operation(summary = "分页查询店铺资金总览-平台")
+    public Result<List<Map<String, Object>>> findShopAccountOverview(@RequestParam(name="pageNo",required=false) Integer pageNo,
+                                                                     @RequestParam(name="pageSize",required=false) Integer pageSize,
+                                                                     @RequestParam(name="name",required=false) String name){
+        Page<Map<String, Object>> page = new Page<>(pageNo, pageSize);
+        return Result.ok(statisticsService.findShopAccountOverview(page,name));
+    }
+
+    /**
+     * <p>查询店铺资金总览-门店统计</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    @GetMapping("/findShopAccountOverviewDept")
+    @Operation(summary = "查询店铺资金总览-门店统计")
+    public Result<List<Map<String, Object>>> findShopAccountOverviewDept(){
+        return Result.ok(statisticsService.findShopAccountOverviewDept());
+    }
 }

+ 1 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppProfitSharingInfo.java

@@ -75,6 +75,7 @@ public class AppProfitSharingInfo implements Serializable {
      */
     @Schema(description = "分账金额(分)")
     private Integer preAmount;
+    private Integer cumulative;
 
     /**
      * 实际分账金额(分)

+ 19 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/StatisticsMapper.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.system.app.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 
@@ -44,4 +45,22 @@ public interface StatisticsMapper {
      *
      */
     List<Map<String, Object>> findMonthSaleTrend(@Param("orgCode")String orgCode);
+
+    /**
+     * <p>分页查询店铺资金总览</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    List<Map<String, Object>> findShopAccountOverview(@Param("page")Page<Map<String, Object>> page, @Param("name")String name);
+
+    /**
+     * <p>查询店铺资金总览-门店统计</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    List<Map<String, Object>> findShopAccountOverviewDept(@Param("orgCode")String name);
 }

+ 46 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/StatisticsMapper.xml

@@ -253,4 +253,50 @@
         LEFT JOIN sales_data sd ON dr.date = sd.sales_date
         ORDER BY dr.date ASC
     </select>
+
+    <select id="findShopAccountOverview" resultType="map">
+        SELECT
+            a.id,
+            a.name,
+            a.cover,
+            COALESCE(settled.to_be_settled, 0) AS to_be_settled,
+            COALESCE(settled.received, 0) AS received,
+            settled.update_time AS updateTime
+        FROM nm_site a
+                 LEFT JOIN (
+            SELECT
+                o.org_code,
+                SUM(CASE WHEN o.profit_sharing_status = 0 THEN b.pre_amount ELSE 0 END) / 100 AS toBeSettled,
+                SUM(CASE WHEN o.profit_sharing_status = 1 THEN b.pre_amount ELSE 0 END) / 100 AS received,
+                MAX(b.create_time) AS update_time
+            FROM nm_order o
+                     LEFT JOIN nm_profit_sharing_info b ON o.org_code = b.org_code
+            WHERE o.profit_sharing_status IN (0, 1)
+            GROUP BY o.org_code
+        ) settled ON a.org_code = settled.org_code
+        WHERE 1=1
+        <if test="name != null and name != ''">
+            AND a.name LIKE CONCAT('%',#{name}, '%')
+        </if>
+    </select>
+
+    <select id="findShopAccountOverviewDept" resultType="map">
+        SELECT
+            COALESCE(settled.to_be_settled, 0) AS toBeSettled,
+            COALESCE(settled.to_be_settled, 0) AS available,
+            COALESCE(settled.received, 0) AS received
+        FROM nm_site a
+                 LEFT JOIN (
+            SELECT
+                o.org_code,
+                SUM(CASE WHEN o.profit_sharing_status = 0 THEN b.pre_amount ELSE 0 END) / 100 AS to_be_settled,
+                SUM(CASE WHEN o.profit_sharing_status = 1 THEN b.pre_amount ELSE 0 END) / 100 AS received,
+                MAX(b.create_time) AS update_time
+            FROM nm_order o
+                     LEFT JOIN nm_profit_sharing_info b ON o.org_code = b.org_code
+            WHERE o.profit_sharing_status IN (0, 1)
+            GROUP BY o.org_code
+        ) settled ON a.org_code = settled.org_code
+        WHERE a.org_code = #{orgCode}
+    </select>
 </mapper>

+ 20 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IStatisticsService.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.system.app.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 import java.util.List;
 import java.util.Map;
 
@@ -40,4 +42,22 @@ public interface IStatisticsService {
      */
     List<Map<String, Object>> findMonthSaleTrend();
 
+    /**
+     * <p>分页查询店铺资金总览</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    List<Map<String, Object>> findShopAccountOverview(Page<Map<String, Object>> page,String name);
+
+    /**
+     * <p>查询店铺资金总览-门店统计</p>
+     * @author SheepHy
+     * @param 参数描述,参数为类则包含{@link Object}
+     * @return 返回值描述,如无返回值则为void 返回值为类则包含{@link object}
+     *
+     */
+    List<Map<String, Object>> findShopAccountOverviewDept();
+
 }

+ 12 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/StatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.system.app.mapper.StatisticsMapper;
@@ -39,4 +40,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         return statisticsMapper.findMonthSaleTrend(loginUser.getOrgCode());
     }
+
+    @Override
+    public List<Map<String, Object>> findShopAccountOverview(Page<Map<String, Object>> page, String name) {
+        return statisticsMapper.findShopAccountOverview(page, name);
+    }
+
+    @Override
+    public List<Map<String, Object>> findShopAccountOverviewDept() {
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        return statisticsMapper.findShopAccountOverviewDept(loginUser.getOrgCode());
+    }
 }