Ver código fonte

完成报表功能

wuweihao 2 anos atrás
pai
commit
21f682fbd4

+ 22 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/vo/ReportWorkVo.java

@@ -0,0 +1,22 @@
+package com.gis.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by owen on 2022/12/20 0020 11:19
+ * 作品类型统计用
+ */
+@Data
+public class ReportWorkVo {
+
+
+
+    @ApiModelProperty(value = "类型:pano, 4dkk, mix")
+    private String groupKey;
+
+    @ApiModelProperty(value = "数量")
+    private Integer count;
+
+
+}

+ 4 - 1
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/WorkMapper.java

@@ -1,9 +1,11 @@
 package com.gis.mapper;
 
 
+import com.gis.common.mapper.provider.BaseProvider;
 import com.gis.domain.dto.AgePageDto;
 import com.gis.domain.dto.PageDto;
 import com.gis.domain.entity.WorkEntity;
+import com.gis.domain.vo.ReportWorkVo;
 import com.gis.mapper.provider.WorkProvider;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Component;
@@ -50,5 +52,6 @@ public interface WorkMapper extends IBaseStrMapper<WorkEntity, String> {
     @Select("select id from tb_work where is_delete=0 and status=#{status}")
     List<String> getIdByStatus(int status);
 
-    Map mapSql(String format);
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    List<ReportWorkVo> groupByTypeSql(String format);
 }

+ 2 - 1
720yun_fd_manage/gis_service/src/main/java/com/gis/service/WorkService.java

@@ -7,6 +7,7 @@ import com.gis.domain.dto.PageDto;
 import com.gis.domain.dto.SomeDataDto;
 import com.gis.domain.dto.WorkDto;
 import com.gis.domain.entity.WorkEntity;
+import com.gis.domain.vo.ReportWorkVo;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.time.LocalDate;
@@ -47,5 +48,5 @@ public interface WorkService extends IBaseService<WorkEntity, String> {
     // 获取用户作品
     List<WorkEntity> getUserWork();
 
-    Map countByType(LocalDate today);
+    List<ReportWorkVo> countByType(LocalDate today);
 }

+ 244 - 133
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/ReportServiceImpl.java

@@ -5,6 +5,7 @@ import com.gis.common.util.Result;
 import com.gis.domain.entity.ReportEntity;
 import com.gis.domain.po.ReportPo;
 import com.gis.domain.vo.ReportVo;
+import com.gis.domain.vo.ReportWorkVo;
 import com.gis.mapper.IBaseMapper;
 import com.gis.mapper.ReportMapper;
 import com.gis.service.FodderService;
@@ -50,10 +51,140 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
 
     }
 
-    private List<Map> getTrent(ReportPo po){
-        StringBuilder builder = new StringBuilder();
+//    private List<Map> getTrent(ReportPo po){
+//        StringBuilder builder = new StringBuilder();
+//
+//
+//        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";
+//        }
+//        if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
+//
+//            if ("day".equals(timeType)){
+//                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, total as count, type from tb_report where is_delete=0 ");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//
+//            } else if ("week".equals(timeType)){
+//                builder.append(" select groupKey, sum(total) as count,type from (");
+//                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, total,type from tb_report where is_delete=0 ");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//                builder.append(" ) as a group by groupKey");
+//            } else {
+//                builder.append(" select groupKey, sum(total) as count,type from (");
+//                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, total,type from tb_report where is_delete=0");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//                builder.append(" ) as a group by groupKey");
+//            }
+//
+//        } else {
+//
+//            if ("day".equals(timeType)){ // 默认最近30天
+//                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, total as count, type from tb_report where is_delete=0  and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 30 DAY)");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//            } else if ("week".equals(timeType)){ // 默认最近半年
+//                builder.append(" select groupKey, sum(total) as count,type from (");
+//                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, total,type from tb_report where is_delete=0  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(" ) as a group by groupKey");
+//            } else { // 默认最近6个月
+//                builder.append(" select groupKey, sum(total) as count,type from (");
+//                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, total,type from tb_report where is_delete=0");
+//                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(" ) as a group by groupKey");
+//            }
+//        }
+//
+//
+//        builder.append(" order by groupKey desc");
+//
+//        List<Map> res = entityMapper.listMapSql(builder.toString());
+//        return res;
+//    }
+//
+//
+//    private List<ReportVo> getWorkTrent(ReportPo po){
+//        StringBuilder builder = new StringBuilder();
+//
+//
+//        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";
+//        }
+//        if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
+//
+//            if ("day".equals(timeType)){
+//                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, mix, pano, age,  type from tb_report where is_delete=0 ");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//
+//            } else if ("week".equals(timeType)){
+//                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+//                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, mix, pano, age,type from tb_report where is_delete=0 ");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//                builder.append(" ) as a group by groupKey");
+//            } else {
+//                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+//                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, mix,age, pano,type from tb_report where is_delete=0");
+//                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//                builder.append(" ) as a group by groupKey");
+//            }
+//
+//        } else {
+//
+//            if ("day".equals(timeType)){ // 默认最近30天
+//                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, mix, pano, age, type from tb_report where is_delete=0  and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 30 DAY)");
+//                builder.append(" and type='").append(type).append("'");
+//                builder.append(" and info_type='").append(infoType).append("'");
+//            } else if ("week".equals(timeType)){ // 默认最近半年
+//                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+//                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, mix, pano, age,type from tb_report where is_delete=0  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(" ) as a group by groupKey");
+//            } else { // 默认最近6个月
+//                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+//                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, mix,age, pano,type from tb_report where is_delete=0");
+//                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(" ) as a group by groupKey");
+//            }
+//        }
+//
+//
+//        builder.append(" order by groupKey desc");
+//
+//        List<ReportVo> res = entityMapper.listReportVoSql(builder.toString());
+//        return res;
+//    }
 
 
+    private List<Map> getTrent(ReportPo po){
+
         String startTime = po.getStartTime();
         String endTime = po.getEndTime();
         String timeType = po.getTimeType();
@@ -62,64 +193,23 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
         if (StrUtil.isBlank(infoType)){
             infoType = "all";
         }
-        if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
 
+        String sqlStr ;
             if ("day".equals(timeType)){
-                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, total as count, type from tb_report where is_delete=0 ");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
+                sqlStr = dayTrentSql(infoType, type, startTime, endTime);
 
             } else if ("week".equals(timeType)){
-                builder.append(" select groupKey, sum(total) as count,type from (");
-                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, total,type from tb_report where is_delete=0 ");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-                builder.append(" ) as a group by groupKey");
+                sqlStr = weekTrentSql(infoType, type, startTime, endTime);
             } else {
-                builder.append(" select groupKey, sum(total) as count,type from (");
-                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, total,type from tb_report where is_delete=0");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-                builder.append(" ) as a group by groupKey");
+                sqlStr = monthTrentSql(infoType, type, startTime, endTime);
             }
 
-        } else {
-
-            if ("day".equals(timeType)){ // 默认最近30天
-                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, total as count, type from tb_report where is_delete=0  and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 30 DAY)");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-            } else if ("week".equals(timeType)){ // 默认最近半年
-                builder.append(" select groupKey, sum(total) as count,type from (");
-                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, total,type from tb_report where is_delete=0  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(" ) as a group by groupKey");
-            } else { // 默认最近6个月
-                builder.append(" select groupKey, sum(total) as count,type from (");
-                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, total,type from tb_report where is_delete=0");
-                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(" ) as a group by groupKey");
-            }
-        }
-
-
-        builder.append(" order by groupKey desc");
-
-        List<Map> res = entityMapper.listMapSql(builder.toString());
+        List<Map> res = entityMapper.listMapSql(sqlStr);
         return res;
     }
 
 
     private List<ReportVo> getWorkTrent(ReportPo po){
-        StringBuilder builder = new StringBuilder();
-
-
         String startTime = po.getStartTime();
         String endTime = po.getEndTime();
         String timeType = po.getTimeType();
@@ -128,74 +218,128 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
         if (StrUtil.isBlank(infoType)){
             infoType = "all";
         }
-        if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
 
-            if ("day".equals(timeType)){
-                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, mix, pano, age,  type from tb_report where is_delete=0 ");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
+        String sqlStr ;
+        if ("day".equals(timeType)){
+            sqlStr = dayWorkTrentSql(infoType, type, startTime, endTime);
+
+        } else if ("week".equals(timeType)){
+            sqlStr = weekWorkTrentSql(infoType, type, startTime, endTime);
+        } else {
+            sqlStr = monthWorkTrentSql(infoType, type, startTime, endTime);
+        }
 
-            } else if ("week".equals(timeType)){
-                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
-                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, mix, pano, age,type from tb_report where is_delete=0 ");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-                builder.append(" ) as a group by groupKey");
-            } else {
-                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
-                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, mix,age, pano,type from tb_report where is_delete=0");
-                builder.append(" and day between '").append(startTime).append("' and '").append(endTime).append("'");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-                builder.append(" ) as a group by groupKey");
-            }
 
+        List<ReportVo> res = entityMapper.listReportVoSql(sqlStr);
+        return res;
+    }
+
+    private String dayTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, total as count,  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 30 DAY)");
+        }
+        builder.append(" and type='").append(type).append("'");
+        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" order by groupKey desc");
 
-            if ("day".equals(timeType)){ // 默认最近30天
-                builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, mix, pano, age, type from tb_report where is_delete=0  and DATE(day)>=DATE_SUB(CURDATE(), INTERVAL 30 DAY)");
-                builder.append(" and type='").append(type).append("'");
-                builder.append(" and info_type='").append(infoType).append("'");
-            } else if ("week".equals(timeType)){ // 默认最近半年
-                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
-                builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, mix, pano, age,type from tb_report where is_delete=0  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(" ) as a group by groupKey");
-            } else { // 默认最近6个月
-                builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
-                builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, mix,age, pano,type from tb_report where is_delete=0");
-                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(" ) as a group by groupKey");
-            }
+        return builder.toString();
+    }
+
+    private String weekTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select groupKey, sum(total) as count,type from (");
+        builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, 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(" ) as a group by groupKey");
+        builder.append(" order by groupKey desc");
 
+        return builder.toString();
+    }
 
+    private String monthTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select groupKey, sum(total) as count,type from (");
+        builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, 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(" ) as a group by groupKey");
         builder.append(" order by groupKey desc");
 
-        List<ReportVo> res = entityMapper.listReportVoSql(builder.toString());
-        return res;
+        return builder.toString();
     }
 
-    @Override
-    public Result reportWork() {
-        Map map = workService.countByType(null);
-        HashMap<Object, Object> res = null;
-        if (map.size() != 3){
 
-            Integer mix = convert((Integer)map.get("mix")) ;
-            Integer age = convert((Integer)map.get("4dkk")) ;
-            Integer pano = convert((Integer)map.get("pano")) ;
+    private String dayWorkTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append("select DATE_FORMAT( day, '%Y-%m-%d' ) as groupKey, mix, pano, age,  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 30 DAY)");
+        }
+        builder.append(" and type='").append(type).append("'");
+        builder.append(" and info_type='").append(infoType).append("'");
+        builder.append(" order by groupKey desc");
+
+        return builder.toString();
+    }
 
-            map.put("mix", mix);
-            map.put("age", age);
-            map.put("pano", pano);
+    private String weekWorkTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+        builder.append(" select DATE_FORMAT(DATE_ADD(day,INTERVAL- (WEEKDAY(day)) day),  '%Y-%m-%d' )  as groupKey, " +
+                "mix, pano, age,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(" ) as a group by groupKey");
+        builder.append(" order by groupKey desc");
 
+        return builder.toString();
+    }
+
+    private String monthWorkTrentSql(String infoType, String type, String startTime, String endTime){
+        StringBuilder builder = new StringBuilder();
+        builder.append(" select groupKey, sum(mix) as mix,sum(age) as age,sum(pano) as pano,type from (");
+        builder.append(" select DATE_FORMAT(day, '%Y-%m')  as groupKey, mix,age, 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(" ) as a group by groupKey");
+        builder.append(" order by groupKey desc");
+
+        return builder.toString();
+    }
+
+    @Override
+    public Result reportWork() {
+        List<ReportWorkVo> map = workService.countByType(null);
 
         return Result.success(map);
     }
@@ -203,42 +347,9 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
     @Override
     public Result workTrend(ReportPo po) {
         List<ReportVo> trent = this.getWorkTrent(po);
-//        Condition condition = new Condition(ReportEntity.class);
-//        condition.and().andEqualTo("infoType", po.getInfoType());
-//        condition.and().andEqualTo("type", po.getPoType());
-//        List<ReportEntity> all = this.findAll(condition);
-//
-//        List<ReportVo> res = new ArrayList<>();
-//        for (Map map : trent) {
-//            String groupKey  = (String)map.get("groupKey");
-//            log.info("groupKey: {}", groupKey);
-//            for (ReportEntity entity : all) {
-//                    String day = entity.getDay().toString();
-//                    log.info("day: {}", day);
-//                    if (day.contains(groupKey)){
-//                        System.out.println("=========================================================");
-//                        ReportVo vo = new ReportVo();
-//                        BeanUtils.copyProperties(entity, vo);
-//                        vo.setGroupKey(groupKey);
-//                        res.add(vo);
-//
-//                    }
-//            }
-//        }
-
         return Result.success(trent);
     }
 
