diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java index e85e166..7607c21 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java @@ -20,9 +20,13 @@ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime); + List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); + List> statisticByDept(String doorCode,String beginTime, String endTime,String inoutType); List> statisticByPerson(String doorCode,String beginTime, String endTime,Long deptId, Long personId); Boolean hasOutRecords(String doorCode); +// List syncRecords(List devIds, String startTime,String endTime); + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java index e85e166..7607c21 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java @@ -20,9 +20,13 @@ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime); + List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); + List> statisticByDept(String doorCode,String beginTime, String endTime,String inoutType); List> statisticByPerson(String doorCode,String beginTime, String endTime,Long deptId, Long personId); Boolean hasOutRecords(String doorCode); +// List syncRecords(List devIds, String startTime,String endTime); + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index cd17ae7..679b0c4 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -17,13 +17,18 @@ import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.annotations.Param; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.*; /** *

@@ -35,12 +40,22 @@ */ @Service public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService { + private static final Logger logger = LoggerFactory.getLogger(RecognitionRecordsServiceImpl.class); + @Autowired private ICommonPermissionService permissionService; @Autowired private IDoorService doorService; @Autowired private IDeviceService deviceService; + @Value("${casic.iris.jdbc.port:8098}") + private String jdbcPort; + @Value("${casic.iris.jdbc.dbName:casic_iris_temperature}") + private String jdbcDbName; + @Value("${casic.iris.jdbc.userName:root}") + private String jdbcUserName; + @Value("${casic.iris.jdbc.userPwd:Casic203}") + private String jdbcUserPwd; @Override public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { @@ -54,6 +69,17 @@ } @Override + public List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { + List> list = this.baseMapper.selectRecordScopePage(dataScope, page, keyword, personDeptId, doorCode, devCode, isAbnormal, beginTime, endTime); + for (Map res : list) { + Long deptid = Long.valueOf(String.valueOf(res.get("personDeptId"))); + String deptName = permissionService.getDeptName(deptid); + res.put("personDeptName",deptName); + } + return list; + } + + @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); return list; @@ -163,4 +189,129 @@ return false; } } + +// @Override +// public List syncRecords(List devIds, String startTime, String endTime) { +// List errorCodes = new ArrayList<>(); +// List recordsListAll = new ArrayList<>(); +// // 默认起止时间,昨日0点到24点 +// if(ToolUtil.isAllEmpty(startTime,endTime)){ +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Calendar yesterday0 = Calendar.getInstance(); +// yesterday0.set(yesterday0.get(Calendar.YEAR),yesterday0.get(Calendar.MONTH),yesterday0.get(Calendar.DAY_OF_MONTH)-1,0,0,0); +// startTime = sdf.format(yesterday0.getTime()); +// +// Calendar yesterday24 = Calendar.getInstance(); +// yesterday24.set(yesterday24.get(Calendar.YEAR),yesterday24.get(Calendar.MONTH),yesterday24.get(Calendar.DAY_OF_MONTH)-1,23,59,59); +// endTime = sdf.format(yesterday24.getTime()); +// } +// +// // 获取数据 +// for (Long devId : devIds) { +// Device device = deviceService.selectById(devId); +// try { +// List recordsList = fetchRecords(device.getDevIp(),startTime,endTime,device.getDevCode()); +// recordsListAll.addAll(recordsList); +// }catch (Exception e){ +// e.printStackTrace(); +// errorCodes.add(device.getDevCode()); +// } +// } +// +// // 数据去重 +// Iterator iter = recordsListAll.iterator(); +// while (iter.hasNext()){ +// RecognitionRecords record = iter.next(); +// List oldRecords = selectByOriginalIdAndDevCode(record.getOriginalId(),record.getDevCode()); +// if(ToolUtil.isNotEmpty(oldRecords)){ +// iter.remove(); +// } +// } +// +// // 批量插入 +// if(ToolUtil.isNotEmpty(recordsListAll)){ +// logger.info("syncSuccess: " + recordsListAll.size()); +// this.insertBatch(recordsListAll); +// } +// +// if(ToolUtil.isNotEmpty(errorCodes)){ +// logger.info("syncError: " + StringUtils.join(errorCodes,",") ); +// } +// return errorCodes; +// } +// +// private List fetchRecords(String ip, String startTime, String endTime, String devCode){ +// logger.info("fetch Record: ip =" + ip + " startTime = " + startTime + " endTime = " + endTime); +// List recordsList = new ArrayList<>(); +// //启动驱动 +// String driverClassName = "com.mysql.jdbc.Driver"; +// //设置连接路径 +// String url = "jdbc:mysql://" + ip + ":" + jdbcPort + "/" + jdbcDbName; +// //数据库用户名 +// String username = jdbcUserName; +// //数据库连接密码 +// String password = jdbcUserPwd; +// //连接 +// Connection con = null; +// //使用预编译语句 +// PreparedStatement pstmt = null; +// //获取的结果集 +// ResultSet rs = null; +// try { +// //执行驱动 +// Class.forName(driverClassName); +// //获取连接 +// con = DriverManager.getConnection(url, username, password); +// //设置的预编译语句格式 +// String sql = "SELECT * FROM recognition_records WHERE DATETIME >= ? AND DATETIME <= ? "; +// pstmt = con.prepareStatement(sql); +// pstmt.setNString(1,startTime); +// pstmt.setNString(2,endTime); +// rs = pstmt.executeQuery(); +// if(rs == null){ +// return null; +// } +// while (rs.next()){ +// RecognitionRecords record = new RecognitionRecords(); +// record.setOriginalId(Long.valueOf(rs.getString("ID"))); +// record.setPersonId(Long.valueOf(rs.getString("PERSON_ID"))); +// record.setDatetime(rs.getTimestamp("DATETIME")); +// record.setDevCode(rs.getString("DEV_CODE")); +// if(ToolUtil.isEmpty(record.getDevCode())){ +// record.setDevCode(devCode); +// } +// record.setDoorCode(rs.getString("DOOR_CODE")); +// record.setInoutType(rs.getString("INOUT_TYPE")); +// record.setTemperature(rs.getString("TEMPERATURE")); +// record.setDevIp(ip); +// recordsList.add(record); +// } +// } catch (Exception e) { +// throw new RuntimeException(e); +// }finally { +// //关闭资源,倒关 +// try { +// if(rs != null){ +// rs.close(); +// } +// if(pstmt != null){ +// pstmt.close(); +// } +// // 必须要关 +// if(con != null){ +// con.close(); +// } +// } catch (Exception e) { +// } +// } +// logger.info("fetchSuccess: " + recordsList.size()); +// return recordsList; +// } +// +// private List selectByOriginalIdAndDevCode(Long originalId,String devCode){ +// EntityWrapper query = new EntityWrapper(); +// query.eq("ORIGINAL_ID",originalId); +// query.eq("DEV_CODE",devCode); +// return this.selectList(query); +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java index e85e166..7607c21 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java @@ -20,9 +20,13 @@ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime); + List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); + List> statisticByDept(String doorCode,String beginTime, String endTime,String inoutType); List> statisticByPerson(String doorCode,String beginTime, String endTime,Long deptId, Long personId); Boolean hasOutRecords(String doorCode); +// List syncRecords(List devIds, String startTime,String endTime); + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index cd17ae7..679b0c4 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -17,13 +17,18 @@ import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.annotations.Param; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.*; /** *

