浏览代码

周、月 区最后一天数据

wuweihao 2 年之前
父节点
当前提交
ad11574d42

+ 173 - 84
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/ReportServiceImpl.java

@@ -63,6 +63,49 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
 
     }
 
+    @Override
+    public Result reportWork() {
+        List<ReportWorkVo> map = workService.countByType(null);
+
+        return Result.success(map);
+    }
+
+    @Override
+    public Result workTrend(ReportPo po) {
+        List<ReportVo> trent = this.getWorkTrent(po);
+        return Result.success(trent);
+    }
+
+    @Override
+    public Result volumeTrend(ReportPo po) {
+        String startTime = po.getStartTime();
+        String endTime = po.getEndTime();
+        String timeType = po.getTimeType();
+        String type = po.getPoType();
+        String infoType = po.getInfoType();
+        if (StrUtil.isBlank(infoType)) {
+            infoType = "all";
+        }
+
+        String sqlStr;
+        if ("day".equals(timeType)) {
+            sqlStr = volumeDayTrentSql(infoType, type, startTime, endTime);
+
+        } else if ("week".equals(timeType)) {
+            sqlStr = volumeWeekTrentSql(infoType, type, startTime, endTime);
+        } else {
+            sqlStr = volumeMonthTrentSql(infoType, type, startTime, endTime);
+
+        }
+
+
+        List<Map> res = entityMapper.listMapSql(sqlStr);
+
+        return Result.success(res);
+
+    }
+
+
     private String userMonthTrentSql(String startTime, String endTime) {
         StringBuilder builder = new StringBuilder();
         builder.append(" select groupKey, total as count,type from (");
@@ -114,34 +157,7 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
         return builder.toString();
     }
 
-    @Override
-    public Result volumeTrend(ReportPo po) {
-        String startTime = po.getStartTime();
-        String endTime = po.getEndTime();
-        String timeType = po.getTimeType();
-        String type = po.getPoType();
-        String infoType = po.getInfoType();
-        if (StrUtil.isBlank(infoType)) {
-            infoType = "all";
-        }
 
-        String sqlStr;
-        if ("day".equals(timeType)) {
-            sqlStr = volumeDayTrentSql(infoType, type, startTime, endTime);
-
-        } else if ("week".equals(timeType)) {
-            sqlStr = volumeWeekTrentSql(infoType, type, startTime, endTime);
-        } else {
-            sqlStr = volumeMonthTrentSql(infoType, type, startTime, endTime);
-
-        }
-
-
-        List<Map> res = entityMapper.listMapSql(sqlStr);
-
-        return Result.success(res);
-
-    }
 
 
     // 作品趋势
@@ -184,54 +200,99 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
     }
 
     private String volumeWeekTrentSql(String infoType, String type, String startTime, String endTime) {
-        StringBuilder builder = new StringBuilder();
-        builder.append(" select groupKey, total as count,type from (");
+
         if ("add".equals(infoType)) {
+            StringBuilder builder = new StringBuilder();
+            builder.append(" select groupKey, total as count,type from (");
             // 容量累计相加
             builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, ROUND(sum(total/1024),2) as total," +
                     " type from tb_report where is_delete=0 ");
+            if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
+                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+            } else {
+                builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
+            }
+            builder.append(" and type='").append(type).append("'");
+            builder.append(" and info_type='").append(infoType).append("'");
+
+            builder.append(" group by groupKey ) as a  ");
+            builder.append(" order by groupKey desc");
+
+            return builder.toString();
         } else {
-            // 容量取平均值
-            builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, ROUND(AVG(total/1024),2) as total," +
-                    " type from tb_report where is_delete=0 ");
+            return  volumeTotalWeekTrentSql(startTime, endTime);
         }
 
 
