Commit a7f06036 by 416409548@qq.com

一卡通打卡记录模块

parent 89e17f37
......@@ -4,34 +4,56 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="4" :sm="8">
<a-form-item label="设备类型">
<j-dict-select-tag v-model="queryParam.type" placeholder="请选择设备类型" dict-code="alarm_query_equipmentType"/>
</a-form-item>
</a-col>
<a-col :md="4" :sm="8">
<a-form-item label="设备名称">
<a-input placeholder="请输入设备名称" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<a-col :md="4" :sm="8">
<a-space style="float: left">
<a-button type="primary" @click="searchQuery">查询</a-button>
<a-button type="default" @click="searchReset">重置</a-button>
</a-space>
</a-col>
<a-col :md="12" :sm="8">
<a-space style="float: right">
<!-- <a-button @click="handleAdd" type="primary">新增</a-button> -->
<a-button @click="handleExportXls('一卡通打卡导出')" type="primary">导出</a-button>
</a-space>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('pm_access_control_device_record')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
</a-upload> -->
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
</div> -->
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
</div> -->
<a-table
ref="table"
......@@ -122,9 +144,34 @@
}
},
{
title:'门禁设备Id',
align:"center",
dataIndex: 'pmAccessControlDeviceId'
title: '区域名称',
align: "center",
dataIndex: 'districtName'
},
{
title: '设备编码',
align: "center",
dataIndex: 'code'
},
{
title: '设备类型',
align: "center",
dataIndex: 'type_dictText'
},
{
title: '设备名称',
align: "center",
dataIndex: 'name'
},
{
title: '设备ip',
align: "center",
dataIndex: 'ip'
},
{
title: '设备位置',
align: "center",
dataIndex: 'place'
},
{
title:'图片地址',
......@@ -134,24 +181,26 @@
{
title:'姓名',
align:"center",
dataIndex: 'name'
dataIndex: 'compellation'
},
{
title:'修改时间',
title:'员工归属',
align:"center",
dataIndex: 'modifyTime',
customRender:function (text) {
return !text?"":(text.length>10?text.substr(0,10):text)
}
dataIndex: 'classify_dictText'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
title: '创建时间',
align: "center",
dataIndex: 'createTime'
},
// {
// title: '操作',
// dataIndex: 'action',
// align:"center",
// fixed:"right",
// width:147,
// scopedSlots: { customRender: 'action' }
// }
],
url: {
list: "/pm/pmAccessControlDeviceRecord/list",
......
package org.jeecg.pm.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordDto;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordVo;
import org.jeecg.pm.service.IPmAccessControlDeviceRecordService;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
......@@ -19,6 +29,8 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description: 一卡通出入记录
......@@ -37,7 +49,7 @@ public class PmAccessControlDeviceRecordController extends JeecgController<PmAcc
/**
* 分页列表查询
*
* @param pmAccessControlDeviceRecord
* @param pmAccessControlDeviceRecordDto
* @param pageNo
* @param pageSize
* @param req
......@@ -46,13 +58,12 @@ public class PmAccessControlDeviceRecordController extends JeecgController<PmAcc
//@AutoLog(value = "pm_access_control_device_record-分页列表查询")
@ApiOperation(value = "pm_access_control_device_record-分页列表查询", notes = "pm_access_control_device_record-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<PmAccessControlDeviceRecord>> queryPageList(PmAccessControlDeviceRecord pmAccessControlDeviceRecord,
public Result<IPage<PmAccessControlDeviceRecordVo>> queryPageList(PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<PmAccessControlDeviceRecord> queryWrapper = QueryGenerator.initQueryWrapper(pmAccessControlDeviceRecord, req.getParameterMap());
Page<PmAccessControlDeviceRecord> page = new Page<PmAccessControlDeviceRecord>(pageNo, pageSize);
IPage<PmAccessControlDeviceRecord> pageList = pmAccessControlDeviceRecordService.page(page, queryWrapper);
Page<PmAccessControlDeviceRecordVo> page = new Page<PmAccessControlDeviceRecordVo>(pageNo, pageSize);
IPage<PmAccessControlDeviceRecordVo> pageList = pmAccessControlDeviceRecordService.recordPage(page, pmAccessControlDeviceRecordDto);
return Result.OK(pageList);
}
......@@ -133,11 +144,40 @@ public class PmAccessControlDeviceRecordController extends JeecgController<PmAcc
* 导出excel
*
* @param request
* @param pmAccessControlDeviceRecord
* @param pmAccessControlDeviceRecordDto
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PmAccessControlDeviceRecord pmAccessControlDeviceRecord) {
return super.exportXls(request, pmAccessControlDeviceRecord, PmAccessControlDeviceRecord.class, "pm_access_control_device_record");
public ModelAndView exportXls(HttpServletRequest request,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto,
HttpServletRequest req) {
// Step.1 组装查询条件
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// Step.2 获取导出数据
Page<PmAccessControlDeviceRecordVo> page = new Page<>(pageNo, pageSize);
IPage<PmAccessControlDeviceRecordVo> pmAccessControlDeviceRecordVoIPage = pmAccessControlDeviceRecordService.recordPage(page, pmAccessControlDeviceRecordDto);
List<PmAccessControlDeviceRecordVo> pageList = pmAccessControlDeviceRecordVoIPage.getRecords();
List<PmAccessControlDeviceRecordVo> exportList = null;
// 过滤选中数据
String selections = request.getParameter("selections");
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
} else {
exportList = pageList;
}
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "一卡通打卡记录");
mv.addObject(NormalExcelConstants.CLASS, PmAccessControlDeviceRecordVo.class);
ExportParams exportParams=new ExportParams("一卡通打卡记录" + "详情报表", "导出人:" + sysUser.getRealname(), "一卡通打卡记录管理");
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
return mv;
}
/**
......
......@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
......@@ -40,7 +41,8 @@ public class PmAccessControlDeviceRecord implements Serializable {
*/
@Excel(name = "门禁设备Id", width = 15)
@ApiModelProperty(value = "门禁设备Id")
private Integer pmAccessControlDeviceId;
private Long pmAccessControlDeviceId;
/**
* 图片地址
*/
......@@ -52,20 +54,29 @@ public class PmAccessControlDeviceRecord implements Serializable {
*/
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "姓名")
private String name;
private String compellation;
/**
* 状态
*/
@Excel(name = "状态", width = 15,dicCode = "access_control_classify")
@Dict(dicCode = "access_control_classify")
@ApiModelProperty(value = "员工归类 1:员工 2:访客 3:租户")
private Integer classify;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 修改时间
*/
@Excel(name = "修改时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private Date modifyTime;
}
package org.jeecg.pm.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 请求参数
* @Author: jeecg-boot
* @Date: 2022-03-15
* @Version: V1.0
*/
@Data
public class PmAccessControlDeviceRecordDto implements Serializable {
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型 1:出入口闸机 2:访客一体机 3:自助访客机 4:身份证读卡器 5:人脸识别")
@Excel(name = "设备类型", width = 15,dicCode = "alarm_query_equipmentType")
@Dict(dicCode = "alarm_query_equipmentType")
private Integer type;
/**
* 设备名称
*/
@Excel(name = "设备名称", width = 15)
@ApiModelProperty(value = "设备名称")
private String name;
}
package org.jeecg.pm.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 一卡通打卡信息返回
* @Author: jeecg-boot
* @Date: 2022-03-15
* @Version: V1.0
*/
@Data
public class PmAccessControlDeviceRecordVo extends PmAccessControlDeviceRecord implements Serializable {
/**
* 区域名称
*/
@Excel(name = "区域名称", width = 15)
@ApiModelProperty(value = "区域名称")
private String districtName;
/**
* 设备编码
*/
@Excel(name = "设备编码", width = 15)
@ApiModelProperty(value = "设备编码")
private String code;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型 1:出入口闸机 2:访客一体机 3:自助访客机 4:身份证读卡器 5:人脸识别")
@Excel(name = "设备类型", width = 15,dicCode = "alarm_query_equipmentType")
@Dict(dicCode = "alarm_query_equipmentType")
private Integer type;
/**
* 设备名称
*/
@Excel(name = "设备名称", width = 15)
@ApiModelProperty(value = "设备名称")
private String name;
/**
* 设备ip
*/
@Excel(name = "设备ip", width = 15)
@ApiModelProperty(value = "设备ip")
private String ip;
/**
* 设备位置
*/
@Excel(name = "设备位置", width = 15)
@ApiModelProperty(value = "设备位置")
private String place;
}
package org.jeecg.pm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.lettuce.core.dynamic.annotation.Param;
import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordDto;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordVo;
import java.util.List;
/**
* @Description: pm_access_control_device_record
......@@ -11,4 +18,10 @@ import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
*/
public interface PmAccessControlDeviceRecordMapper extends BaseMapper<PmAccessControlDeviceRecord> {
IPage<PmAccessControlDeviceRecordVo> recordPage(@Param("page") Page page, @Param("pmAccessControlDeviceRecordDto") PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto);
List<PmAccessControlDeviceRecordVo> recordPages(@Param("pmAccessControlDeviceRecordDto") PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto);
}
......@@ -2,4 +2,55 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.pm.mapper.PmAccessControlDeviceRecordMapper">
<select id="recordPage" resultType="org.jeecg.pm.entity.PmAccessControlDeviceRecordVo">
select
dr.id,
dr.pm_access_control_device_id,
dr.picture_url,
dr.compellation,
dr.classify,
dr.create_time,
dr.modify_time,
cd.district_name,
cd.code,
cd.type,
cd.name,
cd.ip,
cd.place
from pm_access_control_device_record dr
left join pm_access_control_device cd on cd.id = dr.pm_access_control_device_id
where 1=1
<if test="pmAccessControlDeviceRecordDto.name != null and pmAccessControlDeviceRecordDto.name !=''">
AND INSTR(cd.`name`, #{pmAccessControlDeviceRecordDto.name}) > 0
</if>
<if test="pmAccessControlDeviceRecordDto.type != null and pmAccessControlDeviceRecordDto.type !=''">
AND cd.`type`=#{pmAccessControlDeviceRecordDto.type}
</if>
</select>
<select id="recordPages">
select
dr.id,
dr.pm_access_control_device_id,
dr.picture_url,
dr.compellation,
dr.classify,
dr.create_time,
dr.modify_time,
cd.district_name,
cd.code,
cd.type,
cd.name,
cd.ip,
cd.place
from pm_access_control_device_record dr
left join pm_access_control_device cd on cd.id = dr.pm_access_control_device_id
where 1=1
<if test="pmAccessControlDeviceRecordDto.name != null and pmAccessControlDeviceRecordDto.name !=''">
AND INSTR(cd.`name`, #{pmAccessControlDeviceRecordDto.name}) > 0
</if>
<if test="pmAccessControlDeviceRecordDto.type != null and pmAccessControlDeviceRecordDto.type !=''">
AND cd.`type`=#{pmAccessControlDeviceRecordDto.type}
</if>
</select>
</mapper>
\ No newline at end of file
package org.jeecg.pm.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordDto;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordVo;
import java.util.List;
/**
* @Description: pm_access_control_device_record
......@@ -11,4 +17,12 @@ import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
*/
public interface IPmAccessControlDeviceRecordService extends IService<PmAccessControlDeviceRecord> {
/**
* 一卡通打卡记录
* @param page
* @param pmAccessControlDeviceRecordDto
* @return
*/
IPage<PmAccessControlDeviceRecordVo> recordPage(Page page, PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto);
}
package org.jeecg.pm.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.pm.entity.PmAccessControlDeviceRecord;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordDto;
import org.jeecg.pm.entity.PmAccessControlDeviceRecordVo;
import org.jeecg.pm.mapper.PmAccessControlDeviceRecordMapper;
import org.jeecg.pm.service.IPmAccessControlDeviceRecordService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Description: pm_access_control_device_record
* @Author: jeecg-boot
......@@ -15,4 +22,13 @@ import org.springframework.stereotype.Service;
@Service
public class PmAccessControlDeviceRecordServiceImpl extends ServiceImpl<PmAccessControlDeviceRecordMapper, PmAccessControlDeviceRecord> implements IPmAccessControlDeviceRecordService {
@Resource
private PmAccessControlDeviceRecordMapper pmAccessControlDeviceRecordMapper;
@Override
public IPage<PmAccessControlDeviceRecordVo> recordPage(Page page, PmAccessControlDeviceRecordDto pmAccessControlDeviceRecordDto) {
return pmAccessControlDeviceRecordMapper.recordPage(page,pmAccessControlDeviceRecordDto);
}
}
......@@ -132,7 +132,7 @@ spring:
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
master:
url: jdbc:mysql://192.168.1.100:3306/property-management?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://192.168.1.4:3306/property-management?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
......@@ -145,7 +145,7 @@ spring:
#redis 配置
redis:
database: 0
host: 192.168.1.100
host: 192.168.1.4
lettuce:
pool:
max-active: 8 #最大连接数据库连接数,设 -1 为没有限制
......@@ -162,7 +162,7 @@ spring:
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
mapper-locations: classpath*:org/jeecg/**/**/xml/*Mapper.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
......@@ -204,7 +204,7 @@ jeecg :
# ElasticSearch 6设置
elasticsearch:
cluster-name: jeecg-ES
cluster-nodes: 192.168.1.100:9200
cluster-nodes: 192.168.1.4:9200
check-enabled: false
# 表单设计器配置
desform:
......@@ -216,7 +216,7 @@ jeecg :
# 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home
baidu: ??
# 在线预览文件服务器地址配置
file-view-domain: 192.168.1.100:8012
file-view-domain: 192.168.1.4:8012
# minio文件上传
minio:
minio_url: http://minio.jeecg.com
......@@ -240,11 +240,11 @@ jeecg :
#xxl-job配置
xxljob:
enabled: false
adminAddresses: http://192.168.1.100:9080/xxl-job-admin
adminAddresses: http://192.168.1.4:9080/xxl-job-admin
appname: ${spring.application.name}
accessToken: ''
address: 192.168.1.100:30007
ip: 192.168.1.100
address: 192.168.1.4:30007
ip: 192.168.1.4
port: 30007
logPath: logs/jeecg/job/jobhandler/
logRetentionDays: 30
......@@ -256,7 +256,7 @@ jeecg :
data-type: database
#分布式锁配置
redisson:
address: 192.168.1.100:6379
address: 192.168.1.4:6379
password:
type: STANDALONE
enabled: true
......
......@@ -156,7 +156,7 @@ spring:
port: 6379
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
mapper-locations: classpath*:org/jeecg/**/**/xml/*Mapper.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
......
......@@ -156,7 +156,7 @@ spring:
port: 6379
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
mapper-locations: classpath*:org/jeecg/**/**/xml/*Mapper.xml
global-config:
# 关闭MP3.0自带的banner
banner: false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment