Ver Fonte

解决前端首页统计bug

oyq28 há 2 anos atrás
pai
commit
4afbca113b

+ 2 - 0
imcs-bt-be/imcs-authority-server/src/main/java/com/github/zuihou/api/OpsAppApi.java

@@ -229,11 +229,13 @@ public class OpsAppApi {
         }
         Map<String, String> paramsMap = new HashMap<String, String>();
         String now = DateUtil.dateToString(new Date());
+        String yesterday = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 1));
         String sevenAgo = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 7));
         String nextDay = DateUtil.dateToString(DateUtil.getAddSecondsTime(new Date(), 60 * 60 * 24 * 1000));
         paramsMap.put("now", now);
         paramsMap.put("sevenAgo", sevenAgo);
         paramsMap.put("nextDay", nextDay);
+        paramsMap.put("yesterday", yesterday);
         if (equId != null && equId.longValue() != 0) {
             paramsMap.put("id", equId.toString());
         }

+ 4 - 0
imcs-bt-be/imcs-business-biz/src/main/java/com/github/zuihou/business/member/dao/MemberMapper.java

@@ -11,6 +11,8 @@ import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Map;
+
 /**
  * <p>
  * Mapper 接口
@@ -24,4 +26,6 @@ import org.springframework.stereotype.Repository;
 public interface MemberMapper extends SuperMapper<Member> {
 
     IPage<Member> pageList(IPage<Member> page, @Param(Constants.WRAPPER) LbqWrapper<Member> wrapper, DataScope dataScope);
+
+    Map getStatisticMap(Map<String, String> paramsMap);
 }

+ 4 - 0
imcs-bt-be/imcs-business-biz/src/main/java/com/github/zuihou/business/member/service/MemberService.java

@@ -7,6 +7,8 @@ import com.github.zuihou.business.order.entity.Order;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 
+import java.util.Map;
+
 /**
  * <p>
  * 业务接口
@@ -19,4 +21,6 @@ import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 public interface MemberService extends SuperService<Member> {
 
     IPage<Member> pageList(IPage<Member> page, LbqWrapper<Member> wrapper);
+
+    Map getStatisticMap(Map<String, String> paramsMap);
 }

+ 7 - 0
imcs-bt-be/imcs-business-biz/src/main/java/com/github/zuihou/business/member/service/impl/MemberServiceImpl.java

@@ -13,6 +13,8 @@ import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+
 /**
  * <p>
  * 业务实现类
@@ -30,4 +32,9 @@ public class MemberServiceImpl extends SuperServiceImpl<MemberMapper, Member> im
     public IPage<Member> pageList(IPage<Member> page, LbqWrapper<Member> wrapper) {
         return baseMapper.pageList(page, wrapper, new DataScope());
     }
+
+    @Override
+    public Map getStatisticMap(Map<String, String> paramsMap) {
+        return baseMapper.getStatisticMap(paramsMap);
+    }
 }

+ 34 - 0
imcs-bt-be/imcs-business-biz/src/main/resources/mapper_business/base/member/MemberMapper.xml

@@ -37,4 +37,38 @@
         ) s ${ew.customSqlSegment}
     </select>
 
+    <select id="getStatisticMap" parameterType="hashMap" resultType="java.util.Map">
+        select sum(num1) as totalNum,
+               sum(num2) as yesterdayNum,
+               sum(num3) as sevenNum,
+               sum(num4) as todayNum
+        from (
+            select count(1) as num1 ,0 as num2,0 as num3,0 as num4 from bt_member m
+            union
+            select 0 as num1 , count(1) as num2,0 as num3,0 as num4 from bt_member m
+            where 1 = 1
+            <if test="yesterday != null">
+                and m.create_time >= #{yesterday, jdbcType=TIMESTAMP}
+            </if>
+            <if test="now != null">
+                and m.create_time <![CDATA[ <= ]]> #{now, jdbcType=TIMESTAMP}
+            </if>
+            union
+            select 0 as num1 , count(1) as num2,0 as num3,0 as num4 from bt_member m
+            where 1 = 1
+            <if test="now != null">
+                and m.create_time >= #{now, jdbcType=TIMESTAMP}
+            </if>
+            <if test="now != null">
+                and m.create_time <![CDATA[ <= ]]> #{now, jdbcType=TIMESTAMP}
+            </if>
+            union
+            select 0 as num1 , count(1) as num2,0 as num3,0 as num4 from bt_member m
+                where 1 = 1
+            <if test="now != null">
+                and m.create_time >= #{now, jdbcType=TIMESTAMP}
+            </if>
+         )f
+    </select>
+
 </mapper>

+ 31 - 10
imcs-bt-be/imcs-business-biz/src/main/resources/mapper_business/base/order/OrderMapper.xml

@@ -124,9 +124,10 @@
         sum(num4) as todayAmount,
         sum(num5) as sevenNum,
         sum(num6) as sevenAmount,
-        sum(num7) as deviceNum
+        sum(num7) as deviceNum,
+        sum(num8) as yesterdayAmount
         from (
-        select count(1) as num1 ,0 as num2,0 as num3,0 as num4,0 as num5,0 as num6, 0 as num7 from bt_order o
+        select count(1) as num1 ,0 as num2,0 as num3,0 as num4,0 as num5,0 as num6, 0 as num7, 0 as num8 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
@@ -144,7 +145,7 @@
             and o.id = #{id}
         </if>
         union
-        select 0 as num1, count(1) as num2 ,0 as num3,0 as num4,0 as num5,0 as num6, 0 as num7 from bt_order o
+        select 0 as num1, count(1) as num2 ,0 as num3,0 as num4,0 as num5,0 as num6, 0 as num7, 0 as num8 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
@@ -157,7 +158,7 @@
         </if>
             and o.order_status='4'
         union
-        select 0 as num1,0 as num2,count(1) as num3,0 as num4,0 as num5,0 as num6, 0 as num7 from bt_order o
+        select 0 as num1,0 as num2,count(1) as num3,0 as num4,0 as num5,0 as num6, 0 as num7, 0 as num8 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
@@ -170,7 +171,7 @@
         </if>
             and o.order_status='4'
         union
-        select 0 as num1,0 as num2,0 as num3,sum(o.order_amount) as num4,0 as num5,0 as num6, 0 as num7 from bt_order o
+        select 0 as num1,0 as num2,0 as num3,sum(o.order_amount) as num4,0 as num5,0 as num6, 0 as num7, 0 as num8 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
@@ -182,13 +183,13 @@
             and o.create_time >= #{now, jdbcType=TIMESTAMP}
         </if>
         <if test="nextDay != null">
-            and o.create_time <![CDATA[ <= ]]> #{sevenAgo, jdbcType=TIMESTAMP}
+            and o.create_time <![CDATA[ <= ]]> #{nextDay, jdbcType=TIMESTAMP}
         </if>
         <if test="id != null">
             and o.id = #{id}
         </if>
         union
-        select 0,0,0,0,count(1) as num5,0, 0 from bt_order o
+        select 0,0,0,0,count(1) as num5,0, 0, 0 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
@@ -206,13 +207,13 @@
             and o.id = #{id}
         </if>
         union
-        select 0,0,0,0,0,sum(o.order_amount) as num6, 0 from bt_order o
+        select 0,0,0,0,0,sum(o.order_amount) as num6, 0, 0 from bt_order o
         <if test="orgIds != null and orgIds != ''">
             left join imcs_tenant_productionresource p on o.order_equ_id = p.id
             where p.org_id in (${orgIds})
         </if>
         <if test="orgIds == null ">
-            where o.order_status = '1'
+            where 1 = 1
         </if>
         <if test="sevenAgo != null">
             and o.create_time >= #{sevenAgo, jdbcType=TIMESTAMP}
@@ -223,14 +224,34 @@
         <if test="id != null">
             and o.id = #{id}
         </if>
+            and o.order_status = '1'
         union
-        select 0,0,0,0,0,0, count(p.id) as num7 from imcs_tenant_productionresource p where p.status = '1'
+        select 0,0,0,0,0,0, count(p.id) as num7, 0 from imcs_tenant_productionresource p where p.status = '1'
         <if test="id != null">
             and p.id = #{id}
         </if>
         <if test="orgIds != null and orgIds != ''">
             and p.org_id in (${orgIds})
         </if>
+         union
+        select 0,0,0,0,0,0, 0, sum(o.order_amount) as num8 from bt_order o
+        <if test="orgIds != null and orgIds != ''">
+            left join imcs_tenant_productionresource p on o.order_equ_id = p.id
+            where p.org_id in (${orgIds})
+        </if>
+        <if test="orgIds == null ">
+            where 1 = 1
+        </if>
+        <if test="yesterday != null">
+            and o.create_time >= #{yesterday, jdbcType=TIMESTAMP}
+        </if>
+        <if test="now != null">
+            and o.create_time <![CDATA[ <= ]]> #{now, jdbcType=TIMESTAMP}
+        </if>
+        <if test="id != null">
+            and o.id = #{id}
+        </if>
+            and o.order_status = '1'
         ) f
     </select>
 

+ 12 - 1
imcs-bt-be/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/goods/GoodsController.java

@@ -10,8 +10,11 @@ import com.github.zuihou.business.goods.dto.GoodsSaveDTO;
 import com.github.zuihou.business.goods.dto.GoodsUpdateDTO;
 import com.github.zuihou.business.goods.entity.Goods;
 import com.github.zuihou.business.goods.service.GoodsService;
+import com.github.zuihou.business.order.entity.Order;
 import com.github.zuihou.business.spe.service.SpeService;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
+import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import com.github.zuihou.log.annotation.SysLog;
 import com.github.zuihou.security.annotation.PreAuth;
 import io.swagger.annotations.Api;
@@ -115,5 +118,13 @@ public class GoodsController extends SuperController<GoodsService, Long, Goods,
         return success(count > 0);
     }
 
-
+    @ApiOperation(value = "获取商品统计", notes = "获取商品统计")
+    @GetMapping("/indexTable")
+    public R<List<Map<String, Object>>> indexTable() {
+        QueryWrap<Goods> queryWrap = new QueryWrap<Goods>();
+        queryWrap.select("goods_name as name, ifnull(goods_rel_sales, 0) as cnt").lambda()
+                .orderByDesc(Goods::getGoodsRelSales,Goods::getGoodsVrSales,Goods::getGoodsWeight);
+        List<Map<String, Object>> list = baseService.listMaps(queryWrap).subList(0, 10);
+        return R.success(list);
+    }
 }

+ 29 - 0
imcs-bt-be/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/member/MemberController.java

@@ -8,6 +8,9 @@ import com.github.zuihou.business.member.dto.MemberSaveDTO;
 import com.github.zuihou.business.member.dto.MemberUpdateDTO;
 import com.github.zuihou.business.member.dto.MemberPageDTO;
 import com.github.zuihou.business.member.service.MemberService;
+
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -15,11 +18,15 @@ import com.github.zuihou.base.controller.SuperController;
 import com.github.zuihou.base.R;
 import com.github.zuihou.business.order.dto.OrderPageDTO;
 import com.github.zuihou.business.order.entity.Order;
+import com.github.zuihou.business.util.CommonUtil;
+import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import com.github.zuihou.security.annotation.PreAuth;
 import org.springframework.web.bind.annotation.RestController;
@@ -67,4 +74,26 @@ public class MemberController extends SuperController<MemberService, Long, Membe
         wrapper.like(Member::getMemberName, model.getMemberName()).like(Member::getMemberPhone, model.getMemberPhone()).eq(Member::getMemberStatus, model.getMemberStatus()).orderByDesc(Member::getCreateTime);
         baseService.pageList(page, wrapper);
     }
+
+    /**
+     * 订单统计数据
+     */
+    @GetMapping("/memberStatistics")
+    public R<Map> memberStatistics(){
+        Map<String, String> paramsMap = new HashMap<String, String>();
+        String now = DateUtil.dateToString(new Date());
+        String yesterday = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 1));
+        String sevenAgo = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 7));
+        String nextDay = DateUtil.dateToString(DateUtil.getAddSecondsTime(new Date(), 60 * 60 * 24 * 1000));
+        paramsMap.put("now", now);
+        paramsMap.put("yesterday", yesterday);
+        paramsMap.put("sevenAgo", sevenAgo);
+        paramsMap.put("nextDay", nextDay);
+        String orgIds = CommonUtil.getOrgIdsStr();
+        if (StringUtils.isNotEmpty(orgIds)) {
+            paramsMap.put("orgIds", orgIds);
+        }
+        Map map = baseService.getStatisticMap(paramsMap);
+        return R.success(map);
+    }
 }