-    private Integer convert(Integer num){
-        return num == null ? 0 : num;
-
-    }
-
-
 
 
-    private int total(String type){
-        Integer count = entityMapper.countIntSql(StrUtil.format("select sum(total) as count, type from tb_report where is_delete=0 and type='{}'", type));
-        return count == null ? 0 : count;
-    }
 }

+ 36 - 3
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -15,6 +15,7 @@ import com.gis.domain.dto.SomeDataDto;
 import com.gis.domain.dto.WorkDto;
 import com.gis.domain.entity.FodderEntity;
 import com.gis.domain.entity.WorkEntity;
+import com.gis.domain.vo.ReportWorkVo;
 import com.gis.mapper.*;
 import com.gis.oss.util.FileAndOssUtil;
 import com.gis.oss.util.FileUtils;
@@ -253,17 +254,49 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
     }
 
     @Override
-    public Map countByType(LocalDate today) {
+    public List<ReportWorkVo> countByType(LocalDate today) {
         StringBuilder builder = new StringBuilder();
-        builder.append("SELECT type, count(*) as pcs FROM tb_work WHERE is_delete=0 and status=1");
+        builder.append("SELECT type as groupKey, count(*) as count FROM tb_work WHERE is_delete=0 and status=1");
         if (today != null){
             builder.append(" and DATA_FORMAT(create_time, '%Y-%m-%d') = '").append(today).append("'");
         }
+        builder.append(" and type is not null");
         builder.append(" GROUP BY type");
+        List<ReportWorkVo> voList = entityMapper.groupByTypeSql(builder.toString());
 
-        return entityMapper.mapSql(builder.toString());
+        if (voList.size() == 3){
+            return voList;
+        }
+
+        log.info("结果集需要进一步出来, 结果数量 {}", voList);
+        // 预防查询出来缺少key
+        HashMap<String, Integer> map = new HashMap<>();
+        map.put("mix", 0);
+        map.put("4dkk", 0);
+        map.put("pano", 0);
+
+
+        for (ReportWorkVo vo : voList) {
+            String groupKey = vo.getGroupKey();
+            map.put(groupKey, vo.getCount());
+        }
+
+        // 使用新的map结果集
+       voList = new ArrayList<>();
+        for (String key : map.keySet()) {
+            ReportWorkVo vo = new ReportWorkVo();
+            vo.setGroupKey(key);
+            vo.setCount(map.get(key));
+            voList.add(vo);
+
+        }
+
+
+        return voList;
     }
 
+
+
     @Override
     public Result edit(SomeDataDto param) {
         long startTime = System.currentTimeMillis();

+ 42 - 11
720yun_fd_manage/gis_service/src/main/java/com/gis/task/VisitTask.java

@@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil;
 import com.gis.common.constant.RedisConstant;
 import com.gis.common.util.RedisUtil;
 import com.gis.domain.entity.ReportEntity;
+import com.gis.domain.vo.ReportWorkVo;
 import com.gis.oss.util.FileUtils;
 import com.gis.service.FodderService;
 import com.gis.service.ReportService;
@@ -15,6 +16,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -133,10 +135,27 @@ public class VisitTask {
      */
     private void allWork(LocalDate today){
 
-       Map res =  workService.countByType(null);
-        Integer mix = convert((Integer)res.get("mix")) ;
-        Integer age = convert((Integer)res.get("4dkk")) ;
-        Integer pano = convert((Integer)res.get("pano")) ;
+        List<ReportWorkVo> vos = workService.countByType(null);
+        Integer mix = 0;
+        Integer age = 0;
+        Integer pano = 0;
+        for (ReportWorkVo vo : vos) {
+            String groupKey = vo.getGroupKey();
+            Integer count = vo.getCount();
+            if ("mix".equals(groupKey)){
+                mix = count;
+                continue;
+            }
+            if ("4dkk".equals(groupKey)){
+                age = count;
+                continue;
+            }
+            if ("pano".equals(groupKey)){
+                pano = count;
+            }
+
+        }
+
 
         ReportEntity entity = new ReportEntity();
         entity.setType("work");
@@ -154,11 +173,26 @@ public class VisitTask {
 
     private void addWork(LocalDate today){
 
-        Map res =  workService.countByType(today);
-        Integer mix = convert((Integer)res.get("mix")) ;
-        Integer age = convert((Integer)res.get("4dkk")) ;
-        Integer pano = convert((Integer)res.get("pano")) ;
+        List<ReportWorkVo> vos = workService.countByType(today);
+        Integer mix = 0;
+        Integer age = 0;
+        Integer pano = 0;
+        for (ReportWorkVo vo : vos) {
+            String groupKey = vo.getGroupKey();
+            Integer count = vo.getCount();
+            if ("mix".equals(groupKey)){
+                mix = count;
+                continue;
+            }
+            if ("4dkk".equals(groupKey)){
+                age = count;
+                continue;
+            }
+            if ("pano".equals(groupKey)){
+                pano = count;
+            }
 
+        }
         ReportEntity entity = new ReportEntity();
         entity.setType("work");
         entity.setAge(age);
@@ -175,10 +209,7 @@ public class VisitTask {
 
 
 
-    private Integer convert(Integer num){
-        return num == null ? 0 : num;
 
-    }
 
 
 

+ 1 - 2
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/AgeController.java

@@ -15,13 +15,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.Map;
 
 /**
  * Created by owen on 2022/6/28 0028 16:56
  *
  */
-@Api(tags = "提供四维看看接口 请求头需要appId")
+@Api(tags = "v1.3-提供四维看看接口 请求头需要appId")
 @RestController
 @RequestMapping("/api/age")
 public class AgeController {

+ 27 - 27
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/FodderController.java

@@ -54,21 +54,21 @@ public class FodderController extends BaseController {
      * @param tempId
      * @return
      */
-    @ApiOperation(value = "上传素材", notes = "type:类型, 全景图:pano, 图片:image, 音频:audio, 视频:video, temId: 前端临时Id")
-    @PostMapping("upload/{type}/{tempId}")
-    public Result upload(MultipartFile file, @PathVariable String type, @PathVariable String tempId) {
-
-        if (file == null) {
-            log.error("文件不能为空");
-            return Result.failure(ErrorEnum.FAILURE_CODE_3020.code(),"文件不能为空");
-        }
-        FodderUploadDto dto = new FodderUploadDto();
-        dto.setFile(file);
-        dto.setTemId(tempId);
-        dto.setType(type);
-        dto.setDirId(1L); // 默认跟目录
-        return fodderService.upload(dto);
-    }
+//    @ApiOperation(value = "上传素材", notes = "type:类型, 全景图:pano, 图片:image, 音频:audio, 视频:video, temId: 前端临时Id")
+//    @PostMapping("upload/{type}/{tempId}")
+//    public Result upload(MultipartFile file, @PathVariable String type, @PathVariable String tempId) {
+//
+//        if (file == null) {
+//            log.error("文件不能为空");
+//            return Result.failure(ErrorEnum.FAILURE_CODE_3020.code(),"文件不能为空");
+//        }
+//        FodderUploadDto dto = new FodderUploadDto();
+//        dto.setFile(file);
+//        dto.setTemId(tempId);
+//        dto.setType(type);
+//        dto.setDirId(1L); // 默认跟目录
+//        return fodderService.upload(dto);
+//    }
 
 
     /**
@@ -82,18 +82,18 @@ public class FodderController extends BaseController {
     }
 
 
-    /**
-     *  2022-12--6 旧接口停用
-     *  2021-04-30
-     *  目前只返回计算成功的数据
-     * @param param
-     * @return
-     */
-    @ApiOperation(value = "列表", position = 1)
-    @PostMapping("list")
-    public Result<FodderEntity> list(@RequestBody FodderPageDto param) {
-        return fodderService.search(param);
-    }
+//    /**
+//     *  2022-12--6 旧接口停用
+//     *  2021-04-30
+//     *  目前只返回计算成功的数据
+//     * @param param
+//     * @return
+//     */
+//    @ApiOperation(value = "列表", position = 1)
+//    @PostMapping("list")
+//    public Result<FodderEntity> list(@RequestBody FodderPageDto param) {
+//        return fodderService.search(param);
+//    }
 
 
     @ApiOperation(value = "修改", position = 1)