swy hai 3 semanas
pai
achega
4f65328646

+ 11 - 3
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/loginacea/controller/LoginAceController.java

@@ -28,6 +28,7 @@ import com.jeeplus.loginacea.service.LoginAceService;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Map;
 
@@ -62,8 +63,15 @@ public class LoginAceController {
 	}*/
 
 	public ResponseEntity<IPage<LoginAceDTO>> list(LoginAceDTO loginAceDTO, Page<LoginAceDTO> page) throws Exception {
-		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (loginAceDTO, LoginAceDTO.class);
-		IPage<LoginAceDTO> result = loginAceService.findPage (page, queryWrapper,loginAceDTO.getRoleId(),loginAceDTO.getDes1(),loginAceDTO.getDtime());
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+		if(loginAceDTO.getTimeRange() != null && loginAceDTO.getTimeRange().length > 0){
+            String s = loginAceDTO.getTimeRange()[0];
+            String s1 =loginAceDTO.getTimeRange()[1];
+			loginAceDTO.setStime(s);
+			loginAceDTO.setEtime(s1);
+        }
+        QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (loginAceDTO, LoginAceDTO.class);
+		IPage<LoginAceDTO> result = loginAceService.findPage (page, queryWrapper,loginAceDTO.getRoleId(),loginAceDTO.getDes1(),loginAceDTO.getDtime(),loginAceDTO.getStime(),loginAceDTO.getEtime());
 		return ResponseEntity.ok (result);
 	}
 
@@ -157,7 +165,7 @@ public class LoginAceController {
 		}
 
 		// 查询数据
-		IPage<LoginAceDTO> resultPage = loginAceService.findPage (page, queryWrapper,loginAceDTO.getRoleId(),loginAceDTO.getDes1(),loginAceDTO.getDtime());
+		IPage<LoginAceDTO> resultPage = loginAceService.findPage (page, queryWrapper,loginAceDTO.getRoleId(),loginAceDTO.getDes1(),loginAceDTO.getDtime(),loginAceDTO.getStime(),loginAceDTO.getEtime());
 
 		List<LoginAceDTO> resultDTOs = resultPage.getRecords();
 

+ 4 - 1
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/loginacea/mapper/LoginAceMapper.java