+
+    }
+
+    private String volumeMonthTrentSql(String infoType, String type, String startTime, String endTime) {
+        if ("add".equals(infoType)) {
+            StringBuilder builder = new StringBuilder();
+            builder.append(" select groupKey, total as count,type from (");
+            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, ROUND(sum(total/1024),2) as total ,type from tb_report where is_delete=0");
+
+            if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
+                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+            } else {
+                // 默认6个月
+                builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
+            }
+            builder.append(" and type='").append(type).append("'");
+            builder.append(" and info_type='").append(infoType).append("'");
+            builder.append(" group by groupKey ) as a ");
+            builder.append(" order by groupKey desc");
+            return builder.toString();
+        } else {
+            return  volumeTotalMonthTrentSql(startTime, endTime);
+        }
+
+    }
+
+    // 按每月分隔, 取最后一天值
+    private String volumeTotalWeekTrentSql(String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select a.groupKey, ROUND(b.total/1024, 2) as count,b.type from (");
+        // 日期最大值
+
+        builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, max(day) as day from tb_report where is_delete=0");
         if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
             builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
         } else {
+            // 默认6个月
             builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
         }
-        builder.append(" and type='").append(type).append("'");
-        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" and type='volume' and info_type='all'");
+        builder.append(" group by groupKey ) as a ");
+        builder.append(" left join tb_report b on b.day=a.day ");
+        builder.append(" where b.type='volume' and b.info_type='all'");
 
-        builder.append(" group by groupKey ) as a  ");
-        builder.append(" order by groupKey desc");
 
+        builder.append(" order by a.groupKey desc");
         return builder.toString();
     }
 
-    private String volumeMonthTrentSql(String infoType, String type, String startTime, String endTime) {
-        StringBuilder builder = new StringBuilder();
-        builder.append(" select groupKey, total as count,type from (");
-        if ("add".equals(infoType)) {
-            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, ROUND(sum(total/1024),2) as total ,type from tb_report where is_delete=0");
-        } else {
-            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, ROUND(avg(total/1024),2) as total ,type from tb_report where is_delete=0");
-        }
-
 
+    // 按每月分隔, 取最后一天值
+    private String volumeTotalMonthTrentSql(String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select a.groupKey, ROUND(b.total/1024, 2) as count,b.type from (");
+        // 日期最大值
+        builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, max(day) as day from tb_report where is_delete=0");
         if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
             builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
         } else {
             // 默认6个月
             builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
         }
-        builder.append(" and type='").append(type).append("'");
-        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" and type='volume' and info_type='all'");
         builder.append(" group by groupKey ) as a ");
-        builder.append(" order by groupKey desc");
+        builder.append(" left join tb_report b on b.day=a.day ");
+        builder.append(" where b.type='volume' and b.info_type='all'");
+
 
+        builder.append(" order by a.groupKey desc");
         return builder.toString();
     }
 
@@ -252,76 +313,104 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
     }
 
     private String workWeekTrentSql(String infoType, String type, String startTime, String endTime) {
-        StringBuilder builder = new StringBuilder();
-        builder.append(" select groupKey, mix,age, pano,type from (");
+
 
 
         if ("add".equals(infoType)) {
+            StringBuilder builder = new StringBuilder();
+            builder.append(" select groupKey, mix,age, pano,type from (");
             // 新增作品相加
             builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano," +
                     " type from tb_report where is_delete=0 ");
+            if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
+                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+            } else {
+                builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
+            }
+            builder.append(" and type='").append(type).append("'");
+            builder.append(" and info_type='").append(infoType).append("'");
+            builder.append(" group by groupKey ) as a ");
+            builder.append(" order by groupKey desc");
+
+            return builder.toString();
         } else {
-            // 作品数取平均值
-            builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, " +
-                    "ROUND(AVG(mix)) as mix," +
-                    "ROUND(AVG(age)) as age," +
-                    "ROUND(AVG(pano)) as pano," +
-                    " type from tb_report where is_delete=0 ");
+            return workTotalWeekTrentSql(startTime, endTime);
         }
 
+
+    }
+
+    // 按每周一分隔, 取最后一天值
+    private String workTotalWeekTrentSql(String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select a.groupKey, b.mix,b.age,b.pano ,b.type from (");
+        // 日期最大值
+
+        builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, max(day) as day from tb_report where is_delete=0");
         if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
             builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
         } else {
+            // 默认6个月
             builder.append(" and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 200 DAY)");
         }
-        builder.append(" and type='").append(type).append("'");
-        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" and type='work' and info_type='all'");
         builder.append(" group by groupKey ) as a ");
-        builder.append(" order by groupKey desc");
+        builder.append(" left join tb_report b on b.day=a.day ");
+        builder.append(" where b.type='work' and b.info_type='all'");
 
+
+        builder.append(" order by a.groupKey desc");
         return builder.toString();
     }
 
-    private String workMonthTrentSql(String infoType, String type, String startTime, String endTime) {
+    // 按每月分隔, 取最后一天值
+    private String workTotalMonthTrentSql(String startTime, String endTime){
         StringBuilder builder = new StringBuilder();
-        builder.append(" select groupKey, mix,age, pano,type from (");
-
-        if ("add".equals(infoType)) {
-            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano ,type from tb_report where is_delete=0");
-        } else {
-            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, " +
-                    "ROUND(AVG(mix)) as mix," +
-                    "ROUND(AVG(age)) as age," +
-                    "ROUND(AVG(pano)) as pano," +
-                    " type from tb_report where is_delete=0");
-        }
-
+        builder.append(" select a.groupKey,  b.mix,b.age,b.pano ,b.type from (");
+        // 日期最大值
+        builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, max(day) as day from tb_report where is_delete=0");
         if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
             builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
         } else {
             // 默认6个月
             builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
         }
-        builder.append(" and type='").append(type).append("'");
-        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" and type='work' and info_type='all'");
         builder.append(" group by groupKey ) as a ");
-        builder.append(" order by groupKey desc");
+        builder.append(" left join tb_report b on b.day=a.day ");
+        builder.append(" where b.type='work' and b.info_type='all'");
 
+
+        builder.append(" order by a.groupKey desc");
         return builder.toString();
     }
 
-    @Override
-    public Result reportWork() {
-        List<ReportWorkVo> map = workService.countByType(null);
+    private String workMonthTrentSql(String infoType, String type, String startTime, String endTime) {
+
+
+        if ("add".equals(infoType)) {
+            StringBuilder builder = new StringBuilder();
+            builder.append(" select groupKey, mix,age, pano,type from (");
+            builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano ,type from tb_report where is_delete=0");
+            if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
+                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+            } else {
+                // 默认6个月
+                builder.append(" and DATE(day) >= DATE_FORMAT(DATE_SUB( now(), INTERVAL 6 MONTH),'%Y-%m')");
+            }
+            builder.append(" and type='").append(type).append("'");
+            builder.append(" and info_type='").append(infoType).append("'");
+            builder.append(" group by groupKey ) as a ");
+            builder.append(" order by groupKey desc");
+
+            return builder.toString();
+        } else {
+            return workTotalMonthTrentSql(startTime, endTime);
+        }
 
-        return Result.success(map);
-    }
 
-    @Override
-    public Result workTrend(ReportPo po) {
-        List<ReportVo> trent = this.getWorkTrent(po);
-        return Result.success(trent);
     }
 
 
+
 }

+ 1 - 0
720yun_fd_manage/remark-m.md

@@ -57,6 +57,7 @@
     doc: https://test.4dkankan.com/qjkankan/doc.html
     doc: 120.25.146.52:8001/qjkankan/doc.html 
     rabbitMQ: http://120.25.146.52:15672/ guest  guest
+    四维管理后台:https://v4-uat.4dkankan.com/admin/index.html super-admin 
     
     #2022-3-19 使用自动部署