Эх сурвалжийг харах

完成扫码时间分布接口

云殇忆 1 жил өмнө
parent
commit
13b5df7850

+ 6 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/StatisticsController.java

@@ -16,6 +16,12 @@ public class StatisticsController {
     @Autowired
     StatisticsService statisticsService;
 
+    // 扫码时间分布
+    @GetMapping("/timeDis")
+    public R timeDis(String option){
+        return R.ok(statisticsService.getTimeDis(option));
+    }
+
     // 获取扫描日志
     @PostMapping("/scanList")
     public R scanList(@RequestBody PlanBo bo){

+ 9 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/StatisticsMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface StatisticsMapper extends BaseMapper<Statistics> {
@@ -18,4 +19,12 @@ public interface StatisticsMapper extends BaseMapper<Statistics> {
     Integer selectDealCountByEquipmentCode(@Param("equipmentCode") String equipmentCode);
     // 累计收入
     Float selectTotalPriceByEquipmentCode(@Param("equipmentCode") String equipmentCode);
+
+    // 扫码记录
+    // 按月分析
+    Integer selectTimeDisByMonth(@Param("month") String month);
+    // 按日分析
+    Integer selectTimeDisByDay(@Param("day") String day);
+    // 按年分析
+    Integer selectTimeDisByYear(@Param("year") String year);
 }

+ 3 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/StatisticsService.java

@@ -8,6 +8,7 @@ import com.ruoyi.demo.entity.vo.PlanHomeVo;
 import com.ruoyi.demo.entity.vo.ScanListVo;
 
 import java.util.List;
+import java.util.Map;
 
 public interface StatisticsService {
     PageInfo<List<ScanListVo>> getScanList(PlanBo bo);
@@ -15,4 +16,6 @@ public interface StatisticsService {
 
     String getSign(StatisticsAddBo bo);
     int add(StatisticsAddBo bo);
+
+    Map<String,Integer> getTimeDis(String option);
 }

+ 1 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java

@@ -387,7 +387,7 @@ public class PlanServiceImpl implements PlanService {
     public void planPushStatisticsStart() {
         // 清除当前月的统计记录
         QueryWrapper<PlanPushStatistics> planPushStatisticsQueryWrapper = new QueryWrapper<>();
-        planPushStatisticsQueryWrapper.apply("STR_TO_DATE(laster_time,'%Y-%m') = STR_TO_DATE({0},'%Y-%m')",LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
+        planPushStatisticsQueryWrapper.apply("DATE_FORMAT(laster_time,'%Y-%m') = STR_TO_DATE({0},'%Y-%m')",LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
         planPushStatisticsMapper.delete(planPushStatisticsQueryWrapper);
         // 获取所有设备,遍历
         for (Equipment equipment : equipmentMapper.selectList(null)) {

+ 26 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StatisticsServiceImpl.java

@@ -19,9 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Transactional
@@ -123,4 +121,29 @@ public class StatisticsServiceImpl implements StatisticsService {
         // 添加扫码行为记录
         return statisticsMapper.insert(new Statistics(bo,equipment));
     }
+
+    @Override
+    public Map<String, Integer> getTimeDis(String option) {
+        Map<String, Integer> map = new LinkedHashMap<>();
+        if (option.equals("day")){
+            List<String> days = new ArrayList<>();
+            for (int i=0;i<30;i++)
+                days.add(LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusDays(-i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            for (String day : days)
+                map.put(day,statisticsMapper.selectTimeDisByDay(day));
+        } else if (option.equals("year")){
+            List<String> years = new ArrayList<>();
+            for (int i=0;i<12;i++)
+                years.add(LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusYears(-i).format(DateTimeFormatter.ofPattern("yyyy")));
+            for (String year : years)
+                map.put(year,statisticsMapper.selectTimeDisByYear(year));
+        } else {
+            List<String> months = new ArrayList<>();
+            for (int i=0;i<12;i++)
+                months.add(LocalDateTime.now(ZoneId.of("Asia/Shanghai")).plusMonths(-i).format(DateTimeFormatter.ofPattern("yyyy-MM")));
+            for (String month : months)
+                map.put(month,statisticsMapper.selectTimeDisByMonth(month));
+        }
+        return map;
+    }
 }

+ 33 - 0
ruoyi-demo/src/main/resources/mapper/demo/StatisticsMapper.xml

@@ -50,4 +50,37 @@
             equipment_code = #{equipmentCode}
           AND behavior = 1;
     </select>
+    <select id="selectTimeDisByMonth" resultType="java.lang.Integer">
+        SELECT
+	        COUNT(*) count
+        FROM
+            `dl_statistics`
+        <where>
+            <if test="month != null">
+                STR_TO_DATE(#{month},'%Y-%m')
+            </if>
+        </where>;
+    </select>
+    <select id="selectTimeDisByDay" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*) count
+        FROM
+            `dl_statistics`
+        <where>
+            <if test="day != null">
+                STR_TO_DATE(#{day},'%Y-%m-%d')
+            </if>
+        </where>;
+    </select>
+    <select id="selectTimeDisByYear" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*) count
+        FROM
+            `dl_statistics`
+        <where>
+            <if test="day != null">
+                STR_TO_DATE(#{year},'%Y')
+            </if>
+        </where>;
+    </select>
 </mapper>