Ver código fonte

Merge remote-tracking branch 'origin/master'

Administrator 1 ano atrás
pai
commit
67edbcec96

+ 23 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/interview/InterviewTableController.java

@@ -72,7 +72,6 @@ public class InterviewTableController extends BaseController
     /**
      * 新增网页访问记录
      */
-    @PreAuthorize("@ss.hasPermi('interview:table:add')")
     @Log(title = "网页访问记录", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody InterviewTable interviewTable)
@@ -102,5 +101,28 @@ public class InterviewTableController extends BaseController
         return toAjax(interviewTableService.deleteInterviewTableByInterviewIds(interviewIds));
     }
 
+    /**
+     * PC首页浏览统计
+     * @param type 查询类型(1:年,2:月)
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('interview:table:browse')")
+    @GetMapping("/browse")
+    public AjaxResult browse(String type)
+    {
+        return interviewTableService.browse(type);
+    }
+
+    /**
+     * PC首页人均停留时长统计
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('interview:table:stay')")
+    @GetMapping("/stay")
+    public AjaxResult stay()
+    {
+        return interviewTableService.stay();
+    }
+
 
 }

+ 1 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -111,10 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage").permitAll()
                 .antMatchers("/ueditor/**").permitAll()
                 .antMatchers("/investigate/**","/investigate/disposition/**","/sendSms/**").permitAll()
-                .antMatchers("/login", "/register", "/captchaImage","/common/filetext").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage","/common/filetext","/interview/**").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/system/domain/InterviewTable.java

@@ -24,7 +24,7 @@ public class InterviewTable extends BaseEntity
 
     /** 访问时间(分钟,保留两位小数) */
     @Excel(name = "访问时间")
-    private String interviewTime;
+    private Double interviewTime;
 
     /** 年 */
     @Excel(name = "年")
@@ -56,12 +56,12 @@ public class InterviewTable extends BaseEntity
     {
         return equipmentId;
     }
-    public void setInterviewTime(String interviewTime) 
+    public void setInterviewTime(Double interviewTime)
     {
         this.interviewTime = interviewTime;
     }
 
-    public String getInterviewTime() 
+    public Double getInterviewTime()
     {
         return interviewTime;
     }

+ 6 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IInterviewTableService.java

@@ -1,6 +1,8 @@
 package com.ruoyi.system.service;
 
 import java.util.List;
+
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.InterviewTable;
 
 /**
@@ -58,4 +60,8 @@ public interface IInterviewTableService
      * @return 结果
      */
     public int deleteInterviewTableByInterviewId(Long interviewId);
+
+    AjaxResult browse(String type);
+
+    AjaxResult stay();
 }

+ 244 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InterviewTableServiceImpl.java

@@ -1,7 +1,14 @@
 package com.ruoyi.system.service.impl;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -59,10 +66,10 @@ public class InterviewTableServiceImpl implements IInterviewTableService
         String year = time.split("-")[0];
         interviewTable.setYear(year);
         //获取月
-        String month = time.split("-")[2];
+        String month = time.split("-")[1];
         interviewTable.setMonth(month);
         //获取日
-        String date = time.split("-")[3];
+        String date = time.split("-")[2];
         interviewTable.setDay(date);
         interviewTable.setCreateTime(DateUtils.getNowDate());
         return interviewTableMapper.insertInterviewTable(interviewTable);
@@ -104,4 +111,239 @@ public class InterviewTableServiceImpl implements IInterviewTableService
     {
         return interviewTableMapper.deleteInterviewTableByInterviewId(interviewId);
     }
