From 01ef94580fb90c1424e5d7f9716f85e2e5451877 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 20 Jan 2026 13:37:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/StatisticsController.java | 118 +++++++++++++----- 1 file changed, 86 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/zmzm/finance/common/controller/StatisticsController.java b/src/main/java/com/zmzm/finance/common/controller/StatisticsController.java index 468cf74..50894a8 100644 --- a/src/main/java/com/zmzm/finance/common/controller/StatisticsController.java +++ b/src/main/java/com/zmzm/finance/common/controller/StatisticsController.java @@ -28,13 +28,15 @@ public class StatisticsController { @Autowired private IOrdersService ordersService; @Autowired + private ITCustomerApplyBuyService customerApplyBuyService; + @Autowired private IUserVipLogService userVipLogService; @Autowired private ITCustomerApplyCurriculumService customerApplyCurriculumService; @Autowired private ITCustomerTaihuClassService customerTaihuClassService; @Autowired - private IUserCourseBuyLogService userCourseBuyLogService; + private IBuyOrderService buyOrderService; @Autowired private IFinanceOrderService financeOrderService; @@ -61,15 +63,46 @@ public class StatisticsController { .selectSum(Orders::getFee,"fee")); map.put("consumes",consumes); //总额 - Map totalPoint = userService.getMap(new MPJLambdaWrapper() - .selectSum(User::getPoint,"totalPoint")); +// Map totalPoint = userService.getMap(new MPJLambdaWrapper() +// .selectSum(User::getPoint,"totalPoint")); + BigDecimal total = BigDecimal.ZERO; + List totals = ordersService.list(new MPJLambdaWrapper() + .eq(Orders::getUseFlag,1).eq(Orders::getType,0)); + List yljkTotalOids = new ArrayList<>(); + for (Orders o:totals){ + if (o.getSource()==0){//一路健康 + yljkTotalOids.add(o.getOrderOldId()); + }else { + total = total.add(o.getFee()); + } + } + List applyBuyTotals = customerApplyBuyService.listByIds(yljkTotalOids); + for (TCustomerApplyBuy buy:applyBuyTotals){ + total = total.add(BigDecimal.valueOf(buy.getConvertpoint())); + } //指定月份以后的冲销差额 - Map diff = ordersService.getMap(new MPJLambdaWrapper() - .eq(Orders::getUseFlag,1).and(t->t.eq(Orders::getType,0).or().eq(Orders::getPayType,1)) + BigDecimal in = BigDecimal.ZERO; + List ins = ordersService.list(new MPJLambdaWrapper() + .eq(Orders::getUseFlag,1).eq(Orders::getType,0) + .apply("DATE_FORMAT(t.order_time, '%Y-%m') > '"+params.get("year")+"-"+params.get("month")+"'")); + List yljkOids = new ArrayList<>(); + for (Orders o:ins){ + if (o.getSource()==0){//一路健康 + yljkOids.add(o.getOrderOldId()); + }else { + in = in.add(o.getFee()); + } + } + List applyBuys = customerApplyBuyService.listByIds(yljkOids); + for (TCustomerApplyBuy buy:applyBuys){ + in = in.add(BigDecimal.valueOf(buy.getConvertpoint())); + } + Map out = ordersService.getMap(new MPJLambdaWrapper() + .eq(Orders::getUseFlag,1).eq(Orders::getPayType,1) .apply("DATE_FORMAT(t.order_time, '%Y-%m') > '"+params.get("year")+"-"+params.get("month")+"'") - .select("SUM(IF(type=0,fee,fee*-1)) diff")); + .select("SUM(fee) fee")); //目前总额+差额 - map.put("surplus",new BigDecimal(totalPoint.get("totalPoint").toString()).subtract(diff==null?BigDecimal.ZERO:new BigDecimal(diff.get("diff").toString()))); + map.put("surplus",total.subtract(in).add(new BigDecimal(out==null?"0":out.get("fee").toString()))); return R.ok().putData("map",map); } //天医币明细导出 @@ -194,18 +227,32 @@ public class StatisticsController { BigDecimal already = BigDecimal.ZERO; BigDecimal nowTotal = BigDecimal.ZERO; BigDecimal notyet = BigDecimal.ZERO; + List taihuOrderIds = courseOrders.stream().filter(o -> o.getSource() == 0).map(Orders::getOrderOldId).collect(Collectors.toList()); -// Map> taihuClassMap = cus.listMaps(new MPJLambdaWrapper() -// .leftJoin("t_customer_apply_curriculum t1 on t.description like concat('%',t1.curriculumID,'%')") -// .in("t1.oid", taihuOrderIds) -// .apply("t1.valid=1 and t1.status = '50'") -// .select("t1.oid,if(t1.point>0,t1.point,t1.money) fee,DATE_FORMAT(t.startDate, '%Y-%m-%d %H:%i:%s') startDate,t.studyDays")) -// .stream().collect(Collectors.toMap(m -> m.get("oid").toString(), m -> m)); Map> taihuClassMap = customerApplyCurriculumService.listMaps(new MPJLambdaWrapper() .in("t.oid", taihuOrderIds) .apply("t.valid=1 and t.status = '50'") .select("t.oid,if(t.point>0,t.point,t.money) fee,curriculumID")) .stream().collect(Collectors.toMap(m -> m.get("oid").toString(), m -> m)); + + List wumenOrderIds = courseOrders.stream().filter(o -> o.getSource() == 1).map(Orders::getOrderOldId).collect(Collectors.toList()); + List> buyOrdersList = buyOrderService.listMaps(new MPJLambdaWrapper() + .leftJoin("user_course_buy_log t1 on (t1.order_sn = t.order_sn )") + .leftJoin("user_course_buy t2 on t2.id = t1.user_course_buy_id") + .in("t.order_id",wumenOrderIds) + .gt(BuyOrder::getRealMoney,0) + .select("t.order_id oid,t1.id ucblid,if(t1.fee is null,t.real_money,t1.fee) fee,t1.days,t1.begin_day," + + "DATE_FORMAT(t2.start_time, '%Y-%m-%d %H:%i:%s') start_time,DATE_FORMAT(t2.end_time, '%Y-%m-%d %H:%i:%s') end_time")); + Map buyOrdersMap = new HashMap<>(); + for (Map m : buyOrdersList) { + List> l = new ArrayList<>(); + if(buyOrdersMap.get(m.get("oid").toString())!=null){ + l = (List>) buyOrdersMap.get(m.get("oid").toString()); + } + l.add(m); + buyOrdersMap.put(m.get("oid").toString(),l); + } + for(Orders orders:courseOrders){ List> list = new ArrayList<>(); if(orders.getSource()==0){ @@ -231,26 +278,33 @@ public class StatisticsController { } list.add(map); }else if (orders.getSource()==1){ - List> userCourseBuyLogs = userCourseBuyLogService.listMaps(new MPJLambdaWrapper() - .leftJoin("user_course_buy t1 on t1.id = t.id") - .leftJoin("buy_order t2 on t2.order_sn = t.order_sn ") - .apply("t2.order_id = "+orders.getOrderOldId()) - .isNotNull("t1.start_time") - .select("t.fee,t.days,t.begin_day,t1.start_time,t1.end_time")); - for (Map userCourseBuyLog : userCourseBuyLogs) { - Map map = new HashMap<>(); - map.put("fee",new BigDecimal(userCourseBuyLog.get("fee").toString())); - if (Integer.parseInt(userCourseBuyLog.get("begin_day").toString())==0){ - map.put("startTime",sdfday.format(userCourseBuyLog.get("start_time").toString())); - map.put("endTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), - Integer.parseInt(userCourseBuyLog.get("days").toString())-1))); - }else { - map.put("startTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), - Integer.parseInt(userCourseBuyLog.get("days").toString())))); - map.put("endTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), - Integer.parseInt(userCourseBuyLog.get("days").toString())-1))); + List> l = (List>) buyOrdersMap.get(orders.getOrderOldId()); + if (l!=null){ + for (Map userCourseBuyLog : l) { + Map map = new HashMap<>(); + map.put("fee",new BigDecimal(userCourseBuyLog.get("fee").toString())); + if (userCourseBuyLog.get("ucblid")==null){ + map.put("startTime","2022-12-30"); + map.put("endTime","2022-12-30"); + }else { + if (userCourseBuyLog.get("start_time")==null){ + map.put("startTime",null); + map.put("endTime",null); + }else { + if (Integer.parseInt(userCourseBuyLog.get("begin_day").toString())==0){ + map.put("startTime",userCourseBuyLog.get("start_time").toString()); + map.put("endTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), + Integer.parseInt(userCourseBuyLog.get("days").toString())-1))); + }else { + map.put("startTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), + Integer.parseInt(userCourseBuyLog.get("days").toString())))); + map.put("endTime",sdfday.format(DateUtils.addDays(sdfday.parse(userCourseBuyLog.get("start_time").toString()), + Integer.parseInt(userCourseBuyLog.get("days").toString())-1))); + } + } + } + list.add(map); } - list.add(map); } }else { FinanceOrder financeOrder = financeOrderService.getById(orders.getOrderOldId());