@@ -35,12 +40,22 @@ */ @Service public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService { + private static final Logger logger = LoggerFactory.getLogger(RecognitionRecordsServiceImpl.class); + @Autowired private ICommonPermissionService permissionService; @Autowired private IDoorService doorService; @Autowired private IDeviceService deviceService; + @Value("${casic.iris.jdbc.port:8098}") + private String jdbcPort; + @Value("${casic.iris.jdbc.dbName:casic_iris_temperature}") + private String jdbcDbName; + @Value("${casic.iris.jdbc.userName:root}") + private String jdbcUserName; + @Value("${casic.iris.jdbc.userPwd:Casic203}") + private String jdbcUserPwd; @Override public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { @@ -54,6 +69,17 @@ } @Override + public List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { + List> list = this.baseMapper.selectRecordScopePage(dataScope, page, keyword, personDeptId, doorCode, devCode, isAbnormal, beginTime, endTime); + for (Map res : list) { + Long deptid = Long.valueOf(String.valueOf(res.get("personDeptId"))); + String deptName = permissionService.getDeptName(deptid); + res.put("personDeptName",deptName); + } + return list; + } + + @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); return list; @@ -163,4 +189,129 @@ return false; } } + +// @Override +// public List syncRecords(List devIds, String startTime, String endTime) { +// List errorCodes = new ArrayList<>(); +// List recordsListAll = new ArrayList<>(); +// // 默认起止时间,昨日0点到24点 +// if(ToolUtil.isAllEmpty(startTime,endTime)){ +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Calendar yesterday0 = Calendar.getInstance(); +// yesterday0.set(yesterday0.get(Calendar.YEAR),yesterday0.get(Calendar.MONTH),yesterday0.get(Calendar.DAY_OF_MONTH)-1,0,0,0); +// startTime = sdf.format(yesterday0.getTime()); +// +// Calendar yesterday24 = Calendar.getInstance(); +// yesterday24.set(yesterday24.get(Calendar.YEAR),yesterday24.get(Calendar.MONTH),yesterday24.get(Calendar.DAY_OF_MONTH)-1,23,59,59); +// endTime = sdf.format(yesterday24.getTime()); +// } +// +// // 获取数据 +// for (Long devId : devIds) { +// Device device = deviceService.selectById(devId); +// try { +// List recordsList = fetchRecords(device.getDevIp(),startTime,endTime,device.getDevCode()); +// recordsListAll.addAll(recordsList); +// }catch (Exception e){ +// e.printStackTrace(); +// errorCodes.add(device.getDevCode()); +// } +// } +// +// // 数据去重 +// Iterator iter = recordsListAll.iterator(); +// while (iter.hasNext()){ +// RecognitionRecords record = iter.next(); +// List oldRecords = selectByOriginalIdAndDevCode(record.getOriginalId(),record.getDevCode()); +// if(ToolUtil.isNotEmpty(oldRecords)){ +// iter.remove(); +// } +// } +// +// // 批量插入 +// if(ToolUtil.isNotEmpty(recordsListAll)){ +// logger.info("syncSuccess: " + recordsListAll.size()); +// this.insertBatch(recordsListAll); +// } +// +// if(ToolUtil.isNotEmpty(errorCodes)){ +// logger.info("syncError: " + StringUtils.join(errorCodes,",") ); +// } +// return errorCodes; +// } +// +// private List fetchRecords(String ip, String startTime, String endTime, String devCode){ +// logger.info("fetch Record: ip =" + ip + " startTime = " + startTime + " endTime = " + endTime); +// List recordsList = new ArrayList<>(); +// //启动驱动 +// String driverClassName = "com.mysql.jdbc.Driver"; +// //设置连接路径 +// String url = "jdbc:mysql://" + ip + ":" + jdbcPort + "/" + jdbcDbName; +// //数据库用户名 +// String username = jdbcUserName; +// //数据库连接密码 +// String password = jdbcUserPwd; +// //连接 +// Connection con = null; +// //使用预编译语句 +// PreparedStatement pstmt = null; +// //获取的结果集 +// ResultSet rs = null; +// try { +// //执行驱动 +// Class.forName(driverClassName); +// //获取连接 +// con = DriverManager.getConnection(url, username, password); +// //设置的预编译语句格式 +// String sql = "SELECT * FROM recognition_records WHERE DATETIME >= ? AND DATETIME <= ? "; +// pstmt = con.prepareStatement(sql); +// pstmt.setNString(1,startTime); +// pstmt.setNString(2,endTime); +// rs = pstmt.executeQuery(); +// if(rs == null){ +// return null; +// } +// while (rs.next()){ +// RecognitionRecords record = new RecognitionRecords(); +// record.setOriginalId(Long.valueOf(rs.getString("ID"))); +// record.setPersonId(Long.valueOf(rs.getString("PERSON_ID"))); +// record.setDatetime(rs.getTimestamp("DATETIME")); +// record.setDevCode(rs.getString("DEV_CODE")); +// if(ToolUtil.isEmpty(record.getDevCode())){ +// record.setDevCode(devCode); +// } +// record.setDoorCode(rs.getString("DOOR_CODE")); +// record.setInoutType(rs.getString("INOUT_TYPE")); +// record.setTemperature(rs.getString("TEMPERATURE")); +// record.setDevIp(ip); +// recordsList.add(record); +// } +// } catch (Exception e) { +// throw new RuntimeException(e); +// }finally { +// //关闭资源,倒关 +// try { +// if(rs != null){ +// rs.close(); +// } +// if(pstmt != null){ +// pstmt.close(); +// } +// // 必须要关 +// if(con != null){ +// con.close(); +// } +// } catch (Exception e) { +// } +// } +// logger.info("fetchSuccess: " + recordsList.size()); +// return recordsList; +// } +// +// private List selectByOriginalIdAndDevCode(Long originalId,String devCode){ +// EntityWrapper query = new EntityWrapper(); +// query.eq("ORIGINAL_ID",originalId); +// query.eq("DEV_CODE",devCode); +// return this.selectList(query); +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java new file mode 100644 index 0000000..b7f2b8a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.task; + +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.controller.AcsPermissionController; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class RecordTask { + private static final Logger logger = LoggerFactory.getLogger(RecordTask.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private IRecognitionRecordsService recordsService; + +// @Scheduled(cron = "${casic.iris.sync.cron}") +// public void job(){ +// List deviceList = deviceService.selectList(null); +// List deviceIds = new ArrayList<>(); +// for (Device device : deviceList) { +// deviceIds.add(Long.valueOf(device.getId())); +// } +// List errorCode = recordsService.syncRecords(deviceIds,null,null); +// if(ToolUtil.isNotEmpty(errorCode)){ +// logger.info("scheuled job, error:" + StringUtils.join(errorCode,",")); +// }else { +// logger.info("scheuled job success"); +// } +// } + + + +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java index e85e166..7607c21 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java @@ -20,9 +20,13 @@ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime); + List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); + List> statisticByDept(String doorCode,String beginTime, String endTime,String inoutType); List> statisticByPerson(String doorCode,String beginTime, String endTime,Long deptId, Long personId); Boolean hasOutRecords(String doorCode); +// List syncRecords(List devIds, String startTime,String endTime); + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index cd17ae7..679b0c4 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -17,13 +17,18 @@ import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.annotations.Param; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.*; /** *