+ 72 - 5
imcs-bt-be/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/order/OrderController.java

@@ -5,20 +5,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.controller.SuperController;
 import com.github.zuihou.base.request.PageParams;
+import com.github.zuihou.business.goods.entity.Goods;
 import com.github.zuihou.business.order.dto.OrderDetailDto;
 import com.github.zuihou.business.order.dto.OrderPageDTO;
 import com.github.zuihou.business.order.dto.OrderSaveDTO;
 import com.github.zuihou.business.order.dto.OrderUpdateDTO;
 import com.github.zuihou.business.order.entity.Order;
 import com.github.zuihou.business.order.service.OrderService;
+import com.github.zuihou.business.util.CommonUtil;
+import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
 import com.github.zuihou.security.annotation.PreAuth;
+import com.github.zuihou.utils.DateUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -80,11 +91,67 @@ public class OrderController extends SuperController<OrderService, Long, Order,
     }
 
 
+    /**
+     * 订单统计数据
+     */
+    @GetMapping("/orderStatistics")
+    public R<Map> orderStatistics(){
+        Map<String, String> paramsMap = new HashMap<String, String>();
+        String now = DateUtil.dateToString(new Date());
+        String yesterday = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 1));
+        String sevenAgo = DateUtil.dateToString(DateUtil.getBeforeDate(new Date(), 7));
+        String nextDay = DateUtil.dateToString(DateUtil.getAddSecondsTime(new Date(), 60 * 60 * 24 * 1000));
+        paramsMap.put("now", now);
+        paramsMap.put("yesterday", yesterday);
+        paramsMap.put("sevenAgo", sevenAgo);
+        paramsMap.put("nextDay", nextDay);
+        String orgIds = CommonUtil.getOrgIdsStr();
+        if (StringUtils.isNotEmpty(orgIds)) {
+            paramsMap.put("orgIds", orgIds);
+        }
+        Map map = baseService.getStatisticMap(paramsMap);
+        return R.success(map);
+    }
 
 
-
-
-
-
-
+    /**
+     * 订单统计数据
+     */
+    @ApiOperation(value = "首页数据", notes = "首页数据")
+    @GetMapping("/orderBarData")
+    public R<List<Map<String, Object>>> orderBarData(@RequestParam(name="type") int type,@RequestParam(name="startTime",required = false) String startTime, @RequestParam(name="endTime", required = false) String endTime){
+        QueryWrap<Order> queryWrap = new QueryWrap<Order>();
+        if(type==1){
+            //日统计
+            queryWrap.select("ifnull(count(1),0) as orderCount, ifnull(sum(order_amount),0.00) as orderAmount, hour(create_time) as xData").geHeader("create_time", DateUtils.date2LocalDateTime(new Date())).leFooter("create_time", DateUtils.date2LocalDateTime(new Date()));
+        }else if(type==4){
+            //年统计
+            LocalDateTime yearStart = LocalDateTime.now().with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN);
+            LocalDateTime yearEnd = LocalDateTime.now().with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX);
+            queryWrap.select("ifnull(count(1),0) as orderCount, ifnull(sum(order_amount),0.00) as orderAmount, month(create_time) as xData").geHeader("create_time", yearStart).leFooter("create_time", yearEnd);
+        }else{
+            //周统计|月统计|时间段统计
+            LocalDateTime now = LocalDateTime.now();
+            if(type==2){
+                int dayOfWeek = now.getDayOfWeek().getValue();
+                LocalDateTime weekStart = now.minusDays(dayOfWeek - 1).with(LocalTime.MIN);
+                LocalDateTime weekEnd = now.plusDays(7 - dayOfWeek).with(LocalTime.MAX);
+                String strDate = String.join(",", DateUtils.getBetweenDay(DateUtils.format(weekStart, "yyyy-MM-dd"), DateUtils.format(weekEnd, "yyyy-MM-dd")));
+                queryWrap.select("ifnull(count(1),0) as orderCount, ifnull(sum(order_amount),0.00) as orderAmount, date(create_time) as xData,'"+strDate+"' as strDate");
+                queryWrap.geHeader("create_time", weekStart).leFooter("create_time", weekEnd);
+            }else if(type==3){
+                LocalDateTime monthStart = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+                LocalDateTime monthEnd = now.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
+                String beginDate = StringUtils.isNotEmpty(startTime)?startTime:DateUtils.format(monthStart, "yyyy-MM-dd");
+                String endDate = StringUtils.isNotEmpty(endTime)?endTime:DateUtils.format(monthEnd, "yyyy-MM-dd");
+                String strDate = String.join(",", DateUtils.getBetweenDay(beginDate, endDate));
+                queryWrap.select("ifnull(count(1),0) as orderCount, ifnull(sum(order_amount),0.00) as orderAmount, date(create_time) as xData, '"+ strDate +"' as strDate");
+                queryWrap.geHeader("create_time", StringUtils.isNotEmpty(startTime)?DateUtils.getStartTime(startTime):monthStart).leFooter("create_time", StringUtils.isNotEmpty(endTime)?DateUtils.getEndTime(endTime):monthEnd);
+            }
+        }
+        queryWrap.in("order_status", new String[]{"2","3","4"})
+                .isNotNull("create_time").groupBy("xData").orderByAsc("xData");
+        List<Map<String, Object>> list = baseService.listMaps(queryWrap);
+        return R.success(list);
+    }
 }

+ 7 - 6
imcs-bt-be/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/productionresource/ProductionResourceController.java

@@ -19,6 +19,7 @@ import com.github.zuihou.business.productionresource.service.EquAndGoodsService;
 import com.github.zuihou.business.productionresource.service.ProductionTenantResourceService;
 import com.github.zuihou.business.spe.entity.Spe;
 import com.github.zuihou.business.spe.service.SpeService;
+import com.github.zuihou.business.util.CommonUtil;
 import com.github.zuihou.common.util.DateUtil;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
@@ -176,11 +177,7 @@ public class ProductionResourceController extends SuperController<ProductionTena
     @ApiOperation(value = "获取设备状态统计", notes = "获取设备状态统计")
     @PostMapping("/equStatistics")
     public R<Map<String, Integer>> equStatistics(){
-        /*
-        QueryWrapper<ProductionResource> query = new QueryWrapper<ProductionResource>();
-        query.select("count(online_status) as statusCount").lambda().groupBy(ProductionResource::getOnlineStatus).orderByDesc(ProductionResource::getOnlineStatus);
-        List<Map<String,Object>> list = baseService.listMaps(query);
-        return list; */
+
         Map<String, Integer> map = new HashMap<String, Integer>(){
             {
                 put("onLineCount", 0);
@@ -188,7 +185,11 @@ public class ProductionResourceController extends SuperController<ProductionTena
                 put("exceptCount", 0);
             }
         };
-        List<ProductionResource> list = baseService.list();
+        LbqWrapper<ProductionResource> lbqWrapper = Wraps.<ProductionResource>lbQ();
+        if(CommonUtil.getOrgIdsArr().size()>0) {
+            lbqWrapper.in(ProductionResource::getOrgId, CommonUtil.getOrgIdsArr());
+        }
+        List<ProductionResource> list = baseService.list(lbqWrapper);
         list.stream().forEach(item->{
             Map<String, String> resultMap = baseService.getEquRunInfo(item.getId());
             String equStatus =  resultMap.get("equStatus");