+
+    /**
+     * PC首页浏览统计
+     * @param type 查询类型(1:年,2:月)
+     * @return
+     */
+    @Override
+    public AjaxResult browse(String type) {
+        String time = DateUtils.getDate();
+        //获取月
+        String num = time.split("-")[1];
+
+        Map<String,Object> map = new HashMap<>();
+        //查询所有数据
+        List<InterviewTable> interviewTableList = interviewTableMapper.selectInterviewTableList(new InterviewTable());
+        //总浏览次数
+        int cs = 0;
+        //总浏览人数
+        int rs = 0;
+        //累计浏览终端数
+        int zd = 0;
+        //人均停留时长
+        String rj = "0";
+        if(interviewTableList!=null && interviewTableList.size()>0){
+            //总浏览次数
+            cs = interviewTableList.size();
+            //总浏览人数
+            List<String> equipId = interviewTableList.stream().map(InterviewTable::getEquipmentId).collect(Collectors.toList());
+            rs = equipId.size();
+            //累计浏览终端数
+            zd = interviewTableList.size();
+            //人均停留时长
+            Double sum = interviewTableList.stream().mapToDouble(InterviewTable::getInterviewTime).sum();
+            BigDecimal a = BigDecimal.valueOf(Double.valueOf(sum)).divide(BigDecimal.valueOf(rs),2, BigDecimal.ROUND_HALF_UP);
+            rj = a.toString();
+        }
+        //总浏览次数
+        map.put("cs",cs);
+        //总浏览人数
+        map.put("rs",rs);
+        //累计浏览终端数
+        map.put("zd",zd);
+        //人均停留时长
+        map.put("rj",rj);
+
+        Map<String,Object> zMap = new HashMap<>();
+        List<Object> list1 = new ArrayList<>();
+        List<Object> list2 = new ArrayList<>();
+        List<Object> list3 = new ArrayList<>();
+        List<Object> list4 = new ArrayList<>();
+        //年
+        if("1".equals(type)){
+            //获取当前年的所有数据
+            InterviewTable table = new InterviewTable();
+            table.setYear(num);
+            List<InterviewTable> interviewTableYear = interviewTableMapper.selectInterviewTableList(table);
+            if(interviewTableYear!=null && interviewTableYear.size()>0){
+                //根据month字段进行分组
+                Map<String, List<InterviewTable>> monthMap = interviewTableYear.stream().collect(
+                        Collectors.groupingBy(
+                                InterviewTable -> InterviewTable.getMonth()
+                        ));
+                //循环1-12
+                for (int i = 1; i < 13; i++) {
+                    String rq = i+"月";
+                    int rqzrs = 0;
+                    int rqzcs = 0;
+                    int rqzds = 0;
+                    List<InterviewTable> interviewTableMonth = new ArrayList<>();
+                    if(i<=10){
+                        interviewTableMonth = monthMap.get("0"+i);
+
+                    }else{
+                        interviewTableMonth = monthMap.get(i);
+                    }
+                    if(interviewTableMonth!=null && interviewTableMonth.size()>0){
+                        //总浏览人数
+                        List<String> equipId = interviewTableMonth.stream().map(InterviewTable::getEquipmentId).collect(Collectors.toList());
+                        rqzrs = equipId.size();
+                        //总浏览次数
+                        rqzcs = interviewTableMonth.size();
+                        //累计浏览终端数
+                        rqzds = interviewTableMonth.size();
+                    }
+                    //日期
+                    list1.add(rq);
+                    //总浏览人数
+                    list2.add(rqzrs);
+                    //总浏览次数
+                    list3.add(rqzcs);
+                    //累计浏览终端数
+                    list4.add(rqzds);
+                }
+
+            }else{
+                //循环1-12
+                for (int i = 1; i < 13; i++) {
+                    //日期
+                    list1.add(i+"月");
+                    //总浏览人数
+                    list2.add(0);
+                    //总浏览次数
+                    list3.add(0);
+                    //累计浏览终端数
+                    list4.add(0);
+                }
+            }
+        }
+        //日
+        if("2".equals(type)){
+            //获取当前月天数
+            LocalDate localDate = LocalDate.now();
+            int numberOfDays = localDate.lengthOfMonth();
+
+            //获取当前年的所有数据
+            InterviewTable table = new InterviewTable();
+            table.setMonth(num);
+            List<InterviewTable> interviewTableMonth = interviewTableMapper.selectInterviewTableList(table);
+            if(interviewTableMonth!=null && interviewTableMonth.size()>0){
+                //根据day字段进行分组
+                Map<String, List<InterviewTable>> dayMap = interviewTableMonth.stream().collect(
+                        Collectors.groupingBy(
+                                InterviewTable -> InterviewTable.getDay()
+                        ));
+                //循环当前月天数
+                for (int i = 1; i < numberOfDays+1; i++) {
+                    String rq = i+"号";
+                    int rqzrs = 0;
+                    int rqzcs = 0;
+                    int rqzds = 0;
+                    List<InterviewTable> interviewTableDay = new ArrayList<>();
+                    if(i<=10){
+                        interviewTableDay = dayMap.get("0"+i);
+
+                    }else{
+                        interviewTableDay = dayMap.get(i);
+                    }
+                    if(interviewTableDay!=null && interviewTableDay.size()>0){
+                        //总浏览人数
+                        List<String> equipId = interviewTableDay.stream().map(InterviewTable::getEquipmentId).collect(Collectors.toList());
+                        rqzrs = equipId.size();
+                        //总浏览次数
+                        rqzcs = interviewTableDay.size();
+                        //累计浏览终端数
+                        rqzds = interviewTableDay.size();
+                    }
+                    //日期
+                    list1.add(rq);
+                    //总浏览人数
+                    list2.add(rqzrs);
+                    //总浏览次数
+                    list3.add(rqzcs);
+                    //累计浏览终端数
+                    list4.add(rqzds);
+                }
+
+            }else{
+                //循环当前月天数
+                for (int i = 1; i < numberOfDays+1; i++) {
+                    //日期
+                    list1.add(i+"月");
+                    //总浏览人数
+                    list2.add(0);
+                    //总浏览次数
+                    list3.add(0);
+                    //累计浏览终端数
+                    list4.add(0);
+                }
+            }
+        }
+        zMap.put("rq",list1);
+        zMap.put("rqzrs",list2);
+        zMap.put("rqzcs",list3);
+        zMap.put("rqzds",list4);
+        map.put("tjt",zMap);
+        return AjaxResult.success(map);
+    }
+
+    @Override
+    public AjaxResult stay() {
+        Map<String,Object> map = new HashMap<>();
+        //查询所有数据
+        List<InterviewTable> interviewTableList = interviewTableMapper.selectInterviewTableList(new InterviewTable());
+        //0-5
+        int one = 0;
+        //5-10
+        int two = 0;
+        //10-20
+        int three = 0;
+        //20-30
+        int four = 0;
+        //30-60
+        int five = 0;
+        //60-
+        int six = 0;
+
+        //人均停留时长
+        String rj = "0";
+        if(interviewTableList!=null && interviewTableList.size()>0){
+            //总浏览人数
+            List<String> equipId = interviewTableList.stream().map(InterviewTable::getEquipmentId).collect(Collectors.toList());
+            int rs = equipId.size();
+            //人均停留时长
+            Double sum = interviewTableList.stream().mapToDouble(InterviewTable::getInterviewTime).sum();
+            BigDecimal a = (BigDecimal.valueOf(Double.valueOf(sum)).divide(BigDecimal.valueOf(rs))).setScale(2,BigDecimal.ROUND_UP);
+            rj = a.toString();
+
+            for (InterviewTable table : interviewTableList) {
+                if(table.getInterviewTime()<=5){
+                    one++;
+                }else if(table.getInterviewTime()<=10){
+                    two++;
+                }else if(table.getInterviewTime()<=20){
+                    three++;
+                }else if(table.getInterviewTime()<=30){
+                    four++;
+                }else if(table.getInterviewTime()<=60){
+                    five++;
+                }else{
+                    six++;
+                }
+            }
+
+        }
+        map.put("one",one);
+        map.put("two",two);
+        map.put("three",three);
+        map.put("four",four);
+        map.put("five",five);
+        map.put("six",six);
+        map.put("rj",rj);
+        return AjaxResult.success(map);
+    }
+
+
 }