@@ -35,12 +40,22 @@ */ @Service public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService { + private static final Logger logger = LoggerFactory.getLogger(RecognitionRecordsServiceImpl.class); + @Autowired private ICommonPermissionService permissionService; @Autowired private IDoorService doorService; @Autowired private IDeviceService deviceService; + @Value("${casic.iris.jdbc.port:8098}") + private String jdbcPort; + @Value("${casic.iris.jdbc.dbName:casic_iris_temperature}") + private String jdbcDbName; + @Value("${casic.iris.jdbc.userName:root}") + private String jdbcUserName; + @Value("${casic.iris.jdbc.userPwd:Casic203}") + private String jdbcUserPwd; @Override public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { @@ -54,6 +69,17 @@ } @Override + public List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { + List> list = this.baseMapper.selectRecordScopePage(dataScope, page, keyword, personDeptId, doorCode, devCode, isAbnormal, beginTime, endTime); + for (Map res : list) { + Long deptid = Long.valueOf(String.valueOf(res.get("personDeptId"))); + String deptName = permissionService.getDeptName(deptid); + res.put("personDeptName",deptName); + } + return list; + } + + @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); return list; @@ -163,4 +189,129 @@ return false; } } + +// @Override +// public List syncRecords(List devIds, String startTime, String endTime) { +// List errorCodes = new ArrayList<>(); +// List recordsListAll = new ArrayList<>(); +// // 默认起止时间,昨日0点到24点 +// if(ToolUtil.isAllEmpty(startTime,endTime)){ +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Calendar yesterday0 = Calendar.getInstance(); +// yesterday0.set(yesterday0.get(Calendar.YEAR),yesterday0.get(Calendar.MONTH),yesterday0.get(Calendar.DAY_OF_MONTH)-1,0,0,0); +// startTime = sdf.format(yesterday0.getTime()); +// +// Calendar yesterday24 = Calendar.getInstance(); +// yesterday24.set(yesterday24.get(Calendar.YEAR),yesterday24.get(Calendar.MONTH),yesterday24.get(Calendar.DAY_OF_MONTH)-1,23,59,59); +// endTime = sdf.format(yesterday24.getTime()); +// } +// +// // 获取数据 +// for (Long devId : devIds) { +// Device device = deviceService.selectById(devId); +// try { +// List recordsList = fetchRecords(device.getDevIp(),startTime,endTime,device.getDevCode()); +// recordsListAll.addAll(recordsList); +// }catch (Exception e){ +// e.printStackTrace(); +// errorCodes.add(device.getDevCode()); +// } +// } +// +// // 数据去重 +// Iterator iter = recordsListAll.iterator(); +// while (iter.hasNext()){ +// RecognitionRecords record = iter.next(); +// List oldRecords = selectByOriginalIdAndDevCode(record.getOriginalId(),record.getDevCode()); +// if(ToolUtil.isNotEmpty(oldRecords)){ +// iter.remove(); +// } +// } +// +// // 批量插入 +// if(ToolUtil.isNotEmpty(recordsListAll)){ +// logger.info("syncSuccess: " + recordsListAll.size()); +// this.insertBatch(recordsListAll); +// } +// +// if(ToolUtil.isNotEmpty(errorCodes)){ +// logger.info("syncError: " + StringUtils.join(errorCodes,",") ); +// } +// return errorCodes; +// } +// +// private List fetchRecords(String ip, String startTime, String endTime, String devCode){ +// logger.info("fetch Record: ip =" + ip + " startTime = " + startTime + " endTime = " + endTime); +// List recordsList = new ArrayList<>(); +// //启动驱动 +// String driverClassName = "com.mysql.jdbc.Driver"; +// //设置连接路径 +// String url = "jdbc:mysql://" + ip + ":" + jdbcPort + "/" + jdbcDbName; +// //数据库用户名 +// String username = jdbcUserName; +// //数据库连接密码 +// String password = jdbcUserPwd; +// //连接 +// Connection con = null; +// //使用预编译语句 +// PreparedStatement pstmt = null; +// //获取的结果集 +// ResultSet rs = null; +// try { +// //执行驱动 +// Class.forName(driverClassName); +// //获取连接 +// con = DriverManager.getConnection(url, username, password); +// //设置的预编译语句格式 +// String sql = "SELECT * FROM recognition_records WHERE DATETIME >= ? AND DATETIME <= ? "; +// pstmt = con.prepareStatement(sql); +// pstmt.setNString(1,startTime); +// pstmt.setNString(2,endTime); +// rs = pstmt.executeQuery(); +// if(rs == null){ +// return null; +// } +// while (rs.next()){ +// RecognitionRecords record = new RecognitionRecords(); +// record.setOriginalId(Long.valueOf(rs.getString("ID"))); +// record.setPersonId(Long.valueOf(rs.getString("PERSON_ID"))); +// record.setDatetime(rs.getTimestamp("DATETIME")); +// record.setDevCode(rs.getString("DEV_CODE")); +// if(ToolUtil.isEmpty(record.getDevCode())){ +// record.setDevCode(devCode); +// } +// record.setDoorCode(rs.getString("DOOR_CODE")); +// record.setInoutType(rs.getString("INOUT_TYPE")); +// record.setTemperature(rs.getString("TEMPERATURE")); +// record.setDevIp(ip); +// recordsList.add(record); +// } +// } catch (Exception e) { +// throw new RuntimeException(e); +// }finally { +// //关闭资源,倒关 +// try { +// if(rs != null){ +// rs.close(); +// } +// if(pstmt != null){ +// pstmt.close(); +// } +// // 必须要关 +// if(con != null){ +// con.close(); +// } +// } catch (Exception e) { +// } +// } +// logger.info("fetchSuccess: " + recordsList.size()); +// return recordsList; +// } +// +// private List selectByOriginalIdAndDevCode(Long originalId,String devCode){ +// EntityWrapper query = new EntityWrapper(); +// query.eq("ORIGINAL_ID",originalId); +// query.eq("DEV_CODE",devCode); +// return this.selectList(query); +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java new file mode 100644 index 0000000..b7f2b8a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.task; + +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.controller.AcsPermissionController; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class RecordTask { + private static final Logger logger = LoggerFactory.getLogger(RecordTask.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private IRecognitionRecordsService recordsService; + +// @Scheduled(cron = "${casic.iris.sync.cron}") +// public void job(){ +// List deviceList = deviceService.selectList(null); +// List deviceIds = new ArrayList<>(); +// for (Device device : deviceList) { +// deviceIds.add(Long.valueOf(device.getId())); +// } +// List errorCode = recordsService.syncRecords(deviceIds,null,null); +// if(ToolUtil.isNotEmpty(errorCode)){ +// logger.info("scheuled job, error:" + StringUtils.join(errorCode,",")); +// }else { +// logger.info("scheuled job success"); +// } +// } + + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 5fa55b1..1423ba3 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -17,6 +18,7 @@ * @Date 2017/5/21 12:06 */ @SpringBootApplication +@EnableScheduling @EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index 27e0b8f..b860ba7 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -4,15 +4,24 @@ import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.enums.AcsExportEnum; +import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -67,6 +76,37 @@ } /** + * 识别数据查询 + */ + @RequestMapping(value = "/listRecord") + @ResponseBody + public Object listRecord(String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime){ + Page> page = new PageFactory>().defaultPage(); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + page.setRecords(list); + return ResponseData.success(super.packForBT(page)); + } + + /** + * 导出识别记录 + */ + @RequestMapping(value = "/exportRecord") + @ResponseBody + public void exportRecord(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String isAbnormal,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectRecordScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,isAbnormal,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(AcsExportEnum.RECORDS_EXPORT, list, response); + } + + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -116,4 +156,17 @@ return ResponseData.success(res); } + +// @RequestMapping(value = "/syncRecord") +// @ResponseBody +// public Object syncRecord(@RequestParam("devIds")List devIds, +// @RequestParam("startTime")String startTime, +// @RequestParam("endTime")String endTime){ +// List errorCode = recordsService.syncRecords(devIds,startTime,endTime); +// if(ToolUtil.isEmpty(errorCode)){ +// return ResponseData.success(); +// }else{ +// return ResponseData.error("设备" + StringUtils.join(errorCode,",")+" 同步失败"); +// } +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java index e85e166..7607c21 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/IRecognitionRecordsService.java @@ -20,9 +20,13 @@ List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime); + List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime); + List> statisticByDept(String doorCode,String beginTime, String endTime,String inoutType); List> statisticByPerson(String doorCode,String beginTime, String endTime,Long deptId, Long personId); Boolean hasOutRecords(String doorCode); +// List syncRecords(List devIds, String startTime,String endTime); + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index cd17ae7..679b0c4 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -17,13 +17,18 @@ import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.annotations.Param; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.*; /** *