@@ -6,9 +6,12 @@ package com.jeeplus.loginacea.mapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.enterpriseinfo.service.dto.EnterpriseInfoDTO;
 import com.jeeplus.loginacea.domain.LoginAce;
 import com.jeeplus.loginacea.service.dto.LoginAceDTO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -21,7 +24,7 @@ import java.util.Map;
 public interface LoginAceMapper extends BaseMapper<LoginAce> {
 
 
-    IPage<LoginAceDTO> findList(Page<LoginAceDTO> page, QueryWrapper queryWrapper,String roleId,String des1,String dtime);
+    IPage<LoginAceDTO> findList(Page<LoginAceDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper,String roleId,String des1,String dtime,String stime,String etime);
 
 
     List<LoginAceDTO> findList1(Map<String, Object> params);

+ 71 - 62
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/loginacea/mapper/xml/LoginAceMapper.xml

@@ -4,87 +4,96 @@
 
     <select id="findList" resultType="com.jeeplus.loginacea.service.dto.LoginAceDTO">
         SELECT
-            ei.des1 AS des1,
-            COUNT(DISTINCT su.ID) AS totalCount,
-            COUNT(DISTINCT CASE WHEN su.login_date IS NOT NULL THEN su.ID END) AS loginYesc,
-            COUNT(DISTINCT CASE WHEN su.login_date IS NULL THEN su.ID END) AS loginNotc
+        ei.des1 AS des1,
+        COUNT(DISTINCT su.ID) AS zs,
+        COUNT(DISTINCT CASE WHEN su.login_date IS NOT NULL THEN su.ID END) AS cg,
+        COUNT(DISTINCT CASE WHEN su.login_date IS NULL THEN su.ID END) AS sb
         FROM
-            ly_enterprise_info AS ei
-                LEFT JOIN
-            sys_user AS su
-            ON
-                su.login_name IN (ei.des13, ei.bz6, ei.phone)
-                LEFT JOIN
-            sys_user_role AS sur
-            ON
-                sur.user_id = su.ID
-                LEFT JOIN
-            sys_role AS sr
-            ON
-                sr.ID = sur.role_id
+        ly_enterprise_info AS ei
+        INNER JOIN sys_user AS su ON su.login_name IN (ei.des13, ei.bz6, ei.phone) AND su.login_date IS NOT NULL
+        LEFT JOIN sys_user_role AS sur ON sur.user_id = su.ID
+        LEFT JOIN sys_role AS sr ON sr.ID = sur.role_id
         WHERE
-            ei.del_flag=0
-          and sr.id not in ('ade960e8f02544998b07397304c059c1','17bac1f980264e3e8193bc965538e2c6')
-        <if test="roleId != null and roleId !=''">
-            and sr.id=#{roleId}
+        ei.del_flag = 0
+        AND sr.id NOT IN ('ade960e8f02544998b07397304c059c1', '17bac1f980264e3e8193bc965538e2c6')
+        <if test="roleId != null and roleId != ''">
+            AND sr.id = #{roleId}
         </if>
-        <if test="des1 != null and des1 !=''">
-            and ei.des1=#{des1}
+        <if test="des1 != null and des1 != ''">
+            AND ei.des1 = #{des1}
         </if>
-        <if test="dtime != null and dtime ==1">
-/*            and su.login_date >= DATE_FORMAT(CURDATE(), '%Y-01-01') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-01-01') + INTERVAL 1
-*/
-            and YEAR(su.login_date) = YEAR(CURDATE())
+        <if test="dtime != null and dtime == 1">
+            AND YEAR(su.login_date) = YEAR(CURDATE())
         </if>
-        <if test="dtime != null and dtime ==2">
-            and su.login_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH
+        <if test="dtime != null and dtime == 2">
+            AND su.login_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND su.login_date  <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH
         </if>
-        <if test="dtime != null and dtime ==3">
-            and su.login_date >= DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') + INTERVAL 1 YEAR
+        <if test="dtime != null and dtime == 3">
+            AND su.login_date >= DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') + INTERVAL 1 YEAR
+        </if>
+        <if test="dtime != null and dtime == 4">
+            AND su.login_date >= DATE_FORMAT(CURDATE(), '%Y-%m-%d') AND su.login_date  <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-%d') + INTERVAL 1 DAY
+        </if>
+        <if test="stime != null and etime != null">
+            AND su.login_date >= #{stime} AND su.login_date <![CDATA[<]]> #{etime}
         </if>
         GROUP BY
-            ei.des1
+        ei.des1
+        ${ew.customSqlSegment}
     </select>
 
     <select id="findList1" resultType="com.jeeplus.loginacea.service.dto.LoginAceDTO">
         SELECT DISTINCT
-            su.login_name AS loginName,
-            su.name AS name,
-            su.login_date AS loginDate,
-        MIN(ei.name) AS ggqy
+        su.login_name AS loginName,
+        su.name AS name,
+        su.login_date AS loginDate,
+        MIN(ei.name) AS ggqy,
+        COALESCE(log.loginCount, 0) AS cs  -- 统计用户的登录次数,没有登录记录的显示为0
         FROM
-            ly_enterprise_info AS ei
-                LEFT JOIN
-            sys_user AS su ON su.login_name IN (ei.des13, ei.bz6, ei.phone)
-                LEFT JOIN
-            sys_user_role AS sur ON sur.user_id = su.ID
-                LEFT JOIN
-            sys_role AS sr ON sr.ID = sur.role_id
-        WHERE
-            ei.del_flag = 0
-          AND sr.id NOT IN ('ade960e8f02544998b07397304c059c1', '17bac1f980264e3e8193bc965538e2c6')
-        <if test="roleId != null and roleId !=''">
-            and sr.id=#{roleId}
+        ly_enterprise_info AS ei
+        LEFT JOIN sys_user AS su ON su.login_name IN (ei.des13, ei.bz6, ei.phone)
+        LEFT JOIN sys_user_role AS sur ON sur.user_id = su.ID
+        LEFT JOIN sys_role AS sr ON sr.ID = sur.role_id
+        LEFT JOIN (
+        SELECT create_by, COUNT(*) AS loginCount
+        FROM sys_log
+        WHERE type = 1 AND title = '首页访问'
+        <if test="dtime != null">
+            <if test="dtime == 1">
+                AND YEAR(create_date) = YEAR(CURDATE())
+            </if>
+            <if test="dtime == 2">
+                AND create_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND create_date <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH
+            </if>
+            <if test="dtime == 3">
+                AND create_date >= DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') AND create_date <![CDATA[<]]> DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') + INTERVAL 1 YEAR
+            </if>
+            <if test="dtime == 4">
+                AND create_date >= DATE_FORMAT(CURDATE(), '%Y-%m-%d') AND create_date <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-%d') + INTERVAL 1 DAY
+            </if>
         </if>
-        <if test="des1 != null and des1 !=''">
-            and ei.des1=#{des1}
+        <if test="stime != null and etime != null">
+            AND create_date >= #{stime} AND create_date <![CDATA[<]]> #{etime}
         </if>
-        <if test="dtime != null and dtime ==1">
-            and YEAR(su.login_date) = YEAR(CURDATE())
-        </if>
-        <if test="dtime != null and dtime ==2">
-            and su.login_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE(), '%Y-%m-01') + INTERVAL 1 MONTH
+        GROUP BY create_by
+        ) AS log ON log.create_by = su.ID
+        WHERE
+        ei.del_flag = 0
+        AND sr.id NOT IN ('ade960e8f02544998b07397304c059c1', '17bac1f980264e3e8193bc965538e2c6')
+        <if test="roleId != null and roleId != ''">
+            AND sr.id = #{roleId}
         </if>
-        <if test="dtime != null and dtime ==3">
-            and su.login_date >= DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') AND su.login_date <![CDATA[<]]> DATE_FORMAT(CURDATE() - INTERVAL (DAYOFWEEK(CURDATE()) - 1) DAY, '%Y-%m-%d') + INTERVAL 1 YEAR
+        <if test="des1 != null and des1 != ''">
+            AND ei.des1 = #{des1}
         </if>
-        <if test="status != null and status ==1">
-            and su.login_date IS NOT NULL
+        <if test="status != null and status == 1">
+            AND su.login_date IS NOT NULL
         </if>
-        <if test="status != null and status ==2">
-            and su.login_date IS  NULL
+        <if test="status != null and status == 2">
+            AND su.login_date IS NULL
         </if>
-        GROUP BY su.login_name, su.name, su.login_date
+        GROUP BY
+        su.login_name, su.name, su.login_date
     </select>
 
 </mapper>

+ 2 - 2
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/loginacea/service/LoginAceService.java

@@ -25,9 +25,9 @@ import java.util.Map;
 @Transactional
 public class LoginAceService extends ServiceImpl<LoginAceMapper, LoginAce> {
 
-    public IPage<LoginAceDTO> findPage(Page<LoginAceDTO> page, QueryWrapper queryWrapper,String roleId,String des1,String dtime) {
+    public IPage<LoginAceDTO> findPage(Page<LoginAceDTO> page, QueryWrapper queryWrapper,String roleId,String des1,String dtime,String stime,String etime) {
         // queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
-        return  baseMapper.findList (page, queryWrapper,roleId,des1,dtime);
+        return  baseMapper.findList (page, queryWrapper,roleId,des1,dtime,stime,etime);
     }
 
     public List<LoginAceDTO> findList1(Map<String, Object> params) {

+ 16 - 3
jp-console/jeeplus-module/ly/src/main/java/com/jeeplus/loginacea/service/dto/LoginAceDTO.java

@@ -3,10 +3,15 @@
  */
 package com.jeeplus.loginacea.service.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.service.dto.BaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
 /**
  * 地区登入报表DTO
  * @author 孙伟宇
@@ -29,19 +34,19 @@ public class LoginAceDTO extends BaseDTO {
      * 关联总数
      */
 	@ExcelProperty("关联总数") 
-	private String totalCount;
+	private String zs;
 	        
 	/**
      * 已登入用户数
      */
 	@ExcelProperty("已登入用户数") 
-	private String loginYesc;
+	private String cg;
 	        
 	/**
      * 未登入用户数
      */
 	@ExcelProperty("未登入用户数") 
-	private String loginNotc;
+	private String sb;
 	        
 	/**
      * 用户名
@@ -71,4 +76,12 @@ public class LoginAceDTO extends BaseDTO {
 
 	private String dtime;
 
+
+	private String stime;
+
+	private String etime;
+
+	private String[] timeRange;
+
+	private String cs;
 }

+ 11 - 3
jp-ui/src/views/modules/loginacea/LoginAceForm.vue

@@ -30,6 +30,11 @@
           prop="loginDate"
           label="最近登录时间"
          >
+         </el-table-column>
+          <el-table-column
+           prop="cs"
+           label="登入次数"
+          >
         </el-table-column>
       </el-table>
     </el-dialog>
@@ -50,7 +55,8 @@
           des1: '',
           roleId: '',
           dtime: '',
-          status: ''
+          status: '',
+          timeRange: []
         }
       }
     },
@@ -81,7 +87,7 @@
         })
       }, */
        methods: {
-         init (method, id, des1, roleId, dtime, status) {
+         init (method, id, des1, roleId, dtime, status,timeRange) {
            this.visible = true;
            this.loading = true;
            this.inputForm.id = id;
@@ -89,13 +95,15 @@
            this.inputForm.roleId = roleId;
            this.inputForm.dtime = dtime;
            this.inputForm.status = status;
+           this.inputForm.timeRange = timeRange;
 
            loginAceService.queryById({
              id: this.inputForm.id,
              des1: this.inputForm.des1,
              roleId: this.inputForm.roleId,
              dtime: this.inputForm.dtime,
-             status: this.inputForm.status
+             status: this.inputForm.status,
+             timeRange: this.inputForm.timeRange
            }).then(({ data }) => {
              this.dataList = data; // 将查询结果存储到dataList中
              this.loading = false;

+ 24 - 10
jp-ui/src/views/modules/loginacea/LoginAceList.vue

@@ -32,8 +32,21 @@
                     <el-option label="本年" value="1"></el-option>
                     <el-option label="本月" value="2"></el-option>
                     <el-option label="本周" value="3"></el-option>
+                    <el-option label="当天" value="4"></el-option>
                 </el-select>
             </el-form-item>
+            <el-form-item prop="timeRange">
+              <el-date-picker
+                v-model="searchForm.timeRange"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
+                value-format="yyyy-MM-dd"
+                size="small"
+                clearable
+              ></el-date-picker>
+            </el-form-item>
             <!-- 搜索框-->
           <el-form-item>
             <el-button type="primary" @click="refreshList()" size="small" icon="el-icon-search">查询</el-button>
@@ -101,27 +114,27 @@
         title="地区">
       </vxe-column>
     <vxe-column
-        field="totalCount"
+        field="zs"
         sortable
         title="关联总数">
       </vxe-column>
     <vxe-column
-        field="loginYesc"
+        field="cg"
         sortable
         title="已登录用户数">
      <template slot-scope="scope">
-        <el-link  type="primary" :underline="false" v-if="hasPermission('loginacea:loginAce:edit')" @click="edit(scope.row.id,scope.row.des1, searchForm,1)">{{scope.row.loginYesc}}</el-link>
-        <el-link  type="primary" :underline="false" v-else-if="hasPermission('loginacea:loginAce:view')"  @click="view(scope.row.id,scope.row.des1, searchForm,1)">{{scope.row.loginYesc}}</el-link>
+        <el-link  type="primary" :underline="false" v-if="hasPermission('loginacea:loginAce:edit')" @click="edit(scope.row.id,scope.row.des1, searchForm,1)">{{scope.row.cg}}</el-link>
+        <el-link  type="primary" :underline="false" v-else-if="hasPermission('loginacea:loginAce:view')"  @click="view(scope.row.id,scope.row.des1, searchForm,1)">{{scope.row.cg}}</el-link>
         <span v-else>{{scope.row.des1}}</span>
                         </template>
       </vxe-column>
     <vxe-column
-        field="loginNotc"
+        field="sb"
         sortable
         title="未登录用户数">
         <template slot-scope="scope">
-         <el-link  type="primary" :underline="false" v-if="hasPermission('loginacea:loginAce:edit')" @click="edit(scope.row.id,scope.row.des1, searchForm,2)">{{scope.row.loginNotc}}</el-link>
-         <el-link  type="primary" :underline="false" v-else-if="hasPermission('loginacea:loginAce:view')"  @click="view(scope.row.id,scope.row.des1, searchForm,2)">{{scope.row.loginNotc}}</el-link>
+         <el-link  type="primary" :underline="false" v-if="hasPermission('loginacea:loginAce:edit')" @click="edit(scope.row.id,scope.row.des1, searchForm,2)">{{scope.row.sb}}</el-link>
+         <el-link  type="primary" :underline="false" v-else-if="hasPermission('loginacea:loginAce:view')"  @click="view(scope.row.id,scope.row.des1, searchForm,2)">{{scope.row.sb}}</el-link>
          <span v-else>{{scope.row.des1}}</span>
         </template>
       </vxe-column>
@@ -152,7 +165,8 @@
         searchForm: {
           roleId:'',
           des1:'',
-          dtime:''
+          dtime:'',
+          timeRange: []
         },
         dataList: [],
         tablePage: {
@@ -209,11 +223,11 @@
         id = id || this.$refs.loginAceTable.getCheckboxRecords().map(item => {
           return item.id
         })[0]
-        this.$refs.loginAceForm.init('edit', id, des1, searchForm.roleId, searchForm.dtime,status)
+        this.$refs.loginAceForm.init('edit', id, des1, searchForm.roleId, searchForm.dtime,status, searchForm.timeRange)
       },
       // 查看
       view (id) {
-        this.$refs.loginAceForm.init('view', id, des1, searchForm.roleId, searchForm.dtime,status)
+        this.$refs.loginAceForm.init('view', id, des1, searchForm.roleId, searchForm.dtime,status, searchForm.timeRange)
       },
       // 删除
       del (id) {