wuweihao 2 年之前
父節點
當前提交
85a55595a8

+ 4 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/ReportMapper.java

@@ -3,6 +3,7 @@ package com.gis.mapper;
 
 import com.gis.common.mapper.provider.BaseProvider;
 import com.gis.domain.entity.ReportEntity;
+import com.gis.domain.vo.ReportVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.springframework.stereotype.Component;
@@ -20,4 +21,7 @@ public interface ReportMapper extends IBaseMapper<ReportEntity, Long> {
 
     @SelectProvider(type = BaseProvider.class, method = "selectSql")
     Integer countIntSql(String format);
+
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    List<ReportVo> listReportVoSql(String toString);
 }

+ 91 - 24
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/ReportServiceImpl.java

@@ -115,6 +115,72 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
         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;
+    }
+
     @Override
     public Result reportWork() {
         Map map = workService.countByType(null);
@@ -136,30 +202,31 @@ public class ReportServiceImpl extends IBaseServiceImpl<ReportEntity, Long> impl
 
     @Override
     public Result workTrend(ReportPo po) {
-        List<Map> trent = this.getTrent(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) {
-            for (Object key : map.keySet()) {
-                String groupKey = (String) key;
-                for (ReportEntity entity : all) {
-                    String day = entity.getDay().toString();
-                    if (groupKey.contains(day)){
-                        ReportVo vo = new ReportVo();
-                        BeanUtils.copyProperties(entity, vo);
-                        vo.setGroupKey(groupKey);
-                        res.add(vo);
-
-                    }
-                }
-            }
-        }
-
-        return Result.success(res);
+        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){