@@ -35,12 +40,22 @@ */ @Service public class RecognitionRecordsServiceImpl extends ServiceImpl implements IRecognitionRecordsService { + private static final Logger logger = LoggerFactory.getLogger(RecognitionRecordsServiceImpl.class); + @Autowired private ICommonPermissionService permissionService; @Autowired private IDoorService doorService; @Autowired private IDeviceService deviceService; + @Value("${casic.iris.jdbc.port:8098}") + private String jdbcPort; + @Value("${casic.iris.jdbc.dbName:casic_iris_temperature}") + private String jdbcDbName; + @Value("${casic.iris.jdbc.userName:root}") + private String jdbcUserName; + @Value("${casic.iris.jdbc.userPwd:Casic203}") + private String jdbcUserPwd; @Override public List> selectStaffDataScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { @@ -54,6 +69,17 @@ } @Override + public List> selectRecordScopePage(DataScope dataScope, Page page, String keyword, Long personDeptId, String doorCode, String devCode, String isAbnormal, String beginTime, String endTime) { + List> list = this.baseMapper.selectRecordScopePage(dataScope, page, keyword, personDeptId, doorCode, devCode, isAbnormal, beginTime, endTime); + for (Map res : list) { + Long deptid = Long.valueOf(String.valueOf(res.get("personDeptId"))); + String deptName = permissionService.getDeptName(deptid); + res.put("personDeptName",deptName); + } + return list; + } + + @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); return list; @@ -163,4 +189,129 @@ return false; } } + +// @Override +// public List syncRecords(List devIds, String startTime, String endTime) { +// List errorCodes = new ArrayList<>(); +// List recordsListAll = new ArrayList<>(); +// // 默认起止时间,昨日0点到24点 +// if(ToolUtil.isAllEmpty(startTime,endTime)){ +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Calendar yesterday0 = Calendar.getInstance(); +// yesterday0.set(yesterday0.get(Calendar.YEAR),yesterday0.get(Calendar.MONTH),yesterday0.get(Calendar.DAY_OF_MONTH)-1,0,0,0); +// startTime = sdf.format(yesterday0.getTime()); +// +// Calendar yesterday24 = Calendar.getInstance(); +// yesterday24.set(yesterday24.get(Calendar.YEAR),yesterday24.get(Calendar.MONTH),yesterday24.get(Calendar.DAY_OF_MONTH)-1,23,59,59); +// endTime = sdf.format(yesterday24.getTime()); +// } +// +// // 获取数据 +// for (Long devId : devIds) { +// Device device = deviceService.selectById(devId); +// try { +// List recordsList = fetchRecords(device.getDevIp(),startTime,endTime,device.getDevCode()); +// recordsListAll.addAll(recordsList); +// }catch (Exception e){ +// e.printStackTrace(); +// errorCodes.add(device.getDevCode()); +// } +// } +// +// // 数据去重 +// Iterator iter = recordsListAll.iterator(); +// while (iter.hasNext()){ +// RecognitionRecords record = iter.next(); +// List oldRecords = selectByOriginalIdAndDevCode(record.getOriginalId(),record.getDevCode()); +// if(ToolUtil.isNotEmpty(oldRecords)){ +// iter.remove(); +// } +// } +// +// // 批量插入 +// if(ToolUtil.isNotEmpty(recordsListAll)){ +// logger.info("syncSuccess: " + recordsListAll.size()); +// this.insertBatch(recordsListAll); +// } +// +// if(ToolUtil.isNotEmpty(errorCodes)){ +// logger.info("syncError: " + StringUtils.join(errorCodes,",") ); +// } +// return errorCodes; +// } +// +// private List fetchRecords(String ip, String startTime, String endTime, String devCode){ +// logger.info("fetch Record: ip =" + ip + " startTime = " + startTime + " endTime = " + endTime); +// List recordsList = new ArrayList<>(); +// //启动驱动 +// String driverClassName = "com.mysql.jdbc.Driver"; +// //设置连接路径 +// String url = "jdbc:mysql://" + ip + ":" + jdbcPort + "/" + jdbcDbName; +// //数据库用户名 +// String username = jdbcUserName; +// //数据库连接密码 +// String password = jdbcUserPwd; +// //连接 +// Connection con = null; +// //使用预编译语句 +// PreparedStatement pstmt = null; +// //获取的结果集 +// ResultSet rs = null; +// try { +// //执行驱动 +// Class.forName(driverClassName); +// //获取连接 +// con = DriverManager.getConnection(url, username, password); +// //设置的预编译语句格式 +// String sql = "SELECT * FROM recognition_records WHERE DATETIME >= ? AND DATETIME <= ? "; +// pstmt = con.prepareStatement(sql); +// pstmt.setNString(1,startTime); +// pstmt.setNString(2,endTime); +// rs = pstmt.executeQuery(); +// if(rs == null){ +// return null; +// } +// while (rs.next()){ +// RecognitionRecords record = new RecognitionRecords(); +// record.setOriginalId(Long.valueOf(rs.getString("ID"))); +// record.setPersonId(Long.valueOf(rs.getString("PERSON_ID"))); +// record.setDatetime(rs.getTimestamp("DATETIME")); +// record.setDevCode(rs.getString("DEV_CODE")); +// if(ToolUtil.isEmpty(record.getDevCode())){ +// record.setDevCode(devCode); +// } +// record.setDoorCode(rs.getString("DOOR_CODE")); +// record.setInoutType(rs.getString("INOUT_TYPE")); +// record.setTemperature(rs.getString("TEMPERATURE")); +// record.setDevIp(ip); +// recordsList.add(record); +// } +// } catch (Exception e) { +// throw new RuntimeException(e); +// }finally { +// //关闭资源,倒关 +// try { +// if(rs != null){ +// rs.close(); +// } +// if(pstmt != null){ +// pstmt.close(); +// } +// // 必须要关 +// if(con != null){ +// con.close(); +// } +// } catch (Exception e) { +// } +// } +// logger.info("fetchSuccess: " + recordsList.size()); +// return recordsList; +// } +// +// private List selectByOriginalIdAndDevCode(Long originalId,String devCode){ +// EntityWrapper query = new EntityWrapper(); +// query.eq("ORIGINAL_ID",originalId); +// query.eq("DEV_CODE",devCode); +// return this.selectList(query); +// } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java new file mode 100644 index 0000000..b7f2b8a --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/task/RecordTask.java @@ -0,0 +1,44 @@ +package com.casic.missiles.modular.system.task; + +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.controller.AcsPermissionController; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.IDeviceService; +import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class RecordTask { + private static final Logger logger = LoggerFactory.getLogger(RecordTask.class); + + @Autowired + private IDeviceService deviceService; + @Autowired + private IRecognitionRecordsService recordsService; + +// @Scheduled(cron = "${casic.iris.sync.cron}") +// public void job(){ +// List deviceList = deviceService.selectList(null); +// List deviceIds = new ArrayList<>(); +// for (Device device : deviceList) { +// deviceIds.add(Long.valueOf(device.getId())); +// } +// List errorCode = recordsService.syncRecords(deviceIds,null,null); +// if(ToolUtil.isNotEmpty(errorCode)){ +// logger.info("scheuled job, error:" + StringUtils.join(errorCode,",")); +// }else { +// logger.info("scheuled job success"); +// } +// } + + + +} diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 5fa55b1..1423ba3 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -17,6 +18,7 @@ * @Date 2017/5/21 12:06 */ @SpringBootApplication +@EnableScheduling @EnableTransactionManagement(proxyTargetClass = true) public class CasicApplication { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 5ae9a0f..ffffcff 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -13,6 +13,16 @@ kaptcha-open: false #是否开启登录时验证码 (true/false) nologin-urls: /user/login,/user/appLogin,/kaptcha,/config/baseConfig,/route/mockToken,/process/processDiagram export-temp-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ + iris: + recServiceHost: localhost + recServicePort: 20004 + sync: + cron: "0 0 1 * * ?" #每天凌晨1点执行一次 + jdbc: + port: 8098 + dbName: casic_iris_temperature + userName: root + userPwd: Casic203 mybatis-plus: global-config: sql-injector: com.casic.missiles.modular.metadata.inject.MetaSqlInject